개요회사에 합류하여 곧장 어드민 페이지와 모니터링 시스템 구축 업무를 맡게 되었다. 서비스가 이제 막 출시된 상태에서 운영을 위해서는 두 시스템 모두 중요하며, 특별히 모니터링 시스템을 통해 서버가 여러가지 방면으로 이상은 없는지 확인할 수 있고, 큰 일이 발생하기 전 예방할 수 있다. 이번 글에서는 서버 메트릭 모니터링 시스템을 구축하는 과정을 공유해보려 한다. 메트릭이란?메트릭이란 무언가를 측정하기 위한 기준이나 지표를 말한다. 그렇다면 소프트웨어에서 메트릭은 상태를 나타내는 수치를 말하며, 예로 CPU 사용률이나 서버 응답 평균 시간, 에러 발생 횟수 등이 있을 것이다.메트릭을 실시간으로 수집함으로써, 서버의 상태를 체크하고 장애 시 대응 혹은 예방할 수 있을 것이다. 목표현재 서버는 이중화되어..
개요Spring에서는 @Scheduled 어노테이션을 통해 간편하게 스케쥴러 기능을 구현할 수 있다. 주기적으로 특정 로직을 수행하거나, 특정 시간에 작업을 예약해서 기능을 실행시킬 수 있다. 정말 편리한 기능이지만, 여러가지 부딪힌 이슈들이 있기에 공유해보려 한다. 설정설정 클래스에 @EnableScheduling 어노테이션을 사용하여, @Scheduled 어노테이션을 사용할 수 있다.@Configuration// 스케쥴링 기능 활성화@EnableSchedulingpublic class SchedulerConfig { } @Scheduled을 통한 스케쥴링 작업 실행일정 주기로 작업을 실행하고 싶다면 @Scheduled 어노테이션에 fixedDelay 옵션을 통해 주기를 입력해주면 된다.@Com..
개요서비스가 커질수록 하나의 비즈니스 동작의 여러 부수 효과를 동반하게 된다.예를 들어 DDD로 설계된 어플리케이션에서 회원가입을 하면 환영 이메일 발송 및 쿠폰 지급 등 회원 관련 서비스에서 다양한 도메인이 경계를 넘나들게 되어 결합성이 높아지게 된다. Spring Event는 결합성을 낮추고 복잡성을 해결하기에 가장 간단하면서도 효율적인 방법 중 하나이다. Spring Event 구조와 동작Spring Event는 애플리케이션 내부의 PUB/SUB 패턴으로 동작한다. 이벤트 발행을 통해 도메인의 상태의 변경을 알리고, 해당 이벤트에 대한 구독자가 이벤트에 반응하는 구조이다. Spring Event의 구조는 이벤트 객체, Publisher, Listener 세 가지로 구성되어 있다.이벤트 객체는 도메..