| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 31 |
- retry
- 마케팅 #퍼플카우 #새스고딘 #혁신 #독서 #이북
- SaaS
- OOP
- blockingqueue
- 데이터유실방지
- redis
- 테스트코드
- 임베딩
- springboot
- redisstreams
- redissearch
- 메세지브로커
- 자연어캐싱
- jedis
- 메시지브로커
- 코사인
- aof
- 비동기처리
- 객체지향적사고
- 레디스
- 장애복구
- god object
- 배치처리
- DLT
- 레디스스트림
- Kafka
- 백엔드
- rdb
- 시맨틱캐싱
- Today
- Total
목록개발/대규모 (3)
pandaterry's 개발로그
운영 중 발생한 장애를 원인부터 끝까지 추적하려면, 신뢰할 수 있는 로그가 반드시 필요합니다. 특히 JPA를 사용하는 시스템에서는, 엔티티가 변경될 때마다 무엇이 바뀌었고, 누가 변경했으며, 언제 어떤 요청에서 발생했는지 그 이력을 상세히 남기는 일이 중요합니다. 많은 시스템에서는 Kafka나 Redis Stream, 또는 Change Data Capture 기반 구조를 활용합니다. 하지만 다음과 같은 환경에서는 그런 선택이 불가능합니다.외부망과 완전히 단절된 폐쇄망 환경 (군/금융기관 등)Kafka, Redis, ELK 등 인프라 설치 자체가 제한된 경우외부 브로커 없이도 로그 유실 없는 처리가 요구되는 상황실제로 제가 경험한 한 시스템은 배치 업로드 한 번에 수만 건 이상의 엔티티가 변경되는 구조였습..
사가 패턴 : 오케스트레이션여러 마이크로서비스에 걸친 분산 트랜잭션을 관리하기 위해 사용한다.일련의 로컬 트랜젝션으로 만들어서 비즈니스 프로세스를 구성하고, 각 단계별로 실패시 보상 트랜젝션을 통해 이전 상태로 롤백한다.사가 오케스트레이션 + 아웃박스 패턴Command는 즉시성때문에 아웃박스 XOrchestrator가 각 서비스에 명령(Command)를 보낼 때 아웃박스 패턴을 사용하지 않음. (바로 카프카로 전송. 그리고 아웃박스 패턴을 사용하려면 Command도 EventStore에 저장해야하는데, Relay하지도 않는 메시지를 굳이 이벤트 스토어에 저장하여 부하를 발생시킬 이유도 없음.)이벤트로 비동기 응답처리는 아웃박스 O각 서비스의 Response(성공/실패)도 아웃박스 패턴으로 발행타 마이크로..
용어 정리 : 이벤트 vs 커맨드이벤트(Event)이벤트는 단순히 이걸 했다! 정도의 이력을 기록하는 용도이다. 어떠한 작용을 강제하는 역할을 하지는 않는다. 그래서 단순히 작업에 따라 event store에 event를 저장만 한다.커맨드(Command)커맨드는 말그대로 요청을 의미한다. 외부(External) 비동기 요청 : 마이크로서비스 환경에서 타 서비스에 작업을 요청할 수도 있고, 통신을 할 때 전달하는 객체 형태의 단위라고 보면 좋다. 내부(Internal) 요청 : 마이크로서비스 형태가 아니더라도, 하나의 서비스에도 여러 애그리게이트가 존재할 수도 있는데, 트랜젝션의 범주가 분리되는 기준으로 말이다. 그래서 다른 애그리게이트의 서비스에도 요청을 할 때 내부적으로 command를 사용할 수 있..