MSA

아키텍쳐

[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' 태그의 글 목록