문제상황
- Next.js 14와 Mongodb Atlas를 사용해 프론트+서버 풀스택 개발 진행
- Mongodb Altas 클러스터 생성 시 허용 IP를 집 IP만 허용하도록 설정
- 배포 후 Next.js의 데이터베이스 접근이 포함된 서버 액션 호출 시 504 에러 발생
원인/문제점
- 인바운드 IP를 설정해두고 이를 수정하지 않음
- Vercel에서 서버 액션과 같은 함수 호출은 Serverless로 작동하는데, 그 때 마다 동적으로 IP가 할당됨
- 즉, Vercel의 특정 IP를 허용할 수 없는 상황
해결방법
mongodb 공식문서에 방법이 소개되어 있다.
1. Vercel - integrations - MongoDB Atlas 선택
2. Add integration
2-1. 계정 선택
2-2. 대상 프로젝트 선택
전체 혹은 일부 프로젝트만 선택하여 적용할 수 있다.
나는 프로젝트가 하나이기도 하고, 혹시 모를 사이드이펙트 방지를 위해 두번째 특정 프로젝트만 적용하도록 선택했다.
3. MongoDB 로그인 - 대상 데이터베이스 선택
2번을 완료하면 Vercel 사이트에서 새로운 창이 뜨고, MongoDB 로그인을 요청한다. 로그인 이후 Vercel과 MongoDB 연결에 대한 설정을 할 수 있도록 안내가 진행된다.
결과
Serverless 함수 호출에서도 MongoDB Atlas에 접근하여 데이터를 가져올 수 있게 되었다.
래퍼런스