MSA 개발 가이드(2) - Spring Cloud 기반 마이크로서비스(MSA)

2023. 6. 16. 14:23· DEV/MSA
목차
  1. MSA 개발 가이드 목차
  2. Spring Boot
  3. Spring Cloud
반응형

MSA 개발 가이드 목차

  1. Spring Boot
  2. Spring Cloud

 


 

 

응용프로그램 개발 분야는 Spring 프레임워크의 유례없는 성장과 함께 더 간결하고 빠른 개발을 가능케 하는 패러다임의 변화를 경험했다.

Spring 프레임워크의 핵심인 의존성 주입(DI)과 관점 지향 프로그래밍(AOP) 기법은 응용 프로그램 개발의 새로운 표준으로 떠올랐다.

 

그럼에도 불구하고, Spring 프레임워크의 계속된 발전은 설정의 복잡성을 높였으며, 배포 측면에서는 크게 달라진 것이 없다.

특히, 응용 프로그램의 복잡성과 대화형 개발 및 배포 방식에 대한 근본적인 변화가 요구되고 있다.

이러한 문제를 해결하기 위해 마이크로서비스 아키텍처(MSA)가 도입되었다.

이 아키텍처는 독립적으로 작동하는 컴포넌트들로 대규모 시스템을 구축하며, Spring은 이러한 컴포넌트를 프로세스 수준에서 유연하게 결합하여 구성한다.

 

이 가이드는 다음 두 가지 주요 방식을 통해 효과적인 마이크로 서비스 개발과 운영을 지원한다:

  1. Spring Boot : 컴포넌트 수준의 마이크로 서비스 아키텍처를 통해 설정을 간소화하고 독립 서비스를 지원한다.
  2. Spring Cloud : 시스템 수준의 마이크로 서비스 아키텍처를 통해 컴포넌트 간의 효율적인 분산 서비스를 지원한다.

 


Spring Boot

 

스프링부트는 단독 실행되는, 실행하기만 하면 되는 상용화 가능한 수준의 스프링 기반 애플리케이션을 쉽게 만들어 낼 수 있다.

최소한의 설정으로 스프링 플랫폼과 third-party 라이브러리들을 사용할 수 있도록 하고 있다.

<그림1> Spring IO Platform

이는 보다 손 쉽게 설정을 구성하거나 개발 및 배포를 빠르게 지원할 수 있다. 또한, embedded 방식의 container를 사용하여 web server를 통한 배포가 아닌, 독립적으로 실행 가능한 웹 애플리케이션을 구성할 수 있다.

 

제공 기능으로는 

  • 단독 실행이 가능한  스프링 애플리케이션을 생성
  • 내장형 Tomcat, Jetty 또는 Undertow를 지원한다.
  • 기본으로 설정되어 있는 'starter' 컴포넌트들을 쉽게 환경 설정한다.
  • 라이브러리 인식을 통한 자동 환경 구성 지원
  • 상용화 수준의 통계(Metrics), 상태 점검(health check) 및 외부 설정을 제공한다.
  • 설정을 위한 XML코드가 필요 없다.

 

Spring Boot starters

 

스타터는 응용 프로그램에 통합할 수 있는 편리한 종속성 관리 모음이다.

 

필요한 모든 Spring 및 연관된 기술을 복잡한 의존성 관리 과정 없이 한 번에 관리할 수 있다. 예시로, Spring과 JPA를 데이터베이스 액세스에 사용하려면 "spring-boot-starter-data-jpa" 프로젝트를 의존성에 추가하면 된다.

 

스타터는 프로젝트를 빠르게 시작하고 실행하는데 필요한 다양한 종속성을 포함하며, 이는 일관된 관리를 지원하는 종속성 모음을 제공한다.

 


Spring Cloud

Spring Cloud는 개발자가 분산 시스템 구성에 필요한 다양한 기능(설정 관리 및 공유, 서비스 등록 및 관리, 서비스 요청 라우팅 등)을 제공한다.

분산 시스템을 구성하기 위한 복잡한 설정 및 서비스들을 효율적이고 신속하게 구현할 수 있도록 지원한다. 

 

제공 기능으로는 아래와 같다.

  • 분산 및 버전으로 구분된 설정 관리
  • 서비스 등록 및 조회
  • 라우팅 및 상태 체크
  • 서비스 대 서비스 호출
  • 서비스 분산 로딩
  • 서비스 간 호출 분리
  • 클러스터링 환경 관리
  • 분산 메시징
