[typescript] 도커와 타입스크립트를 사용한 서버 사이드 렌더링 구현 방법

서버 사이드 렌더링(Server-Side Rendering, SSR)은 웹 페이지의 초기 렌더링을 서버에서 처리하여 클라이언트에 더 빠르게 렌더링되도록 하는 방법입니다. 이번에는 도커와 타입스크립트를 이용하여 서버 사이드 렌더링을 구현하는 방법에 대해 알아보겠습니다.

1. 타입스크립트로 SSR 앱 작성

먼저, 타입스크립트로 SSR 앱을 작성해야 합니다. 타입스크립트는 정적 타입 지정이 가능한 언어로, 코드 유지보수성을 높여주며 개발자의 에러를 줄여줍니다.

// index.tsx
import React from 'react';
import ReactDOMServer from 'react-dom/server';
import App from './App';

const html = ReactDOMServer.renderToString(<App />);
console.log(html);

위 코드에서는 ReactDOMServer.renderToString 메서드를 사용하여 React 앱을 렌더링한 후, 렌더링된 HTML을 콘솔에 출력하고 있습니다.

2. 도커로 SSR 앱 컨테이너화

타입스크립트로 작성한 SSR 앱을 도커 컨테이너로 만들어 배포할 수 있습니다. Dockerfile을 통해 도커 이미지를 빌드하고, 컨테이너를 실행할 수 있습니다.

# Dockerfile
FROM node:14

WORKDIR /app

COPY package.json package-lock.json ./
RUN npm install

COPY . .

CMD ["npm", "start"]

위 Dockerfile은 Node.js를 기반으로 하는 도커 이미지를 빌드하고, SSR 앱을 실행하는 방법을 정의하고 있습니다.

3. 도커 컴포즈로 서비스 관리

도커 컴포즈(Docker Compose)를 사용하면 여러 개의 도커 컨테이너를 쉽게 관리할 수 있습니다. 여러 개의 서비스를 정의하고 한번에 실행할 수 있으며, 환경 변수 설정, 네트워킹 등을 손쉽게 관리할 수 있습니다.

# docker-compose.yml
version: '3'
services:
  web:
    build: .
    ports:
      - "3000:3000"

docker-compose.yml 파일은 SSR 앱을 서비스로 정의하고, 포트 매핑을 통해 호스트와 컨테이너를 연결하는 내용을 담고 있습니다.

도커와 타입스크립트를 사용하여 서버 사이드 렌더링을 구현하는 방법에 대해 알아보았습니다. 다양한 환경에서 손쉽게 배포 및 관리가 가능하며, 더 나은 웹 애플리케이션을 구현할 수 있습니다.

참고문헌: