쿠버네티스에 대해 개발자들의 관심이 높아지고 있고 여러 대기업에서 새로운 시스템을 쿠버네티스를 기반으로 전환했다는 소식이 종종 들리고 있는데 쿠버네티스는 어떤 것이기에 이렇게 주목을 받을까?
관련 용어 정리
컨테이너
컨테이너 런타임
쿠버네티스
오케스트레이션
애플리케이션 배포 환경의 변화
맨 왼쪽 Traditional Deployment(전통적 배포)는 가상화 이전부터 쓰이던 방식으로 물리적인 컴퓨터 한 대에 하나의 OS를 깔고 여러 가지 프로그램을 설치하는 방식이다. PC 한 대에 윈도우를 하나 설치하고 여러 게임이나 워드 프로세서 등을 깔아서 사용하는 것과 비슷한 방식이라고 생각할 수 있다. 가장 오래되고 단순한 방식이며 단일 목적 시스템이라면 이러한 방식을 사용해도 무리가 없다.
그러나 한 대의 컴퓨터에서 모든 것을 처리하려고 하면 어떤 프로그램 동작이 다른 프로그램의 동작을 간섭하거나 특정 프로그램이 성능을 독점할 경우 또 다른 프로그램의 성능이 떨어지는 단점이 존재한다. 성능이 떨어지는 정도에 그치지 않고 프로그램의 중단까지도 유발할 수 있다.
이를 해결하기 위한 방법으로 Virtualized Deployment(가상화 배포)가 등장했다.
가상머신(Virtual Machine)을 기반으로 배포를 하는 방법이다. 중간에 위치한 하이퍼바이저는 하나의 시스템 상에서 가상 컴퓨터를 여러 개 구동할 수 있도록 해 주는 중간 계층을 의미한다는 정도로 알고 있으면 된다. 그리고 App은 실행하고자 하는 프로그램이고 Bin/Library는 프로그램이 실행하는데 필요한 환경과 관련된 파일이라고 생각하면 된다.
가상머신은 말 그대로 가상 컴퓨터이다. 컴퓨터이기 때문에 가상머신에도 CPU, 메모리, 저장 장치 등을 개별적으로 할당 가능하다. 두 프로그램을 각각의 가상머신에서 실행하게 되면 하나의 컴퓨터 안에서 두 개의 가상화된 컴퓨터가 동작하기 때문에 서로 간섭을 일으키지 않게 된다. 또한 서버와 같이 다중화와 분산 처리가 중요한 시스템이라면 시스템 자원 상황에 따라 가상머신 개수를 늘리고 줄이는 것도 좀 더 유연하게 처리할 수 있다.
이 방식이 전통적 배포 방식보다는 분명 효율적이지만 가상머신은 완전한 컴퓨터이고 가상머신에 일일이 운영체제를 설치해야 하기 때문에 컨테이너 중심의 배포(Container Deployment)보다는 무거운 편이다.
Container Deployment(컨테이너 중심의 배포)에서는 하이퍼바이저라는 부분이 Container Runtime으로 대체되었고, Virtual Machine이라고 된 부분은 Container로 대체가 되었다. 컨테이너를 사용하기 때문에 OS는 하나만 사용한다.
컨테이너 기반 배포는 전통적 배포 위에 Container Runtime이 올라가 있는 것처럼 보이는데 물리적인 컴퓨터 상에서만 유효한 것은 아니다. 컨테이너 런타임 위에 OS와 하드웨어가 층으로 쌓여 있는 그림을 보고 전통적인 배포 위에서 컨테이너 런타임을 올렸다고 오해를 하곤 하지만 컨테이너는 OS 하단이 어떻게 동작하는지 직접 관심을 두지 않아 가상머신 위에 올라간 OS에서 컨테이너 기반 배포를 하는 것이 가능합니다.
컨테이너 중심의 배포에서 두 가지 프로그램이 한 컴퓨터에 설치된다면 프로그램이 각각 실행되면서 ‘이 컴퓨터에서 나만 구동되고 있다’라고 판단할 수 있도록 실제로 두 프로그램 간에 간섭을 일으킬 수 없는 장벽을 치게 된다. 이러한 장벽을 치는 것과 동시에 OS는 두 프로그램이 사용할 수 있는 CPU, 메모리 등의 자원 또한 독립적으로 사용할 수 있도록 할당하고 관리한다. 이러한 과정을 통해 두 프로그램은 스스로를 ‘서로 다른 컴퓨터에서 깔려 있다’고 생각하게 된다. 물론 OS의 관점에서 보자면 둘 다 OS 상에서 구동되는 프로그램이다. 이와 같은 컨테이너 동작 방식을 OS 커널을 공유하는 가상화라고 표현하기도 한다.
이때 컨테이너는 OS를 공유하는 방식이기 때문에 어떤 프로그램의 문제가 다른 프로그램을 간섭할 수는 없다. 그러나 내 프로그램의 문제가 OS에 문제를 일으킬 경우에는 OS에서 구동 중인 전체 컨테이너의 문제가 될 가능성이 있기 때문에 주의해야 한다.
참고
https://www.samsungsds.com/kr/insights/220222_kubernetes1.html
사람의 눈보다 더 정확하게 인식하는 컴퓨터 비전 기술의 현황과 전망 (0) | 2022.11.28 |
---|---|
AI 윤리와 AI 거버넌스 (0) | 2022.11.21 |
클라우드의 시작과 끝, 클라우드 보안 (0) | 2022.11.15 |
2022년 3분기 악성 코드 위협 통계 (0) | 2022.11.01 |
Trojan.Android.SmsSpy 악성 어플의 구동 방식 (0) | 2022.10.04 |
댓글 영역