Vercel 배포 후 꼭 해야 하는 설정: Function Region

Vercel로 프로젝트를 배포한 이후에 `Settings > Functions`에서 Funtion Region(함수 실행 지역)을 설정할 수 있다.

 

These are the regions on Vercel's network that your Vercel Functions will execute in.

사용자와 가까운 위치에서 함수를 실행할 수 있도록 설정하는 것인데,

이때 말하는 "함수"가 정확히 무엇을 의미하는지 궁금해져서 직접 찾아봤다.

 

단순한 설정처럼 보이지만, 사용자 경험에 직접적인 영향을 미치는 Function Region에 대해 알아보자.

 

Vercel Functions란?

Vercel Functions는 서버를 따로 구축하지 않고도 서버 측 로직을 실행할 수 있게 해주는 서버리스(Serverless) 함수다.

사용자 요청에 따라 자동으로 실행되며, API 처리나 데이터베이스 연결 등 서버 역할을 수행한다.

대표적인 예로는 `app/api` 디렉토리에 작성하는 API Routes가 있다.

 

Vercel Edge Network와 콘텐츠 캐싱

Vercel은 Edge Network를 통해 사용자와 가까운 곳에 콘텐츠를 저장하고, 

데이터와 가까운 지역에서 컴퓨팅하여 지연 시간(latency)을 줄임으로써 콘텐츠를 사용자에게 빠르게 제공한다.

즉, Edge Network는 콘텐츠 전송 네트워크(CDN)이자 컴퓨팅을 실행하기 위한 전 세계적으로 분산된 플랫폼인 것이다.

 

Edge Network가 콘텐츠를 캐싱하는 방법에는 두 가지가 있다:

 

정적 파일 캐싱

HTML, CSS, JS 같은 정적 파일 캐싱은 모든 배포에 자동으로 적용되므로 따로 설정할 필요가 없다.

사용자는 항상 자신과 가까운 서버에서 콘텐츠를 제공 받게 된다.

 

동적 콘텐츠 캐싱

SSR 콘텐츠를 포함한 동적 콘텐츠는 기본적으로 캐싱 되지 않는다.

`Cache-Control` 헤더를 직접 설정해 캐싱을 적용할 수 있다.

 

Function Region을 설정해야 하는 이유

정적 파일은 전 세계 CDN에 캐싱되어 자동으로 사용자 가까이에서 제공된다.

하지만 서버리스 함수(Vercel Functions)하나의 리전에서만 실행되기 때문에,

이 실행 위치가 사용자나 데이터베이스와 멀다면 지연(latency)이 발생하게 된다.

 

따라서 함수가 실행되는 지역을 데이터 소스(예: 데이터베이스)와 가까운 지역으로 지정하는 것이 좋다.

 

예시를 들어 설명해보자.

  • 사용자는 서울에서 접속
  • HTML/CSS는 서울 CDN 서버에서 제공
  • 서버리스 함수는 기본 리전인 미국 워싱턴 DC 리전에서 실행
  • 데이터베이스는 도쿄 리전에 위치

➡️  함수 실행 시 미국 ↔ 도쿄 ↔ 서울 사이를 왕복하느라 지연 시간이 증가한다.

 

Function Region 설정 방법

Vercel의 서버리스 함수(Vercel Functions)는 명시적으로 실행 지역(Region)을 지정해야 한다.

참고: 프로젝트를 새로 만들면 기본 실행 지역은 `Washington, D.C., USA`로 설정된다.

 

설정 방법

  1. Vercel Overview에서 프로젝트 선택
  2. `Settings > Functions`로 이동
  3. `Function Region` 항목에서 원하는 리전 선택 (예: Seoul)

 

선택 기준: 사용자 위치와 가까운 리전 또는 DB와 물리적으로 가까운 리전

 

결론

  • Vercel은 정적 콘텐츠를 전 세계에 자동으로 캐싱해 사용자 가까이에서 제공한다.
  • 하지만 서버리스 함수는 기본적으로 단일 리전에서만 실행되므로, 지연 시간을 줄이기 위해 실행 지역을 별도로 설정해야 한다.
  • Function Region을 설정하는 것만으로도 API 속도와 사용자 경험을 크게 향상시킬 수 있다.

 

References