Cloud | Cloud Native
1. 개념
- Cloud computing 환경에서 제공하는 분산 컴퓨팅을 활용하기 위해 애플리케이션을 구축 및 실행할 때의 소프트웨어 접근 방식
- 클라우드가 제공하는 확장성, 탄력성, 복원성, 유연성을 활용하도록 설계 및 구축됨
- Cloud Native 기술은 조직이 퍼블릭, 프라이빗, 하이브리드 클라우드에서 확장 가능한 애플리케이션을 구축하고 실행할 수 있도록 지원함
- 쿠버네티스, 도커, 서버리스 함수 등의 기술을 사용하여 최신 애플리케이션 개발을 지원함
2. CNCF(Cloud Native Computing Foundation)
- Cloud Native System을 채택하는 다양한 조직과 서비스에 대응하여 설립된 오픈 소스 소프트웨어 재단
- Microsoft, Oracle, VMWare, Intel, Amazon 등
- Cloud Native 기술의 접근성, 가용성, 신뢰성 보장을 목표로 함
- MSA 내에서 컨테이너를 통합 관리하는 지속 가능한 환경을 구축하는 조직을 지원함
3. 특장점
1) 비용 효율성
- 물리적 인프라 조달 및 유지 관리 비용 절감
2) 독립성
- 애플리케이션을 서로 독립적으로 구축 가능, 개별적 관리 및 배치
3) 복원성
- 내장된 내결함성 및 재난 복구 메커니즘을 통해 강력한 수준의 복원력이 보장되어 있음
- 분산 아키텍처 및 자동 조정을 활용하여 리소스를 재할당하고 서비스 가용성을 유지함으로써 트래픽의 중단 또는 급증을 원활히 처리 가능
- Infrastructure가 중단되어도 온라인 상태 유지 가능
4) 표준 기반
- 오픈 소스 및 표준 기반 기술에 기반하는 경우가 많기 때문에 벤더 종속성이 줄어들고 이동성이 향상됨
5) 비즈니스 민첩성
- 네트워크에서 유연한 배포 옵션을 제공하며, 기존의 앱보다 작기 때문에 보다 쉽게 개발 및 배포 작업을 수행할 수 있음
6) 자동화
- 데브옵스 자동화 기능을 사용하여 정기적으로 릴리즈 되는 소프트웨어 변경 사항을 지속적으로 전달 및 배포 가능
- 확장성, 구축, 모니터링, 관리를 자동화하여 수동 작업을 줄임
- 구축 및 관리 절차를 간소화하소 가속화하여 일관성을 확보하고 오류를 줄여 리소스를 확보함
7) 작동 중지 시간 없음
- 쿠버네티스와 같은 컨테이너 통합관리자 덕분에 기본적으로 다운타임 없이 소프트웨어 업데이트 배포 가능
- 중단 시간 없는 구축 및 자동 조정을 통해 지속적 가용성 달성
4. Cloud Native Architecture
- 기존의 온프레미스 인프라가 아닌 클라우드에 존재하도록 특별히 설계된 애플리케이션 또는 서비스 설계
- 확장 가능한 Cloud Native Application을 구축하고 실행하는 데 사용하는 다양한 소프트웨어 구성 요소 결합
- 유지보수 용이, 비용 효율적, 자가 복구 가능, 높은 유연성
5. 활용 기술
1) 변경 불가능한 인프라
- 호스팅 서버가 배포 후에도 변경되지 않는 상태로 유지됨
- 더 많은 컴퓨팅 리소스가 필요한 경우, 이전 서버는 폐기되고 앱은 새로운 고성능 서버로 이전됨
- 변경 불가능한 인프라는 수동 업그레이드를 피함으로싸 클라우드 네이티브 배포 프로세스의 예측 가능성 높임
2) 마이크로 서비스
- 전체적으로 하나의 완전한 클라우드 네이티브 소프트웨어로 작동하는 소규모의 독립적인 소프트웨어 구성 요소
- 마이크로서비스 중 하나에 장애가 발생하더라도 애플리케이션이 계속 동작함
3) API (Application Program Interface)
- 둘 이상의 소프트웨어 프로그램이 서로 정보를 교환하는 데 사용하는 방식
- 클라우드 네이티브 시스템에서는 결합된 여러 개의 마이크로서비스를 통합하는 데에 사용됨
- 결과를 달성하기 위한 단계를 지정하는 것이 아닐, 마이크로서비스에 필요한 데이터와 결과를 알려줌
4) 서비스 메시
- 여러 마이크로서비스 간의 통신을 관리하는 소프트웨어 계층
- 새 코드를 작성하지 않고도 추가 기능 도입 가능
5) Container
- 클라우드 네이티브 애플리케이션에서 가장 작은 컴퓨터 유닛
- 마이크로서비스 코드 및 기타 필수 파일을 패키징하는 소프트웨어 구성 요소
- 마이크로서비스를 컨테이너화함으로써, 기반 운영 체제 및 하드웨어와 독립적으로 실행됨
- 장점 : 기존 배포 방식보다 적은 컴퓨팅 리소스 사용, 거의 즉시 배포 가능, 컴퓨팅 리소스의 효율적인 확장