Posts

기술 기록

실제 회사 코드를 공개하지 않고, 문제와 설계 판단을 일반화해 정리한 백엔드 엔지니어링 노트입니다.

문제별 기술 기록

15개 글

SSO 통합 로그인에서 IdP, authorization code, BFF를 이해하기

통합 로그인 설계에서 IdP, authorization code, PKCE, BFF, sender-constrained token이 각각 어떤 문제를 해결하는지 정리한 글입니다.

  • SSO
  • OIDC
  • OAuth2
  • PKCE
  • BFF
  • Authentication

승인 전 운영 데이터를 보호하는 이벤트 검수 설계

입점업체 이벤트 생성/수정 요청을 실제 Event와 분리하고, JSONB snapshot과 approvalGroupId로 승인 전 운영 데이터 오염을 막은 설계 기록입니다.

  • Domain Modeling
  • Approval
  • JSONB
  • Spring

init-db에서 Flyway와 ECS one-off migration으로 넘어간 기록

운영 직전 init-db 기반 초기화 흐름을 Flyway baseline, reference data migration, ECS one-off task, 병원 온보딩 API로 나누며 겪은 문제와 해결을 정리한 기록입니다.

  • Flyway
  • PostgreSQL
  • ECS
  • Migration

가격 재계산 실패가 이벤트 저장을 막지 않게 분리한 설계

이벤트 저장과 가격 재계산을 같은 트랜잭션에 묶지 않고 Outbox, after-commit listener, SQS 재처리 경로로 장애를 격리한 설계 기록입니다.

  • Outbox
  • SQS
  • Reliability
  • Spring

Flyway 도입과 dev ECS 전환을 같이 리허설한 기록

init-db를 Flyway baseline으로 바꾸는 과정에서 리뷰로 발견한 문제, 기존 RDS adoption, Terraform/RDS 함정, dev ECS 전환 리허설까지 이어진 실제 작업 로그입니다.

  • Flyway
  • PostgreSQL
  • AWS
  • ECS
  • RDS
  • Terraform

단가가 바뀌어도 정산 비용 근거를 보존하는 설계

거래처 단가가 변경되어도 과거 확정 비용의 산출 근거가 흔들리지 않도록 단가 버전과 비용확정 snapshot을 분리한 설계 기록입니다.

  • Settlement
  • Ledger
  • JPA
  • Accounting

이벤트 상품을 템플릿 중심으로 모델링한 이유

event_template과 event를 분리해 상품 정체성과 운영 조건을 나누고, 할인 조건이 늘어날 때 같은 상품이 중복 노출되지 않도록 고민했던 설계 기록입니다.

  • Domain Modeling
  • Product Policy
  • PostgreSQL
  • Migration

Terraform state에 DB password를 남기지 않는 secret 운영 경계

Terraform은 foundation/data/app 경계를 만들고, 실제 DB user password는 bootstrap과 Secrets Manager에서 다루도록 분리한 보안 설계 기록입니다.

  • Terraform
  • AWS
  • KMS
  • Security

기존 staging DB를 버리지 않고 Flyway에 편입하는 방법

이미 병원별 운영 데이터가 쌓인 staging DB를 재생성하지 않고 Flyway baseline version 2로 편입하기 위해 확인해야 할 기준과 보정 절차를 정리한 기록입니다.

  • Flyway
  • PostgreSQL
  • Migration
  • Operations

ECS Fargate에 capacity provider와 오토스케일링을 붙인 기록

desired_count 1로 고정되어 있던 정산 서비스 dev/stag ECS를 FARGATE_SPOT, base capacity, CPU 타깃 트래킹, stopTimeout까지 포함해 재설계한 기록입니다.

  • ECS
  • Fargate
  • Autoscaling
  • Terraform

ECR 라이프사이클 정책 때문에 stag ECS가 내려간 장애 복구기

ECS service 재생성 과정에서 ECR에 남아 있지 않은 digest를 pull하려다 stag 태스크가 모두 뜨지 못한 장애와, 커밋 역추적부터 재빌드 복구까지의 과정을 정리했습니다.

  • ECR
  • ECS
  • Incident
  • Docker

CloudWatch 알람과 AWS Chatbot으로 ECS 장애를 Slack에 연결하기

ECS 배포 실패, 태스크 배치 실패, ALB healthy target 소실, RDS 자원 고갈까지 CloudWatch와 EventBridge 알람을 구성하고 AWS Chatbot으로 Slack에 연결한 기록입니다.

  • CloudWatch
  • EventBridge
  • AWS Chatbot
  • Slack

ECR을 Terraform에 편입하고 배포 추적성을 복구한 기록

수동 관리되던 ECR repository를 Terraform import block으로 편입하고, immutable tag, scan-on-push, prevent_destroy, git-sha 태그, 배포 전 digest 검증까지 정리한 기록입니다.

  • ECR
  • Terraform
  • Deployment
  • Traceability

ALB access log로 장애 시간대 요청을 남기는 구조

정산 서비스에서 장애 중 실제 유입 요청을 확인하기 위해 ALB access log를 S3에 적재하고, 권한, 암호화, 보존 기간, 검증 방법을 정리한 기록입니다.

  • ALB
  • S3
  • Access Log
  • Terraform

GitHub Actions OIDC로 ECS 배포 파이프라인을 만든 기록

로컬 수동 배포를 GitHub Actions, AWS OIDC, ECR build-push, 수동 deploy dispatch, SSM deployed-image 기록, dev에서 stag 승격 규약으로 바꾼 기록입니다.

  • GitHub Actions
  • OIDC
  • ECS
  • SSM