클라우드 네이티브 아키텍처에 의해 설계되고 구현되는 어플리케이션을 클라우드 네이티브 어플리케이션(Cloud Native Application)이다.
클라우드 네이티브 어플리케이션(Cloud Native Application)은 아키텍처의 특징이나 안티프레자일와 같은 특징을 가지고 다음과 같은 형태로 구현된다.
클라우드 네이티브 어플리케이션(Cloud Native Application) 특징
1. MicroServices
2. CI/CD
CI(Continuous Integration, 지속적인 통합)
- 통합 서버, 소스 관리(SCM), 빌드 도구, 테스트 도구
- ex) Jenkins, Team CI, Travis CI
CD(지속적인 배포)
CD에는 두 가지 의미가 포함되어 있다.
- 패키지화 된 형태의 결과물을 실행 환경에 어떻게 배포하는지 따라
- Continuous Delivery (지속적인 전달)
- Continuous Deployment (지속적인 배포)
- Pipe line
중요한 것은 시스템의 정상적인 운영과 시스템의 다운타임을 최소화하는 것이다.
새로운 것을 바로 적용하지 않는다.
📌 배포 전략 : 카나리 배포 또는 블루그린 배포
카나리 배포
전체 사용자의 95%는 이전 버전의 서비스를 계속 사용하도록 하고 한 5%의 사용자만이 새로운 버전의 서비스를 사용하게 하는 방법
블루그린 배포
이전 버전의 사용자 트래픽을 이전 버전과 거의 동일한 새 버전으로 점진적으로 이전시키는 방법
3. DevOps
DevOps = Development(개발) + Operation(운영) = 개발 조직과 운영 조직의 통합을 의미
이러한 통합으로 고객의 요구사항을 빠르게 반영하고 만족도 높은 결과물을 제시하는 것
- 마이크로 서비스에 문제가 발생했을 경우에 바로바로 수정해서 다시 배포하는 과정
- 처음에 시스템이 기획, 구현, 테스트, 배포 과정을 시스템이 종료될 때까지 무한 반복하며 고객이 원하는 결과물을 만드는 데에 목적
기존의 엔터프라이즈 어플리케이션들은 고객의 요구사항에 맞게 도메인을 분석하고 시스템을 설계 그리고 어플리케이션 구현과 테스트 마지막으로 배포 과정을 거쳐 시스템 개발을 완료하게 된다.
하지만,
고객의 요구사항은 언제든지 변경되기 때문에 시스템의 개발 마지막에 발생 수정하는 것보다 필요할 때 마다 바로 수정하는 구조가 더 좋다.
필요할 때마다 수정하면 개발 기간이 길어질 수 있지만, 개발 목적에 맞는 서비스와 고객 요구사항에 맞는 완성물이 우선이다.
결론 : 자주 테스트하는 과정을 거쳐 완성될 때까지 지속적으로 진행하는 것이 DevOps이다.
클라우드 네이티브 어플리케이션은 DevOps 환경에 맞춰서 서비스의 구조를 작은 단위로 분할할 수 있게 함으로써 더 자주 통합, 더 자주 테스트, 더 자주 배포할 수 있는 구조이다.
4. Containers / 컨테이너 가상화
- 하나의 어플리케이션을 구성하는 마이크로 서비스들을 클라우드 환경에 배포하고 사용하기 위해서 컨테이너 가상화 기술 사용
✔ Traditional Deployment(전통적인 배포)
하드웨어 → OS → APP
✔ Virtualzed Deplyment(가상화 배포)
하드웨어 → OS → Hypervisor기술을 통한 VM → OS → APP
- 가상 머신은 시스템이 가지고 있는 물리적인 하드웨어, 호스트 시스템
- 호스트 시스템이 가지고 있는 물리적인 하드웨어를 쪼개서 사용하는 개념으로서 하나의 하는데 호스트 시스템이 가지고 있는 물리적인 하드웨어를 쪼개서 사용하는 개념으로서 하나의 가상 머신은 독립적인 운영체제를 가지고 실행
- 각각의 가상 머신의 어플리케이션을 운영
- 그러나 가상 머신에서 작동되는 어플리케이션은 호스트 운영체제에 많은 부하를 주게 되고 시스템 확장에 한계
✔ Container Deployment(컨테이너 배포)
하드웨어 → OS → 컨테이너 → APP
- Cloud Native Application의 핵심
- 운영체제 위에 컨테이너 가상화를 기동하기 위한 소프트웨어 서비스를 작동(Container Runtime)
- 컨테이너 가상화에서는 공통적인 라이브러리나 리소스 같은 것들을 공유해서 사용
- 각자 필요한 부분에 대해서만 독립적인 영역에다가 실행할 수 있는 구조
- 따라서 기존의 하드웨어 가상화 기술보다는 더 적은 리소스를 사용
- 컨테이너 가상화 위에서 작동되는 서비스들은 가볍고 빠르게 운영
출처
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) 강의 - 인프런
Spring framework의 Spring Cloud 제품군을 이용하여 마이크로서비스 애플리케이션을 개발해 보는 과정입니다. Cloud Native Application으로써의 Spring Cloud를 어떻게 사용하는지, 구성을 어떻게 하는지에 대해
www.inflearn.com
'공부 > MSA' 카테고리의 다른 글
[MSA] Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) - Service Discovery (0) | 2024.01.03 |
---|---|
[MSA] Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) - Microservice와 Spring Cloud의 소개(12Factors~Spring Cloud란?) (1) | 2023.12.27 |
[MSA] Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) - Cloud Native Architecture (0) | 2023.12.21 |
[MSA] Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) - 소프트웨어 아키텍처 (0) | 2023.12.21 |
마이크로서비스 아키텍처(MSA)란? (0) | 2023.08.29 |