Deploy Strategy
지금까지는 로컬 환경에서 클라이언트와 서버, 데이터베이스를 띄워서 작성한 코드를 구동하고 확인했었습니다.
개발한 서비스를 사용자들이 이용할 수 있도록 하는 것을 배포라고 합니다.
AWS에서 제공하는 서비스인 S3라는 서비스를 통해 사용자들에게 Client를 제공할 수 있습니다.
로컬 환경에서는 자체 개발 서버 (create-react-app)를 이용해서 클라이언트 앱을 실행시키는 것이 보통입니다. 그럼, 클라이언트를 위해서 EC2 인스턴스를 사용해야 할까요?
그렇지 않습니다. 클라이언트 앱을 정적 파일로 빌드하여 제공합니다.
따라서 S3를 이용해서 클라이언트를 배포합니다.
빌드란?
일반적인 의미의 빌드?
소스코드를 실행 가능한 번들로 변환하는 컴파일 과정
웹 앱에서와 같이 HTML, CSS, JS의 형태로 배포하는 경우는 조금 다릅니다.
웹 앱은 배포 가능한 정적 파일(static files)의 형태로 만들어 줘야 합니다.
asset 자체가 정적인 경우, 있는 그대로 배포하면 됩니다. React의 경우 npm run build와 같은 명령을 사용해서, 정적 파일 형태의 결과물을 만들어 낸 후 배포하면 됩니다. 사용하고 있는 환경에 따라 빌드 과정은 다를 수 있습니다.
Client Application을 배포하는 방법:
AWS에서 제공하는 CDN 서비스인 CloudFront를 통해서 각지의 데이터 센터에 데이터를 분산시켜서 저장해 뒀다가 가까운 지역에서 데이터를 주는 방식으로 사용자에게 더 빠르게 서비스를 제공할 수 있습니다.
Server Application을 배포하는 방법:
안정적으로 서비스를 제공하기 위해 가상의 PC(AWS EC2)를 빌려 서버 코드를 구동할 수 있습니다.
AWS EC2 서비스를 통해 손쉽게 서버를 구성하고 서비스를 제공할 수 있습니다.
AWS에서는 Database 특화 서비스인 RDS 서비스를 제공하고 있습니다.
AWS가 유지 보수 작업을 담당하는 RDS를 이용하여 즉시 데이터베이스를 사용할 수 있습니다.
RDS 서비스를 이용하여 EC2를 통해 배포된 Server Application의 데이터를 저장, 제공하는 데이터베이스를 배포할 수 있습니다.
처음 배포된 여러분의 서비스는 도메인 주소를 통해 접근할 수 있을까요?
하지만 여러분이 배포한 서비스는 현재 IP주소 혹은 AWS에서 제공한 서비스와는 전혀 연관이 없는 도메인으로 접속합니다.
S3, EC2를 이용해서 배포된 서비스는 IP주소 혹은 AWS에서 제공하는 여러분의 서비스와는 전혀 상관없는 긴 도메인 주소를 통해 접근하게 됩니다.
도메인을 통해 서비스에 접속하려면, AWS의 서비스 중 Route53을 이용합니다.