Cloud Native & CNCF
1. Cloud Native
1. 개념
Cloud Native는 애플리케이션을 클라우드 컴퓨팅 환경을 기반으로 개발, 배포, 운영/관리하는 소프트웨어 개발 방법론.
- 개발 단계부터 클라우드 환경을 고려해 애플리케이션을 만드는 기술과 방법들을 포괄하는 개념.
2. 구성 요소
1. 마이크로서비스 아키텍처
애플리케이션을 독립적인 작은 기능들로 분해하여 구축.
- 각각의 애플리케이션들을 마이크로 한 단위인 서비스로 분리해 독립적으로 개발 / 배포 / 운영
- 애플리케이션의 모든 기능이 단일 소스로 통합된 모놀리식 구조에 비해, 상대적으로 배포/운영에 있어 유연/확장성이 높음.
2. 컨테이너 기술
실행에 필요한 모든 파일을 포함한 전체 실행(runtime) 환경에서 애플리케이션을 패키징하고 격리할 수 있는 기술
- 운영체제를 제외하고 어플리케이션 실행에 필요한 모든 파일들을 패키징한 형태.
- 기존의 서버에 하이퍼바이저를 설치하고, 그 위에 가상 OS(게스트 OS)와 앱을 패키징한 VM을 만들어 실행하는 방식인 ‘하드웨어 레벨’의 가상화와는 달리 컨테이너는 게스트 OS와 하이퍼바이저가 없는 ‘OS 레벨’ 가상화 구조이기 때문에 시스템에 대한 요구사항이 적음.(속도, 유연성, 확장성 측명에서 효과적)
3. DevOps
개발(Development)과 운영(Operation) 간의 긴밀한 협업/통합 프로세스를 통합해, 개발에서 배포까지 이르는 프로세스의 속도를 높이는 개발 문화/프로세스/업무 프레임워크
- 릴리즈 주기를 단축시키기 위해 등장한 개념.
4. CI/CD
개발 - 빌드 - 테스트 - 배포의 전체 프로세스를 통합하고 자동화하여 안정적으로 지속적인 서비스를 제공하기 위한 방법
-
프로세스 자동화를 통해 개발/배포 시간이 단축, 배포주기가 짧아짐.
- 더 짧은 주기로 서비스 제공, 개선이 가능해짐.
- 사용자 요구사항에 신속하게 대응이 가능해짐.
- CI (Continuous Integration) : 애플리케이션 코드의 새로운 변경 사항이 정기적으로 빌드 및 테스트를 거쳐 공유 repo에 병합되는 것. (빌드, 테스트, 병합까지의 프로세스)
- CD (Continuous Delivery / Depolyment)
- Continuous Delivery : CI를 거친 소프트웨어가 항상 prod 환경에 올라갈 준비가 되어 있도록 자동화 된 프로세스.
- Continuous Depolyment: CI를 거친 소프트웨어가 바로 prod 환경에 올라가도록 자동화 된 프로세스.
2. CNCF (Cloud Native Computing Foundation)
클라우트 네이티브 컴퓨팅 환경에서 필요한 다양한 오픈소스 프로젝트를 추진, 관리하는 리눅스 재단 소속의 비영리 단체
-
인텔, ARM, 에저, 구글, 레드헷, Vmware 등등 500개 이상의 글로벌 기업들이 참여 중
-
관리하는 프로젝트들의 경우, 3단계에 따라서 프로젝트 완성도를 관리함.
- 성숙도 단계(Maturity levels) : SandBox, Incubating, Gradudation
- Graduation 단계는 실제 운영환경에서 적용할 수 있는 정도의 프로젝트를 말함.
- 성숙도 단계(Maturity levels) : SandBox, Incubating, Gradudation
1.CNCF Landscape
- 모든 클라우드 네이티브 오픈 소스 프로젝트와 독점 제품을 카테고리로 컴파일하고 정리하여 현재 Cloud Native 환경에서 개발에 필요한 기술/툴들에 대한 개요를 제공