[둥지] FastAPI 테스트 환경 구축기: Mocking부터 Docker CI/CD 연동까지
FastAPI 백엔드의 로컬 테스트 환경을 Docker 기반으로 전환하고 GitHub Actions CI와 연동하며 겪은 트러블슈팅 과정을 회고합니다. 외부 API Mocking, 환경변수 주입 시점 문제, Docker 볼륨 충돌(Race Condition) 등 다양한 인프라 이슈의 해결 방법을 다룹니다.
FastAPI 백엔드의 로컬 테스트 환경을 Docker 기반으로 전환하고 GitHub Actions CI와 연동하며 겪은 트러블슈팅 과정을 회고합니다. 외부 API Mocking, 환경변수 주입 시점 문제, Docker 볼륨 충돌(Race Condition) 등 다양한 인프라 이슈의 해결 방법을 다룹니다.

Redis 파이프라인(transaction=True)을 활용한 상태 동기화부터, Celery 비동기 작업 실패 시 발생하는 상태 불일치를 해결하기 위한 보상 트랜잭션(Compensating Transaction)과 on_failure 훅 패턴을 공유합니다.
FastAPI 프로젝트에 GitHub Actions CI를 도입하며 겪은 환경 변수 주입 문제를 해결합니다. Pydantic의 엄격한 타입 검증(ValidationError)으로 인한 CI 빌드 실패 원인과, 더미 파일(.env.example) 및 GitHub Secrets를 활용한 해결 과정을 공유합니다.

AI 연산 및 스크래핑과 같이 오래 걸리는 작업을 비동기적으로 처리하기 위해 Celery와 Redis를 도입한 과정을 공유합니다. 트랜잭션 주체 분리, Polling 방식 채택, 그리고 Custom Task 패턴을 활용한 우아한 예외 처리까지 아키텍처 설계의 모든 것을 알아봅니다.
FastAPI 프로젝트에서 환경 변수를 관리할 때 전역 객체 임포트 방식이 유발하는 강한 결합과 테스트 오염 문제를 분석하고, 의존성 주입(DI) 및 @lru_cache를 활용해 유연한 아키텍처를 구축한 과정을 공유합니다.

FastAPI의 비동기 성능을 극대화하기 위한 asyncpg 및 SQLAlchemy 2.0 도입기를 공유합니다. 커넥션 풀을 활용한 세션 관리, 데이터 무결성을 위한 이중 방어(Defense in Depth) 패턴, 그리고 Alembic 마이그레이션 트러블슈팅 과정을 상세히 다룹니다.

FastAPI 애플리케이션의 뼈대인 main.py(CORS, Health Check) 초기화 과정과 Pydantic Settings를 활용한 타입 안전한 환경 변수(.env) 관리 및 분리 전략을 공유합니다.
둥지 프로젝트의 FastAPI 백엔드 폴더 구조 설계 과정을 공유합니다. 레이어드 아키텍처와 도메인 기반 아키텍처 사이의 고민, 도메인 비대화 해결 방안, 공통 모듈 및 환경 설정 파일의 분리 전략을 상세히 다룹니다.

LIVErary 프로젝트의 핵심인 '방(Room)' 도메인을 풀스택으로 개발하며 겪은 기술적 경험을 정리했습니다. JPA Bulk Update의 데이터 정합성 문제, React의 렌더링 최적화(Derived State), 그리고 DDD 기반의 엔티티 설계 과정을 상세히 회고합니다.
Docker 이미지를 경량화하기 위한 Multi-stage Build 전략과 Non-root User 설정, Docker Compose Override 패턴을 이용한 개발/운영 환경 분리 과정을 공유합니다. 또한 Makefile을 통한 명령어 관리와 Docker Secrets를 활용한 안전한 시크릿 관리법을 다룹니다.