분류 전체보기
-
MSA - Outbox Pattern? Saga Pattern?Back-end 2024. 3. 19. 09:58
개요 Saga 와 Outbox 패턴에 대해 구현 및 실습을 하고 생각을 정리해보자. 참고로 코드나 내용은 제가 생각한대로 구성하여 널리 알려진 개념들과 맞지 않을 수도 있습니다:) github: https://github.com/ghkdwlgns612/msa-transaction-pattern 계기 Micro Service Architecture 라고 불리는 개념만 접해봤을 뿐 실제 적용 경험은 없다. MSA 의 핵심은 DB 를 분리하는 것인데 이것에 대한 트랜잭션을 어떤 방법으로 관리를 할까라는 의문점을 가졌다. 실제 내가 맡은 제품은 Monolith in MSA(코드만 분리하고 DBMS 는 하나) 로 사용하고 있다. 그래서 언젠가는 사용해볼수도? 있지 않을까라는 생각에 구현하고 의문점을 나만의 방식으..
-
TestCode 의 properties override 에 대하여Back-end 2024. 3. 8. 16:07
개요 TestCode 의 properties 파일에 대한 오해가 있어서 간단히 정리해보려 한다. 스프링에 대한 실력이 부족해서 업무 중 실수를 했다 ㅠ 다음엔 실수하지 않도록 정리를 해놓자. 내가 하려고 했던 방향 기존의 propeties 파일 및 통합 테스트 어노테이션이다. @ActiveProfiles("test") @AutoConfigureTestDatabase @ExtendWith(SpringExtension.class) @SpringBootTest public abstract class NdapSpringIntegrationTestBase { } 왜 test/application.properties 를 만들지 않고 test/application-test.properties + @ActiveProf..
-
멀티 모듈에서 @ConditionalOnProperty 사용 시 주의사항Back-end 2024. 3. 7. 10:35
개요 멀티 모듈에서 @ConditionalOnProperty 사용 시 주의해야할 사항에 대한 글입니다. 사건의 발단 여러 모듈에서 중복으로 관리되어지는 Configuration 이 있었다. 이것을 하나의 모듈에 모아 관리하려고 했다. application.properties 옵션을 이용해 @Configuration 내부 빈 들을 주입할지 결정하도록 설계하려했다. 아래와 같이 옵션이 "true" 인 경우만 빈 들을 등록하는 방향으로 시도했다. kafka.configuration.order=true kafka.configuration.payment=true kafka.configuration.stock=true 예시의 Configuration 이다. @Configuration @ConditionalOnPr..
-
[24.03.01] 마이크로서비스 안티 패턴블로그 번역 2024. 3. 1. 13:25
이번 주제는 마이크로서비스 구축 시 안티 패턴에 관한 주제입니다. 1. Monolith in Microservices 첫 번째로 마이크로서비스의 단일 DBMS 사용이다. 기본적으로 MSA 에서는 각 서비스마다 DB 인스턴스를 가지는게 일반적이다. 왜냐하면 데이터베이스 유형, 스키마 규칙, IOPS 용량을 각자 설정할 수 있기 때문이다. 두 번째로는 배포의 복잡성이 증가하는 것이다. 기존 Monolithic 버전의 빌드 및 배포보다 복잡한 배포과정을 가진다면 MSA 의 장점인 유연하고 민첩한 배포가 불가능하므로 이러한 부분을 쉽게 관리할 수 있도록 해야한다. 마지막으로 불분명한 도메인 경계이다. 예시로 User 관련 기능들이나 ACL 같은 기능들이 모든 서비스에서 중복으로 관리되어지고있다면 아키텍처를 ..