결론적으로,

온-프레미스 : 기업이 직접 서버를 관리하고, 직접 소프트웨어를 제공하는 방식.
인프라를 직접 유지-보수 해야하며, 보안 전문가를 고용해야한다.
오프-프레미스 : 외부 업체가 서버를 관리해주고, 기업에서는 소프트웨어만 관리하는 방식.
인프라의 유지보수와 보안에는 신경쓰지 않고, 소프트웨어의 관리에만 집중할 수 있다.

온 프레미스와 오프 프레미스 각각의 장-단점을 흡수하여
중요 부분은 온 프레미스로, 사용자에게 제공되는 부분은 오프 프레미스로 구현하는,
하이브리드 클라우드 방식을 사용하기도 한다.

 

배경

 

기업에서 소프트웨어를 제공할 수 있는 방법은

코드 배포, CD/USB 제공 등 여러가지 방법이 있지만

 

CI/CD 등의 전략과 배포망 안정화를 이유로,

가장 흔한 배포-사용 방법은 온라인 서비스일 것이다.

 

 

이 소프트웨어를 어디서 구동시킬까?

- 만든 사람이 직접 구동할까?

- 다른 사람에게 구동을 시킬까?

- 내가 하기 쉬운 것만 구동하고, 다른 사람에게 맡길까?

 

이 세가지 방법에 대해 알아보고자 한다.

 

전국민 모두가 사용하는 기차 예매 프로그램을 만들었다. 어디에서 구동해야할까? 내 집 컴퓨터?

 

 

온 프레미스 (On-premise)

위키백과에 따르면 온 프레미스 (On-premise) 란,

더보기

 서버 팜, 클라우드가 아닌, 소프트웨어를 이용하는 개인 또는 단체가 직접 전산 서버에 설치하여 실행한다.

 

 온프레미스 소프트웨어는 구축하는 데 시간이 걸리고, 비용 또한 많이 드는 데다

관리나 운용상의 문제가 생겨도 자사에서 대응해야 하는 반면,

자유롭게 커스터마이즈가 가능하여 다른 자사의 시스템과 연계하기 쉽다는 장점이 있다.

 

 이는 주로 회사 차원의 비즈니스 시스템과 기능 자동화에 관련한 대형 조직의 고유 특징을 서비스하기 위해,

결합된 데이터베이스와 모듈로 구성된다

 

고전적인 제공 방식으로,

기업이나 배포자가 직접 서버를 구축하고 소프트웨어를 설치하여 소프트웨어를 제공하는 방식이다.

 

초기 비용과 유지 관리에는 어려움이 있지만,

하드웨어를 적합하게 커스터마이징 할 수 있고, 내부 보안에도 유리하다.

 

https://kr.pinterest.com/pin/629378116695026134/

 

 

오프 프레미스 (Off-premise)

NASA, Meta 등이 사용하는 구독형 스토리지 플랫폼, 퓨어 스토리지에 따르면,

더보기

‘오프-프레미스’ 인프라는 서드파티 공급업체가 인프라, 시설 및 관련 서비스를 제공하고 유지 관리합니다.


조직은 시설이나 인프라를 유지 관리할 책임이 없습니다. 

 클라우드 서비스 공급업체가 유지 관리하는 인프라를 사용하는 조직은
애플리케이션에 적합한 리소스 조합을 파악하는 데만 신경 쓰면 됩니다.

 

기업 외부의 업체에서 서버와 인프라를 관리해주고,

기업은 안정적인 환경에 소프트웨어만을 배포하는 방식이다.

 

온 프레미스와 달리,내가 사용한 만큼만 지불하면 되고

서버-보안 등의 관리자가 필요하지 않다.

또, 언제든 추가 비용을 지불하면 인프라를 확장할 수 있다.

 

https://aws.amazon.com/ko/

 

온프레미스와 오프프레미스의 특징

 

  온 프레미스 / On-premise 오프 프레미스 / Off-premise
