스터디를 하게된 이유는 지난번과 비슷하다.
쿠버네티스는 현재까지 굉장히 핫한 기술중 하나라고 생각한다.
도커와 쿠버네티스는 무언가 세트처럼 따라다니는 개발 스택이었고, 도커를 조금 봤으니 이제는 쿠버네티스를 한번쯤 들여다 보고 싶었다.
지난번에 이야기 한 내용이 많이 나올 수 있기에, 지난번 도커를 기억하고 있어야 한다.
쿠버네티스는 결국 컨테이너를 관리하기 위한 툴이다.
여러가지 상황에서 사용하기 좋은 툴이 된다고 하는데,
어떤 상황에서 사용하는 것이며, 어떤 역할을 하는지 정도만 알아보자.
(물론 여기서 다루지 않은 다양한 상황에 맞추어 사용할 수 있으며, 나는 아직 제대로 사용해본 적이 없어 이 글에서 모든 상황을 다 다루지 못할 것이다)
마이크로서비스 아키텍처에 대한 의미가 무엇인지 먼저 알아야 할 것 같다.
나는 쿠버네티스가 궁금했는데 마이크로서비스 아키텍처도 알아야 한다니..
마이크로서비스 아키텍처는 간단하게 말하면 기능마다 다수의 모듈로 분해해 따로 구동하는 것이라고 이해하면 편한 듯 하다.
모놀리식 아키텍처의 반댓말로, 예를 들면 하나의 서비스에서 [회원관리용 모듈 / 구매관리용 모듈 / 상품관리용 모듈] 이렇게 각 기능별 서버를 떼어서 관리하는 아키텍처 이다. (맞겠지..?)
이때 실행 가능한 하나의 모듈을 마이크로서비스라고 한다.
하나의 서버에서 많은 것들을 다루고, 회원관리용 모듈이 죽었을 때 구매관리용 모듈에서는 영향을 받지 않는 등 다양한 장점을 가지고 있어 최근 크고 다양한 서비스들에서 사용되고 있는데 자세한 설명은 건너건너 아는 개발자의 노션을 참고해보자.
이렇게 각각의 모듈을 컨테이너로 관리한다고 했을 때,
쿠버네티스를 통해서 컨테이너를 관리한다면 하나의 컨테이너가 에러 발생 시 자동으로 최소 갯수의 컨테이너를 맞추기 위해 재시동 된다고 한다.
5개의 컨테이너는 반드시 살아있어야 한다고 쿠버네티스로 작동해두면,
5개의 컨테이너 중 오류가 발생한 컨테이너는 쿠버네티스가 알아서 재시동 되어 서비스가 유지 될 수 있는 것이다!
쿠버네티스가 각각의 컨테이너들을 모니터링 한다고 생각하면 좋을 것 같다.
컨테이너가 많을 수록 쿠버네티스는 더욱이 유용해 질 것이다.
내가 구동시킨 서비스는 하나의 컨테이너로 구성되어있고, 100명의 사용자만 감당할 수 있는데
갑자기 10000명의 사용자가 접속을 한다면?
쿠버네티스는 컨테이너를 자동으로 100개로 늘려 구동시켜주게 된다.
알아서 사용자들을 수용할 수 있을 만큼 컨테이너의 갯수를 조절해 주는 것이다.
물론, 사용자가 줄어든다면 미리 지정해 둔 최소 갯수의 컨테이너만 구동되도록 다시 조절한다.
만약 내가 5개의 컨테이너를 구동하여 서비스를 배포 중이라고 했을 때, 업데이트 해야하는 사항이 생긴다면?
해당 기능 업데이트를 위해 컨테이너 가동을 중지시키고, 코드를 업데이트 한 후 다시 컨테이너를 가동하게 될 것이다.
이 말은 즉슨, 서비스가 잠시동안 죽었다가 살아난다는 뜻이다.
물론 크지 않은 서비스라면 찰나의 순간이겠지만, 사용자는 불편함을 느낄 수도 있게 된다.
쿠버네티스는 5개의 컨테이너를 자동으로 순차적으로 업데이트 시켜주어 서비스가 중단되지 않도록 도와준다.
많은 컨테이너를 사용하는 서비스를 운영하게 된다면, 해당 컨테이너들을 관리하는데에는 많은 자동화가 필요하게 될테고 그때는 자동으로 쿠버네티스와 같은 툴을 찾게 되지 않을까 싶다.