23년 10월, 디지털 플랫폼 정부 위원회가 중요한 정책을 한 가지 발표했습니다.
정부의 신규 시스템 70% 이상에 '클라우드 네이티브(Cloud Native)' 적용
정책을 발표하게 된 배경을 살펴볼까요?
최근 재난·질병·사회적 이슈 등으로 공공과 민간 시스템은 급변하는 수요에 안정적으로 대응할 수 있어야 했습니다.
하지만 기존 시스템의 설계 방식, 기능 등은 이런 상황에 대응하기 어려웠고 이를 해결하기 위해 공공과 민간은 클라우드 네이티브를 적용하기 시작했습니다.
기술 도입 초기 단계로 인식이 부족한 상황에서 정부는 공공부문 적용 방안 검토 및 발주자·개발자용 안내서(가이드)를 제작하였고, 클라우드 네이티브 개념 정립, 적용 대상 업무 선정 방안, 선진사례 분석, 공공부문 적용 시 구축 단계별 고려 사항 등을 검토할 수 있도록 하고 있습니다.
클라우드 네이티브란?
클라우드 네이티브는 퍼블릭, 프라이빗, 하이브리드 등 어느 클라우드 환경에서든 손쉽게 애플리케이션을 만들고 운영할 수 있는 환경을 말합니다.
이전의 기관∙기업들은 상황에 따라 클라우드를 선택해 사용했지만 최근에는 비용 절감과 효율성을 위해 여러 퍼블릭 클라우드를 같이 사용하거나, 퍼블릭/프라이빗 클라우드를 함께 사용하는 하이브리드 클라우드에 대한 관심이 높아지고 있습니다.
따라서 제공하는 서비스가 많아질수록, 기관∙기업은 인프라에 종속 받지 않고 신속하게 애플리케이션을 개발하고 배포할 수 있는 클라우드 네이티브 도입이 필요한 상황입니다.
퍼블릭 클라우드 : AWS, GCP, Azure, NCP, KT cloud, NHN 등
프라이빗 클라우드 : vmware, openstack, NUTANIX 등
하이브리드 클라우드 : 퍼블릭 클라우드 + 프라이빗 클라우드
클라우드 네이티브 필수 요소
그렇다면, 클라우드네이티브에서 말하는 신속한 애플리케이션 개발을 위해서는 어떤 요소가 필요할까요?
필수적으로 4가지 요소가 필요합니다.
1. 마이크로 서비스(Micro Service)
기존 애플리케이션은, 기능들이 서로 연결되어 있는 모놀리식 아키텍처로 설계되어 있는 경우가 많았습니다.
모놀리식은 하나의 단일 애플리케이션 내에 기능들이 서로 모듈로 연결되어 있고
데이터는 단일한 대규모 데이터베이스에 저장되어 있는 구조를 말합니다.
그렇기에 각 기능들이 연계되어 있어 일부 모듈의 변경사항도 전체 애플리케이션 개발/운영 프로세스에 영향을 준다는 단점이 있었죠.
마이크로서비스 아키텍처는 이러한 모놀리식의 단점을 해결하고자 등장했습니다.
모놀리식과 다르게 서비스마다 개별 DB를 갖고 독립적으로 실행하고 운영할 수 있어 각각의 서비스 별 확장과 축소가 용이하고 변경사항에 빠르게 적용이 가능하다는 장점이 있습니다.
따라서 클라우드와 같은 유연한 인프라 환경에서 마이크로서비스 아키텍처로 애플리케이션 개발하면
신속한 업데이트, 독립적인 확장성, 높은 가용성 등의 효과를 얻을 수 있습니다.
2. 컨테이너(Contaniner)
기존 애플리케이션을 설계하는 방식이 모놀리식에서 마이크로서비스로 전환되었다면,
애플리케이션이 실행되고 구동되는 환경 또한 물리 서버와 VM 방식이 아닌 컨테이너로 바뀌고 있습니다.
컨테이너는 애플리케이션 실행에 필요한 코드, 모듈, 다양한 라이브러리 등의 요소들로 이루어져 있는, 하나의 소프트웨어 패키지라고 생각하시면 되는데요.
컨테이너가 VM과 같은 건가요? 라고 물어보시는 분들이 있으실텐데 VM과 컨테이너가 가상 컴퓨팅 환경인 것은 동일합니다.
하지만 VM을 만들기 위해서는, 먼저 ‘하이퍼바이저’에게 요청해 가상 서버를 만들고 리소스를 할당받아 각 서버에 필요한 운영체제(OS)를 설치하는 과정이 필요합니다.
이렇게 만들어진 각 VM은 같은 서버 위에 있을지라도 각각의 OS를 갖고 있기 때문에 별도의 시스템처럼 동작합니다.
그래서 서로 다른 운영체제 위에 애플리케이션을 올릴 수 있다는 장점은 있지만 용량이 크고 무겁습니다.
반면에 컨테이너는 동일한 OS 위에 애플리케이션을 올릴 수 있어 VM보다 가볍고 용량이 작습니다. 특정 인프라에 구애 받지 않고 어디에서든 즉시 배포와 실행이 가능한 장점으로 컨테이너는 클라우드네이티브에서의 필수 요소로 자리 잡았습니다.
*하이퍼바이저 : 하드웨어 위에서 가상 머신을 생성하고, 필요한 만큼 자원을 할당해 주고, 가상 머신들의 요청을 처리해 주는 소프트웨어
3. 데브옵스
데브옵스는 개발(Development) 과 운영(operation)의 합성어로, 개발과 운영이 통합된 체계를 말하는데요,
마이크로서비스 아키텍처로 애플리케이션을 개발하고 컨테이너로 이를 배포하는, 개발부터 운영 단계의 전 과정을 통합하여
개발 부서와 운영 부서의 충돌을 피하고 서비스에 필요한 기능을 변경하거나 추가하는 것을 더 빠르고 지속적으로 배포할 수 있습니다.
4. CI/CD
CI/CD는 위에서 언급한 데브옵스 단계 중, 개발 단계의 빌드부터 운영단계의 배포까지를 자동화하는 기술입니다.
CI/CD 파이프라인은 애플리케이션 코드가 개발 환경에서 테스트 환경을 거쳐, 최종적으로 운영 환경에 배포되고,
서비스의 형태로 사용자에게 전달되는 일련의 과정을 말하고, 이 과정의 자동화를 통해 개발 및 배포 시간을 단축하고 서비스의 품질을 개선할 수 있습니다.