본문 바로가기

오늘의 공부 & 기록

[Kubernetes] 쿠버네티스와 마이크로 서비스(Microservice)

 

 

 

 

1. 데브옵스(DevOps)

  • 소프트웨어의 개발(Development)와 운영(Operations)의 합성어
  • 실리콘 밸리를 중심으로 유행하여 전세계에 퍼져 현재 IT 분야에서 가장 진보된 소프트웨어 개발 문화 또는 방법론
  • 소프트웨어 개발자와 정보기술 전문가 간의 소통, 협업 및 통합을 강조하는 개발 환경이나 문화
  • 소프트웨어 개발 조직과 운영  조직간의 상호 의존적 대응이며, 조직이 소프트웨어 제품과 서비슬르 빠른 시간에 개발 및 배포하는 것을 목적으로함
  • 데브옵스의 목적은 전반적인 배포 파이프라인에 걸쳐있음
  • 개발 조직과 운영 조직이 물리적으로 격리되지 않는 환경에서 개발, 테스트, 배포, 운영에 이른 전체 생명주기를 서로 긴밀하게 통합하여 관리

 

1) 데브옵스 워크 플로우

https://devopedia.org/devops

 

 

2) 데브옵스 도구

https://devopedia.org/

 

 

2. 마이크로 서비스(Microservice)

  • 데브옵스를 실현하기 위한 수단으로 마이크로서비스가 등장
  • 전통적인 거대한 덩치의 애플리케이션을 잘게 쪼개는 것
  • 애플리케이션을 더 조그마한 여러 서비스로 분해하면 새로운 기술의 도입, 고가용성, 무중단, 장애 대처가 수월해짐
  • 애플리케이션을 느슨히 결합된 서비스의 모임으로 구조화하는 서비스 지향 아키텍처(SOA) 스타일의 일종인 소프트웨어 개발 기법
  • 마이크로서비스 아키텍처에서 서비스들은 섬세(fine-grained)하고 프로토콜은 가벼운 편
  • 모듈성을 개선시키고 애플리케이션의 이해, 개발, 테스트를 더 쉽게할 수 있음

 

 

https://microservices.io/patterns/microservices.html

 

1) 마이크로서비스 아키텍처

  • 소프트웨어 애플리케이션을 독립적으로 배치 가능한 서비스 조합(suite)으로 설계하는 방식
  • 아주 작은 단위로 동작하는 서비스가 구동되도록 시스템 및 소프트웨어의 구성과 구성요소 간의 관계를 정의한 아키텍처
  • 모든 요소가 독립적이며 연동되어 동일한 태스크 완수
  • 하나의 애플리케이션을 구성함에 있어 분할된 다수의 서버 또는 컨테이너를 통해 애플리케이션 기능뿐만 아니라 데이터까지 분리하여 격리된 독립된 환경으로 구성되는 점이 특징

📝 참고

모놀리식: 모든 요소를 하나의 애플리케이션에 구축하는 전통적인 접근방식

 

2) 마이크로 서비스 특징

  • 애플리케이션 로직을 각자 책임이 명확한 작은 컴포넌트로 분해하고 이들을 조합해서 솔루션 제공 
  • 각 컴포넌트는 작은 책임 영역을 담당하고 완전히 상호 독립적으로 배포
  • 마이크로서비스는 몇가지 기본 원칙에 기반을 두며 서비스 소비자와 서비스 제공자 사이의 데이터 교환을 위해 HTTP, JSON과 같은 경량 통신  프로토콜 사용
  • 애플리케이션은 항상 기술 중립적 프로토콜을 사용해 통신하므로 서비스 구현 기술과는 무관
  • 작고 독립적이며 분산된 마이크로서비스를 사용해 조직은 명확히 정의된 책임 영역을 담당하는 소규모 팀 보유

 

3) 마이크로서비스 아키텍처 설계

External Gateway(외부 게이트웨이)

  • MSA 구현은 비즈니스 응용 프로그램 및 응용 프로그램에서 사용할 수 있는 API 형태로 기능 노출
  • 서비스 외부 게이트웨이는 서비스에 대한 액세스를 관리하고 트래픽 관리 및 보안 정책을 적용하여 마이크로 서비스 환경을 보호
  • 외부 게이트웨이 기능은 종종 API 관리 제품을 사용하여 구현
  • API Gateway: 외부 요청을 적절한 서비스로 라우팅함

 

Container Management(관리 컨테이너)

  • 개별 서비스 인스턴스에는 작동할 컨텍스트(실행환경으로 보면됨)가 필요
  • 가상 컴퓨터, Docker 컨테이너 또는 조정 된 프로세스로 구현 된 관리 컨테이너는 이러한 기능 제공
  • 인스턴스 관리 및 조정을 제공하고 필요에 따라 새 인스턴스를 회전하며 개별 인스턴스의 수명 주기 관리 

 

 

Service Mesh

  • 서비스 간의 통신을 느슨하게 결합, 신뢰성 및 유연성을 유지하는데 도움이 되는 기능으로 구성
  • 서비스 분리, 버전 관리 전략 지원 및 부하시 탄성 확장성 관리 가능
  • 서비스 라우팅, 로드 밸런싱, 서비스 발견 , 구성 저장소, ID 공급자 기능

 

서비스 이미지 레지스트리

  • 사용자 환경에 어딘가에는 빌드되고 테스트 된 서비스의 불변 이미지를 저장하는 레지스트리로 코드 저장소(동적으로 생성된 서비스의 경우), Docker 이미지 레지스트리, 이진 아티팩트 저장소 또는 VM이미지의 BLOB(Binary Large Object) 기반 저장소 등

 

메시지 지향 미들웨어

  • 가장 간단한 MSA 구현은 HTTP와 같은 동기식 프로토콜 또는 GRPC 또는 Thrift와 같은 보다 효율적인 프로토콜을 사용하여 지속 가능하며 이벤트 및 메시지 중심 패턴을 지원하기 위해 비동기 메시징 채널이 필요

 

빌드 및 테스트 자동화

  • MSA의 개발 민첩성 이점은 개발 출력 품질을 극대화하고 전달을 간소화하기 위해 개발 주기에서 높은 수준의 빌드 및 테스트 자동화 필요

 

배포 자동화

  • 개발 민첩성 이점을 완전히 실현하려면 배포를 자동화

 

'오늘의 공부 & 기록' 카테고리의 다른 글

랭체인 공부  (0) 2024.06.25
[MQTT] 에러 해결 과정 정리  (0) 2024.04.03
api 동시 요청 수 제한하는 방법  (0) 2023.12.11
HTTP 상태코드  (0) 2023.09.30
HTTP API설계 예시  (0) 2023.09.30