클라우드 네이티브 (Cloud Native)

2023. 1. 22. 00:00SW 기술 트렌드

요즘 대부분의 아이들은 클라우드 환경에서 태어나고 성장하고 일한다. 우리는 이들을 클라우드 네이티브라고 부른다.

CNCF의 클라우드 네이티브 정의
클라우드 네이티브 기술은 조직이 퍼블릭, 프라이빗, 하이브리드 클라우드와 같은 현대적이고 동적인 환경에서 확장 가능한 애플리케이션을 빌드하고 실행할 수 있도록 지원합니다. 컨테이너, 서비스 메시, 마이크로서비스, 불변경적 인프라, 선언적 API가 이러한 접근 방식의 예시입니다. 이러한 기술을 통해 복원력 있고 관리 가능하며 관찰 가능한 느슨하게 결합된 시스템을 구현할 수 있습니다. 강력한 자동화와 결합하여 엔지니어는 최소한의 수고로 영향력이 큰 변경을 자주, 그리고 예측 가능하게 수행할 수 있습니다.

public, private, and hybrid clouds
containers
service meshes
microservices
immutable infrastructure
declarative API


클라우드 네이티브 아키텍쳐
소프트웨어 개발 환경은 최신 아키텍처 패러다임과 기술을 통해 끊임없이 변화하고 진화하고 있습니다. 때때로 소프트웨어 아키텍처는 획기적인 기술과 접근 방식의 등장으로 근본적인 변화를 겪습니다. 그러한 혁신 중 하나가 클라우드 네이티브 아키텍처입니다. 클라우드 네이티브 아키텍처는 소프트웨어 애플리케이션 개발의 맥락에서 소프트웨어 애플리케이션을 빌드, 배포 및 관리하는 방식을 변화시키는 중대한 변화입니다. 클라우드 네이티브 아키텍처는 소프트웨어 애플리케이션의 민첩성, 속도, 안전성 및 적응성을 향상시키는 원동력이 되었습니다.

마이크로서비스 모음으로 설계됨
클라우드 네이티브 애플리케이션은 잘 정의된 비즈니스 기능을 제공하는 느슨하게 결합된 독립적인 서비스의 모음으로 설계됩니다. 이를 마이크로서비스라고 합니다. 마이크로서비스는 클라우드 네이티브 애플리케이션을 구축하는 데 필수적인 기본 아키텍처 원칙입니다. 마이크로서비스 아키텍처의 기본을 모르면 제대로 된 클라우드 네이티브 애플리케이션을 구축하는 것은 사실상 불가능합니다.
마이크로서비스 아키텍처는 소프트웨어 애플리케이션을 구축하는 스타일입니다. 마이크로서비스 아키텍처가 등장하기 전에는 소프트웨어 애플리케이션을 다양하고 복잡한 비즈니스 시나리오를 충족하는 모놀리식 애플리케이션으로 구축했습니다. 이러한 모놀리식 애플리케이션은 본질적으로 복잡하고 확장하기 어렵고 유지 관리 비용이 많이 들며 개발 팀의 민첩성을 저해합니다. 모놀리식 애플리케이션은 독점적인 통신 프로토콜을 사용하여 서로 통신하며 단일 데이터베이스를 공유하는 경우가 많습니다.

컨테이너화 및 컨테이너 오케스트레이션 사용
클라우드 네이티브 애플리케이션을 설계하고 개발하는 단계에서 마이크로서비스가 중요한 것처럼, 컨테이너는 클라우드 네이티브 애플리케이션을 패키징하고 실행하는 데 중요합니다. 클라우드 네이티브 애플리케이션을 개발할 때 빌드하는 마이크로서비스는 컨테이너 이미지로 패키징되어 컨테이너 호스트 위에서 실행됩니다.

개발 수명 주기 자동화
클라우드 네이티브 애플리케이션을 제공할 때는 민첩성, 신속성, 안전성을 확보하는 것이 중요합니다. 이를 위해서는 클라우드 네이티브 애플리케이션 개발의 전체 수명 주기를 간소화하고 가능한 모든 단계를 자동화해야 합니다.
클라우드 네이티브 애플리케이션의 맥락에서 자동화는 개발 수명 주기의 수동 작업을 자동화하는 것입니다. 여기에는 통합 테스트 실행, 빌드, 릴리스, 구성 관리, 인프라 관리, 지속적 통합(CI) 및 지속적 배포/배포(CD) 등의 작업이 포함됩니다.

클라우드 네이티브 애플리케이션을 프로덕션 환경에 배포할 때는 애플리케이션의 동작을 관리하고 관찰해야 합니다. 다음은 클라우드 네이티브 애플리케이션을 동적으로 관리하는 데 필요한 몇 가지 주요 기능입니다:

자동 확장
트래픽 또는 부하에 따라 애플리케이션 인스턴스를 확장 또는 축소합니다.

고가용성
장애 발생 시 현재 데이터 센터에서 새 인스턴스를 생성하거나 트래픽을 다른 데이터 센터로 이동하는 기능을 제공합니다.

리소스 최적화
동적 확장과 초기 비용 없이 확장 요구 사항에 실시간으로 자동 응답하여 리소스를 최적으로 사용하도록 보장합니다.

관찰 가능성
중앙 제어를 통해 클라우드 네이티브 애플리케이션의 로그, 메트릭, 추적을 지원합니다.

서비스 품질(QoS)
애플리케이션 전반에서 엔드투엔드 보안, 스로틀링, 규정 준수, 버전 관리를 지원합니다.

중앙 컨트롤 플레인
클라우드 네이티브 애플리케이션의 모든 측면을 관리할 수 있는 중앙 집중식 공간 제공

리소스 프로비저닝
각 애플리케이션에 대한 리소스 할당(CPU, 메모리, 스토리지, 네트워크)을 관리합니다.

멀티클라우드 지원
프라이빗, 하이브리드, 퍼블릭 클라우드를 포함한 여러 클라우드 환경에서 애플리케이션을 관리하고 실행할 수 있는 기능을 제공합니다(특정 애플리케이션에 여러 클라우드 제공업체의 구성 요소와 서비스가 필요할 수 있음).


내용은 책 "Design Patterns for Cloud Native Applications"를 참고했다.
https://learning.oreilly.com/library/view/design-patterns-for/9781492090700/

 

Design Patterns for Cloud Native Applications

With the immense cost savings and scalability the cloud provides, the rationale for building cloud native applications is no longer in question. The real issue is how. With this practical … - Selection from Design Patterns for Cloud Native Applications [

www.oreilly.com