프로그래밍/MSA
-
DB 분리 스키마 vs 테이블프로그래밍/MSA 2024. 11. 28. 16:53
MSA 환경에서 데이터베이스를 어떻게 할 지 고민 도커컴포즈로 mysql과 레디스를 묶어 사용하려 했다. 이 경우 레디스는 key-space를 도메인 별로 나누면 된다. 하지만 mysql은 각 도메인마다 독립적인 데이터베이스를 가져야하는데 어떻게 구현해야하나 고민이 되었다. 방식은 두가지가 있다. 1. 각 도메인이 다른 스키마를 사용2. 같은 스키마를 공유하되, 도메인 별로 테이블을 분리 1. 각 도메인이 다른 스키마를 사용Order는 order_db, Product는 product_db, Auth는 auth_db 로 스키마를 분리할 수 있다. 이 경우 각 도메인은 url이 분리되어 각자 독립적인 db를 보유한 것처럼 사용할 수 있다.jdbc:mysql://mysql:3306/product_db..
-
마이크로서비스 깃허브 관리방식프로그래밍/MSA 2024. 11. 28. 02:18
MSA 프로젝트를 하며 깃허브 레포지토리를 어떻게 관리해야할지많은 고민이 생겨 이것저것 알아보았다. 깃허브 관리 방식에는 3가지를 찾을 수 있었다. 1. 모노레포 (Monorepo)2. 서브모듈 (Submodule)3. 다중 레포지토리 (Multi-repo) 각 방식에 대해 간략히 설명해보자면 1. 모노레포 (Monorepo)모노레포란 하나의 깃 레포지토리에서 여러 프로젝트 또는 서비스를 통합 관리하는 방식모든 서비스와 코드를 하나의 레포지토리에서 관리하는 것이 특징 장점1. CICD 파이프라인 설정과 코드 공유가 쉽다.2. 서비스 간 의존성 문제를 해결하기 쉽다.3. 같은 레포지토리에서 작업하므로 변경사항 추적이 쉬우며, 협업이 쉽다.4. 관련된 모든 변경사항을 한번의 커밋으로 관리할 수 있기 때문에 ..
-
Hystrix와 Resilience4j "제공"과 "실행"의 차이프로그래밍/MSA 2024. 11. 20. 16:50
Hystrix : Fallback "제공" 실패 시 미리 정의된 Fallback 메서드를 Hystrix가 자동으로 호출개발자는 로직을 제공. 실행은 Hystrix가 관리 장점 : 간단하고, 구조적이며, 작성할 코드가 적음 Resilience4j : Fallback "실행" Fallback 로직을 명시적으로 작성하고, 실패 발생 시 직접 실행하도록 구현개발자가 Fallback 실행을 제어할 수 있어서 유연성이 높음 장점: 유연함단점: 코드작성량이 많음 "제공" 과 "실행" 의 차이제공 -> Fallback 로직을 미리 정의하면 실패 시 알아서 호출실행 -> Fallback 로직을 개발자가 직접 작성하고 제어 선택 기준Hystrix : 단순한 기본값 반환이 메인일 경우Resilience4j..