비개발자의 백엔드 배포
개발자의 배포 과정은 이 챕터에서 다루지 않습니다. AWS, GCP, Azure 등 클라우드 서비스에 배포하는 방법은 별도 학습을 권장합니다.
이 장에서는 비개발자가 백엔드 서비스를 배포하는 방법을 다룹니다. Django 프로젝트를 Render에 배포하는 실습을 통해 배포 과정을 이해합니다.
처음 웹 서비스를 만들고 배포해본 사람에게는 큰 재미와 동시에 막막함을 함께 느낍니다. 더 무엇을 공부해야 할지, 어디에 배포해야 할지, 모든게 다 어렵고 힘들게 느껴지기 때문이죠. 만약 처음 입문하신 분이라면 무작정 4 ~ 5번 반복을 해보시길 권해드립니다. 여기서 자연스럽게 습득이 되는 부분이 많기 때무입니다.
1. 무료 서비스가 없는 이유
앞서 개발한 GitHub의 리포지토리로 만드는 GitHub Pages는 정적 웹사이트를 무료로 배포할 수 있는 좋은 서비스입니다. 이런 좋은 서비스를 무료로 제공할 수 있는 이유는 '정적 웹 서비스'는 서버에서 복잡한 연산을 하지 않기 때문입니다. 단순히 HTML, CSS, JS 파일을 사용자에게 전달하는 역할만 수행합니다. 그렇기 때문에 자원이 거의 들어가지 않죠.
우리가 앞서 개발한 프로젝트는 연산도 있고, DB도 있습니다. 이러한 '연산' 기능을 제공하는 서버는 24시간 켜져 있어야 하며, 정적 페이지 배포보다 많은 컴퓨팅 파워를 요구합니다. 따라서 기업 입장에서 무료로 제공할 수 있는 서비스가 아닙니다. 많은 기업들이 유료로 서버를 임대해주고 있습니다. 대표적인 서비스는 아래와 같습니다.
- AWS(Amazon Web Services): https://aws.amazon.com/
- GCP(Google Cloud Platform): https://cloud.google.com/
- Azure(Microsoft Azure): https://azure.microsoft.com/
한국에는 NHN에서 제공하는 서비스가 있습니다. NCP라고 합니다.
- NCP(NHN Cloud Platform): https://www.ncloud.com/
다만 무엇을 선택하더라도 무료도 아닐 뿐더러 학습해야 하는 곡선이 매우 가파릅니다. 비개발자가 쉽게 접근하기 어려운 것이 현실입니다. 다만 아래와 같은 서비스가 아주 적은 자원을 무료로 제공합니다. 배포도 쉽고요. Render라는 서비스입니다.
* 기간 제한 없음
* 월 750시간의 무료 인스턴스 시간 제공
* 15분간 트래픽이 없으면 서비스가 spin down되고, 다음 요청이 들어올 때 다시 시작됩니다. 이 과정에서 최대 1분 정도 지연이 발생
* RAM: 512MB, CPU: 0.1 vCPU
- Render: https://render.com/
2. 쉬운 배포가 없는 이유
다만 쉽다고 하더라도 여러분이 생각하는 것처럼 클릭 몇 번으로 배포가 끝나는 서비스는 아닙니다. 어느 정도 개발 지식이 필요합니다. 그러면 우리는 이렇게 반문해볼 수 있습니다. '블로그 처럼 쉬운 백엔드 서비스 배포는 왜 없을까?'라는 것이죠. 이는 몇 가지 이유가 있습니다.
-
보안 문제: 배포된 서비스는 외부에 노출되기 때문에 보안이 매우 중요합니다. 비개발자가 쉽게 사용할 수 있는 배포 서비스는 보안 취약점이 발생할 가능성이 높습니다. 예를 들어, 여러분의 아이디와 패스워드가 노출되면 누군가 여러분 서버에서 비트코인 채굴을 하고 비용을 여러분이 부담해야 할 수도 있습니다. 이러한 보안 문제가 생겼을 때 대부분의 클라우드 서비스는 관대하지 않습니다.
-
복잡성 문제: 배포 과정은 단순히 코드를 올리는 것 이상으로, 서버 설정, 데이터베이스 연결, 보안 설정 등 다양한 요소를 포함합니다. 이러한 복잡성 때문에 비개발자가 쉽게 접근하기 어렵습니다.
물론 위 2가지 말고도 더 많은 이유가 있지만, 가장 큰 이유는 위 2가지입니다. 그럼에도 Render는 매우 빠르고 간단한 배포 경험을 제공합니다.
3. 개발된 서비스 배포하기
앞서 개발한 블로그를 가지고 배포를 해보도록 하겠습니다. 만약 앞서 실습한 파일이 없다면 미리 준비된 코드를 다운로드 받아서 진행해도 무방합니다. 아래 서비스는 아래 프롬프트로 개발되었습니다. 수업을 위해 간소화 한 것이니 참고하세요. 실제 여러분 프로젝트로 진행을 할 예정이라면 아래 프롬프트에 추가로 다음과 같은 내용을 꼭 포함해서 요청하세요.
배포는 render에서 진행할 예정인데 requirements.txt 파일이 필요하고 render 서비스에서 배포할 때 처음에 'gunicorn 프로젝트명.wsgi'으로 시작하니 함께 설정해줘.
아래 서비스가 개발된 전체 프롬프트는 다음과 같습니다. 앞서 설계한 URL 설계와 DB 설계는 간소화를 위해 의도적으로 생략했습니다.
나는 유튜브와 비슷한 동영상 스트리밍 서비스를 간단히 만들려고 해. 나는 코딩을 인생에 있어서 한 번도 해본 적이 없는 사람이라 사용 방법까지 정리해줘. python은 설치했어.
내가 필요한 요구사항은 아래와 같아.
- 유튜브와 비슷한 UI
- 클릭했을 때 영상 재생
- 로그인(로그인한 사용자가 영상을 올릴 수 있는 형태는 아니고, 비공개된 영상을 볼 수 있는 서비스야)
- 나는 admin 페이지에서 영상을 올려, 영상을 올릴 수 있는 사람은 나 혼자야.
- 배포는 render에서 할 거야. 그래서 requirements.txt 파일이 필요하다네! render 서비스에서 배포할 때 처음에 `gunicorn 프로젝트명.wsgi`으로 시작한데! 참고해줘.
다운로드를 받으시고 한 번 실행해보세요. 파이썬이 설치되어 있지 않다면 설치부터 진행해야 합니다. 파이썬은 아래 페이지에서 다운로드 받을 수 있습니다.
이 문서에도 실행 방법이 상세 정리되어 있습니다. 사용법.md에 정리된 문서대로 실행해보겠습니다. 나머지 실행 단계가 모두 수행되었다는 전제 하에 터미널에서 아래 코드를 입력하면 서버가 구동됩니다.
python manage.py runserver
사용법.md를 참고해서 아래 URL에 접속합니다.
http://127.0.0.1:8000/
로그인이 완료되면 영상을 올려보도록 합니다. http://127.0.0.1:8000/admin 로 접속하여 Videos를 눌러 비디오를 올립니다. 새 게시물을 올렸다면 http://127.0.0.1:8000/ 페이지에 다시 접속을 해보면 올라온 영상을 볼 수 있습니다. 영상 재생도 잘 됩니다.
4. 이미 개발된 서비스를 수정하기
이렇게 개발이 되어 있는 서비스를 바로 Render에 올릴 수도 있지만, 우리는 여기에 간단한 게시판을 한 번 추가해보도록 하겠습니다. 클로드 코드에게 다음과 같이 요청할 수 있습니다.
간단한 게시판을 하나 추가해줘.
다만, 이렇게 하지 않고 아래처럼 앞서 배운 것을 활용해서 URL 설계, DB 설계 후 다음과 같은 프롬프트로 요청하는 것이 더 좋습니다.
나는 간단한 게시판을 추가로 만들려고 해.
[주요 기능]
- 게시글 작성, 수정, 삭제
- 게시글 목록 보기
- 게시글 상세 보기
[URL 설계]
[앞서 진행한 URL 설계 내용 + 게시판 URL 설계 삽입]
[DB 설계]
[앞서 진행한 DB 설계 내용 + 게시판 DB 설계 삽입]
Django 기반으로 이 기능을 구현해줘.
5. Render에 배포하기
아래 YouTube 영상에 상세히 녹화를 해두었습니다. 영상을 보시면서 따라해보세요.
텍스트로도 준비해두었습니다. 아래 문서를 참고하세요.
- render.com에 접속하여 회원가입을 합니다.
- Dashboard로 이동하여 Add new → Web Service를 클릭합니다. Projects 탭에 Deploy a Web Service 버튼을 클릭해도 됩니다. 우리는 Deploy a Web Service를 클릭하겠습니다.

