9월14일(월)

Win Cha·2026년 9월 14일

배표 (Deploy)

  1. 배포(Deploy)의 정의와 어원
    어원(Etymology): '배포'를 뜻하는 영단어 Deploy는 라틴어 'displicare'(펼치다, 전개하다)에서 유래되어, 원래 군사학에서 병력과 장비를 전장에 배치하는 용어로 사용되었습니다 1, 2. 소프트웨어공학에서는 개발자의 로컬 PC(주방)에서 작성한 코드를 실제 사용자가 접근 가능한 운영 서버(Production Environment, 식당 홀)로 전개하여 릴리즈하는 전체 과정을 의미합니다

과거와 현대의 차이: 과거에는 개발자가 직접 서버에 접속해 SSH로 파일을 복사하고 프로그램을 재시작하는 수동 방식이었으나, 현대 배포는 휴먼 에러를 방지하고 시스템 안정성을 위해 고도화된

자동화 파이프라인(CI/CD)을 거칩니다 1-3.
2. 프론트엔드 정적 사이트 배포 vs 백엔드 서버 배포
웹 서비스는 화면을 보여주는 프론트엔드와 비즈니스 로직을 연산하는 백엔드로 나뉘어 배포 전략이 다릅니다 1.
① 정적 사이트 배포 (프론트엔드)
개념 및 특징: React, Vue 등으로 빌드되어 완성된 HTML, CSS, JavaScript 정적 파일들을 브라우저에 제공하는 배포입니다 1.
배포 방식: 서버 측 연산이 필요 없으므로 AWS S3 같은 객체 스토리지에 올리고,

CDN(Content Delivery Network)이나 Vercel, Netlify 등의 클라우드 플랫폼을 활용해 전 세계 사용자에게 초고속으로 전송합니다 1, 4.
② 서버 배포 (백엔드)
개념 및 특징: Python(FastAPI, Django), Node.js, Java처럼 데이터베이스와 통신하고 실시간 비즈니스 로직을 연산하는 프로그램 배포입니다 1.
배포 방식: 코드가 실행될 런타임 환경(OS, 패키지, 메모리)이 24시간 항시 구동되어야 하므로 AWS EC2 같은 가상 서버나 Railway, 도커 컨테이너 환경이 필요합니다 1, 5.

  1. 도커(Docker)와 컨테이너: 서버 환경의 일관성 보장
    어원 및 비유: Docker는 항구(Dock)의 부두 노동자에서 유래한 명칭이며, Container는 규격화된 수송용 철제 상자를 의미합니다 6.
    문제점 해결: 과거에는 개발자 PC와 운영 서버의 OS 버전이나 설치 라이브러리가 달라 "내 컴퓨터에서는 되는데 서버에서는 안 된다"는 고질적인 환경 불일치 오류가 빈번했습니다 7-9.
    도커의 역할: 코드와 함께 실행 환경(OS, 런타임, 의존성) 전체를 표준 컨테이너로 포장하여, 어느 서버에서 실행하든 100% 동일하게 동작하도록 환경을 통일합니다 7-9.
    3대 구성 요소:
    Dockerfile: 실행 환경 구축 순서를 적은 설계도 스크립트 8.
    Image: 소스 코드와 환경을 완벽히 압축해 구워낸 불변의 파일 덩어리(밀키트) 8.
    Container: 이미지를 메모리에 올리고 실제로 실행 중인 상태(완성된 요리) 8.

  2. CI/CD: 지속적 통합 및 배포 자동화 파이프라인
    개발자가 중앙 저장소(GitHub)에 코드를 올리는 순간부터 사용자에게 반영되기까지의 과정을 자동화한 시스템입니다 2, 7, 9.
    CI (Continuous Integration, 지속적 통합):
    개발자가 수정한 코드를 중앙 저장소에 통합할 때, 시스템이 자동으로 빌드하고 테스트 코드를 실행하여 버그나 충돌을 사전에 검증합니다 2, 7, 9.
    CD (Continuous Deployment / Delivery, 지속적 배포):
    CI 검증을 무사히 통과한 코드를 사람의 개입 없이 실제 운영 서버에 자동으로 업데이트하는 과정입니다 2, 7, 9.
    대표 도구: GitHub Actions, Jenkins, GitLab CI 등을 활용합니다 3, 7, 9.

  3. 무중단 배포 3대 전략 (Zero-Downtime Deployment)
    서비스 업데이트 시 서버 재시작으로 인한 접속 끊김(Downtime) 현상을 방지하기 위한 핵심 네트워크 전략입니다 10.
    블루-그린 (Blue-Green) 배포
    현재 가동 중인 환경(Blue)과 동일한 신규 서버 환경(Green)을 구성해 두고 새 코드를 올려놓습니다 10. 테스트 완료 후 로드밸런서 스위치를 Green으로 단숨에 전환하며, 문제가 생기면 Blue로 즉시 롤백합니다 10.
    롤링 (Rolling) 배포
    여러 대의 운영 서버를 한 번에 끄지 않고, 1~2대씩 순차적으로 새 버전으로 교체해 나가는 제어 방식입니다 10.
    카나리 (Canary) 배포
    광산의 유독가스 감지용 카나리아 새에서 유래한 기법으로, 새 버전을 5~10%의 소수 트래픽에만 먼저 노출시켜 모니터링한 뒤 이상이 없으면 전체로 확대합니다 10.

  4. 주요 배포 인프라 및 네트워크 요소
    Nginx (엔진엑스): 비동기 이벤트 기반의 고성능 웹 서버이자 리버스 프록시(Reverse Proxy)로, 요청 라우팅, 로드 밸런싱(부하 분산), SSL/HTTPS 보안 처리, 내부 서버 격리를 담당합니다 4.
    Vercel / Railway: 서버 인프라 직접 설정 없이 GitHub 연동만으로 프론트엔드 및 백엔드/DB를 초고속 배포할 수 있도록 돕는 PaaS 플랫폼입니다 4, 5.
    도메인 (Domain): 복잡한 IP 주소를 사람이 읽기 쉬운 문자 주소로 변환하여, 서버 장비나 IP가 바뀌어도 사용자에게 고정된 서비스 진입점을 제공합니다 5.

0개의 댓글