Cloud Native 정의
클라우드 제공 모델에서 제공하는 분산 컴퓨팅을 활용하기 위해 애플리케이션을 구축 및 실행하는 개념을 의미
이러한 클라우드 네이티브 기술은 서비스 제공에 미치는 영향 없이 애플리케이션을 빠르고 자주 변경할 수 있도록 지원
- CNCF에서 정의한 바와 같이 클라우드 네이티브 기술은 조직이 클라우드에서 확장 가능한 애플리케이션을 구축하고 실행할 수 있도록 지원한다.
CNCF(Cloud Native Computing Foundation)
CNCF 조직은 2015년에 설립돼 Kubernetes를 비롯한 주요 클라우드 네이티브 구성 요소를 개발하는 오픈 소스를 관리하는 단체
클라우드 네이티브의 장점
- 조직은 클라우드 네이티브 소프트웨어 애플리케이션을 구축할 때 다양한 경쟁력을 확보할 수 있다.
1. 효율성 증가
- 클라우드 네이티브 개발은 DevOps 및 CI/CD와 같은 애자일 방식을 지원한다.
- 개발자는 자동화된 도구, 클라우드 서비스 및 현대적 설계 문화를 활용하여 확장 가능한 애플리케이션을 신속하게 구축한다.
2.비용 절감
- 물리적 인프라를 조달하고 유지관리하는 비용이 없어진다.
3. 가용성 보장
- 클라우드 네이티브 기술을 활용하면 복원력이 뛰어나고 가용성이 높은 애플리케이션을 구축할 수 있다.
- 업데이트 시 애플리케이션 중지 시간이 발생하지 않는다.
- 사용량 급증 시에는 앱 리소스를 확장하여 불편을 해소할 수 있다.
클라우드 네이티브 애플리케이션
- 기존에는 개발자가 필요한 모든 기능을 포함하는 단일 블록 구조인 monolith 애플리케이션을 구축하였다.
- 클라우드 네이티브 애플리케이션은 MicroService라는 여러 상호 의존적인 소규모 서비스로 구성하여 애플리케이션을 구축한다.
- MicroService는 최소한의 컴퓨팅 리소스만 사용하여 독립적으로 작동하고 실행되어 민첩성이 향상된다.

클라우드 네이티브 애플리케이션 아키텍처
- 클라우드 네이티브 애플리케이션을 구축하고 실행하는데 사용하는 다양한 소프트웨어 구성 요소를 결합

1. Immutable Infrastrcture
- 클라우드 네이티브 애플리케이션을 호스팅하는 서버가 배포 후에도 변경되지 않음을 의미
- 애플리케이션 업데이트 시 기존 서버는 삭제되고 새로운 서버가 만들어짐
-> Immutable Infrastructure 이 과정에서 서버가 변경되지 않도록 해준다.
2. MicroService
- 완전한 클라우드 네이티브 소프트웨어로 함께 작동하고 독립적인 소프트웨어 구성 요소이다.
- 각 MicroService는 서로 통신하는 독립적인 소프트웨어 구성 요소이다.
3. API(Application Programing Interface)
- 두 개 이상의 소프트웨어 프로그램이 정보를 교환하는데 사용하는 방법
4. 서비스 메시
- 서비스 메시는 여러 마이크로 서비스 간의 통신을 관리하는 클라우드 인프라의 소프트웨어 계층
5. Container
- 클라우드 네이티브 애플리케이션에서 가장 작은 컴퓨팅 단위
- 마이크로서비스 코드와 기타 필수 파일을 패키징하는 소프트웨어 구성 요소
클라우드 네이티브 개발
1. CI(Continuouse Intergration)
- 개발자가 변경 사항을 공유 코드 기반에 자주 오류 없이 통합하는 소프트웨어 방식
- CI Tool은 모든 변경 사항에 대한 코드 품질을 자동으로 평가하여 안정성을 보장한다.
2. CD(Continuouse Delivery/Deployment)
- 지속적 배포는 마이크로서비스가 항상 클라우드에 배포될 준비가 되어 있는지 확인한다.
- 자동화 도구를 사용하여 새로운 기능을 도입하고 애플리케이션의 버그를 수정하는 등 변경을 할 때 위험을 줄인다.
3. DevOps
- 개발 및 운영팀의 협업을 개선하는 소프트웨어 문화
- DevOps 도구를 사용하여 클라우드 네이티브 개발을 자동화한다.

4. 서버리스
클라우드 네이티브 개발 및 인프라 환경
- 클라우드 환경에 적합한 애플리케이션 단위 및 배포환경

<Refernce>
AWS-클라우드네이티브
티스토리-Char님