일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- 브루트포스
- 부분수열의합
- 스프링
- 깊이우선탐색
- 백트래킹
- greedy
- 알고리즘
- Spring
- DynamicProgramming
- 동적계획법
- DP
- 그리디
- boj
- HashMap
- Algorithm
- 너비우선탐색
- 백준
- programmers
- 이분탐색
- 해시맵
- 해시
- 프로그래머스
- Backtracking
- 네트워크
- DFS
- ReactiveProgramming
- 구현
- Network
- dynamic programming
- BFS
- Today
- Total
목록async (2)
옌의 로그
(ApplicationEventPublisher에 대한 고찰 글에서 다루지 않았던, Async, Transactional 관련 AOP 얘기를 더 해보자 한다,,) 운영 서비스에서 핵심 비즈니스 로직 이후에 알림, 로그 저장, 외부 연동 같은 부가 작업들을 처리해야 하는 경우가 많은데, 이런 부가 작업은 서비스 응답 속도나 안정성에 영향을 주지 않도록 비동기 + 트랜잭션 분리로 처리하는 것이 이상적이다. 그렇다면 어떻게 사용하는게 맞는걸까 ? AOP(Aspect-Oriented Programming)란?AOP는 관점 지향 프로그래밍이라고 하며, 로깅, 보안, 트랜잭션 같은 공통 기능(횡단 관심사)을 핵심 비즈니스 로직과 분리해서 관리할 수 있도록 도와주는 개념이다. (예시: 실행시간 측정 코드)@Aro..
FCM 푸시 모듈 작업을 계기로 마주친 이벤트 기반 설계 이야기 1. 사용하게 된 배경최근 FCM을 활용한 푸시 알림 모듈을 구현하게 되었다.초기에는 단순히 서비스 로직 안에서 푸시 메시지를 생성하고 전송하는 sendPushMessage() 메서드를 직접 호출하는 방식으로 구현했는데, 이 방식에는 치명적인.. 구조적 문제가 있었다.푸시 메시지를 생성하고 저장하는 로직이 서비스의 트랜잭션 흐름에 함께 묶여서, 이로 인해 메세지 생성 트랜잭션이 롤백되면 메인 트랜잭션도 함께 롤백되는 상황이 발생하였다.(push는 로그 데이터 같이, 생성 실패하여 발송이 안되더라도 크게 문제없는 데이터인데 이로 인해 메인로직이 처리가 안되는 건 문제가 있는 상황이다) 물론 트랜잭션 전파 속성을 REQUIRES_NEW로 설정하..