2026 W11 주간회고
- aliases
- No value
- tags
- retrospect
- description
- No value
- links
- No value
- status
- No value
- project
- false
- area
- false
- resource
- false
- title
- 2026 W11 주간회고
- created
- 2026-03-13T10:21:10
- updated
- 2026-03-16T09:15:54
2026-03-09 weekly report recap
[2026-03-10 주간 보고]
- 백엔드 리팩토링 리스트 w/ 태식님 / UNTIL 3/13
- 예약, 가예약의 구체적인 종류
- switch-bot 관련 코드 삭제 ✅
- DI 재정립 ✅
- Academy Query, Ticket Query, Court Query + Assembler 도입 ❌
- 바로빌 API 연동 ❌
- 가상결제 포함 E2E 테스트 환경 구축 ❌
- AWS CloudWatch 로깅 시스템 구축 ✅
- 광고 노출시간이 9시간씩 밀리는 문제 ❌
- Swagger에 에러 코드 추가 ❌
- 로깅이 안되는 일부 API에 AuthPublicGuard 추가 ❌
- Cronjob 로컬 실행 제한 ❌
- Event Versioining in Event Sourcing Pattern ❌
AWS CloudWatch 로깅 시스템 구축 ✅
아래 두개의 CloudWatch 대시보드 구축 (public)
[racketime-api-dev2]
[racketime-api-prod]
금일 중으로 다음 작업 진행예정
- ALB Request Volume 메트릭 대시보드 추가
- 현재 API 트래픽 수준 파악
- 트래픽 급증 감지
- Alarm 생성
- CPU 알람
- Memory 알람
- SNS → Lambda → Synology webhook
- API Latency 메트릭 추가
- API Error Count 메트릭 추가
- API Error Rate 메트릭 생성 (Metric Math)
PaymentSessionPriceView 프로젝션 도입 및 Plan 정보 조회 구조 개선
기존에는 GetMyPriceForPaymentSession 유스케이스에서 여러 도메인 데이터를 조합해야 했습니다.
이를 해결하기 위해 Materialized View 기반 Projection을 도입했습니다.
새로운 View
payment_session_price_view
주요 데이터
- totalAmount
- paidAmount
- expiresAt
- payers
- splitPolicy
- state
- initiator 정보
- ➕ planId / planType / planName
- academyId
효과
- Query 성능 개선
- PaymentSession 조회 로직 단순화
- Event Sourcing 아키텍처와 일관성 확보
Plan 조회 의존성 개선
PaymentSession에서 Plan 정보를 조회할 때 Write Model (ticketPlan) 직접 접근을 제거했습니다.
대신 다음 구조로 변경되었습니다.
PaymentSession
↓
PlanQueryPort
↓
Plan Read Model
효과
-
Plan BC와 결합도 감소
-
Query/Command 모델 분리 강화
-
Projection 기반 아키텍처와 일관성 유지
W11 주간회고
이번 주 잘한 일
오랜 숙원사업 중 하나였던 Observability(관측가능성) 향상이 진행되었다.
이번 주 아쉬운 일
"PaymentSessionPriceView 프로젝션 도입" 태스크는 마감에 매우 임박했고, 운이 좋게도 단 한 번의 작업으로 구조 변경과 요구사항 수용이라는 큰 변경사항 (+1,330, -61 Line)이 의도한 대로 동작했다.
앞으로도 계속 운에 맞길 수는 없다. 예상치 못한 버그나 구조적인 문제가 터질 수 있으며, 이는 곧바로 배포 딜레이로 이어질 수 있기 때문이다.
인지부하를 일으키는 아직 해결되지 않은 과제들
Project (이번 달 안에 끝내야 하는 것)
- switch-bot 삭제한 버전 prod로 카나리 배포 | DEPENDS ON 2026-01-29 aws cloud watch + log setting
- REFUND_TICKET_ACADEMY 알림톡 발송 컨텐츠 중 예약시간 에 해당하는 reservationText가 항상 예약 정보 없음으로 fallback하는 문제
- "업주유저는 기본적으로 모든 리크루팅 생성 권한을 가지고 있어야 합니다" 요구사항 구체화 및 구현
Area (지속 운영 체계)
- "반독립형 플랫폼" 도메인 용어집 ⊃
- 지금 안쓰는 람다를 동시에 정리하기 위해 Trigger를 먼저 떼고있다. tag를 붙여 expireAt을 지정하고 이미 지나버린 람다는 과감히 삭제하라
- plan 최신화 작업의 부작용으로 아카데미, 티켓 조회성능이 낮아졌다. 레거시 아카데미, 티켓 조회 로직에서 Plan Query가 끼어들면서 전반적인 조회 횟수가 증가했기 때문인데, N+1 문제를 막을 수 있다는 장점을 극대화하기 위해선 결국 Academy Query, Ticket Query의 필요성, 그리고 이들을 한데 묶어주는 Assembler의 존재가 필요해지는 타이밍이다. plan-modernization.postmortem
Resource (리서치 필요 혹은 위임)
W12 목표
WHY
시니어 엔지니어가 가져야 하는 역량 중 Velocity에 집중하는 한 주가 된다.
HOW
새롭게 도입하는 스프린트 문화를 서비스팀과 함께 주도한다.
WHAT
- "함께 자라기" - 김창준 저서를 다시 펼쳐 애자일 프랙티스에 대해 논의하고 실험으로 옮긴다.
- 유스케이스 문서와 새로 추가된 IA / Wireframe 을 더 이상 구체화 하지 않고 개인의 자유에 맞긴다. (e.g. 데이터계약 등)
KEEP & FIRM
- 유스케이스 단위 배포 및 발표를 더 강화한다.
- 정책/선택/값 과 같이 극도로 구체적인 결정이 필요한 부분들을 POLICY 문서로 따로 빼 놓는다. 코드엔 이 선택을 바로 활용하지 않고 다양한 전략을 활용하여 추상화한다.
THROW & RENOVATE
- 유스케이스 문서를 더 상세하게 쓰지 말자. 추상적인 내용을 바탕으로 구현 스펙은 쓰되, 차라리 구현체 목록을 놓고 이야기 하는것이 더 효과적이다.
RISK
- 아직 구성원 모두 애자일, 스프린트 문화에 대한 이해도가 부족하다. 방법론 특유의 매몰됨과 무지 사이에서 균형을 잘 잡아야 할 것이다.