본문 바로가기
Dev/Plus

컨테이너 기술 - Deployment에 따른 변화

by 아아덕후 2022. 5. 2.
반응형

[목차]

0. Deployment란?

1. Traditional Deployment

2. Virtualized Deployment

3. Container Deplyment

4. Kubernetes Deplyment


Deployment (배포)

- 소프트웨어 배포는 테스트 서버, 프로덕션 환경, 사용자의 컴퓨터 또는 모바일 장치 등 대상 장치에서 응용 프로그램이 작동하도록 하는 프로세스 [참고 : sumologic]

 


 

 

컨테이너 기술의 발전

- 어떻게 서비스를 효율적으로 운영할 것인가?

- 컴퓨팅 자원을 최대한 낭비하지 않고 잘 쓸 수 있을까에 대한 고민(비용 효율성)으로 시작되었다.

 

1. Traditional Deployment

전통적인 배포 방식은,

하나의 서비스를 배포하기 위해

하드웨어 -> OS -> 라이브러리, 프레임워크를 통해 서비스 배포했다.

 

하지만, 서비스가 많아짐에 따라 여러 라이브러리 사용 시 충돌 등 여러 문제가 발생했다.

 

이러한 문제를 해결하기 위해서 App1 과 App2 , App3

서로 격리시켜 충돌 문제를 발생하지 않으며 컴퓨팅 자원을 어떻게 효율적으로 쓸 수 있을지,

한 서버 안여러 서비스들을 최대한 격리된 환경으로 어떻게 확장할 수 있을지에 대한 고민으로 탄생한 것이
가상화 기술이다.


 

2. Virtualized Deployment

가상화 기술의 시작은 가상머신부터 발전.

 

하드웨어 < 운영체제 < Hypervisor(가상화머신 관리) < 가상화 머신 < 서비스  

하이퍼바이져는 운영체제(호스트) 위에서 동작하며

각각의 가상화머신(Guest OS)를 구동하기 위해 컴퓨팅자원( CPU, RAM, HDD )을 emulating 하여 게스트 운영체제를 구동하며 격리 

 

Guest OS에서 돌아가는 프로세스는 가상머신(하나의 컴퓨터처럼)에서 동작하는 라이브러리와 프레임워크에 의존성을 가져  다른 가상머신과 격리된 환경을 가질 수 있다. (1VM안에 1 App)

 

하지만 이러한 가상화배포 문제점은

 - 성능 효율성 떨어짐(하나의 컴퓨팅 자원을 여러 가상 머신으로 나누기 때문

 - 자원의 오버헤드 발생(App이 아닌 가상머신 구성에 자원 많이 사용됨),

 


3. Container Deplyment

도커는 컨테이너 엔진이며 컨테이너 기술 생태계를 이끈 구현체이다.

 

하드웨어 < 호스트 운영체제 OS < 도커 < 컨테이너

 

호스트 입장에서 도커의 각 컨테이너는 Process와 동일한 의미로 간주하며 

또한 컨테이너는 격리 기술 추가 적용

  - chroot : file system 격리

  - 리눅스 name space : 프로세스 id, 네트워크 등을 격리

 

호스트 운영체제에서 실행되는 프로세스이지만다른 프로세스로부터 격리된 것처럼 느껴지는 기술이 적용.

 

이를 통해 가상머신에 비해 성능 효율성, 자원 오버헤드도 좋아짐. (가상화 배포의 문제점) 의존성 충돌도 거의 없게 됨.

 

이로 인해 기업들은 관심을 갖고 기업에 매우 빠르게 적용하는 추세이다.


4. Kubernetes Deployment

그렇다면 쿠버네티스란?

쿠버네티스는 사실상 표준으로 사용되는 컨테이너 오케스트레이션 시스템이다.

 

컨테이너 엔진(도커) : 하나의 서버 위에서 컨테이너를 어떻게 관리할 수 있을까에 대한 관리 SW

컨테이너 오케스트레이션 시스템(쿠버네티스) : 여러 서버로 구성된 클러스터 환경에서 컨테이너들을 어떻게 더 잘 관리할 수 있을까, 컨테이너를 관리하는 기술이다.

 

 


해당 글은 패스트캠퍼스 - 쿠버네티스와 도커로 한 번에 끝내는 컨테이너 기반 MSA강의를 수강하며 저의 생각을 정리한 글입니다.

따라서 정확한 글이 아닐 수 있음을 참고해주시면 감사하겠습니다.

 

감사합니다.

반응형

댓글