클라우드 네이티브(Cloud Native)에 대해 들어보셨나요? ‘영어를 네이티브(Native)하게 한다’는 표현은 영어를 원어민처럼 구사할 줄 안다는 표현입니다. 그렇다면 클라우드 네이티브는 무엇일까요? 클라우드의 이점을 최대한 활용하여 클라우드 환경에 최적화된 상태를 의미합니다. 디지털 네이티브, AI네이티브까지 다양한 용어들이 등장하고 있습니다. 오늘의 주제인 클라우드 네이티브는 기존의 IT 환경이 클라우드로 전환되면서 등장한 개념으로, 기업의 클라우드 도입과 디지털 전환이 확대되면서 함께 확산되고 있는 개념 중 하나입니다.
클라우드 네이티브(Cloud Native)란?
클라우드 네이티브란 클라우드 컴퓨팅 모델의 이점을 최대한 활용하여 정보시스템을 구축 및 실행하는 환경을 의미합니다. 즉, 단순히 기존 시스템을 클라우드 인프라로 옮기는 것이 아닌 애플리케이션을 클라우드 환경에 맞게 재설계해 개발하고 운영하는 방식입니다.
2023년 10월, 행정안전부와 디지털플랫폼 정부위원회는 ‘클라우드 네이티브중심, 공공부문 정보자원 클라우드 전환 계획’을 발표하였습니다. 공공부문의 민간 SaaS활용을 촉진하고, 민간 클라우드 이용 촉진을 위한 제도 정비, 클라우드 전환 기관 역량 강화, 클라우드 민관 협력체계 구축 등도 추진할 계획이며 이를 통해 2026년에는 신규 시스템에 대한 클라우드 네이티브 적용률을 70%, SaaS적용률을 40%로 확대하는 것이 목표입니다.
미국의 금융기업 S&P글로벌에서 실시한 설문조사에 따르면 클라우드 네이티브의 주요 장애물로 응답자 46%는 ‘보안’과 ‘컴플라이언스 우려’를 선정하였으며, ‘비용’이라 답한 응답자는 39%, ‘복잡성’이라 답한 응답자는 36%입니다. 또한 클라우드 네이티브 컴퓨팅 재단(CNCF)에서 진행한 설문조사 결과에 따르면 현업 부서의 65%는 클라우드 네이티브 환경을 사용한다고 답하였습니다. 클라우드 네이티브 환경은 이미 민간부문에서는 보편화되었으나, 공공부문에서는 이제 시작단계라고 합니다.
NIA 한국지능정보사회진흥원
클라우드 네이티브 구성요소
1. 마이크로서비스 아키텍처
마이크로서비스 아키텍처(MicroService Architecture, MSA)는 애플리케이션을 독립적인 작은 기능으로 분해하여 구축하는 기술입니다.
모놀리식 vs 마이크로서비스
기존 애플리케이션은 모놀리식(Monolithic)형태로, 하나의 거대한 덩어리처럼 애플리케이션의 모든 기능이 단일 소스로 통합되어 있습니다. 이렇게 하나의 단위로 구성된 경우, 기능 하나를 변경하기 위해 전체 애플리케이션을 재배포해야 하는 비효율성을 가집니다.
마이크로서비스 아키텍처는 이러한 문제를 해결하는 대안으로, 작은 데이터베이스와 작은 서비스가 묶여있어 독자적으로 작동합니다. 모놀리식과 다르게 서비스마다 개별 DB를 갖고 독립적으로 실행·운영할 수 있어 각각 서비스별 확장과 축소가 용이하고 변경사항에 빠르게 적용이 가능하다는 장점이 있습니다.
2. 컨테이너
기존 애플리케이션을 설계하는 방식이 모놀리식에서 마이크로서비스로 전환되었다면, 애플리케이션이 실행되고 구동되는 환경 또한 기존의 가상머신(VM)방식이 아닌 컨테이너 방식으로 바뀌고 있습니다. 컨테이너 기술은 가상화 기술 중 하나로, 마이크로서비스 방법론으로 개발한 애플리케이션을 효과적으로 배포·활용할 수 있는 기술입니다. 컨테이너는 종속성을 가지는 기존의 VM방식에 비해 종속성 없는 애플리케이션 실행을 지원하여 다른 서비스에 영향을 주지 않고 독립적으로 관리·운영이 가능합니다.
가상머신(VM)방식 vs 컨테이너 방식
3. DevOps
DevOps는 Development(개발)와 Operation(운영)을 합친 말로, 개발자와 엔지니어의 협업을 강조하는 개발 문화를 의미합니다. 개발과 운영 간의 프로세스를 통합하여 개발에서 배포에 이르는 프로세스의 속도를 높이는 데 초점이 맞춰져 있습니다.
이제는 애플리케이션 개발 및 배포 속도가 비즈니스 경쟁력이 되면서 시스템의 안정성을 유지하면서도 고객에게 빠르게 제공하는 것이 중요해졌습니다. 따라서 애플리케이션 개발 및 배포를 단일 워크플로우로 통합하는 DevOps의 필요성이 증대되었습니다.
4. CI/CD
지속적인 통합을 뜻하는 CI는 개발자가 새로운 코드를 작성할 때마다 자동으로 테스트를 실행하여 코드 변경 사항을 확인하는 과정을 의미합니다. 코드 변경이 기존 코드와 어떻게 상호작용하는지 빠르게 확인하고, 문제를 조기에 발견하여 수정할 수 있습니다.
지속적인 배포를 의미하는 CD는 코드 변경이 테스트를 통과하면, 이를 자동으로 운영 환경으로 전달하여 실제 사용자에게 제공할 수 있는 상태로 만드는 과정을 의미합니다. 이를 통해 새로운 기능이나 개선 사항을 빠르게 사용자들에게 제공할 수 있게 됩니다.
클라우드 네이티브 사례 - 넷플릭스