Cloud Native Architecture
Cloud Native Architecture란
- 클라우드에서 빌드되고, 클라우드 컴퓨팅 모델을 최대한 사용하는 워크로드를 디자인하고, 생성 및 운영하는 접근 방식
- 클라우드가 가지는 이점
- 관리 가능 및 관찰 가능한 느슨하게 결합된 시스템 사용 가능
- 복원력
구성 요소
CNCF, Pivotal이 제시
1. Microservice architecture

- 클라우드에서 마이크로 서비스로 개발된다
- 크게 inner 아키텍처와 outer 아키텍처로 나뉜다(가트너 도식 기반)
- inner : 도메인 관련 부분을 비즈니스 로직을 가지고 서비스를 개발하는 파트
- outer : 이너 아키텍처에 구성된 애플리케이션이 운영하고 작동될 수 있도록 지원하는 시스템
- 예시 : 서비스 라우터, 로드밸런서, 서비스 디스커버리, ,Config store, CI/CD Automation
2. Containers
- 마이크로 서비스로 개발하기 위해서 컨테이너 가상화 기술을 거의 표준처럼 사용
- 매우 가볍다
- container registry에 빌드한 이미지 저장하면 다른 환경에서 쉽게 가져다 쓸 수 있다.
3. Devops
- 서비스에 발생하는 문제나 변경사항을 빠르게 반영하기 위해 개발과 운영 조치간 유기적 협력을 통해 지속적인 서비스의 개선을 해나가는 방법론
- Development + Operation
- Development쪽은 주로 고객의 요구사항 변화에 대응
- Operation쪽은 안정성을 주로 작업
- 위 두가지 과정에서 생기는 충돌을 해결하고 시스템의 개선작업을 지속적으로 할 수 있는 문화, 개발프로세스가 DevOps이다.
- 변경사항에 맞춰 코드를 작성하고 테스트하는 개발
- 배포하고 모니터링하는 운영단계
- 모니터링하면서 다시 변경사항에 맞춰 개발로 돌아가는 이 순환과정이 계속해서 진행되는 것이 DevOps의 핵심
4. CI/CD
- 이 파이프라인에 의해 자동으로 빌드 테스트 배포 과정 거친다
CI 작업
- compile, test, packaging 작업
- 통합을 위해 빌드, 테스트, merge 작업을 자동화하는 단계
- XP에서는 주기적으로 머지하는 것을 강조
- VCS(git)을 활용해서 지속적으로 소스코드, 자료를 관리해주는 단계라고 보면 된다.
CD 작업
- 개발, 테스트, 운영서버 배포 작업
- 두가지 의미를 지님.
Continuous Delivery
- CI에서 통합된 데이터를 검증하고 최종 배포를 수동으로 하는 작업
Continuous Deployment
- 수작업으로 하냐, 자동으로 하냐에 따라 의미가 갈린다.
- MSA에서 CI/CD 안되면 매우 힘들다.
- 서버 100개씩 되는데 하나하나 수동배포? 안된다.