애플리케이션 배포 환경 변화

Hoo-Sung.Lee·2023년 12월 28일
0

쿠버네티스

목록 보기
3/6

  1. Traditional Deployment: 가상화 이전, 오래전부터 쓰이는 방식이다.
    물리적인 컴퓨터 한 대에 하나의 OS를 깔고 여러가지 프로그램을 설치하는 방식이다.

이 방식의 문제점: 인터넷 뱅킹을 위해 보안 프로그램을 많이 설치했더니 게임이나 웹 브라우저 성능이 떨어진다. 한 대의 컴퓨터에서 모든 것을 처리하려고 하면 어떤 프로그램 동작이 다른 프로그램의 동작을 간섭하거나, 특정 프로그램이 성능을 독점할 경우 또 다른 프로그램의 성능이 떨어지는 단점이 있다.

-->

  1. Virtualized Deployment: 가상머신을 기반으로 배포를 하는 방법이다.
    중간에 위치한 Hypervisor는 하나의 시스템 상에서 가상 컴퓨터를 여러개 구동할 수 있게 해주는 중간 계층을 의미한다는 정도로 알도록 하자.
    그리고 App은 실행하고자 하는 프로그램, Bin/Library는 프로그램이 실행하는데 필요한 환경과 관련된 파일이라고 생각하자.

가상머신은 말 그대로 가상 컴퓨터이다. 두개의 프로그램을 각각의 가상머신에서 실행시켜보자. 하나의 컴퓨터 안에서 두 개의 가상화된 컴퓨터가 동작하기 때문에 서로 간섭을 일으키지 않게 된다. 가상 머신 성능을 조작해서 게임 컴퓨터에는 CPU, Memory를 많이 할당하고, 인터넷 뱅킹용 컴퓨터에는 CPU, Memory를 적게 할당해 사용할 수 있다.

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

-->

  1. Container Deployment: 기존의 하이퍼바이저라는 부분이 Container Runtime으로 대체되었고, Virtual Machine부분이 Container로 대체되었다.
    컨테이너는 가상 머신과 달리 프로그램 구동을 위해서 OS를 매번 설치할 필요가 없다.
    컨테이너는 OS 하단이 어떻게 동작하는지 직접 관심을 두지 않는다. 그래서 가상머신 위에 올라간 OS에서 컨테이너 기반 배포를 하는 것이 가능하다.

게임과 인터넷 뱅킹 소프트웨어가 각각 컨테이너로 배포된다고 가정해보자.
이때 게임과 인터넷 뱅킹 프로그램은 하나의 OS 상에서 구동된다.
이것만 보면 전통적ㅇ니 배포에서 하나의 OS 위에서 프로그램을 여러 개 구동시킨 것과 별 차이가 없어 보인다. 하지만 컨테이너 중심의 배포는 여기서 중요한 기술적인 차이점이 하나 있다. 게임과 인터넷 뱅킹이 실행되면서 '이 컴퓨터에서는 나만 실행되고 있다'라고 판단할 수 있도록, 실제로 두 프로그램 간에 간섭을 일으킬 수 없는 장벽을 친다.
이렇게 장벽을 치는 것과 동시에 OS는 게임과 인터넷 뱅킹이 CPU, Memory등의 자원 또한 독립적으로 사용할 수 있도록 할당하고 관리한다. OS의 관점에서 보자면, 둘 다 OS 상에서 구동되는 프로그램이지만 말이다. 이와 같은 컨테이너 동작 방식을 OS 커널을 공유하는 가상화라고 한다.

주의할 점이 있다.컨테이너는 OS를 공유하는 방식이기 때문에 내 프로그램의 문제가 OS에 문제를 일으킬 경우, OS에서 구동 중인 전체 컨테이너의 문제가 될 가능성이 있다.


정리

profile
Working towards becoming Backend-Developer

0개의 댓글

관련 채용 정보