비용 정확히 알수는 없지만 상황에 따라 변경이 가능합니다.
초기비용이 많이 들고 유지관리 또한 어렵습니다.
구독과 정량제 중, 미리 책정된대로 고지됩니다.
필요에 따라 적합한 서비스를 선택하면 됩니다.
사용자 맞춤 사용자에게 알맞은 하드웨어를 구성할 수 있습니다. 공급자가 허용하는 범위 내에서만 수정할 수 있습니다.
모든 설정을 마음대로 변경할 수 없습니다.
지속적인 지원 모든 유지, 복구 서비스 및 정책을 직접 관리해야 합니다.
해당 분야의 전문가가 필요할 수도 있습니다.
SLA에 정의된 대로 지속적인 지원을 제공합니다.
(Service-Level Agreement / AWS
: 공급업체가 고객에게 제공하기로 약속한 서비스 수준을 명시하는 아웃소싱 및 기술 공급업체 계약 )
보안 사용하는 보안 시스템에 따라, 데이터 보안 및 데이터 보호 수준이 달라집니다. 클라우드 서비스 공급업체가 인프라와 플랫폼을 보호할 책임이 있습니다. 
인프라를 사용하는 기업은 애플리케이션의 보안에 대해서만 책임을 지면 됩니다.
백업 데이터 백업 시스템은 SaaS 공급업체의 핵심 서비스입니다.
가격에 따라 잠재적으로 무제한의 데이터 스토리지 용량을 확보할 수 있습니다.
백업에 대한 책임은 기업에게 있습니다.
기술적 오류와 기타 잠재적 문제에 대해 대비해야 합니다.
확장성 새 인프라를 구매하고 설치해야하므로, 자율적이지 못합니다. 추가적인 비용만 지불하면, 언제든 서비스를 확장할 수 있습니다.
접근성 내부망, 또는 가상화 네트워크를 통해서만 액세스할 수 있습니다.  터넷에 연결되어 있고 권한이 있는 사람이라면 누구나 이용할 수 있습니다
분석 분석 소프트웨어를 선택할 수 있지만, 직접 소프트웨어를 관리해야 합니다. 제공업체가 허용하는 경우 다른 분석 플랫폼과 통합할 수 있습니다.
패치 및 업데이트 관리 업데이트 해야할 경우, 기업은 내부적으로 결정하고 변겅사항을 즉시 수정할 수 있습니다. 공급업체가 플랫폼 및 소프트웨어를 관리하기 때문에, 기업은 제한적으로 업데이트 및 수정할 수 있습니다.

 

 

 

두 방법에는 각각의 장단점이 있기 때문에,

현재는 하이브리드 클라우드 방식을 많이? 사용합니다.

 

보안과 직결되는 부분은 온프레미스로,

사용자가 마주보는 부분은 클라우드로 제공하는 것처럼요.

 

이와는 별개로 코로케이션 (Colocation)이라는 방식도 있는데,

 데이터센터(IDC) 내 공동 공간을 빌려 자사의 서버를 설치하는 것을 의미합니다.

 

결론

각각의 방식은 장단점이 있다.

두 가지 방식을 혼용해서 사용하면 각각의 장단점을 흡수할 수 있다.

 

그리고

다시 맨 위로 올라가자,

 

 

'ㄱ. 걱정과 공부 > 오늘의 한웅큼' 카테고리의 다른 글

SQL과 NoSQL  (9) 2024.07.24
JSON 과 XML.  (0) 2024.06.20
WBS(Work Breakdown Structure)  (0) 2024.06.15
상수와 리터럴.  (1) 2024.06.15

결론적으로,

SQL : 엄격한 스키마가 있는 관계형 데이터베이스.
NoSQL : schimaless한, RDBMS를 제외한 나머지 데이터베이스

전자는 잦은 수정을 하거나, 중복 제거로 인한 이상현상을 줄이는데 유리하고,
후자는 더 유연하며, 수정이 없이 조회만을 주로 하고, 수평적 확장을 대비하는데 유리하다.

 

 

 

오픈소스 RDBMS인, MySQL / NoSQL DBMS인 mongoDB.

 

 

우선, SQL과 NoSQL이 무엇인지 알고, 두 가지를 비교해보자.


 

 

SQL (Structured Query Language) : 구조화된 쿼리(데이터 질의) 언어.

 

 

 원래 SQL은, DB에 데이터를 삽, 삭, 갱 할수 있는, 말 그대로 "쿼리 언어" 이다.

하지만 처음에는 이 언어를 RDBMS에서 사용하기 위해 만든 까닭에, 데이터베이스 까지 통용하는 말이 된 것 같다.

 

 

RDBMS는 크게 두 가지 특징이 있으며,

 1. 관계를 사용하 데이터 중복 제거.

 2. 엄격한 스키마를 통해, 데이터 무결성 보장.

 

 

RDBMS의 예시로는,

