bbgg · 빵빵곡곡
"전국 방방곡곡, 빵빵곡곡" — 전국 빵집을 발견하고, 빵지순례 코스를 계획·실행하고, 리뷰와 방문 기록을 남기는 지도 기반 빵집 탐방 서비스입니다. 기획 단계에 참여해 "발견 → 계획 → 함께 다녀오기 → 기록"의 사용자 여정과 MVP 범위를 정리했고, 개인 로컬 서버에 Docker Compose·Traefik·HTTPS 실행 환경과 GitHub Actions·Docker Hub·Infisical 기반 CI/CD를 직접 구성했습니다.
{ } API 규격서 보기 ↗Role & Scope
지도 기반 빵집 탐방 서비스의 기획에 참여하고, 배포 인프라와 CI/CD를 직접 구성했습니다.
- 기간
- 2026.03 ~ 디자인·프론트 대기
- 역할
- 서비스 기획 참여 · 배포 인프라 · CI/CD
- 형태
- 팀 사이드 프로젝트 · 개인 로컬 서버 운영
- 기술 스택
- Java 21 · Spring Boot 3.5 · jOOQ · MySQL 8 · Docker Compose · Traefik · ZeroSSL · GitHub Actions · Infisical
- "발견 → 계획 → 함께 다녀오기 → 기록" 사용자 여정과 MVP 기능 범위 정리 참여
- 백엔드 관점에서 도메인 경계와 API 흐름 정리
- Docker Compose 기반 개인 로컬 서버 실행·배포 구조 구성
- Traefik 도메인 라우팅 및 ZeroSSL 기반 HTTPS 자동 인증서 발급 구성
- main 브랜치 push 시 실행되는 GitHub Actions CI/CD 파이프라인 구성
- 자체 배포 Infisical에서 민감정보를 내려받아 빌드·배포에 반영하는 흐름 구성
- 공공 제과점 데이터·장소 API·소셜 로그인·FCM 등 외부 연동 포인트 정리
Architecture
main push부터 GitHub Actions · Docker Hub · 개인 로컬 서버 · Docker Compose · Traefik을 거쳐 API가 서빙되기까지의 배포 파이프라인을 한 줄로 정리했습니다.
main push → Actions → Docker Hub · 서버 → Compose → Traefik → API · 도메인
flowchart LR
Push["main push"] --> Actions["GitHub Actions<br/>CI/CD"]
Actions --> DockerHub["Docker Hub<br/>Image Registry"]
Actions --> Server[개인 로컬 서버]
DockerHub -->|이미지 pull| Compose["Docker Compose<br/>pull · restart"]
Server --> Compose
Compose --> Traefik["Traefik<br/>도메인 라우팅 · HTTPS"]
Traefik --> API["Spring Boot API<br/>핵심 도메인"]
What I Did · 핵심 작업
아이디어 기획에 그치지 않고, 도메인·API 범위 구체화부터 배포·운영 자동화 구조까지 직접 처리한 작업들입니다.
-
프로젝트 기획 참여 및 서비스 방향 정리
단순 빵집 목록 앱이 아니라, 사용자가 빵집을 발견하고 코스를 계획한 뒤 실제 방문하고 기록을 남기는 전체 흐름을 기준으로 서비스 방향을 정리했습니다.
개인 활동(찜·방문·리뷰)과 그룹 활동(순례 코스·멤버 초대·체크인)을 분리해 사용자 경험과 MVP 기능 범위를 구체화했습니다.
-
백엔드 도메인과 API 기능 범위 구체화
bakery · user · auth · wishlist · visit · review · rating · pilgrimage · report · notification등 주요 도메인을 나누고 각 도메인의 책임을 정리했습니다.빵집 검색·상세, 리뷰·별점, 찜, 방문 기록, 순례 생성, 코스 순서 변경, 초대 응답, 체크인, 제보 승인·반려 등을 API 단위로 풀어냈습니다.
-
Docker Compose 기반 개인 로컬 서버 배포 구조 구성
애플리케이션과 인프라 구성요소를 Docker Compose로 실행할 수 있도록 정리했습니다.
개인 로컬 서버에서 컨테이너 단위로 서비스를 운영하고, 배포 시 최신 이미지를 pull한 뒤 compose로 API 컨테이너를 재실행하는 구조를 마련했습니다.
-
Traefik 도메인 라우팅 및 ZeroSSL HTTPS 적용
Traefik을 서버에 고정된 reverse proxy / edge router로 두고, 외부 요청을 도메인 기준으로 백엔드에 라우팅하도록 구성했습니다.
Traefik과 ZeroSSL을 연계해 HTTPS 인증서를 자동 발급받도록 했고, CI/CD는 Traefik 설정을 매번 건드리지 않고 API 컨테이너만 재배포하도록 분리했습니다.
-
GitHub Actions + Docker Hub + Infisical 기반 CI/CD 구축
main 브랜치 push 시 GitHub Actions workflow가 실행되도록 구성했습니다. 자체 배포한 Infisical에서 민감정보를 내려받고, GitHub Actions Secrets에는 서버·Docker Hub 접속정보를 저장했습니다.
Actions 안에서 이미지를 빌드해 Docker Hub에 push하고, 이후 서버에 SSH 접속해 민감정보를 복사한 뒤 compose로 최신 이미지를 pull·재실행하도록 했습니다.
-
외부 데이터·서비스 연동을 고려한 기획
공공 제과점 데이터를 기본 빵집 데이터로 활용하고, Naver Local Search / Google Places API로 상세 정보를 보강하는 구조를 고려했습니다.
Kakao·Google 소셜 로그인, JWT access/refresh token, FCM 리마인더 알림처럼 실제 운영에 필요한 인증·알림 흐름을 기획 범위에 포함했습니다.
Impact · 성과
면접에서 강조할 핵심 어필 포인트입니다.
- 기획 참여를 통해 사용자 경험을 백엔드 도메인·API·데이터 흐름으로 변환한 경험을 보여줍니다.
- 지도 기반 탐색, 소셜 로그인, 리뷰·별점, 그룹 코스 계획, 체크인, 알림, 관리자 제보 처리까지 이어지는 복합 도메인을 구조화한 사례입니다.
- Docker Compose와 Traefik으로 개인 로컬 서버에 도메인 라우팅·HTTPS까지 포함한 배포 환경을 직접 구성한 인프라 경험을 보여줍니다.
- GitHub Actions·Docker Hub·자체 배포 Infisical·Secrets를 연계해 main push부터 이미지 빌드·푸시, 서버 민감정보 반영, compose 재실행까지 이어지는 CI/CD 흐름을 만들었습니다.
- 단순 아이디어 기획이나 CRUD 구현이 아니라, MVP 범위와 배포·운영 자동화 구조를 함께 고려한 프로젝트로 설명할 수 있습니다.