한강자리

19개 기록

기록

  1. 한강자리 시스템 개요 수집, API, 캐시, 위젯이 사용자의 첫 화면을 나눠 맡는 구조
  2. SwiftUI 앱과 WidgetKit이 같은 상태를 읽는 법 SwiftData와 App Group snapshot으로 앱 밖의 화면까지 같은 값을 이어간 구조
  3. FastAPI route를 얇게 둔 API 설계 HTTP route는 요청과 응답만 맡기고 화면 조립은 use case로 옮긴 방식
  4. Postgres와 Redis를 나눈 기준 이력과 감사 기록은 남기고, 다시 만들 수 있는 응답은 cache로 둔 판단
  5. API 밖에서 도는 worker와 CronJob 수집, 예측, 푸시, 기준 데이터 동기화를 사용자 요청과 다른 생명주기로 처리했다
  6. 데이터 없음과 수집 실패를 구분하는 파서 공식 출처 등급, schema drift, ingestion run으로 빈 화면의 이유를 남겼다
  7. 예측값을 현재값처럼 말하지 않는 법 forecast worker, confidence, backtest로 도착 전 판단값의 불확실성을 표시했다
  8. 푸시 알림을 보내기 전에 줄이는 구조 구독 설정, 조용한 시간, 최신성, 감사 기록으로 발송 후보를 걸렀다
  9. 배포를 기억이 아니라 기록으로 남기는 법 테스트, 이미지, GitOps 상태, migration 순서를 반복 가능한 릴리즈 경로로 맞췄다
  10. 오래된 데이터가 보일 때 확인할 순서 엣지, API, worker, cache, DB를 나눠 지연 원인을 좁힌 기준
  11. WidgetKit을 위한 snapshot 저장 구조 앱 밖에서 실행되는 위젯이 마지막 표시값과 갱신 상태를 안전하게 읽게 했다
  12. home-summary API로 첫 화면을 묶기 주차, 나들이, 예측, 출처 상태를 한 응답에 담아 앱과 위젯의 첫 값을 맞췄다
  13. source catalog와 ingestion run 수집 계획과 실행 결과를 나눠 출처별 최신성과 실패를 설명했다
  14. Redis hot cache와 stale fallback 빠른 응답과 마지막 성공값을 분리해 오래된 값을 최신처럼 보이지 않게 했다
  15. 주차 예측에 confidence를 붙인 이유 p10, p50, p90, risk, backtest로 예측을 하나의 정답처럼 보이지 않게 했다
  16. 푸시 outbox와 suppression audit 보낸 알림과 보내지 않은 알림의 이유를 같은 기록으로 남겼다
  17. 공공데이터 번역 cache와 원문 보존 UI 문구, 검수 번역, 기계 번역, 한국어 fallback을 분리했다
  18. 위치 좌표를 서버로 보내지 않는 telemetry 로그인 없는 앱에서 작동 상태만 보고, 수집하지 않을 데이터를 먼저 정했다
  19. 미니PC 서버를 실제 서비스처럼 운영하기 사용자 요청 경로, GitOps 상태, 관측, 백업을 나눠 다룬 회고