개발자라면 한 번쯤은 "이제 기능 구현도 끝났고, 테스트도 끝났으니 배포하자!"라는 말을 들어봤을 것입니다.
이때의 배포는 무슨 뜻일까요? 오늘은 배포(Deployment)의 개념과 서버 배포에 필수적인
AWS EC2(Elastic Compute Cloud)에 대해 알아보겠습니다.
1. 배포(Deployment)란 무엇인가?
배포(Deployment)란 개발된 애플리케이션을 다른 사용자들이 인터넷을 통해 사용할 수 있도록 만드는 과정을 의미합니다. 우리가 만든 웹 애플리케이션이나 서버가 실제로 다른 사람들에게 제공되려면 인터넷 상에서 실행되고 있어야 합니다. 이를 위해 배포는 필수입니다.
개발할 때는 주로 localhost라는 주소로 웹 애플리케이션을 테스트합니다. 하지만 localhost는 개인 컴퓨터에서만 접근 가능한 주소입니다. 배포를 통해 고유한 IP 주소(ex. 124.16.2.9)나 도메인(ex. www.naver.com)을 부여받으면, 이제 다른 컴퓨터에서도 그 주소를 통해 해당 웹사이트나 서버에 접근할 수 있게 됩니다. 이렇게 서비스가 사용자들에게 제공될 준비가 된 상태를 배포가 완료된 상태라고 합니다.
따라서 개발이 완료된 후, 다른 사용자들이 애플리케이션을 사용하게 하려면 반드시 배포(Deployment) 과정이 필요합니다.
1.1) 현업에서 가장 많이 사용하는 배포 서비스
현업에서는 AWS EC2가 가장 널리 사용됩니다. 이는 확장성, 다양한 서비스와의 통합, 글로벌 인프라를 제공하기 때문입니다. AWS는 특히 백엔드 서버와 데이터베이스 배포에 강점을 가지고 있습니다.
그 외에도 GCP App Engine과 Azure App Service는 클라우드 인프라 관리의 복잡성을 줄여주는 PaaS(Platform as a Service)로 인기가 있으며, Vercel과 Netlify는 프론트엔드 배포에 특화된 도구로 많이 활용됩니다.
2. AWS EC2란?
2.1) EC2(Elastic Compute Cloud)란 무엇인가?
- AWS EC2(Elastic Compute Cloud)는 한마디로 컴퓨터를 빌려서 원격으로 접속하여 사용하는 서비스입니다. 쉽게 말해, AWS에서 제공하는 서버(컴퓨터)를 빌려 사용하는 것입니다.
2.2) 왜 EC2를 사용할까?
서버를 배포하기 위해서는 컴퓨터가 필요합니다. 하지만 내 컴퓨터로 서버를 운영하려면 몇 가지 문제가 생깁니다.
- 24시간 서버 가동: 서버가 계속 실행되어야 하기 때문에 컴퓨터를 항상 켜놔야 합니다.
- 보안 문제: 내 컴퓨터에 인터넷을 통해 외부에서 접근할 수 있도록 설정하면 보안적으로 큰 위험이 생깁니다.
이러한 문제를 해결하기 위해 AWS EC2를 사용합니다. EC2는 우리가 필요할 때만 컴퓨터를 빌려서 서버를 운영할 수 있도록 해줍니다. 추가로 오토스케일링, 로드밸런싱 등의 기능도 제공하여 서버 운영을 보다 효율적이고 안전하게 할 수 있습니다.
2.3) 현업에서의 EC2 사용
실제 현업에서도 EC2는 주로 백엔드 서버 배포에 사용됩니다. AWS EC2에 서버를 올려 놓으면, 사용자가 그 서버에 접속하여 데이터를 주고받거나 요청을 처리할 수 있습니다.
프론트엔드 웹 페이지도 EC2에 배포할 수 있을까?
프론트엔드 웹 페이지를 배포할 때는 AWS EC2를 사용할 수도 있지만, 일반적으로는 Vercel, Netlify, AWS S3 같은 서비스가 더 많이 사용됩니다. 프론트엔드는 EC2보다 이러한 서비스들이 더 적합한 경우가 많기 때문입니다. 그래서 AWS EC2는 주로 백엔드 서버 배포에 많이 사용된다고 기억하면 충분합니다.