[CS] MSA 와 쿠버네티스 이해

김현수·2023년 12월 20일
0

WEB

목록 보기
10/18


🖋️ 마이크로서비스 아키텍처(MSA) 이해

  • 정의

애플리케이션을 느슨하게 결합된 서비스 컬렉션
구성하는 소프트웨어 아키텍처 스타일

MSA의 각 서비스는 특정 비즈니스 기능을 나타내며 독립적으로 작동
  • 형질

    • 모듈성

      • 특정 기능에 초점을 맞춘 작은 모듈식 소프트웨어

    • 독립성

      • 독립적으로 개발, 배포, 운영 및 확장 가능

    • 다양한 기술 스택

      • 서로 다른 프로그래밍 언어, 데이터베이스 및 기타 도구를 사용 가능

  • 사용 방법

    • 비즈니스 기능 식별

      • 애플리케이션을 고유한 비즈니스 기능으로 분류
      • 각 기능은 별도의 마이크로 서비스일 가능성 존재

    • 서비스 경계 정의

      • 각 서비스의 책임을 명확하게 정의
      • 각각에는 단일 책임과 통신을 위한 정의된 인터페이스 존재 필요

    • 독립적으로 개발

      • 각 서비스를 독립적으로 개발 및 배포
      • 개발 주기를 단축
      • 업데이트를 더 쉽게 수행 가능

    • 통신

      • 서비스는 잘 정의된 API(종종 RESTful API 또는 메시징 큐)를 사용하여 서로 통신

    • 데이터 관리

      • 자체 데이터베이스를 가질 수 있으므로 느슨한 결합
      • 독립적인 확장성을 보장 가능

🖋️ 쿠버네티스 이해

  • 정의

호스트 클러스터 전반에서 애플리케이션 컨테이너의 
배포, 확장 및 운영을 자동화하는 오픈 소스 컨테이너 오케스트레이션 플랫폼

  • 주요 특징들

    • 컨테이너 관리
      • 컨테이너화된 애플리케이션을 효율적으로 관리

    • 서비스 검색 및 로드 밸런싱
      • DNS 이름 또는 IP 주소를 사용하여 컨테이너를 노출 가능
      • 컨테이너에 대한 트래픽이 높으면, 네트워크 트래픽을 로드 밸런싱하고 분산 가능

    • 스토리지 오케스트레이션
      • 로컬 스토리지, 퍼블릭 클라우드 제공업체 등과 같은
        원하는 스토리지 시스템을 자동으로 마운트

    • 자동화된 롤아웃 및 롤백
      • 응용 프로그램의 배포 및 업데이트 프로세스를 관리합니다.

  • 사용 방법

    • 애플리케이션 컨테이너화
      • Kubernetes를 사용하기 전에 일반적으로 Docker를 사용하여 애플리케이션을 컨테이너화 필요

    • 쿠버네티스 클러스터 생성
      • 컨테이너화된 애플리케이션을 실행하는 노드 집합인 쿠버네티스 클러스터를 설정
      • 이 작업은 클라우드 플랫폼(예: AWS, GCP, Azure) 또는 온-프레미스에서 수행 가능

    • 배포 및 서비스 정의
      • 배포
        - Kubernetes 배포 구성에서 애플리케이션의 원하는 상태를 정의
        - 그러면 쿠버네티스는 애플리케이션 상태가 원하는 상태와 일치하는지 확인

    • 서비스
      • 응용 프로그램에 액세스하는 방법을 정의
        (예: 부하 분산 장치를 통해, 클러스터 내에서 또는 외부 IP를 통해)

    • 크기 조정
      • 클러스터에서 실행하려는 응용 프로그램의 인스턴스 수를 지정
      • 쿠버네티스는 스케일링을 자동으로 처리

    • 모니터링 및 관리
      • Kubectl, 대시보드 등과 같은 Kubernetes 도구를 사용하여
        애플리케이션 및 클러스터의 상태와 성능을 모니터링



MSA와 쿠버네티스 통합

  • 이상적인 페어링
    • Kubernetes는 컨테이너화된 애플리케이션을 효율적으로 처리할 수 있는 기능
    • 마이크로서비스를 관리하는 데 특히 적합
  • 서비스 배포
    • 각 마이크로 서비스를 Kubernetes에서 관리하는 컨테이너 집합으로 배포
  • 확장 및 부하 분산
    • Kubernetes는 수요에 따라 서비스를 동적으로 확장하고
      서비스 인스턴스 간에 부하를 분산 가능

⭐ 결론

마이크로서비스 아키텍처와 쿠버네티스는 소프트웨어 개발 및 배포를 위한 강력하고 현대적인 툴

  • MSA는 애플리케이션을 작고 독립적인 서비스 제품군으로 빌드하는 방법을 제공
  • Kubernetes는 특히 컨테이너화된 경우 이러한 서비스를 관리할 수 있는 강력한 도구를 제공

이 조합을 통해 확장 가능하고 복원력이 뛰어나며 효율적인 애플리케이션을 구축 가능
이를 자세히 살펴보면 다양한 개념과 도구를 접하게 되며
각각은 클라우드 네이티브 개발의 더 큰 에코시스템에서 역할 함

profile
일단 한다

0개의 댓글