본문 바로가기

Just Do It/IBM C:LOUDERs

클라우드는 처음이라 (1) - 도커는 뭐고 쿠버네티스는 또 뭐야?

IBM C:LOUDERs 활동을 하면서 '세상은 넓고 능력자들은 많구나'라는 생각을 정말 많이 한다ㅋㅋ IBM C:LOUDERs를 통해 클라우드 컴퓨팅을 처음 접하는 나로서는 따라가기가 벅찬 게 사실이다. 그러다가 문득 이런 생각을 했다.

 

'이런 고민을 나만 할까?' 

 

분명 클라우드 컴퓨팅을 처음 접하고 구글링의 세계를 허우적대는 나같은 사람이 있지 않을까?

그래서 시작한다! 클라우드는 처음이라 시리즈! IBM Cloud Essentials 코스를 수강하면서 공부한 내용을 입문자의 시선에서 정리해보려고 한다.

 

오늘의 내용은 하이브리드 클라우드와 멀티 클라우드.. 일 뻔했으나 강의를 보다 보니 생소한 용어가 많았다. 강연자 분은 당연한 듯이 넘어갔지만ㅠㅠ 나는 뜻을 몰라 구글링 또 구글링 하며 4분짜리 영상을 이해하는데 두시간을 넘게 쏟아부었다. 그래서 본 내용에 들어가기 전 용어들을 먼저 정리하고자 한다.

 

1. 도커 (Docker)와 컨테이너 (Container)

도커는 컨테이너 기반의 가상화 플랫폼이다. 마음 속으로 '뭔소리야'라고 생각한거 다 안다. 나도 똑같은 생각 했다. 이를 이해하기 위해서 아직 먼 이야기처럼 들리더라도 내가 앱을 만들고 배포한다고 가정해보자.

초보자인 우리의 입장에서 앱 개발과 배포는 매우 쉽다. 앱을 만들고 배포하면 된다. 그런데 실제로 이 과정이 정말 어렵다고 한다. 내가 개발하는 환경에서만 테스트해보고 땡! 배포! 하는게 아니라 여러 경우의 수를 생각해야한다. 나는 맥 OS로 개발했는데 사용자는 윈도우라면? 모바일 환경이라면? 수가 정말 끝도 없다.

운영체제만 해도 종류가 ㅎㄷㄷ

 

하지만 배포는 해야하니까 기존 개발자들은 버추얼 머신(VM)을 사용해서 다른 환경들을 컴퓨터에 세팅해서 일일이 돌려보고 다 확인해본다. 여기서 잠깐, 버추얼 머신(VM)은 또 뭐야?

 

 

 

버추얼 머신(VM)은 하나의 물리적 컴퓨터 자원위에 여러 가상 OS들을 설치해서 컴퓨터 자원을 나눠 쓰는 것을 말하는데 쉽게 말하면 한 컴퓨터를 여러 OS가 나눠쓴다고 생각하면된다. 컴퓨터 자원은 한정되어 있고 이를 나눠쓰는 형태이다 보니 과부하가 걸릴 수밖에 없다. 또 나중에 버추얼 머신을 써보면 알겠지만 설치 과정이 무척 복잡하고 별의별 오류가 다 뜬다. 이를 해결하기 위해 등장한 것이 바로 이 도커(Docker)다.

 

로고가 쓸데없이 귀엽다..

 

 

도커를 사용하면 복잡하고 어려운 설치 과정이 매우 간편해진다. 테스트 환경 구축에 필요한 모든 요소들(라이브러리, 시스템 도구, 코드 등등)을 컨테이너(Container)라는 유닛으로 묶고 이 컨테이너 실행에 필요한 파일과 설정값들을 마치 사진으로 찰칵 찍듯이 모아 이미지(image)라는 것으로 남겨둔다. 그리고 이 이미지는 도커 허브(DockerHub)라는 곳에 업로드되고 공유된다. 그래서 컨테이너가 삭제되더라도 이미지만 있으면 언제든지 무한정으로 컨테이너를 다시 설치할 수 있다.

 

즉, 컨테이너는 해물찜 재료 세트이고 이미지는 이 해물찜을 만드는데 필요한 레시피라고 할 수 있다.

 

도커의 장점은 여기서 끝나지 않는다. 아까 봤던 버추얼 머신의 모식도와 도커의 모식도를 비교해보자.

 

 

아까 버추얼 머신은 한정된 컴퓨터 자원을 나눠 쓰기 때문에 과부하가 걸릴 확률이 높다고 설명했다. 하지만 도커는 호스트 OS 층까지 내려가지 않고 실행 환경만을 독립적으로 설치하여 사용하는 것이므로 버추얼 박스와 크게 다르지 않은 성능을 내지만 훨씬 가볍고 빠르다.

2. 쿠버네티스 (Kubernetes)

이번 포스트를 준비하면서 정말 고민이 많았다. 자세히 설명을 하기에는 개념이 너무 방대하고 깊다. 그래서 클라우드 컴퓨팅을 이해하기 위한 최소의 설명만을 담기로 하였다. 쿠버네티스에 대해 자세히 설명한 유튜브 영상을 포스팅 최하단에 첨부할 테니 더 깊게 공부하고 싶은 분들은 참고하시길!!


쿠버네티스란?

 

Kubernetes라는 단어가 너무 길어서 보통은 k8s로 줄여서 쓴다.

 

쿠버네티스 (Kubernetes)는 그리스어로 "키잡이"라는 뜻을 가지고 있다. 즉, 도커들의 키잡이 역할을 한다는 는 뜻이다. 도커들의 키잡이.. 도커들을 관리한다? 뭔가 감이 좀 오는 것 같기도 하다.

아무리 버추얼 머신의 과부하 문제를 훌륭히 해결했다지만 하나의 컴퓨터에 여러 개의 컨테이너를 띄우다 보면 자원이 부족한 경우가 발생할 수 있다. 그러면 새로운 서버를 추가하게 되는데 한두개면 괜찮은데 수십개로 늘어난다면? 항상 복잡한 곳에서 문제가 발생하는 법이다. 이들을 적절히 관리해주지 않는다면 충돌을 일으키거나 예상치 못한 문제가 발생할 수도 있다.

쿠버네티스는 이 컨테이너들을 관리해주고 이들 사이에 발생하는 여러 문제를 알아서 처리해준다. 여러 기능이 있지만 클라우드 컴퓨팅을 대략적으로 이해하기 위해서는 이정도도 충분하기 때문에 여기까지만 설명하도록 하겠다.

 

IBM C:LOUDERs 활동을 여러 방면으로 지원해주시는 애드보케이트팀의 쿠버네티스 강연 영상을 첨부한다!!

클라우드 컴퓨팅 세계에 처음으로 발을 들인 분들에게 이 포스팅과 또 한 명의 허우적대는 초보가 있다는 사실이 조금이라도 도움이 됐으면 하는 마음으로 이번 포스팅을 마친다.