본문 바로가기
SW 아키텍처

[SW 아키텍처] MSA 설계 및 개발(w/Java)

by 클레어몬트 2025. 2. 19.

https://claremont.tistory.com/entry/SW-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98-MSAMicroServices-Architecture

 

[SW 아키텍처] MSA(MicroServices Architecture)

https://claremont.tistory.com/entry/SW-Architecture-Monolithic-Architecture%EB%AA%A8%EB%86%80%EB%A6%AC%EC%8B%9D-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98 [SW Architecture] 모놀리식 아키텍처(Monolithic Architecture)가장 전통적인 소프트웨어

claremont.tistory.com

1. MSA 설계

[MSA 설계 기준]

1. Tightly 하게 scope 되고

2. 강하게 캡슐화되고

3. 유연하게 coupled 되고

4. 독립적으로 배포 가능하고

5. 독립적으로 스케일링 가능한 서비스

 

 

[MSA 목적]

- Agile 하게 개발

- 유연하고 빠른 배포

- 정밀한 스케일링

 

 

<필수 기술요소>

 

 

 

2. MSA 개발(w/Java)

Java에서는 Spring BootSpring CloudAPI Gateway 등의 기술을 활용하여 MSA를 구현할 수 있다!

① Microservice 개발: 개별 서비스의 API를 정의하고, RESTful API를 제공하는 애플리케이션을 개발

(Spring Boot 기반의 Microservice 개발)

 

  • RESTful API를 제공하는 서비스 개발
  • Swagger(SPRING REST Docs)를 이용한 API 문서 자동화
  • 독립적으로 배포 가능한 서비스 구조 설계

e.g. UserService와 같은 마이크로서비스를 생성하여 사용자 정보를 제공하는 REST API 구축

 

 

② Microservice 등록 및 활용: Service Registry를 활용하여 동적 서비스 검색(discovery) 로드 밸런싱(load balancing)을 수행

  • Eureka, Consul, Zookeeper 등을 활용하여 서비스 레지스트리 구축
  • 서비스가 실행될 때 동적으로 Service Registry에 등록되고 검색 가능하도록 설정
  • 로드 밸런싱을 통한 안정적인 서비스 호출

 

③ Microservice 재사용: Spring Initializr를 활용하여 자동 설정(Configuration)재사용성을 높일 수 있다

  • Spring Initializr를 활용한 프로젝트 생성
  • Cross Cutting Concern 처리: 보안, 로깅, 설정 관리 등의 공통 기능 적용

e.g. DB 연결 및 공통 설정을 위한 database-service 모듈 생성 및 재사용



④ Microservice 관리: API Gateway를 통해 통합 관리

API Gateway는 클라이언트와 서비스 간의 진입점 역할을 수행하며, 보안트래픽 관리 기능을 제공한다

  • API Gateway (Apigee, Spring Cloud Gateway, Kong 등) 활용
  • 인증, 로깅, 트래픽 관리 기능 제공
  • API 문서 및 분석(Analytics) 기능 지원

e.g. Apigee API Gateway를 활용하여 모든 API 호출을 관리하고 인증/보안 기능 적용



 

 

 

(요약) Java 기반으로 마이크로서비스 아키텍처를 구축하는 과정은 다음과 같은 주요 단계를 거친다
① Microservice 개발: 개별 서비스 개발 및 API 문서화
② Microservice 등록 및 활용: 서비스 검색 및 로드 밸런싱
③ Microservice 재사용: 공통 기능 적용 및 설정 자동화
④ Microservice 관리: API Gateway를 통한 서비스 관리 및 모니터링

Java(Spring Boot, Spring Cloud) 환경에서는 이와 같은 구조를 쉽게 구축할 수 있으며, 다양한 마이크로서비스를 효율적으로 관리하고 확장할 수 있다. 이를 통해 유연하고 확장성이 높은 애플리케이션을 개발할 수 있다!