Notice
Recent Posts
Recent Comments
반응형
관리 메뉴

HM소프트

Docker + CI/CD 배포와 메일 알림 구현 — 교육 플랫폼 (3) 본문

외주 개발일지

Docker + CI/CD 배포와 메일 알림 구현 — 교육 플랫폼 (3)

HM소프트 2026. 6. 13. 05:43
반응형

검사·빌드·통합 테스트·배포 네 관문으로 파이프라인을 나누고, 키 파일 없이 단기 토큰으로 레지스트리에 인증한다. 해시·latest 두 태그로 롤백을, 다단계 빌드로 가벼운 이미지를, 진입 스크립트의 DB 대기로 기동 경합을 잡는다. SMTP 메일은 백그라운드로 보내 응답 속도를 지킨다.

DockerCI/CD로 배포를 자동화하고 메일 알림을 붙인 과정을 정리한다.

 

3편: 배포·운영·알림

1편 상품·필터, 2편 인증에 이어 시리즈 마지막이다. 만든 커머스를 실제 서비스로 올리는 일 — Docker 컨테이너화, CI/CD 자동 배포, 클라우드 스토리지, 도메인/HTTPS, 그리고 메일 알림이다.

컨테이너화와 CI/CD

배포를 손으로 하면 매번 실수가 난다. Docker로 컨테이너화하고 GitHub Actions로 CI/CD 파이프라인을 구축했다. 코드를 푸시하면 빌드 → 이미지 생성 → 배포까지 자동으로 돈다.

# GitHub Actions — 푸시 시 빌드·배포 (개요)
on: { push: { branches: [main] } }
jobs:
  deploy:
    steps:
      - uses: actions/checkout@v4
      - run: docker build -t app:latest .
      - run: # 이미지 푸시 & 서버 배포

Docker 배포를 처음 적용하며 만난 이슈들(빌드 환경 차이, 경로 등)을 잡았다. 컨테이너로 묶으니 "내 PC에선 되는데 서버에선 안 됨" 문제가 사라졌다.

클라우드 스토리지(GCS)와 API 최적화

상품 파일·이미지는 서버 디스크가 아니라 클라우드 스토리지(GCS)에 두도록 했다. 서버는 가볍게 유지하고, 파일은 스토리지가 맡는다. 함께 API를 최적화해, GCS 전용 설정으로 정리했다.

도메인과 HTTPS

서비스를 실제 도메인에 연결하고 HTTPS를 적용했다. 커머스는 결제·로그인이 오가므로 HTTPS는 필수다. 도메인 연결과 인증서 적용으로 보안 연결을 확보했다.

메일 알림 — Gmail SMTP

커머스는 "주문했어요", "취소됐어요" 같은 알림이 필요하다. Gmail SMTP로 이메일 알림 시스템을 구현하고, 주문 취소·회원 탈퇴 같은 흐름에 UI와 알림을 붙였다.

import smtplib
from email.mime.text import MIMEText

def send_notification(to: str, subject: str, body: str):
    msg = MIMEText(body, "html")
    msg["Subject"], msg["To"] = subject, to
    with smtplib.SMTP_SSL("smtp.gmail.com", 465) as s:
        s.login(SMTP_USER, SMTP_APP_PASSWORD)   # 앱 비밀번호 사용
        s.send_message(msg)

Gmail SMTP는 일반 비밀번호가 아니라 앱 비밀번호를 써야 하고, 발송량 제한이 있다. 초기 단계 플랫폼엔 충분했고, 별도 메일 인프라 없이 빠르게 알림을 붙일 수 있었다.

플랫폼 기능 전면 확장

배포 기반을 갖춘 뒤, 운영에 필요한 기능을 한 번에 확장했다.

  • 배너/팝업: 프로모션·공지 노출
  • 문의·공지: 고객 소통
  • 이용권: 구매·사용 관리
  • 관리자 CRUD: 위 모든 걸 운영자가 관리

또한 관리자 페이지 반응형을 전면 적용하고, 모바일 터치 타깃 크기·회원가입 오버플로우 같은 모바일 UX와 PDF 미리보기·모바일 메뉴를 개선했다. 운영자도 사용자도 모바일에서 쓸 수 있어야 했다.

정리하며

  • Docker + GitHub Actions로 배포 자동화 — 푸시하면 배포까지.
  • GCS로 파일을 분리, 서버는 가볍게.
  • 도메인·HTTPS로 커머스 필수 보안 연결.
  • Gmail SMTP로 빠르게 메일 알림(앱 비밀번호·발송 제한 유의).
  • 배너/팝업·문의·이용권·관리자 CRUD + 반응형으로 운영 기능 완성.

시리즈를 마치며

세 편에 걸쳐 교육 자료 판매 플랫폼을 정리했다.

  • 1편: 상품·카테고리 도메인과 복합 필터
  • 2편: 소셜 로그인과 bcrypt 함정
  • 3편: Docker·CI/CD 배포와 메일 알림

커머스는 "상품을 보여주고 결제받는" 핵심 못지않게, 분류·인증·배포·알림 같은 기반을 갖춰야 비로소 굴러간다는 걸 보여준 프로젝트였다.

반응형