모놀리식 아키텍처에서 이벤트 기반으로 비즈니스 로직의 원자성 확보하기 (1)
·
Project
이 포스팅에서는 프로젝트에서 기존 비즈니스 로직의 문제점을 확인하고, Spring Events를 활용해 비즈니스 로직을 원자적으로 처리하는 내용을 다룹니다. 제목에 "모놀리식 아키텍처"를 붙인 이유는 MVP 개발부터 채택한 모놀리식 아키텍처를 그대로 유지하면서 최소한의 변경으로 문제를 해결하는 과정을 강조하기 위함입니다.현재 서비스 규모가 작고, 이용자 수가 많지 않은 상황에서 오버 엔지니어링을 하지 않고 개선해 보겠습니다.문제의 발단: 클로바 스튜디오 서비스의 장애1월 13일 오후 9시 45분경 클로바 스튜디오에 장애가 발생했습니다.우리 서비스의 첫 MVP였던 달토의 답장 서비스는 클로바 스튜디오에 의존하고 있었는데, 팀에서는 10시 30분이 지나서야 장애 발생을 인지했습니다. 문제 발단은 클로바 스튜..
Spring Event Deep Dive
·
Spring
Spring EventSpring Framework에서 제공하는 이벤트(Event) 객체가 있습니다.이 객체는 `ApplicationContext`가 제공하는 기능의 일부인데요, Spring에 내장된 이벤트들을 이용해 특정 상황에서 원하는 동작을 수행하도록 개발할 수 있는 기능입니다.Spring Event 동작 원리동작 과정이벤트는 하나의 쓰레드에서 동작합니다. 즉, 동기적으로 동작합니다.한 쓰레드 내부에서 발행자가 이벤트를 발행(publish)하면 수신자가 이벤트를 수신(listen)하여 이벤트를 처리합니다.이벤트 발행자(Event Publisher)a. ApplicationEventPublisher 에서 이벤트를 발행한다.실제로 이벤트를 발행하는 코드를 작성할 땐 `ApplicationEventPub..