회원가입을 하면 원하는 문장을
저장할 수 있어요!
다음
AWS 이용 중이라면 최대 700만 원 지원받으세요
요즘 클라우드를 넘어 ‘클라우드 네이티브’하게 라는 말이 자주 쓰이고 있습니다.
회원가입을 하면 원하는 문장을
저장할 수 있어요!
다음
회원가입을 하면
성장에 도움이 되는 콘텐츠를
스크랩할 수 있어요!
확인
요즘 클라우드를 넘어 ‘클라우드 네이티브’하게 라는 말이 자주 쓰이고 있습니다.
일반 기업뿐만 아니라 공공 부문에서도 정부 서비스를 개발할 때 클라우드 네이티브를 중심으로 진행해야 한다고 언급할 정도입니다. 클라우드 네이티브가 대체 어떤 것이길래 이토록 많은 곳에서 이야기하고 있을까요?
다양한 기업에서 그리고 공공에서 클라우드 네이티브를 정의하고 있지만, 저는 주로 클라우드 네이티브 컴퓨팅재단에서 설명하고 있는 클라우드 네이티브를 기준으로 설명하겠습니다. 필자는 클라우드 네이티브 컴퓨팅 재단(CNCF, Cloud Native Computing Foundation)의 앰배서더로 활동하고 있으며, 같은 재단의 클라우드 네이티브 교육 앰배서더인 Kubestronaut 인증을 가지고 있습니다.
한국어 번역도 있지만, 일부 내용이 최신이 아니고 정확하게 해당 표현을 설명하려면 영어 원문이 좀 더 정확해서 원문을 사용했음을 밝힙니다.
Definition
Cloud native practices empower organizations to develop, build, and deploy workloads in computing environments (public, private, hybrid cloud) to meet their organizational needs at scale in a programmatic and repeatable manner. It is characterized by loosely coupled systems that interoperate in a manner that is secure, resilient, manageable, sustainable, and observable. Cloud native technologies and architectures typically consist of some combination of containers, service meshes, multi-tenancy, microservices, immutable infrastructure, serverless, and declarative APIs — this list is non-exhaustive
|
위의 내용을 기반으로 클라우드 네이티브하다는 것의 특징을 살펴보면, 크게 3가지로 나눌 수 있습니다.
클라우드 네이티브하다고 말하려면 첫째, 다양한 클라우드 환경(퍼블릭, 프라이빗, 하이브리드)에서 프로그래밍 방식을 사용해서 반복적으로 워크로드(애플리케이션)를 확장/축소할 수 있어야 합니다.
Cloud native practices empower organizations to develop, build, and deploy workloads in computing environments (public, private, hybrid cloud) to meet their organizational needs at scale in a programmatic and repeatable manner.
반복적으로 코드를 사용할 수 있다는 것을 예제로 살펴보도록 하겠습니다.
다음의 Yaml 코드는 EKS(Amazon AWS), AKS(MS Azure), GKE(Google GCP) 그리고 온프레미스 어디에 배포해도 동일한 결과를 얻을 수 있습니다. 이와 같이 클라우드 네이티브하게 작성된 코드를 이용한다면, 코드의 재사용성을 높이고 해당 코드를 어떤 환경에도 손쉽게 배포하고 운영할 수 있습니다. 따라서 생산성을 극대화할 수 있게 됩니다.
둘째, 느슨하게 결합된 시스템으로 인해 상호운용성을 높일 수 있고, 이러한 특성으로 보안, 관측가능성 외에 다양한 이점을 얻을 수 있습니다.
It is characterized by loosely coupled systems that interoperate in a manner that is secure, resilient, manageable, sustainable, and observable.
느슨한 결합(Loose Coupling)은 구성 요소간의 의존성을 줄여서 독립적인 동작을 가능케 하고, 이를 통해 전체 시스템의 안정화와 유연성을 함께 가지고 갈 수 있게 합니다. 또한 이렇게 느슨한 결합을 가지고 있는 애플리케이션이라면 이미 구조적으로 마이크로서비스 아키텍처(MicroService Architecture, MSA)에 적합하게 설계되어 있다고 볼 수 있습니다.
그러한 흐름에 따라 클라우드 네이티브에는 주로 모놀리식(Monolithic) 아키텍처보다는 기능별로 구성 요소들을 나누어 해당 구성 요소를 필요에 따라 배포의 수를 조절하고, 더 이상 필요하지 않다면 삭제할 수 있는 마이크로서비스 아키텍처를 사용합니다. 이렇게 설계된 아키텍처라면 비즈니스 상황에 따라 애플리케이션의 형태 구조를 빠르게 변경 적용하여 운영할 수 있습니다.
마이크로서비스 아키텍처에 대한 예시로 Online-Boutique 애플리케이션을 배포하고 이를 이스티오(Istio) 서비스 메시를 통해서 확인한 결과를 준비했습니다.
셋째, 클라우드 네이티브한 아키텍처는 제한이 없는 다양한 형태로 서비스를 제공할 수 있습니다.
Cloud native technologies and architectures typically consist of some combination of containers, service meshes, multi-tenancy, microservices, immutable infrastructure, serverless, and declarative APIs — this list is non-exhaustive
예를 들어 컨테이너를 기반으로 한 멀티 테넌시(multi-tenancy) 구조를 가지고 다양한 사용자 또는 고객이 공동으로 관리하고 운영하는 클러스터를 가질 수 있으며, 이는 매우 안정적으로 서비스를 운영할 수 있는 환경입니다. 이 환경에서 서버리스(Serverless), MLOps 등을 손쉽게 구현할 수 있죠. 현재 가장 인기 있는 LLM에서의 소중한 자원인 GPU를 효율적으로 운영하는 데에도 사용될 수 있습니다.
이러한 구조를 가지기 위해 쓰이는 대표적인 구성 요소는 다음과 같이 그림으로 정리할 수 있습니다.
이와 관련하여 기본적인 뼈대가 되는 쿠버네티스, 도커, CI/CD(젠킨스) 그리고 관측가능성(Observability, 프로메테우스와 그라파나)을 실제로 실습하고 다루어 보고 싶으시다면, 다음의 책을 추천드립니다.
지금까지 설명에서 알 수 있듯 클라우드 네이티브하기 위해서는 단순히 개발, 운영 등의 관련 모든 부서의 전반적인 혁신이 필요합니다. 이러한 혁신을 위해 감내해야 하는 노력과 시간이 필요하지만, 그 결과 특정 회사와 시스템에 종속되지 않는 진정한 자유로움을 얻게 될 겁니다.
또한 클라우드 네이티브하게 동작하는 애플리케이션이라면 어떠한 환경에서도 실행이 가능하므로 개발자들이 더 이상 동작하는 환경을 신경쓰지 않아도 됩니다. 따라서 개발 조직이 개발에만 전념하는 형태로 운영될 수 있습니다.
마지막으로 클라우드 네이티브하게 설계되어 서비스를 운영한다면 최소한의 인력으로 많은 부분을 자동화하고, 필요할 때 자원을 사용할 수 있도록 설계할 수 있습니다. 따라서 저비용 고효율 형태를 유지할 수 있습니다.
이번 글이 보다 많은 분이 클라우드 네이티브하게 설계하고 운영할 수 있는 시작점이 되길 바랍니다.
<원문>
정보통신산업진흥원(NIPA)에서 운영하는 공개 SW 포털에 기고한 내용입니다.
[기고] 모두가 이야기하지만 일부만 아는 클라우드 네이티브하다는 것에 관하여
작가
조훈(CNCF 앰버서더)
시스템/네트워크 IT 벤더의 경험 이후, 메가존 GCP 클라우드 팀에서 쿠버네티스와 연관된 모든 프로젝트에 대한 Tech Advisor 및 Container Architecture Design을 제공하고 있다. 페이스북 ‘IT 인프라 엔지니어 그룹’의 운영진을 맡고 있으며, 오픈 소스 컨트리뷰터로도 활동한다. 지식 공유를 위해 인프런/유데미에서 앤서블 및 쿠버네티스에 관한 강의를 하기도 한다. 책 <컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커> 등 3권을 썼다. CNCF(Cloud Native Computing Foundation) 앰버서더로서 쿠버네티스 생태계가 더 활발하게 퍼질 수 있도록 기여하고 있다.
심근우
LG유플러스 CTO부문에서 대고객 비즈니스 시스템의 DevOps를 담당하는 UcubeDAX팀의 팀장으로 일하고 있다. 퍼블릭 클라우드와 프라이빗 클라우드에 걸친 쿠버네티스 클러스터를 안정적으로 운영하기 위해 노력하고 있으며, 특히 주니어 DevOps 엔지니어들의 육성에 큰 관심을 가지고 있다.
문성주
체커(CHEQUER) 사의 DevOps Engineer로서 쿠버네티스의 멀티 클러스터 관리 방법론과 쿠버네티스 구현체(CAPI, OCI)에 대한 명세와 컨테이너 리소스 격리 방법에 대한 연구를 병행하고 있다. 이런 연구 활동을 기반으로 쿠버네티스 볼륨 테스트 파트에 컨트리뷰션했다. 본업은 쿠버네티스 오퍼레이터와 같은 CRD(커스텀 리소스)를 개발해 현업에서 쿠버네티스를 좀 더 편리하게 사용할 수 있도록 돕는 일이다. 또한, 페이스북 그룹 ‘코딩이랑 무관합니다만'과 ‘IT 인프라 엔지니어 그룹'의 운영진을 맡고 있다.
이성민
미국 넷플릭스(Netflix) 사의 Data Platform Infrastructure 팀에서 사내 플랫폼 팀들과 데이터 사용자들을 어우르기 위한 가상화 및 도구들을 개발하는 일들을 하고 있다. 과거 컨테이너와 쿠버네티스에 큰 관심을 두고 ingress-nginx를 비롯한 오픈 소스에 참여했으며, 현재는 데이터 분야에 일하게 되면서 stateful 한 서비스들이 컨테이너화에서 겪는 어려움을 보다 근본적으로 해결하기 위한 많은 노력을 하고 있다.
요즘IT의 모든 콘텐츠는 저작권법의 보호를 받는 바, 무단 전재와 복사, 배포 등을 금합니다.