이승하

Design Decisions

각 결정을 상황 → 선택 → 이유·결과 순서로 기록했습니다. 되돌린 결정은 왜 되돌렸는지도 적었습니다. 포트폴리오의 프로젝트에서 링크로 연결되며, 공개용으로 정제한 요약입니다.

상태: ✅ 유효 · ↩️ 롤백 · 🔁 여러 번 바뀜

시기별 목차

시기 결정
2023 Q4 파사드 단 입력 검사
2024 Q1 확인 대신 선점 · 검증은 목록 조회로 · dev 선행 배포
2024 Q2~Q3 레이어·컨슈머 정리 · 북마크 멱등성 · proto 모듈화
2024 Q4 유니크 키 승격 · 비정상 이벤트는 DLQ · 카운트는 이벤트로
2025 Q1~Q2 무한 스크롤 · 동시 적재 정합성 · 서비스 밖으로 적재
2025 Q3 벤더 응답 분기 · Lua 카운터 · 통합 알림 · 무효화 대신 TTL
2025 Q4 네이밍 교훈 · 롤백 토픽 → 결과 토픽
2026 Q1 정책 전용 서비스 · 서비스 신설은 배포 세트까지 · jitter 와 timer
2026 Q2~Q3 정책은 enum 으로 · 롤백에서 배운 것 · 잠금은 컬럼으로
2026 Q4 수신자 스트리밍

파사드 단에서 입력을 검사한다 ✅

2023 Q4 · 온체인 동기화

확인 대신 선점한다 ✅

2024 Q1 · 캐릭터 민트 닉네임

검증은 건마다가 아니라 목록 조회로 ✅

2024 Q1

test/qa 승격 전에 dev 에 먼저 배포한다 ✅

2024 Q1 · Helm 운영

레이어를 나누고 컨슈머를 일반화한다 ✅

2024 Q2 · 트랜잭션 이력

북마크는 멱등이 기본 ✅

2024 Q3

proto 저장소는 도메인별 모듈로 ✅

2024 Q3

트랜잭션 해시를 유니크 키로 ✅

2024 Q4

비정상 이벤트는 DB 가 아니라 DLQ ✅

2024 Q4

카운트는 요청 경로가 아니라 이벤트로 ✅

2024 Q4 ~ 2025 Q1

페이지네이션은 커서로 🔁

2024 Q2 → 2025 Q1

동시 적재 정합성 — 이벤트 종류별 방어 ✅

2025 Q2~Q3 · 크로스체인 전송

서비스는 데이터 파이프라인에 직접 쓰지 않는다 ✅

2025 Q2 → 2026 Q1

벤더 응답은 200+outcome 과 에러로 분기 ✅

2025 Q3 · 신용카드 인증

일일 횟수 카운터는 Lua 로 🔁

2025 Q3

회고. 한도를 넘었는지 확인하는 조회는 Lua 밖에서 먼저 했고 증가는 따로 했습니다. 동시 요청 두 개가 같은 값을 읽으면 한도를 넘길 수 있어서, 확인·증가·만료를 모두 Lua 한 번에 묶어야 완전합니다.

통합 알림 — 3가지 결정 ✅

2025 Q3~Q4

  1. “모든 사용자에게 알림” 기능 제거 — 전체 사용자에게 한꺼번에 보내는 것은 알림 서비스가 감당하지 못합니다. 기획과 합의해 없앴습니다.
  2. URL·제목·본문을 백엔드에서 생성 — 프론트마다 따로 조립하던 중복을 없앴습니다. 알림 종류별 데이터 구조 확장과 URL 생성을 맡았습니다.
  3. JWT 검증을 알림 서비스가 직접 처리 — SSE 연결을 맺을 때마다 계정 서비스를 호출하던 비용과 의존을 없앴습니다.

캐시 무효화 대신 짧은 TTL ✅

2025 Q3 · 거래소 BFF

컬럼 이름에 용도를 넣지 않는다 🔁

2025 Q4 ~ 2026 Q2

롤백 토픽 대신 결과 토픽 ✅

2025 Q4 · 스테이블 코인 선차감

정책 전용 서비스로 분리 ✅

2026 Q1

서비스 신설은 배포 설정까지 한 세트 ✅

2026 Q1 · api-sentinel

jitter 와 timer — 정책 갱신을 흩뿌리는 방법 ✅

2026 Q1

정책은 코드 분기가 아니라 enum/설정으로 ✅

2026 Q2~Q3

롤백에서 배운 것 ↩️

2026 Q3 · 출금 지연 피처

잠금은 Redis 가 아니라 컬럼으로 ✅

2026 Q3 · 이메일 변경 후 보안 설정 잠금

대량 수신자는 스트리밍으로 나눠 받는다 ✅

2026 Q4 · 백오피스 알림