새오의 개발 기록

컨테이너 환경과 컨테이너 기반 기술(msa, docker, kubernetes) 개요 본문

DevOps

컨테이너 환경과 컨테이너 기반 기술(msa, docker, kubernetes) 개요

새오: 2023. 1. 20. 17:43

배경

 

  1. 서비스의 대량화 + 요구사항이 자주 변경되고 점진적 개발을 하는 애자일 환경으로 변화
  2. 사용자가 요구하는 인프라를 즉각 제공하는 환경 필요 + MSA
  3. 컨테이너 인프라 환경 발전
  4. 도커, 쿠버네티스 같은 컨테이너 관리 도구 발전

 

MSA(Micro Service Architecture)

 

  • 개념: 개별 기능을 하는 작은 서비스를 각각 개발해 연결
  • 장점:
    • 재사용이 쉬움
    • 기능마다 독립적이라 각 서비스에 에러가 발생하거나 확장해야할 경우 다른 서비스에 미칠 가능성이 적음
  • 단점:
    • 모놀리식 아키텍처보다 복잡도가 높음
    • 각 서비스가 서로 유기적으로 통신하는 구조로 설계되어 네트워크를 통한 호출횟수가 증가해 성능에 영향줄 수 있음

 

 

컨테이너 인프라 환경

 

  • 컨테이너:
    • 하나의 운영 체제 커널에서 다른 프로세스에 영향을 받지 않고 독립적으로 실행되는 프로세스 상태
    • VM ware 같은 가상머신을 사용하는 경우에 호스트 OS와 게스트 OS처럼 OS가 중복되는 상황이 발생하는데 OS가 여러 개 필요한 게 아니라 OS 위에서 실행할 APP 등이 필요한 것임. 이러한 상황에서 호스트 OS 없이 사용할 수 있도록 해주는 게 컨테이너 기술
  • 사용자가 요구하는 인프라를 즉각 제공하며 사용자마다 독립적인 환경에서 개발해도 모두 동일한 결과를 얻을 수 있고 개발된 소프트웨어의 성능을 보장하며 인프라의 가용 리소스를 최대한 확보할 수 있는 환경

 

컨테이너 인프라 환경을 지원하는 도구

 

Docker

 

  • 컨테이너 환경에서 독립적으로 애플리케이션을 실행할 수 있도록 컨테이너를 만들고 관리하는 것을 도와주는 컨테이너 도구
  • 서버를 설치해서 도커 파일로 제공해주며, 이러한 것들(도커 이미지)을 모아 놓고 편리하게 사용할 수 있는 도커 허브 → nginx, tomcat같은 서버를 미리 설치해두어 효율적으로 사용 가능

 

 

쿠버네티스

 

  • 다수의 컨테이너 관리도구
  • tomcat을 여러 개 설치하거나, 그 개수가 변경되는 상황에 더 쉽게 컨테이너를 사용할 수 있도록 도와주는 도구
  • 컨테이너의 자동 배포와 배포된 컨테이너에 대한 동작 보증

 

 

 

젠킨스

 

  • 지속적 통합(CI)과 지속적 배포(CD)를 지원
    • CI/CD: 빌드, 테스트, 패키지화, 배포를 자동화
  • 컨테이너 인프라 환경처럼 단일 기능을 빠르게 개발해 적용해야 하는 환경에 매우 적합한 도구

 

 

프로메테우스, 그라파나

 

  • 컨테이너 환경의 모니터링 도구
  • 프로메테우스: 상태 데이터 수집
  • 모니터링: 수집한 데이터를 보기 좋게 시각화

 

 

 

 

 

 

참고: 알렉의 기술노트 유튜브, 컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커

'DevOps' 카테고리의 다른 글

CI(Continuous Integretion)  (1) 2023.01.25