요즘 아침엔 컴퓨터를 키지마자 대기업 테크 블로그 글을 하나씩 읽고 있다. (특히 카카오테크와 우아한형제들 기술블로그를 좋아한다) 이 방법이 최신 기술을 눈으로나마 익히기 좋은 것 같아서 꾸준히 읽고 있는데, 최근 쿠버네티스에 관한 글이 많아진 걸 확인했다. 그러다 이에 관해 설명이 아주 잘 되어있는 카카오 기술 블로그를 읽었는데, MSA와 쿠버네티스 그리고 수반된 기술들을 이해한대로 나름 정리 해보려한다. (원 글은 아래에!)
https://tech.kakao.com/2021/09/14/msa/
일단 쿠버네티스가 많이 쓰이게 된 환경을 이해하는 것이 좋을 것 같다. 카카오톡 같은 경우, 이모티콘 서비스가 갈수록 확장되는데 반해, 아직 초창기 기술을 그대로 사용중이어서 배포나 유지, 보수에 불편함이 많았다고 한다. 확실히 억대 연봉의 이모티콘 작가들이 생겨나고, 나 포함 주변에 이모티콘 플러스 구독자가 많은 것을 보아 서비스의 규모가 상당해졌음을 알 수 있다. 이렇게 하나의 이모티콘 서비스 서버에 많은 기능들이 추가가 되고, 그 추가되는 인원들이 모두 한 군데에서 코드를 관리하는 불편함을 겪고 있었다. 또한, 하위 서비스마다 모두 다른 서버 방식으로 인해 배포에 대한 러닝커브가 길고, 수반되는 오류가 많았다고 한다. 그리고 그 어려움에 대한(기술부채)를 해결하기 위해 카카오가 해결책으로 내놓은 것이 바로 MSA이다.
MSA란?
MSA란 MicroService Architecture의 약자로서 정확한 정의는 없지만 다음과 같은 특징을 가지고 있다.
- 서비스 간에 네트워크를 넘나드는 통신을 하게 된다.
- 도메인 중심으로 설계된다.
- 서비스별 최적화된 기술을 독립적으로 사용 가능하다.
- 서비스 크기는 작아지고, 독자적 개발이 가능하고, 독립 배포 가능하고, 배포 자동화도 가능하다.
그렇다보니 1) 배포 단위가 작아지고, 2) 결합도가 낮아서 설계 변경에도 부담이적고, 또 3) 각각의 서비스에 맞는 최적의 기술 사용이 가능해진다.
이 MSA는 이런 특징 때문에 클라우드와 가장 궁합이 잘 맞는다. 또한, 카카오나 구글처럼 VM이나 하드웨어, 컨테이너의 수가 많아지면, 이 컨테이너들의 배포 위치에 대한 고민이 필요해진다. 자원을 최대한 사용하기 위해 컨테이너를 적절한 위치에 배포하고, 어플리케이션 특성들에 따라서 같거나 다른 물리서버에 배포를 해주게 되는데 이것들을 스케줄링이라고 한다. 그리고 이런 스케줄링과 클라우드 환경을 지원하는 오픈소스 플랫폼이 바로 쿠버네티스(Kubernetes)이다.
쿠버네티스란?
쿠버네티스는 컨테이너화된 애플리케이션의 자동 전개(deploy), 스케일링 등을 제공하는 관리시스템이다. 원래 구글에 의해 설계되었고 현재 리눅스 재단에 의해 관리되고 있는 오픈소스 플랫폼이다. 플랫폼에 종속적이지 않기에 배포에 장점이 많은 기술이다. 약어로는 k8s(k와 s사이에 8개의 문자)라고 한다.
쿠버네티스는 도커와도 궁합이 잘 맞는 기술이라고 한다. 이에 대한 자세한 이해는 https://bcho.tistory.com/1255
이 블로그를 참고하는 것이 좋을 것 같다. 정리를 정말 잘해놓아주셔서 이해가 쉬웠다!
'Server, DevOps' 카테고리의 다른 글
[Server] 2계층 MAC Layer (CSMA/CD, CSMA/CA 개념정리) (0) | 2021.11.10 |
---|---|
Socket 통신이란? (+ Http통신과 차이점까지) (2) | 2021.11.03 |
[Network] 컴퓨터 네트워크란? OSI 7계층이란? (0) | 2021.11.01 |
세션(Sessions) vs 쿠키(Cookie) vs 토큰(Token) 차이점은?(feat. 찜질방=세션??!, JWT) (0) | 2021.10.14 |
[Server] 쉽게 설명하는 Restful API (+REST란? Restful Architecture?) (0) | 2021.10.11 |