헝D의 일기장

모놀리식 아키텍처

  • 하나의 큰 목적이 있는 서비스 또는 애플리케이션에 여러 기능이 통합돼 있는 구조.(하나의 애플리케이션 안에 모든 서비스가 포함돼 있으며 공통 데이터베이스를 가진다.)
  • 장점: 초기 단계 설계가 용이하며 개발이 단순하고 코드 관리가 간편
  • 단점: 서비스 운영 과정에서 수정이 많을 경우 어떤 서비스에서 이뤄진 수정이 연관된 다른 서비스에 영향을 미칠 가능성이 높다. 서비스가 성장하면서 기능이 추가될수록 서비스 간의 관계가 매우 복잡해질 수 있다.

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

  • 개별 기능을 하는 작은 서비스를 독립적으로 각각 개발해 연결해서 각 서비스들이 독립적으로 동작할 수 있는 완결된 구조.(각 서비스가 관련된 기능과 데이터베이스를 독립적으로 가진다. 즉 각 서비스별로 필요 기능이 특화된 데이터베이스를 선택할 수 있다.)
  • 시스템 전체가 하나의 목적을 지향하는 바는 모놀리식 아키텍처와 동일
  • 장점: 서비스를 재사용하기 쉽다. 향후 서비스 변경 시 다른 서비스에 미치는 영향이 적다. 사용량의 변화에 따라 특정 서비스만 확장할 수 있다.
  • 단점: 모놀리식 아키텍처보다 복잡도가 높고 각 서비스가 서로 유기적으로 통신하는 구조이기 때문에 네트워크를 통한 호출 횟수가 증가해 성능에 영향을 줄 수 있다.

컨테이너

  • 하나의 운영체제 커널에서 다른 프로세스에 영향을 받지 않고 독립적으로 실행되는 프로세스 상태. 가상화 상태에서 동작하는 프로세스보다 가볍고 빠르다.

컨테이너 인프라 환경

  • 컨테이너를 중심으로 구성된 인프라 환경
  • 마이크로서비스 아키텍처로 구현하기에 적합하다. (컨테이너가 MSA서비스와 1:1 대응한다)
  • 컨테이너를 서비스 단위로 포장해 손쉽게 배포와 확장이 가능하다.

도구
- 컨테이너
컨테이너 환경에서 독립적으로 애플리케이션 실행할 수 있도록 컨테이너를 만들고 관리하는 것을 도와주는 컨테이너 도구.
장점 - 운영체제 환경에 관계없이 독립적인 환경에서 일관된 결과를 보장.
ex. 도커
 
- 컨테이너 관리
다수의 컨테이너를 관리 및 컨테이너 인프라에 필요한 기능 통합 관리하는 솔루션
ex. 쿠버네티스
 
- 개발 환경 구성 및 배포 자동화
CI(지속적 통합), CD(지속적 배포) 를 지원
개발한 프로그램의 빌드, 테스트, 패키지화, 배포 단계를 모두 자동화해 개발 단계를 표준화.
개발된 코드의 빠른 적용 및 효과적 관리를 통해 개발 생산성 높임.
컨테이너 인프라 환경은 단일기능을 빠르게 개발해 적용해하는 환경이기에 이러한 도구가 적합.
ex. 젠킨스, 깃허브 액션
 
- 모니터링
상태 데이터를 수집 및 수집한 데이터를 시각화하는 컨테이너 인프라 환경에서의 중앙 모니터링을 위한 도구.
ex. 프로메테우스, 그라파나

profile

헝D의 일기장

@헝D

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!