[Kubernetes 소개 - 1] 쿠버네티스의 필요성

2019. 12. 2. 16:40Engineering/Container&Kubernetes

Contents

1. Kubernetes의 필요성
2. Kubernetes 및 Kubernetes Cluster 소개
3. Kubernetes 장점

 

*본 포스트는 (각 장의 분량조절 실패로 인해...) 위 Contents에 소개된 각 장을 개별 글로 하나씩 소개합니다.

*본 글에서는 '1. Kubernetes의 필요성' 을 소개합니다.


 

Kubernetes가 등장하게 된 배경을 바탕으로 Kubernetes가 무엇인지 알아봅니다. 


1. Kubernetes의 필요성

 

최근 아래와 같은 개발 흐름들이 화두가 되고 있습니다.

  1) Container

  2) Microservice

  3) CI/CD 통한 DevOps(or NoOps)

 

Kubernetes 이와 같은 최근 개발 트렌드의 요구 사항을 수용할 있는 플랫폼(?)으로서,

필요성을 인정받고 입지를 다지고 있습니다.

 

Kubernetes 무엇인지, 기능엔 무엇들이 있는지를 차근차근 배워가다 보면

개발 흐름들을 Kubernetes 얼마나 수용하고 있는지 있습니다.

 

그러나 글을 읽고 있는 여러분은 Kubernetes 입문하는 분들이겠지요?

따라서 장에서는 Kubernetes 개발 흐름들을 '어떻게' 수용하고 있는지 개략적으로 설명해보겠습니다.

 

 

1) Container

컨테이너는 일관된 어플리케이션 실행 환경을 제공하므로,

개발 환경과 배포 환경의 차이로 인해 발생할 있는 문제점들을 많이 해소할 있습니다.


이외에도
다양한 컨테이너의 장점으로 컨테이너 기반의 어플리케이션을 개발하려는 수요가 늘어나고 있습니다.

 


쿠버네티스는
기본적으로 가상 머신이 아닌 컨테이너를 기반으로 개발된 어플리케이션들을 관리합니다.

따라서 쿠버네티스는 컨테이너 기반 어플리케이션 개발 수요가 증가하는 최근 흐름에 대응 가능합니다.

 

 

2) Microservice

전통적으로 개발자들은 하나의 어플리케이션을 하나의 프로세스 덩어리로 개발하였습니다. (Monolithic)

이러한 환경에서는 어플리케이션 덩어리 하나가 개발/배포/관리 단위 입니다.

따라서 어플리케이션의 일부 기능만을 업데이트 하더라도,

어플리케이션 전체를 중지하고 새로운 버전으로 배포하는 과정이 필요했습니다.

 

이러한 불편함을 해소하고자,

하나의 어플리케이션을 여러 개의 sub-기능 별로 나누어 개발하는 microservice 구조가 등장하게 되었습니다.

독립적인 기능들을 개별 프로세스들로 나누어 실행하므로, 기능별로 독립적인 업데이트가 가능합니다.

 

 

쿠버네티스는 기능들을 컨테이너로 관리하고,

여러 개의 컨테이너를 엮어 하나의 Service라는 객체로 관리합니다.

따라서 쿠버네티스는 기본적으로 모든 어플리케이션(Service 객체) microservice 기반의 어플리케이션 형상으로 관리합니다.

 

 

 

3) Continuous Delivery 통한 DevOps(or NoOps)

Continuous Delivery (CD)플리케이션의 배포 과정을 자동화하여,

개발자가 어플리케이션 배포 과정에 신경 쓰지 않도록 돕습니다.

이를 통해 개발자는 어플리케이션 기능 개발에만 집중할 있습니다.

 

쿠버네티스는 이러한 CD 기능을 기본적으로 제공합니다.

뿐만 아니라 어플리케이션 상태를 지속적으로 점검하여, 문제 발생시 자동으로 회복하는 자동 치유 기능 또한 쿠버네티스가 제공하는 기능입니다.

 

 

 

 

 

이렇게 쿠버네티스는 다양한 개발 트렌드에 적합한 어플리케이션 개발 환경을 제공 하므로, 필요성이 점차 높아지고 있습니다.