Skip to content

Latest commit

 

History

History
135 lines (78 loc) · 6.11 KB

MSA를_이해하기_위한_#1.md

File metadata and controls

135 lines (78 loc) · 6.11 KB

MSA(Micro Service Architecture)를 이해하기 위한 #1


Cloud Native란?

일반적으로 “클라우드 네이티브”는 클라우드 컴퓨팅 모델의 이점을 활용하는 애플리케이션 구축 방법론을 말한다.

핵심은 애플리케이션을 어떻게 만드는지, 어떻게 배포하는지다.
따라서 클라우드 네이티브는 데이터 센터가 아닌 퍼블릭 클라우드에 위치한 것을 말한다.

CNCF란?

CNCF(Cloud Native Computing Foundation)는 2015년 12월 리눅스 재단 소속의 비영리 단체.

첫 번째 프로젝트로 Kubernetes를 Google에서 기증함.
클라우드 네이티브 컴퓨팅 환경에서 필요한 다양한 오픈소스 프로젝트를 추진하고 관리하고 있다.
CNCF 멤버로는 인텔, Arm, 알리바바 클라우드, 에저, 구글, 레드헷, SAP, vmware 등등 500개 이상의 글로벌 기업들이 활동하고 있다.


Devops

DevOps는 레거시 애플리케이션과 최신 클라우드 네이티브 애플리케이션 및 인프라를 연결하는 것을 의미.

DevOps는 신규 또는 수정된 소프트웨어 기능이나 제품의 릴리즈 주기 단축을 장려.

CI/CD

CI/CD는 Continuous Integration/Continuous Delivery(지속적 통합/지속적 배포)를 뜻한다.

지속적인 통합이 제대로 구현되면 애플리케이션 코드의 새로운 변경 사항이 정기적으로 빌드 및 테스트를 거쳐 공유 리포지토리에 병합됩니다.
따라서 여러 명의 개발자가 동시에 작업 시, 서로 충돌하는 문제를 이 방법으로 해결할 수 있다.

MSA

각각을 마이크로하게 나눈 독립적인 서비스를 연결한 구조를 말하며, 이러한 특성 덕분에 시스템 전체의 중단 없이 필요한 부분만 업데이트·배포가 가능.

유연한 대응 가능 -> 실시간으로 요구사항을 반영

Container [Docker]

Container는 전체 운영 체제를 번들로 제공하지 않는다.

단지, 소프트웨어가 실행할 때 필요한 라이브러리 및 설정들만 포함되기 때문에 VM보다 적은 공간을 차지한다.
일반적으로 Container를 생성하는 Image의 크기는 수십 MB 정도.
따라서, Container는 VM보다 공간을 효율적으로 사용할 수 있고, 가볍다.

  • 번들
    • 소프트웨어, 라이브러리, 설정 파일 등의 모음

Public cloud

공용 클라우드는 인터넷을 통해 모든 사용자에게 서비스를 제공하는 클라우드 서비스 모델.

AWS, Google Cloud, Azure와 같은 대형 기업들이 주로 제공하며, 사용한 만큼 비용을 지불하는 pay-as-you-go 방식 사용.

Private cloud

사설 클라우드는 특정 조직만이 사용할 수 있는 클라우드 서비스 모델.

자체 데이터 센터 또는 전용 호스팅을 통해 운영되며, 보안 및 데이터 통제에 중점을 둔 조직에게 이상적인 선택.

Hybrid cloud

하이브리드 클라우드는 공용 클라우드와 사설 클라우드를 결합한 모델로, 서로 다른 요구사항을 가진 비즈니스 애플리케이션에 대한 유연성을 제공.

이러한 설정은 데이터 보안 및 개인정보 보호와 같은 사설 클라우드의 이점과 함께, 공용 클라우드의 확장성 및 비용 효율성을 활용할 수 있다.


Monolithic Architecture

장점

  1. 어떤 기능(서비스)이든지 개발되어 있는 환경이 같아서 복잡하지 않다.
  2. 쉽게 고가용성 서버 환경을 만들 수 있다.

  • 고가용성
    • 시스템이 상당히 오랜 기간 동안 지속적으로 정상 운영이 가능한 성질을 말한다.

단점

  1. 한 프로젝트의 덩치가 너무 커져서 애플리케이션 구동시간이 늘어나고 빌드, 배포 시간도 길어진다.
  2. 조그마한 수정사항이 있어도 전체를 다시 빌드하고 배포를 해야 한다.
  3. 일부분의 오류가 전체에 영향을 미친다.
  4. 기능별로 알맞은 기술, 언어, 프레임워크를 선택하기가 까다롭다.

Paas, [Platform as a Service]

PaaS는 사용자에게 소프트웨어 개발 및 배포를 위한 플랫폼을 제공하는 클라우드 서비스 모델.

예를 들어, Heroku는 PaaS를 제공하는 플랫폼 중 하나입니다. 개발자는 Heroku를 통해 자신들의 웹 애플리케이션을 쉽게 배포하고 관리할 수 있다.
Heroku는 개발 도구, 데이터베이스, 서버 등 개발에 필요한 모든 요소를 제공.

  • Heroku
  • Microsoft Azure
  • AWS Elastic Beanstalk

Saas, [Software as a Service]

SaaS는 사용자에게 인터넷을 통해 소프트웨어를 제공하는 클라우드 서비스 모델.

사용자는 웹 브라우저를 통해 애플리케이션에 접근하며, 서비스 제공자가 애플리케이션의 실행 및 유지 관리를 담당.

예를 들어, Google Docs는 SaaS의 일종. 사용자는 웹 브라우저를 통해 Google Docs에 접속하고 문서를 작성하거나 편집할 수 있다.
사용자는 소프트웨어의 설치, 업데이트, 보안 등에 대해 걱정할 필요가 없다.

Iaas, [Infrastructure as a Service]

IaaS는 사용자에게 가상화된 컴퓨팅 리소스를 제공하는 클라우드 서비스 모델.
사용자는 물리적 서버, 네트워크, 데이터 스토리지 등의 IT 인프라를 필요에 따라 확장하거나 축소할 수 있으며, 서비스 제공자가 이러한 인프라의 유지 관리를 담당.

예를 들어, Amazon Web Services(AWS)는 가장 대표적인 IaaS 제공자 중 하나.
사용자는 AWS를 통해 서버, 스토리지, 네트워크 등의 인프라를 클라우드 환경에서 이용하고, 필요에 따라 이를 확장하거나 축소할 수 있다.
AWS는 이러한 인프라의 유지 관리를 담당.


Scale up

서버 자체의 사양을 증가시키는 것

Scale out

비슷한 사양의 서버를 여러 대 두어 확장하는 방법