37일차 - CloudFront 라우팅 연결, Docker

류연찬·2023년 5월 11일
0

Codecamp FE07

목록 보기
37/39

CloudFront 라우팅 연결

마지막으로 CloudFront와 로드밸런서를 연결하여, SSG + SSR 하이브리드 배포를 완성해 보도록 하겠습니다.

기존에 S3과 연결했던 CloudFront에 로드밸런서 연결을 추가해야 합니다.

CloudFront ID를 클릭합니다.

‘원본'탭에서 원본 생성 버튼을 클릭합니다.

원본 도메인 선택창을 클릭합니다.

원본 도메인에 로드밸런서를 선택하여 지정합니다.

프로토콜 > HTTP만 해당을 선택합니다.

원본 생성 버튼을 클릭하면, 로드밸런서와 기본 연결이 완료됩니다.

이제 특정 도메인 접근 시 로드밸런서로 라우팅되도록 설정합니다.

‘동작'탭에서 동작 생성 버튼을 클릭합니다

경로 패턴에 /boards/* 를 입력하고, 원본 및 원본 그룹은 로드밸런서를 선택합니다.

뷰어 프로토콜 정책과 허용된 HTTP 방법을 아래와 같이 선택합니다.

동작 생성 버튼을 클릭합니다.

동작 목록에서 아래와 같이 S3과 로드밸런서로 모두 동작이 연결되는 지 확인합니다.

이제 SSG + SSR 하이브리드 배포가 완료되었습니다.

S3에 업로드된 빌드 파일을 CloudFront를 이용하여 캐싱하여 빠른 속도로 최초 화면을 표시한 다음, 나머지 페이지와 데이터들은 SSR 방식으로 전달합니다.

그렇기 때문에 사용자는 빠르고 역동적인 경험이 가능합니다.

또한, 잦은 변경이 필요하지 않은 파일(기본 레이아웃 및 디자인 등)들을 S3로 분리하여 EC2 인스턴스에 대한 부하를 줄일 수 있으며, 이를 통해 안정적인 서비스 제공 및 비용 절감 효과를 도모할 수 있습니다.

Docker

Docker 설치

Docker 공식 홈페이지 도커 홈페이지에 접속한 뒤, Get Started를 누릅니다.

OS에 맞게 다운로드하고, 설치하고, 재부팅합니다.



Docker를 사용해서 배포하는 이유

우리가 서버를 돌리기 위해서는 먼저 환경이 갖춰져야 합니다.

새로 컴퓨터를 샀다거나 또는 새로 직원이 들어왔다고 생각해봅시다.

그럼 컴퓨터에 우리가 개발한 환경과 똑같이 만들어야합니다.

이를위해 Node.js와 같은 언어 그리고 언어의 버전, 데이터베이스, 수 많은 node_modules를 버전을 맞춰서 설치해줘야 합니다. 한두가지가 아니겠죠.

그래서 예전 회사에서는 환경을 구축하는 과정을 하나씩 캡쳐하고, 기록해서 방법을 정리해두기도 합니다.

가이드 문서가 있다고 한들 매번 이렇게 구축하는 것은 매우 번거로운 일입니다.

이를 간편하게 해주는 것이 바로 도커입니다.

Docker란?

도커는 개발 환경 요소들이 설치된 모습을 이미지로 저장합니다.

저장한 이미지를 클라우드에 올립니다.

이미지들이 서로 연결되서 동작하는 설정을 문서(Dockerfile)로 저장합니다.

새 컴퓨터에 가서 복사한 문서의 내용대로 이미지를 다운받아 설치합니다.

가상 머신과 비슷하다고 볼 수 있습니다.

하지만 가상머신보다 훨씬 빠르고, 자원을 효율적으로 사용합니다.

왼쪽이 가상머신, 오른쪽이 도커입니다.

도커에는 불필요한 추가적인 운영체제 설치가 필요 없습니다.

도커 허브에서는 npm 다운 받는 것처럼 다른 사람들이 올려놓은 이미지를 다운로드 할 수도 있습니다.

또한, 한 컴퓨터에서 다른 환경의 여러 서비스를 실행해야 하는 경우, 컨테이너로 분리되어 있기 때문에 서로 독립되어 실행 될 수 있습니다.

이것들을 모두 간단한 명령어로 실행 할 수 있습니다.

Docker-compose의 이해

여러가지 컨테이너를 다룰 때 좀더 복잡한 설정이 필요하게 됩니다.

이럴 때 Docker-compose를 사용합니다.

docker-compose.yml 파일을 미리 만들어서 설정을 어떻게 할지 적어둡니다.

그리고 docker-compose up 명령어를 입력해서 컨테이너를 실행합니다.

💡 yml 파일은 들여쓰기를 꼭! 지켜주셔야 합니다!

docker-compose.yml 파일 예시

version: "3.3"

services:
  class_build:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - 3000:3000

Dockerfile

컨테이너를 실행하기 전에 먼저 해줘야할 것은 이미지를 만드는 것입니다.

Dockerfile 이라는 이름의 파일을 만들고 이미지를 만들기 위한 명령어를 입력합니다.

그리고 docker-compose build 명령어를 통해 이미지를 만들게 됩니다.

Dockerfile 예시

FROM node:16

WORKDIR /class_build/
COPY . /class_build/

RUN yarn install
RUN yarn build
CMD yarn start

환경 변수 설정

Dockerfile 안에서 환경 변수를 설정하고 싶은 때는 ENV 명령어로 설정합니다.

ENV [key] [value]
ENV [key]=[value]

0개의 댓글