Today Key : Cloud Native App, CNA, Microsoft, Service, MSA, Immutable Infrastructure
어제 프레젠테이션용 CNA 포스팅에 이어서, 오늘은 기존의 형식의 CNA 포스팅입니다.
큰 줄기는 당연히 이번 포스팅 내용을 기준으로 만든 프레젠테이션 자료였기 떄문에 똑같지만
아주 약간 추가되어 있는 내용이라고 보시면 될 것 같습니다.
혹시 수정이나 추가되었으면 하는 부분은 알려주시면 감사하겠습니다.
Cloud Native App 개요
▪ Native App
- 특정 플랫폼이나 Device에서 사용되도록 개발된 Application.
최적화 된 환경에서 구동되기 때문에 성능적으로 Web App에 비해 우수.
▪ Web App [ ↔ Native App ]
- 일반적인 표준 Web 기술을 사용하여 Platform이나 Device에 상관 없이 사용되도록 개발된 Application.
표준 기술로 구현하기 때문에 멀티플랫폼, 플랫폼에 대한 이식성이 우수
▪ Cloud Native
- 클라우드 환경에 최적화 됨, 혹은 태생이 클라우드인, 클라우드 전용
▪ Cloud Native App
- 클라우드 환경에 최적화되어 서비스 되도록 개발된 Application
- Native App이라는 명칭을 쓰지만, Cloud 환경 어디에서든 구동되기 때문에 의미상으로는 Web-App과 같음.
Cloud Native App 특징
▪ Scalable
- 유연한 서비스 확장이 가능 (별도의 아키텍처를 변경이 없이)
- 서비스에 대한 일시적인 확장 및 수요에 따라서 빠른 서비스 확장 및 축소가 가능
▪ Agility
- Application이 배포 및 업데이트 등을 빠르게 구현 가능
- 빠른 배포 및 업데이트를 위해 각 서비스는 독립된 하나의 작은 형태로 동작
▪ Continuity
- 서비스가 지속적 배포되고, 관리될 수 있도록 함.
- 서비스에 대한 업데이트 시에도 기존 서비스를 즉각적으로 대체 가능. (서비스 연속성)
- 서비스 배포를 빠르고, 쉽게 구현하여 지속적인 서비스의 배포(업데이트, 오류 수정 등의 이슈)가 가능.
▪ Automation
- 자동화를 통해서 서비스에 대한 확장 및 축소가 가능.
- Applicaion이 구동되기 위한 플랫폼을 손쉽게 자동으로 구축이 가능
Cloud Native App를 이해하기 위한 특징
The twelve-factor app
▪ 서비스로 제공되는 Web-App, 혹은 SaaS(Software As A Service)로 불리는 최근의 소프트웨어를 개발하기에 적합한 방법론
Micro Service
▪ 독립적이고 매우 작은 개별 서비스들로 전체의 서비스를 구성
▪ 각 서비스는 다른 서비스와의 종속성을 없애며, 하나의 서비스로 구성된 Application에 비해서 가벼움.
Standard API
▪ REST-API와 같은 표준화 된 방식의 API 사용하여 각 서비스 간의 통신
▪ 표준화 된 통신 방식을 사용하기 때문에, 각 서비스의 구현은 Polyglot Programming과 같이 다양한 방향으로
구현이 가능. (서비스 간에 통신이 특정 방식이 아니라, 표준화 되어 있기 때문)
Immutable Infrastructure
▪ Develoment ,QA ,Deploy 전반에 걸쳐서 항상 동일한 환경의 인프라를 제공
▪ Provisioning Tool 혹은 특정 Script 등의 형태 등을 통해서 동적으로 동일한 인프라 환경을 빠르게 제공 가능
즉, 하나의 인프라를 구축 후에 지속적인 관리 형태 방식 이외의, 동일한 인프라를 새로 만들어서 기존 인프라를 쓰고
버릴 수 있는(disposable) 형태 가져갈 수 있음
Container
▪ 단일 Host의 Resource를 격리하여 다수의 시스템을 운영하게 하는 OS 레벨의 가상화
▪ Host OS의 Resource를 공유해서 사용하기 때문에 매우 가벼움.
▪ 특히 Docker와 같은 Container 형태에서는 이미지가 Layered 형태로 관리되기 때문에 이미지 자체가 가벼움
▪ 결국 Resource에 대한 효율성 및 가벼운 형태이기 때문에 Application 배포에 유리
Self-Service Infrastructure
▪ Infrastructure-as-a-Service
▪ 구조화 된 인프라 형태를 빠르게 배포 가능
▪ IAC (Infrastructure as Code) 코드를 실행하는 것으로 인프라 구축이 가능