애플리케이션 배포 환경 변천사

bunny.log·2023년 6월 12일
0


쿠버네티스를 검색하다 보면 위와 같은 사진이 나오는데, 왼쪽부터 전통적 배포(Traditional Deployment), 가상화 배포(Virtualized Deployment) 그리고 컨테이너 중심 배포(Container Deployment)를 의미한다.

전통적 배포(Traditional Deployment)

전통적 배포는 오래 전부터 쓰이던 방식으로 컴퓨터 한대에 하나의 OS를 설치하고 여러가지 프로그램을 구동하는 전통적인 방식이다. 우리가 컴퓨터를 이용할 때 하나의 컴퓨터에 게임이나 워드 프로그램을 함께 설치해서 사용하는 방법과 같다고 생각하면 된다.

그렇지만 이런식으로 컴퓨터를 사용할 때 우리는 문제에 직면하게 된다. 여러가지 프로그램을 설치하였더니 컴퓨터의 성능이 떨어지거나 프로그램들이 서로 충돌하게 되는 문제점에 맞닥뜨리는데, 이러한 문제를 해결하기 위해 나온 배포 방식이 가상화 배포(Virtualized Deployment) 방식이다.

가상화 배포(Virtualized Deployment)

전통적 배포 방식과 같이 하나의 컴퓨터에 하나의 OS를 설치하는 것까지는 같은데 여기에서는 가상 머신(Virtual Machine)이라는 새로운 개념이 등장한다. 중간에 위치한 하이퍼바이저는 하나의 시스템 상에서 가상 컴퓨터를 여러 개 구동할 수 있도록 해 주는 중간 계층을 의미한다는 정도로만 알고 있으면 된다. 그리고 App은 실행하고자 하는 프로그램, Bin/Library는 프로그램이 실행하는데 필요한 환경과 관련된 파일이라고 생각하면 된다.

가상머신은 말 그대로 가상의 컴퓨터다. 비록 물리적으로 한개의 컴퓨터를 사용하지만, 가상머신을 이용하면 여러 프로그램을 각각의 가상머신에서 실행시킴으로서 프로그램들이 서로 간섭하는 것을 방지할 수 있다. 또한 가상머신은 각각 CPU, 메모리, 저장 장치 등을 개별적으로 할당할 수 있으므로 좀 더 무거운 프로그램에는 더 높은 사양을 할당할 수 있다는 장점이 있다.

다만 이 방식이 전통적 배포 방식보다는 분명 효율적이지만, 가상머신은 완전한 컴퓨터이고 가상머신에 일일이 운영체제를 설치해야 하기 때문에 컨테이너 중심의 배포(Container Deployment)보다는 무거운 편이다.

컨테이너 중심 배포(Container Deployment)

컨테이너 중심의 배포 방식에서는 ‘하이퍼바이저’라는 부분이 ‘컨테이너 런타임’으로 대체되고, ‘가상머신’ 부분은 ‘컨테이너’로 대체된다.

컨테이너는 가상머신과 달리 프로그램 구동을 위해서 OS를 매번 설치할 필요가 없이 하나의 OS만 사용한다. 컨테이너는 컨테이너 아래에서 일어나는 일에는 관심을 두지 않는다. 즉 한 컨테이너에서 일어나는 문제는 다른 컨테이너에서 구동되는 프로그램에 아무런 영향을 주지 않는다. 따라서 하나의 OS를 공유하더라도 각각의 컨테이너에서 구동되는 프로그램들은 서로의 간섭 없이 독립적으로 실행될 수 있다.

다만, 컨테이너는 어디까지나 OS 위에 존재하기 때문에 OS에서 일어나는 문제에는 영향을 받게 된다. 따라서 한 컨테이너에서 일어난 문제가 OS 환경 자체에 문제를 일으켰다면 다른 컨테이너 역시 그 영향을 받게 될 것이므로 이 점을 유의해야 한다.

참고
https://velog.io/@yunuchoiii/%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4%EB%8A%94-%EB%AC%B4%EC%97%87%EC%9D%BC%EA%B9%8C-%EB%8F%84%EC%BB%A4%EC%99%80-%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4%EC%9D%98-%EC%B0%A8%EC%9D%B4

profile
https://github.com/nam-yeun-hwa

0개의 댓글