서비스 설명 컴포넌트
Config 서비스 별도의 통합된 설정 관리 서비스 제공을 통해 환경 독립적 서비스 제공 Spring Config
Service Discovery 서비스 서비스에 대한 물리적 위치 정보 대신 논리적 서비스 Eureka(Spring Cloud Netflix)
Event Bus 서비스 분산 메시징 지원을 위한 서비스 연계 지원 Spring Cloud Bus(AMQP & RabbitMQ)
Circuit Breaker 서비스 서비스 간 호출 시, 문제가 있는 서비스에 대한 차단 지원 서비스 Hysterix(Spring Cloud Netflix)
Client Load Balancing 서비스 호출 시에 분산 형태로 호출할 수 있는 client 적용 서비스 library Ribbon(Spring Cloud Netflix)
Service Router 서비스 서비스 호출 시, routing을 통해 실제 서비스에 위치 제공 Zuul(Spring Cloud Netflix)
API-Gateway 서비스 Microservice에 대한 API 관리 및 모니터링 서비스 Zuul(Spring Cloud Netflix)
Cluster 서비스 Service level의 Cluster를 지원하기 위한 서비스 제공 Spring Cloud Cluster
Security 서비스 Load balanced 환경에서의 OAuth2 인증 지원 서비스 Spring Cloud Security
Polyglot 지원 서비스 non-JVM 프로그래밍 언어 지원을 위한 서비스 Spring Cloud Sidecar
Kubernetes 지원 서비스 Spring Cloud 애플리케이션을 위한 쿠버네티스 Discovery와 ConfigMaps 지원 서비스 Spring Cloud Kubernetes

 

반응형

'DEV > MSA' 카테고리의 다른 글

MSA 개발 가이드(4) - Resilience4j(Circuit Breaker)  (0) 2023.06.19
MSA 개발 가이드(3) - 마이크로 서비스 아키텍처 구현해보기  (0) 2023.06.16
MSA 개발 가이드(1) - MSA란 무엇인가  (0) 2023.06.16
API Gateway의 이해  (0) 2023.06.13
Kafka 용어 정리 (pub/sub, 토픽, 파티션, 브로커)  (1) 2023.05.12
  1. MSA 개발 가이드 목차
  2. Spring Boot
  3. Spring Cloud
'DEV/MSA' 카테고리의 다른 글
  • MSA 개발 가이드(4) - Resilience4j(Circuit Breaker)
  • MSA 개발 가이드(3) - 마이크로 서비스 아키텍처 구현해보기
  • MSA 개발 가이드(1) - MSA란 무엇인가
  • API Gateway의 이해
wn1331
wn1331
반응형
wn1331
JONGHUN
wn1331
전체
오늘
어제
  • 분류 전체보기 (268)
    • Spring (16)
      • Spring Data JPA (0)
      • Spring Security (11)
      • Spring Batch (5)
    • DEV (40)
      • FrontEnd (2)
      • JAVA (5)
      • Git (1)
      • 기타 (6)
      • Network (1)
      • MSA (12)
      • 개발일기 || 트러블슈팅 (5)
      • 행사 || 후기 (3)
      • GraphQL (3)
      • Kotlin (0)
      • Database (2)
    • 코딩테스트 (164)
      • Programmers_LV0 (100)
      • Programmers_LV1 (54)
      • 백준 (8)
      • Algorithm (1)
    • 교육 | 외부활동 (44)
      • 이론_JAVA (13)
      • ORACLE (12)
      • PUBLISHING (6)
      • JAVASCRIPT (5)
      • JQuery (0)
      • 항해99 플러스 백엔드 (8)
    • 기본지식 (0)
    • 끄적끄적 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 학부생(용인대학교 컴퓨터과학과 1~4학년) 네이버 블로그는⋯

인기 글

태그

  • MySQL
  • 항해99
  • 세션
  • 항해플러스
  • spring security
  • 항플
  • SESSION
  • java
  • Spring Boot
  • 스프링
  • 스프링 부트
  • Spring Batch
  • MSA
  • JPA
  • 항플 백엔드
  • transaction
  • Spring
  • 스프링 시큐리티
  • Step
  • 압축

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
wn1331
MSA 개발 가이드(2) - Spring Cloud 기반 마이크로서비스(MSA)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.