우선 쿠버네티스란 무엇인지 쉽게 정리해보자.
Traditional Deployment
극 초기의 회사 조직 또는 CI/CD 관련 지식이 없는 일반 학생의 경우, 만들어진 서버를 구동하기 위해선
로컬서버를 띄우고 구동했다. 즉 물리서버 컴퓨터가 하나 존재하고 거기에 서버를 띄운 뒤 포트를 열어
클라이언트가 서버에 접근하는 방식이다.
다만, 가상화 배포 시대로 넘어가게된 이유를 예로 들어 설명해보겠다.
---
Google에선 Google과같은 웹 포털 사이트를 운영을 로컬 서버에 띄운 뒤, 사업이 흥해서
유튜브 서버도 운영을 하게 되었다 구글은 똑같은 서버 컴퓨터에 다른 포트로
유튜브 서버를 배포 할 수 있지만,
문제는 Google에서 실 이용자 수가 너무 많아서 한 대의 서버 컴퓨터로는 이것을 감당 할 수 없는 상황이었다.
이를 해결하기 위해선 가장 간단한 방법은, 유튜브용 서버 컴퓨터를 한 대 더 설치하여 해결 할 수 있었기 때문에
똑같이 유튜브도 흥할거라 생각하여 굉장히 좋은 슈퍼 컴퓨터를 구매했다.
하지만, BM의 문제인지, 마케팅이 문제인지, 서비스가 문제인지, 런칭한지 얼마 되지 않아서인진 모르겠지만 좌우간,
배포 후 실 서비스 이용자가 적었고 슈퍼 컴퓨터를 유지 할 비용이 유튜브에서 벌어들이는 수익보다 적었다.
구글은 결국에 슈퍼컴퓨터를 팔아버리고 다시 성능이 좋지 않은 서버 컴퓨터를 구매 후,
재 배포 하였으나 갑자기 이용자가 증가하여 다시 슈퍼 컴퓨터가 필요해진 상황에 빠지게 된다...
----
대체로 위와 같은 예시 상황이 빈번히 발생하는 실무에선, 전통적인 방식의 배포형태의 해결책으로 가상화가 도입되었다.
우선 전통적인 방식의 배포 형태의 문제가 되는 핵심은 아래와 같다.
하나에서 여러 애플리케이션을 실행하면, 리소스 전부를 차지하는 애플리케이션 인스턴스가 있을 수 있고, 결과적으로는 다른 애플리케이션의 성능이 저하될 수 있다. 물론,
다른 여러 물리 서버에서 각 애플리케이션을 실행할 수도 있으나, 이는 리소스가 충분히 활용되지 않는다는 점에서 확장 가능하지 않았으며, 조직이 많은 물리 서버를 유지하는 데에 높은 비용이 들었다.
Virtualized Deployment
전통적인 배포 형태의 단점을 보안한, 새로운 기술이 도입된다.
개념을 쉽게 전달해보자면, 필자의 경우 Mac을 사용하는 이용자가 보통 따로 Window 까지 설치하는 경우를 쉽게 들을 수 있었다. 이유라 한다면, Mac에서 사용하고 싶은 프로그램이 Window에서만 지원하기 때문인데
어떻게 서로 다른 운영체제가 하나의 컴퓨터에서 구동 될 수 있는가?
일단 이를 VM이라고 한다. 해당 개념이 이해가 되면 좀 더 쉽게 가상화 배포 형태를 이해할 수 있다.
간단히 하나의 컴퓨터에서 여러 OS를 만들어 둔 뒤, 각각 독립적으로 용량이라던지 메모리라던지 컴퓨터의 성능 따위를 분배해서 가져갈 수 있는데. 이와 마찬가지의 형태를 띈 것이
딱 위와 같은 그림이다.
Operating System
뭔가 있어보이는 용어 같지만, 우린 이미 다 알고 있는 용어이다.
간단히 약어로는 OS 우리말로는 운영체제다 ( Mac Os, Windows Os, Linux 등등 )
OS가 뭐하는 놈인가 하면,
마우스 키보드 부터, CPU , RAM 등등 물리적으로 보이는 모든 컴퓨터 부품이나 장비들에게 일을 시키고 언제 일을 해야할지 등을 관리하는 놈이다.
예를들어 우리가 편하게 인터넷 브라우저를 열기 위해 브라우저 아이콘에 마우스 옮겨 버튼을 딸각 누르면
지 알아서 온갖 하드웨어에게 인터넷 브라우저를 띄우기 위해 명령질을 하고 스케쥴을 관리해준다. 정도로만 알고 있자.
Hypervisor
VM의 근간이되는 녀석이다. 하나의 컴퓨터에서 여러 개의 OS를 운영 할 수 있게 해준다.
--
현재에 이르러서 아직까지도 여러 조직에선 이를 사용하고 있다 서비스 규모가 작거나 뭐 그리 크지 않다면 컨테이너 배포
형태를 쓸 필요가 거의 없기 때문인데.
일단 서비스 규모가 좀 큰 기업들은 왜 컨테이너 배포 형태를 사용하는지를 알려면
이 가상화 배포 형태의 단점을 알아야한다. 단순히 생각해보면, 배포해야 되는 서버마다.
OS가 필요하고 이에 부팅 시간도 기달려줘야하고, 각각의 OS에 필요한 용량도 각각 잡아먹는다.
그리고 이를 보안한게 컨테이너 배포 형태라 간단히 생각하자.
다음 포스팅에선 좀 본격적으로 컨테이너 배포 형태에 대해 다루도록 하겠다.