[MSA] 개인 프로젝트 Monolithic to MSA 전환기 - (7) 서비스 장애 대응 Circuit Breaker 구현(feat. Resilience4J)
·
아키텍쳐
1. 서비스 장애 대응(Circuit Breaker)의 필요성 현재 구성한 MSA의 구조는 다음과 같습니다. Member-Service, Board-Service가 존재하고 Board 로직에서 Member-Service를 호출하는 구조입니다. 게시글 작성 요청 예시 이러한 상황에서, '게시글 작성' 요청 Flow를 살펴봅시다. 외부에서 게시글 작성 API 요청(Request#1) API Gateway에서 Board-Service로 요청 라우팅 Board-Service에서 멤버 정보를 가져오기 위해 Member-Service로 OpenFeign 요청 Member-Service의 Member DB에서 멤버 정보를 Read해서 Board-Service에게 응답 OpenFeign 결과로 응답받은 멤버 정보를 통..
[MSA] 개인 프로젝트 Monolithic to MSA 전환기 - (6) 각 서비스의 설정 파일 관리하기(feat. Spring Cloud Config)
·
아키텍쳐
이번 챕터에서는 각 서비스의 설정 파일들을 관리하는 부분에 대해서 살펴보겠습니다. 1. 설정 파일 관리의 필요성 현재 MSA의 각 마이크로 서비스들의 설정 파일들은 서버 내부에 존재합니다. 이렇게 설정 파일들이 각 마이크로 서비스 내부에 존재할 때는 생산성, 운영 측면에서의 문제가 발생합니다. 여러 상황을 가정해봅시다. 1. 서버 성능 테스트를 위해 설정 파일에서 어떤 설정의 수치를 조절해가며 테스트하는 상황 이 상황에서 서버 내부에 설정 파일들이 존재하면 어떻게 될까요? 수치를 하나씩 조절할 때마다 애플리케이션을 새로 빌드 및 배포해야하는 과정이 필요합니다. 단지 설정 값을 조절하는 작업 하나 때문에 애플리케이션을 다시 빌드하고, 다시 배포해야 하는 것입니다. 2. 여러 설정 파일에 공통으로 있는 어떤..
[MSA] MSA에서 JPA Entity의 연관관계를 어떻게 설정할까?
·
아키텍쳐
모놀리식 구조의 애플리케이션을 MSA로 전환하는 과정에서, 연관관계가 존재했던 Entity의 관계를 끊어야 했습니다. 그래서 현재 개인 프로젝트의 애플리케이션 구조에서 MSA 환경에서의 적절한 Entity 연관관계는 무엇인지 고민하게 되었습니다. 그 과정에서 생각해봤던 방안으로 2가지 방안이 떠올랐었는데, 생각했던 2가지 방안을 설명하고 개인 프로젝트에는 어떤 방안을 적용했는지 살펴보도록 하겠습니다. 0. 모놀리식 구조에서의 JPA Entity 연관관계 & 프로젝트 비즈니스 로직 기존 모놀리식 구조에서 제 개인 프로젝트의 Entity 연관관계는 다음과 같이 Member-Board가 1:N 관계였었습니다. 0-1. Board Entity @Entity @NoArgsConstructor(access = Ac..
[MSA] 개인 프로젝트 Monolithic to MSA 전환기 - (3) Service Discovery 패턴 적용하기(feat. Spring Cloud Eureka)
·
아키텍쳐
앞서 Chapter 1에서 MSA 도입 시 고려할 점에서 'Service Discovery 패턴'이라는 개념이 등장했었습니다. 이번 챕터에서는 Service Discovery 패턴에 대해 알아보고 해당 패턴을 구현한 Spring Cloud Netflix의 Eureka를 제 개인 프로젝트에 적용한 과정을 담아보도록 하겠습니다. 1. Service Discovery 패턴이란? Service Discovery 패턴은 MSA를 도입하면서 불편한 점을 해결하는 패턴입니다. 어떠한 패턴인지를 알아보기 위해서는 MSA 도입 시 어떠한 점이 불편한지를 알아보면 됩니다. 이 부분은 Chapter 1에서 다뤘던 부분이므로 해당 부분을 인용하겠습니다. 앞서 MSA에서는 외부에서 오는 요청은 API Gateway를 통해서 전..
[MSA] 개인 프로젝트 Monolithic to MSA 전환기 - (2) 멀티 모듈 구성하기
·
아키텍쳐
이제 본격적으로 모놀리식 아키텍쳐 프로젝트를 MSA 아키텍쳐로 전환해보고자 합니다! 이번 포스팅에서는 단일 모듈로 구성되어 있는 프로젝트를 멀티 모듈로 구성하는 과정을 담아보겠습니다. 그 전에 간단하게 멀티 모듈이 무엇인지 살펴보고 적용 과정을 담아보겠습니다! 1. 멀티 모듈이란? Oracle의 Java Document에서는 모듈을 다음과 같이 정의합니다. 패키지의 한 단계 위의 집합체로, 관련된 패키지와 리소스들을 재사용할 수 있는 그룹 간단히 말하면 모듈은 패키지의 집합을 의미합니다. 일반적으로 간단한 프로젝트는 여러 패키지를 그룹화한 단일의 모듈로 구성되는 경우가 많습니다. 제 개인 프로젝트도 하나의 단일 모듈로, 모든 소스 코드가 하나의 단일 모듈에 존재하는 경우입니다. 멀티 모듈이란, 말그대로 ..
[MSA] 개인 프로젝트 Monolithic to MSA 전환기 - (1) MSA란?
·
아키텍쳐
저는 현재 진행중인 간단한 게시판 도메인 개인 프로젝트가 있습니다. 현재의 프로젝트 아키텍쳐는 Monolithic 아키텍쳐입니다. Monolithic 아키텍쳐에서 MSA로의 전환을 경험해보고 싶어서 개인 프로젝트에 적용하고자 합니다! 개인 프로젝트인만큼 엄~청나게 규모가 작지만 작은 상태에서 전환해보고 그 이후 MSA에서 확장도 시간이 되면 경험해보려고 합니다! 실전에 들어가기 전에, 간략하게 Monolithic 아키텍쳐와 MSA 아키텍쳐가 무엇인지 이론적으로 먼저 알아보겠습니다. 개인 프로젝트에 적용하는 만큼 제 개인 프로젝트에 빗대어서 설명을 해보겠습니다! 개인 프로젝트 ERD는 다음과 같습니다. 정말 단순한 게시판 서비스로, Member 서비스와 Board 서비스 2가지 도메인의 서비스만 존재합니다..
BE_성하
'MSA' 태그의 글 목록