SpringBoot Master/Slave DB 세팅 2
·
Spring
지난번 포스팅에서는 Master/Slave DB를 사용하기 위해 어떻게 세팅을 하는지에 대해 다뤘다. 이러한 세팅을 적용하면서 궁금증이 생겼다. 세팅을 하기 위해 자료를 찾은 것과 그동안 공부했던 것들을 바탕으로 대충은 어떻게 동작하는지는 알게되었으나 더 자세히 알고 싶어졌다. 그래서 이번 글에서는 이 세팅이 어떻게 동작하는지 알아보기위해 코드를 훑어보는 시간을 가져보려고 한다. 개인 공부 용으로 남겨 놓는거라 복잡합니다. 핵심 부분은 LazyConnectionDataSourceProxy에 있으니 그 부분만 보시는 것을 추천합니다. 실행할 로직은 간단한 조회 API 입니다. @RestController public class AppApi { private final AppService appService..
SpringBoot Master/Slave DB 세팅
·
Spring
SpringBoot Master/Slave DB 세팅 기존에 DB 를 하나만 사용하던 스프링 부트(버전 2.7.12) 프로젝트가 있다. 이 어플리케이션의 DB 세팅은 아래와 같이 application.properties 에 하나의 DB만 세팅 되어 있다. spring.datasource.url=IP spring.datasource.driver-class-name=org.mariadb.jdbc.Driver spring.datasource.username=계정 spring.datasource.password=비밀번호 spring.datasource.hikari.pool-name=풀이름 기타등등 hikari connection pool 세팅 이렇게 세팅을 해주면 스프링에서 알아서 데이터 소스를 만들어주고 사용..
Docker MariaDB 실행
·
카테고리 없음
MariaDB CDC 프로그램을 개발하고 테스트 하기 위해 MariaDB 설치를 진행했습니다. 로컬에 설치하는 것 보다는 컨테이너를 활용하는게 나을 것 같아 도커에 MariaDB 컨테이너를 올렸습니다. Docker compose 를 통해 MariaDB 를 설치하고 외부에 만들어 놓은 Config 파일을 세팅해주는 간단한 절차만 확인해보려고 합니다. 아래와 같은 순서로 글을 작성하겠습니다. 도커는 알아서 잘 설치해주셨으리라 믿고 가겠습니다 ^_^ Docker-compose 작성 MariaDB Config 작성 실행 및 확인 추가 이슈 Docker-compose 작성 MariaDB 컨테이너를 올리기 위해서는 도커 이미지가 필요합니다. 이미지를 받기 위해선 아래와 같이 pull 명령어를 사용하시면 됩니다. d..
Transactional Outbox
·
카테고리 없음
Background 현재 사내 시스템 구조개선 진행중에 있습니다. 그중 아래와 같은 요구사항을 가진 시스템을 설계하게 되었습니다. - A 시스템 영역은 B 시스템 영역에 직접적인 의존성을 가지면 안됨 (ex: API 호출) - A Component 에서 실행한 로직이 성공하면 결과가 반드시 B Component 전파되어야 함 - A Component 에서 실행에 실패한 로직의 결과가 B Component 로 전파되면 안됨 - A Component 에서 발생한 로직의 결과는 B,C,D Component 로 전파가 될 수도 있음 간략하게 그림으로 표현해봤습니다. 시스템간 소통하는 방법은 다양한 방법이 존재합니다. 위와 같은 요구사항을 만족하기 위해 메시징 방법을 사용하기로 했고, 메시징 플랫폼 중 아파치 카..
좋은 테스트란
·
TDD,Test
예전부터 테스트를 작성하다보면 어떤 테스트가 좋은 테스트인지 궁금했습니다. 하지만 좋은 테스트에 대해 감히 내가 정의할 수는 없었습니다. '좋은' 이라는 단어가 상대적이어서 그럴수도 있고 단어 자체가 주는 부담감 또는 누구에게 좋은 테스트가 누구에겐 좋지 않을 수도 있는 케바케의 문제가 있을 수 있다고 생각해서 였습니다(케바케 보다는 상황에 따라서 라는 말을 더 선호합니다). 하지만 이 책에서는 좋은 테스트를 주제로 책을 시작하고 있습니다. 테스트를 왜 작성해야 하는지, 좋은 테스트란 무엇인지 쉽게 잘 설명해주어 이 글을 기반으로 정리용 글을 쓰기로 했습니다. 테스트의 가치란? 1. 테스트는 실수를 바로 잡아줍니다. 새로운 기능을 개발하면 작성한 코드가 기대했던 대로 동작하는지 확인을 해야 합니다. 그리..