- Connect 계정에서 GitHub를 선택합니다. 연결하는 과정에서 GitHub 계정 인증이 필요합니다.

- 가능하면 연동은 1개의 리포지토리만 선택하는 것을 권합니다.

- GitHub 계정과 연동이 되면 Repository 목록이 나타납니다. 우리는 미리 준비된
vibe_django_test리포지토리를 선택합니다. 연동이 다 되면 아래와 같이 나타납니다.

- 다음으로 Render에서 서비스 세부 설정을 합니다. 아래와 같이 입력합니다. 여기서 주의하셔아할 것이 제가 입력하는
gunicorn video_streaming.wsgi는 미리 준비된 코드에 맞춘 것입니다. 여러분이 만든 프로젝트명에 맞게 변경해주셔야 합니다. 보통프로젝트명.wsgi형태입니다. 잘 모르겠다면 Claude Code를 통해 아래와 같이 물어보세요.
내가 만든 이 프로젝트를 Render에 배포하려하는데 Start Command가 `gunicorn video_streaming.wsgi`와 같은 형태로 되어야 한다고 해. 내 프로젝트는 뭐라고 설정을 해야할까?

- 모든 설정이 완료되었으면 위 이미지 마지막에 Deploy Web Service 버튼을 클릭합니다. 배포되는 시간은 약 5분 정도 소요됩니다. 배포가 완료되면 아래와 같이 서비스 URL이 나타납니다. 클릭해서 접속해봅니다.
