정동우가 코드를 연습하고 판단을 기록하기 위해 남겨둔 개인 메모 공간입니다.
오늘의 연습 컨베이어
Composition Root를 둔 의존성 주입은 객체가 자기 의존성을 직접 만들지 않고, 애플리케이션 시작 지점에서 의존성 그래프를 조립한 뒤 필요한 객체에 전달하는 패턴이다. 서비스는 "무엇이 필요한지"를 생성자나 함수 인자로 드러내고, "무엇을 실제로 붙일지"는 바깥 조립 계층이 결정한다.
멱등성 키(Idempotency Key)는 중복 요청 방지 장치가 아니라, 불확실한 외부 I/O를 가진 POST API의 상태 전이 경계 설계다.
집계는 필터링(filter), 그룹화(group), 합산(sum), 정렬(sort), 상위 N개 선택(take)의 다섯 단계로 분해해 각 단계를 드러낸다. 누적은 맵으로, 상위 선택은 정렬 뒤 자르기로 분리한다. 금액은 부동소수가 아니라 정수 minor unit 또는 decimal 계열로 다루고, 그룹 키(group key)는 정규화한 뒤 묶는다.
Code Card
파일, 소켓, DB 커넥션, 락, 임시 디렉터리처럼 "열었으면 반드시 닫아야 하는 것"은 일반 값과 다르게 다뤄야 한다. 리소스를 얻은 스코프가 리소스를 반납해야 한다.
SoA(Structure of Arrays)는 객체 하나에 모든 필드를 묶는 대신, 같은 종류의 필드를 각각의 연속 배열로 분리하는 데이터 배치 방식이다. AoS(Array of Structures)가 Particle[]처럼 “입자 객체들의 배열”을 만든다면, SoA는 x[], y[], vx[], vy[]처럼 “속성별 배열 묶음”을 만든다.
검증, 권한, 의존성 실패가 섞인 함수에서 가장 먼저 적용할 수 있는 구조다. 실패 조건을 먼저 닫고, 함수 본문은 정상 흐름으로 남긴다. 실패는 throw가 아니라 Result 데이터로 반환한다.