spring 2

CQRS 패턴 Spring 적용하기

배경 웹서비스는 DB는 Master-Slave 구조로 설계하고, CRUD 중에서도 보통은 Read 하는 횟수가 많다. 운영하는 서비스의 리뉴얼 해보려고 준비 중인데, 특정시기에 Read가 압도적으로 많아서 slave db를 스케일 아웃이 필요할 때가 있다. 이런 니즈들을 만족시키기 위해서 CQRS 패턴을 적용하는 것이 좋을 것 같아 적용해보려고 한다. CQRS 패턴이란? Command and Query Responsibility Segregation의 약자로써, Command(insert, update, delete)와 Query(select)를 분리하는 것 분리함으로써 DB의 확장성과 성능의 이점을 얻을 수 있고, 사용자에게 조금 더 정합성 높은 데이터를 보여줄 수 있다. DTO를 분리해서 관리하기 때..

스프링 스케줄러 (Feat. 동적 스케줄링, 멀티 스케줄링, 다중화 WAS 처리)

배경 프로젝트에서 예약 기능을 추가하기 위해서 스케줄링을 공부하고 실제 적용했는데, 평범한 게시판 예약 기능이었다면, 스케줄러를 사용하지 않았을 것이다.. date 컬럼에 미래시간을 적어두었겠지.. 아무튼 예약 기능을 위해 시작한 일을 정리하고자 한다. 1. 스케줄링 우선 '정해진 시간에 특정 로직이 동작'할 수 있도록 스케줄러를 구현했다. Java 구현 부분 (클릭!) @Service public class ScheduleExecSampleServiceImpl implements ScheduleExecService { private final Logger LOGGER = LoggerFactory.getLogger(this.getClass()); @Scheduled(cron = "*/2 * * * * *..