쿠버네티스, 도커를 알아보기 전에 클라우드 네이티브가 뭔지 알고 넘어가야 하기에 이번 글에서는 클라우드 네이티브에 대해서 알아보겠습니다.
클라우드 네이티브(Cloud Native)?
클라우드 네이티브는 애플리케이션 개발을 위한 소프트웨어 방식으로서 확장성, 안정성, 고성능을 갖춘 기본적인 개발 방식과 그 특성을 말합니다. 그럼 클라우드와 클라우드 네이티브는 어떻게 다를까?
Cloud는 애플리케이션을 어디에 배치하느냐의 'Where'라고 하면,
Cloud Native는 애플리케이션을 어떻게 구성하느냐의 'How'이다.
Cloud
우리가 잘 알고있는 Cloud(클라우드)는 인터넷 가상 저장소를 말합니다.
이전의 USB, 하드웨어 등과 같은 물리적 저장소를 대신해 가상의 저장소에 정보를 저장하여 어디서든 접근할 수 있는 기술입니다.
네이버 클라우드, 구글 클라우드 등과 같은 것을 말합니다.
최근에는 IT인프라 구축이 어려운 사업초기의 기업들이 인프라 구축을 편하게 할 수 있도록 모든 인프라를 가상화하여 기업들에게 제공하는 서비스가 있습니다.
이게 바로 Infrastructure를 제공하는 Iaas, 플랫폼을 제공하는 Paas, 사용자에게 서비스를 제공하는 SaaS입니다.
Cloud Native
인프라 구축비용 절감과 같은 장점을 가진 Cloud도 보안이나 호환성에서 비효율성을 갖는다. 이를 개선한 것이 '컨테이너' 기술이고, 이 컨테이너 기술을 Cloud 서비스에 접목한 것이 바로 Cloud Native 이다.
컨테이너???
프로그램을 구동하기 위해서는 그에 맞는 환경이 필요하다. 이런 환경을 모두 포장한 것이 컨테이너 기술이다. 컨테이너 기술을 사용하면 다른 컴퓨터 환경에서도 영향을 받지 않고 프로그램 구동에 필요한 환경을 설정할 수 있다.
즉, 컨테이너는 '하나의 애플리케이션을 구동하기 위해 필요한 코드, 개발환경을 묶은 패키지'를 뜻하고, 기존의 가상화 패키지보다 훨씬 가볍다는 특징을 갖고 있다.
Cloud Native 구축
Cloud Native에 필요한 기술은 크게 4가지이다.
1. Container(컨테이너)
컨테이너는 기존의 하이퍼바이저 기반의 가상화 기술보다 오버헤드가 적고 인프라의 일관성을 유지할 수 있으며, 소프트웨어의 안전한 배포 및 운영을 가능하게 해주는 기술이다.
하이퍼바이저?
호스트컴퓨터에서 여러 개의 운영 체제(OS)를 동시에 실행하기 위한 논리적인 플랫폼.
쉽게 말해, 한 대의 컴퓨터에서 여러 개의 가상 컴퓨터를 만들어주는 프로그램.
오버헤드?
어떤 처리를 하기 위해 들어가는 간접적인 처리 시간 · 메모리 등을 말합니다.
2. Microservice
MSA(Micro Service Architecture)는 기존 하나로 된 애플리케이션을 비즈니스 관점에서 독립적으로 배포할 수 있고, 실행이 가능한 업무 단위인 마이크로 서비스 블록으로 나눠 이를 Restful API와 같은 심플한 방법으로 상호 통신, 연계하여 응용프로그램을 구성하는 소프트웨어 아키텍처이다.
MSA를 통해 기업은 고객의 요구와 기술적 환경 변화에 빠르게 대응할 수 있는 유연한 소프트웨어 시스템을 개발, 운영할 수 있다.
3. DevOps
DevOps는 소프트웨어 시스템을 빠르고 고품질로 개발 및 운영하기 위한 조직 문화이자 방법론이다.
4. CI/CD
CI/CD는 애플리케이션 개발 단계를 자동화하여 서비스를 보다 짧은 주기로 고객에게 제공하는 방법이다.
CI/CD의 기본 개념은 지속적인 통합, 지속적인 서비스 제공, 지속적인 배포이다.
CI/CD는 통합 및 테스트 단계에서부터 제공 및 배포에 이르는 애플리케이션의 라이프 사이클 전체에 걸쳐 지속적인 자동화 및 모니터링을 제공한다. 이러한 구축 구성을 우리는 'CI/CD 파이프라인'이라고 부르며, 개발 및 운영팀의 애자일 방식과 협력을 지원한다.