ID ARTIST NAME UPLOAD ...
001 QWER ANIMA POWER 2024-07-12  
002 버즈 거짓말 2015-06-11  
003 DK(디셈버) 영원 2024-03-19  

 


 

 

NoSQL (Not Only SQL) : SQL이 아닌 것.

 

 

나무위키에서, NoSQL/등장 배경 :

더보기

지난 20년간, 데이터를 저장하는 데에는 관계형 데이터베이스가 사용되었다. 트랜잭션을 통한 안정적인 데이터 관리가 가장 중요한 이슈였기 때문이다. 하지만 웹 2.0 환경과 빅데이터가 등장하면서 RDBMS는 난관에 부딪히게 되었는데, 바로 ‘데이터를 처리하는 데 필요한 비용의 증가’ 때문이다. 데이터와 트래픽의 양이 기하급수적으로 증가함에 따라 한 대에서 실행되도록 설계된 관계형 데이터베이스를 사용하는 것은 하드웨어적으로 큰 비용이 들게 되었다. 장비의 성능이 좋을수록, 성능을 향상시키는 데(Scale-up: 수직적 확장) 비용이 기하급수적으로 증가하기 때문이다.

NoSQL은 데이터의 일관성을 약간 포기한 대신 여러 대의 컴퓨터에 데이터를 분산하여 저장하는 것(Scale-out: 수평적 확장)을 목표로 등장하였다. NoSQL의 등장으로 작고 값싼 장비 여러 대로 대량의 데이터와 컴퓨팅 부하를 처리하는 것이 가능하게 되었다.

 

 

크게는 네 가지 종류가 있으며,

1. Key-Value : Memcached, Riak, Redis, Amazon Dynamo DB, LevelDB

2. Document :  MongoDB, CouchDB, MarkLogic

3. Column-family : HBase, Cassandra, Hypertable

4. Graph 모델 : ...

 

 

NoSQL의 예시를 먼저 보고가면 좋을 것 같다.

아래는 MongoDB의 도큐먼트 구조 예시,

 

 

ID ARTIST NAME ...
001 QWER ANIMA POWER, 고민중독, DISCORD  
대충 데뷔일, 인기도, 등등...  
002 버즈 거짓말, 겁쟁이, Monologue  
   
003 DK(디셈버) 발걸음, 영원, ...  
   

 

 

딱 봐도 RDBMS보다 자유롭고, 제약이 없어보인다.

실제로도 유연함과, 이로 인해 따라오는 조회 속도가 장점이다.

데이터를 프로그램측에서 유리하게 저장할 수 있기 때문이다.

 

도큐먼트에서도 여러 방법이 있는데,

관심있으면 아래 페이지를 한 번 더 읽어봤으면 한다.

NHN meetup : mongoDB Story 3

 

 

 

뭐가 다른가?

 

SQL NoSQL
대체적으로 수직적 확장만을 지원함. 관계의 제약이 없기 때문에,
수평적 확장 또한 가능함.
명확하게 정의된 스키마 : 데이터 무결성 보장 스키마 없음 : 더 유연한 데이터 조정
또한, 데이터를 프로그램이 읽기 편한 방식으로 저장하여,
읽어오는 속도가 더 빠름.
데이터를 중복 없이 한번만 저장하기 때문에,
데이터 이상현상 발생 및 용량 증가를 최소화함.

때문에 수정(update)은 한번만 실행하면 됨.
데이터를 중복할 수 있기 때문에, 용량이 더 큼.

수정(update)할 경우, 모든 컬렉션에서 수행해야 함.

 

 

결론.

 

다시 맨 위로 올라가보자.

오늘도 수분 보충 완료 !

 

 

https://siyoon210.tistory.com/130

https://velog.io/@octo__/SQL-vs-NoSQL

'ㄱ. 걱정과 공부 > 오늘의 한웅큼' 카테고리의 다른 글

온 프레미스와 오프 프레미스.  (0) 2024.08.21
JSON 과 XML.  (0) 2024.06.20
WBS(Work Breakdown Structure)  (0) 2024.06.15
상수와 리터럴.  (1) 2024.06.15

결론적으로,

JSON과  XML 모두 데이터 교환에 사용되는 데이터 포맷.
JSON
: 데이터 교환을 목적으로 설계되어, 성능과 통신속도가 빠르며, 더 간걀하고 읽기 쉽다.
XML : 레거시 시스템 등에서 JSON보다 안정적이고, 다양한 데이터 형식을 지원하는 무거운 포맷.


