📚 FDE · 세션 · 데이터 · 서버 · 배포 (수정중) · L03

서버 한 대 안 (수정중)

작성일자 2026-07-30  ·  수정일자 2026-07-30  ·  강의차수 L03  ·  예상소요 20분

목표 서버 한 대 안에서 Apache·gunicorn·Django·PostgreSQL 이 각각 무슨 일을 하고 어떻게 연결되는지 이해한다.

앞 '요청 여정' 강의에서 요청이 우리 서버 앞까지 오는 길을 봤습니다. 이번엔 그 요청이 서버 안으로 들어온 뒤 어떤 프로그램들을 거쳐 화면이 만들어지는지 봅니다.

1. 서버 한 대 안의 프로그램들

서버 한 대 안에서는 역할이 다른 프로그램 여럿이 함께 돌며 협업합니다. 한 프로그램이 다 하는 게 아닙니다.

프로그램 하는 일
Apache 바깥에서 오는 요청을 맨 앞에서 받는 웹서버
gunicorn 우리 Django 코드를 실제로 실행하는 프로그램
Django 우리가 짠 코드 (주소·화면·로직)
PostgreSQL 데이터를 저장하는 데이터베이스

2. 전체 흐름

🌐 바깥 요청 (https)Apache요청을 받는 웹서버 · 정적 파일은 직접 응답나머지 요청gunicornDjango 코드를 실행Django (우리 코드)주소 → 화면·로직데이터 요청PostgreSQL데이터베이스 · 데이터 영구 저장

바깥 요청이 Apache 로 들어와, gunicorn → Django 를 거치고, 필요하면 PostgreSQL 에서 데이터를 꺼내 화면을 만들어 돌려줍니다.


3. 단계별 역할

  • Apache: 바깥 요청을 가장 먼저 받습니다. CSS·이미지 같은 정적 파일은 직접 응답하고, 나머지 요청은 뒤의 gunicorn 으로 넘깁니다.
  • gunicorn: Apache 가 넘긴 요청을 받아 우리 Django 코드를 실제로 실행합니다. gunicorn 은 바깥에 직접 열려 있지 않고, Apache 를 거쳐야만 닿습니다.
  • Django: 우리가 짠 코드입니다. 주소를 보고 어떤 화면·로직을 처리할지 정하고, 필요하면 데이터베이스에 데이터를 물어봅니다.
  • PostgreSQL: 데이터를 영구히 저장하는 데이터베이스입니다. Django 가 요청한 데이터를 꺼내 줍니다.

4. 코드와 데이터 분리

여기서도 앞서 본 원칙이 그대로입니다. gunicorn 이 실행하는 코드는 배포할 때마다 갈아 끼우지만, PostgreSQL 안의 데이터는 그 자리에 남습니다. 그래서 새 버전을 올려도 사용자 데이터는 사라지지 않습니다.

그리고 CSS·이미지 같은 정적 파일은 앞 '정적 파일' 강의에서 봤듯 Apache 가 직접 내보냅니다. 이미 완성된 파일이라 Django 까지 갈 필요가 없기 때문입니다.


마무리

  • 핵심 정리: 서버 한 대 안에서 Apache(요청을 받는 웹서버) → gunicorn(Django 실행) → Django(우리 코드) → PostgreSQL(데이터 저장)이 한 줄로 협업해 화면을 만듭니다. 정적 파일은 Apache 가 직접 주고, 코드는 갈아 끼워도 데이터는 남습니다.
  • 주의 사항: gunicorn 은 바깥에 직접 열려 있지 않습니다. 모든 바깥 요청은 Apache 를 거칩니다(보안).
  • 다음 시간: 이 프로그램들과 데이터·정적 파일 중, '배포'가 무엇을 어떻게 바꾸는지 살펴봅니다.
이 강의를 학습하셨나요?