4. Express.js API Vercel 배포 (Serverless)
Vercel은 Express.js 애플리케이션을 서버리스 함수로 배포할 수 있습니다. 이를 위해서는 프로젝트 루트에 vercel.json 구성 파일이 필요합니다.
4.1. vercel.json 생성
모노레포의 루트(예: my-fullstack-app/vercel.json)에 vercel.json 파일을 생성하여 Vercel이 API 라우트를 처리하는 방법을 알려줍니다.
// vercel.json
{
"rewrites": [
{
"source": "/api/(.*)",
"destination": "/api/"
}
],
"functions": {
"api/index.js": {
"runtime": "node tolerant",
"memory": 1024,
"maxDuration": 10
}
}
}
설명:
rewrites: 이 규칙은/api/*에 대한 모든 요청을api/index.js서버리스 함수로 라우팅합니다.functions: 서버리스 함수에 대한 특정 설정을 정의합니다.api/index.js는 진입점으로 지정되며,node tolerant런타임을 사용하고, 1024MB 메모리와 10초의 최대 실행 시간을 가집니다. 필요에 따라 이 값을 조정합니다.
4.2. 올바른 종속성 확인
Vercel은 Next.js 앱과 api/ 디렉토리 모두에 대한 종속성을 설치합니다. 각 package.json이 종속성을 올바르게 나열하는지 확인하세요.
예를 들어, express와 cors는 api/package.json의 dependencies에 있어야 합니다.
4.3. 배포 및 테스트
변경 사항을 Git 저장소에 푸시합니다. Vercel은 vercel.json 파일을 감지하고 Express.js API를 Next.js 앱과 함께 서버리스 함수로 배포합니다.
배포 후에는 https://your-vercel-domain.vercel.app/api/hello에서 API에 액세스할 수 있을 것입니다.