두 형식 모두 데이터 교환에 사용되지만 JSON은 더 새롭고 유연하며 널리 사용되는 옵션이다.

 


오픈소스로 운영되는 모질라 재단의 문서 저장소, MDN(Mozila Developer Network)에 따르면,

더보기

JavaScript Object Notation (JSON)은 Javascript 객체 문법으로

구조화된 데이터를 표현하기 위한 문자 기반의 표준 포맷입니다.

 

웹 어플리케이션에서 데이터를 전송할 때 일반적으로 사용합니다

(서버에서 클라이언트로 데이터를 전송하여 표현하려거나 반대의 경우).

기술산업에 선도적인 클라우드 컴퓨팅 플랫폼인 AWS(Amazon Web Services)에서는,

더보기

XML(Extensible Markup Language)은 데이터를 정의하는 규칙을 제공하는 마크업 언어입니다.

 

XML를 사용하면 공유 가능한 방식으로 데이터를 정의하고 저장할 수 있습니다.

XML은 웹 사이트, 데이터베이스 및 타사 애플리케이션과 같은 컴퓨터 시스템 간의 정보 교환을 지원합니다.

 

사전 정의된 규칙을 사용하면 수신자가 이러한 규칙을 사용하여 데이터를 효율적으로 정확하게 읽을 수 있으므로 모든 네트워크에서 데이터를 XML 파일로 손쉽게 전송할 수 있습니다.

 

XML과 JSON이라는 표준화된 방식으로 데이터를 교환할 수 있다.

 

유사점

만약, 자바에서 파이썬으로 자료를 보낸다면, 아무런 문제 없이 교환할 수 있을까?

 

프로그래밍 언어와 플랫폼마다 동일한 데이터를 다르게 표현한다.

자바에서는 객체를 사용하는 반면, 파이썬에서는 엔티티를 딕셔너리 자료형을 사용하여 저장한다.

 

이 때, 데이터 직렬화를 위해 두 형식을 사용할 수 있다.

 

 

포맷

XML 문법

<guests>

  <guest>

    <firstName>John</firstName> <lastName>Doe</lastName>

  </guest>

  <guest>

    <firstName>María</firstName> <lastName>García</lastName>

  </guest>

  <guest>

    <firstName>Nikki</firstName> <lastName>Wolf</lastName>

  </guest>

</guests>

 

JSON 문법

{"guests":[

  { "firstName":"John", "lastName":"Doe" },

  { "firstName":"María", "lastName":"García" },

  { "firstName":"Nikki", "lastName":"Wolf" }

]}

 

 

 

차이점

형식

JSON은 키:값 페어를 사용한 맵과 유사한 구조를 갖는다.

XML은 마크업 언어로서 HTML과 유사하며, 트리 구조를 갖는다.

 

구문 분석

JSON은 쉽게 액세스할 수 있는 표준 JavaScript 함수로 구문분석 할 수 있다.

XML은 XML 구문 분석기를 사용해야 하는데, 프로세스가 느려지고 복잡해지는 경우가 많다.

 

스키마 문서

JSON에서도 스키마를 사용할 수 있지만, XML에서보다 스키마가 더 단순하고, 유연성이 뛰어납니다.

XML 문서의 헤더에는 스키마에 대한 링크가 있고, 파일의 예상 내용을 읽을 수 있다.

 

데이터 유형 지원

JSON은 문자열, 숫자, 객체, 부울 등 한정된 데이터 유형만 지원한다.

XML은 더 유연하며, 이진 데이터 및 타임스탬프와 같은 복잡한 데이터 유형을 지원한다.

 

보안

JSON 구문 분석은 XML보다 안전하다.

XML구조는 무단 수정에 취약하며, 외부 엔티티 삽입(XXE), DTD의 보안 위협이 발생한다.

 비정형 외부 문서 형식 선언(DTD) 기능을 비활성화 하면 두가지 문제를 모두 방지할 수 있다.

 

 

결론

이하 참고한 AWS 문서를 인용한다 : 

XML은 데이터를 기계가 읽을 수 있는 방식으로 저장하는 데 중점을 두므로,
복잡한 데이터의 오류를 검사하는 데 있어서 JSON보다 더 효율적입니다.
또한 더욱 발전된 도구 및 라이브러리 세트를 갖추고 있으며 레거시 시스템에서 더 잘 작동할 수 있습니다.

반면 JSON은 데이터 교환을 목적으로 설계되었으며 더 간단하고 간결한 형식을 제공합니다.
또한 성능과 통신 속도를 향상시킵니다.

JSON은 일반적으로 API, 모바일 앱 및 데이터 스토리지에 더 적합하며,
XML은 데이터 교환이 필요한 복잡한 문서 구조에 더 적합합니다.

JSON은 일반적으로 API, 모바일 앱 및 데이터 스토리지에 더 적합하며, XML은 데이터 교환이 필요한 복잡한 문서 구조에 더 적합합니다.

두 형식 모두 데이터 교환에 사용되지만 JSON은 더 새롭고 유연하며 널리 사용되는 옵션입니다.

 

 

'ㄱ. 걱정과 공부 > 오늘의 한웅큼' 카테고리의 다른 글

온 프레미스와 오프 프레미스.  (0) 2024.08.21
SQL과 NoSQL  (9) 2024.07.24
WBS(Work Breakdown Structure)  (0) 2024.06.15
상수와 리터럴.  (1) 2024.06.15

결과적으로,

WBS / 작업 분해 구조 : 프로젝트 진행에 필요한 과제를 분류하여, 한눈에 알아볼 수 있도록 표로 정리한 것.
                                     기간, 비용을 산출하기 위한 자료가 되며, 진행상황과 작업자를 간단히 파악할 수 있다.

 

figma, zoom, amazon과 같은 기업에서 사용하는 업무관리 플랫폼 'Asana'에서 말하는 WBS

더보기

  업무 분류 체계(WBS)는 프로젝트를 시각적으로 분류하는 체계입니다.

 

  업무 범위에서부터 시작하는 업무 분류 체계는

  결과물이 결과물을 만들어 내는 프로젝트로 이어지는 과정을 보여줍니다.

 

  업무 분류 체계는 시각적으로 표시되므로 워크플로 관리 소프트웨어

  프로젝트 관리 프레임워크를 조합하여 만들 수 있습니다.

 

  이러한 수단에는 타임라인, 칸반 보드, 캘린더가 포함됩니다.

 

 

asana에서 작성한 wbs 예시.

 

 

만약, 스케일이 거대한 어떤 프로그램을 만든다면 한 명, 두 명뿐 아니라 여러 명의 개발자들이 함께 개발한다.

하지만 'A'라는 개발자는 어디부터 어디까지, 무엇을 어떻게 나누어 개발할까?

 

WBS는 어떤 업무를 큰 단위부터, 중간, 그리고 작은 단위까지 계층적으로 분류한다.

그리고 개발에 필요한 인원, 기간등을 작성하게 된다.

 

이는 업무를 식별하고, 대략적인 일정과 비용을 산정하는 기초 자료가 된다.

 

또한, 프로젝트에서 각자 할당된 태스크를 쉽게 식별하고, 각 요소별 작업의 진척도를 한눈에 파악하여

문제가 생기기 전에 일정을 조정하거나 변경할 수 있다.

 

기능별로 단순하게 정리된 WBS는 팀원간의 의사소통에도 도움이 된다.

 

 

 


대분류 중분류 소분류 시작일자 완료일자 인원 완료율
웹사이트 디자인 수정 브랜드 가이드라인 수정 브랜드 색상 2024.06.15 2024.06.19 A, B 35%
    브랜드 무드보드 2024.06.04 2024.06.06 A 100%
    디자인 UX 2024.05.31 2024.06.01 C 100%
  메시징 프레임워크 만들기 헤드라인 2024.06.04 2024.06.13 A, C, D 13%
    행동 강령 2024.05.31 2024.06.06 C 100%
    언어 가이드라인 2024.06.04 2024.06.05 B, E 100%
  새 사진 추가 사진 촬영 2024.05.31 2024.05.31 D, E 100%
    사진 편집 2024.06.01 2024.07.31 A 25%
    최종 선정 2024.07.31 2024.08.07 A, B, C,D, E 79%

상단 표를 바탕으로 작성한 WBS.

 

 

 

 

'ㄱ. 걱정과 공부 > 오늘의 한웅큼' 카테고리의 다른 글

온 프레미스와 오프 프레미스.  (0) 2024.08.21
SQL과 NoSQL  (9) 2024.07.24
JSON 과 XML.  (0) 2024.06.20
상수와 리터럴.  (1) 2024.06.15

+ Recent posts