본문 바로가기

기초 공부/상식

[MSA와 Docker, Kubernetes의 개념 #2] 마이크로 서비스 아키텍처와 컨테이너 그리고 쿠버네티스

728x90

안녕하세요 지난 시간에는 도커가 무엇이고 도커의 등장 배경까지 알아봤습니다.

 

다시 설명하면

컨테이너는 애플리케이션(특정 기능을 수행하는 프로그램)을 수행하기위해 hostOS의 환경을 격리 시켜놓은 구조라고 하였고

 

도커는 이런 컨테이너들을 다루기위한 오픈소스 플랫폼이라고 했습니다.

 

자 이번 시간에는 아키텍처에 대해 알아봅시다.

 

우선 MSA 마이크로서비스 아키텍처 전에 항상 설명되는게 모놀리식 아키텍처입니다.

 

모놀리식 아키텍처란 하나의 서버에 모든 내용이 들어가있는 구조를 말합니다.

 

가장 흔히 만드는 구조라고 할 수 있습니다.

 

하지만 이런 구조로 만들다보니 문제가 생깁니다. 프로젝트의 규모가 작을 때는 괜찮았지만 프로젝트 규모가 커지면 커질수록 한 줄의 코드만 고쳐도 프로젝트 전체를 다시 빌드하고 배포해야하거나 새로 들어온 인원이 프로젝트 전체 내용을 파악하기 어렵다는 등의 문제가생깁니다.

 

그래서 제시된 아키텍처 구조가 마이크로서비스 아키텍처(MSA) 입니다.

 

 

마이크로 서비스 아키텍처는 위 그림처럼 여러 개의 서비스를 분리시켜놓은 구조를 말합니다. 이 분리 시켜놓는 서버의 단위는 aws ec2가 될 수도 있고 컨테이너가 될 수도 있다고 생각합니다. 

어쨌든 이렇게 서비스를 분리시켜 놓으니까 모놀리식에서의 단점이 어느정도 해결이 됩니다.

 

그런데 따라오는 문제점이 생깁니다. 

이건 어떤 강연에서 들은 얘기입니다.

MSA가 좋다보니까 규모가 작은 기업에서 도입하려고 하지만 구축이 어렵고 상대적으로 구축했을 때에 얻는 효율성이 적다고 합니다. 규모가 작다는건 기업의 규모도 포함이지만 서비스의 규모도 포함입니다.

 

근데 결론적으로 많은 곳에서 마이크로서비스로 전환하려고 한다고합니다. :)

 

 

 

 

어쨌든 마이크로 서비스 아키텍처의 세분화된 서비스와 컨테이너의 확장성의 장점이 맞물리면서 주목받기 시작했고 이런 컨테이너들을 쉽게 관리, 배포할 수 있는 Docker가 주목을 받기 시작했습니다.

 

 

 

 

 

그러던 와중에 프로젝트 규모가 커질수록 많아지는 컨테이너들을 Docker만으로 감당하기 어려워지기 시작했습니다.

docker ps 치면 우루루 나오는 컨테이너들을 보면 화날만도 합니다.

그래서 등장한게 컨테이너 오케스트레이션이라는 개념입니다. 

컨테이너 오케스트레이션은 컨테이너가 대규모로 운영될 때 생기는 스케줄링 문제나 관리 등을 지원해주는 도구입니다.

 

그 중에서도 쿠버네티스는 구글에서 만든 것으로 현재 도커 스웜 등의 여러가지 오케스트레이션을 제치고 사실상 표준이 되어가고있습니다.

 

 

다음 시간에는 쿠버네티스의 동작방식, 운영방식 등에 대해 알아보겠습니다.

 

반응형