[허수아비] Windows에서 작성한 쉘 스크립트가 Docker 컨테이너에서 죽는 이유 — CRLF 트러블슈팅
Windows에서 편집한 stream.sh의 CRLF 줄바꿈이 Docker 컨테이너 내부에서 오류를 일으키는 원인을 분석하고, 볼륨 마운트 환경에서도 동작하는 해결 방법을 정리합니다.
Windows에서 편집한 stream.sh의 CRLF 줄바꿈이 Docker 컨테이너 내부에서 오류를 일으키는 원인을 분석하고, 볼륨 마운트 환경에서도 동작하는 해결 방법을 정리합니다.

로컬, GitLab Runner, EC2 운영 환경별 .env 보안 관리 전략과, GitLab Variables File 타입을 활용해 .env를 이미지 없이 EC2에 자동 전달하는 방법을 정리합니다.

사용자 프로필 수정 기능을 구현하며 겪은 API 설계 고민을 공유합니다. 모든 정보를 한 번에 수정하는 단일 API 대신 닉네임, 비밀번호, 프로필 사진 엔드포인트를 분리한 이유와 S3 Presigned URL을 활용한 이미지 업로드 최적화 과정을 다룹니다.
Celery를 활용한 비동기 백엔드 구축 시 자주 혼동되는 태스크 실행 메서드(.delay() vs .apply_async() vs send_task())와 데코레이터(@celery_app.task vs @shared_task)의 차이점 및 동작 원리를 실무 관점에서 상세히 정리합니다.
로컬 환경에서는 정상 작동하던 파이썬 코드가 도커 컨테이너에서 ModuleNotFoundError를 발생시키는 근본 원인을 분석합니다. 파이썬의 모듈 탐색 방식(CWD)과 Dockerfile의 WORKDIR 설정 간의 물리적 결합도를 명확히 이해해 봅니다.

허수아비 프로젝트의 실시간 데이터 파이프라인을 구축하며 내린 기술적 의사결정 과정을 회고합니다. HDFS 멀티 노드와 메타 DB를 과감히 포기한 이유부터, Spark Streaming의 OOM 방어 전략, 그리고 프론트엔드 실시간 전송을 위한 Kafka-SSE 연동 구조까지 실무적인 고민을 담았습니다.

결제 시스템 도입으로 인해 변경된 둥지 서비스의 회원 탈퇴 정책을 소개합니다. Hard Delete에서 Soft Delete로의 전환 이유, 데이터 마스킹 전략, 그리고 Google, Kakao, Naver 등 각 소셜 프로바이더별 맞춤형 연동 해제(Unlink) 플로우를 상세히 공유합니다.

Ubuntu 24.04 환경에서 기본 패키지(docker.io) 대신 공식 Docker CE를 설치해야 하는 이유와 방법, 그리고 Lint/Test를 통해 빌드 전 에러를 차단하는 Fast-Fail CI 파이프라인 설계 과정을 공유합니다.

허수아비 프로젝트의 핵심인 이기종 데이터 처리 파이프라인을 소개합니다. 무거운 CCTV 비정형 데이터의 동기화 처리와 레이더 시계열 데이터의 Spark Streaming 최적화 흐름을 단계별로 정리합니다.

네이버 소셜 로그인을 OIDC로 구현하려다 실패하고, OAuth 2.0 방식으로 전환한 과정과 API 테스트 기록을 정리합니다.