
KUKJIN LEE
posted 1 week ago
Next.js API와 lib/action 사용 시 알아야 할 4가지 한계점과 해결법
Next.js API와 함께 별도의 로직을 관리하기 위한 lib/action
폴더를 구성하는 방식은 꽤 자주 사용되는 구조지만, 명확한 장점만큼이나 실제 개발 및 운영 시 고려해야 할 단점과 한계점도 있습니다.
3번을 가장 치명적인 문제로 보고 있습니다. 그래도 Fluid Computing등 기술 개발을 통해 문제 해결을 위해 노력하고 있습니다.
📌 1. 명확한 경계 설정의 어려움 (Boundary의 모호성)
Next.js의 API Routes는 HTTP 요청을 처리하는 역할을 하며, 보통은 pages/api
혹은 app/api
디렉터리에 분리되어 있습니다. 반면, lib/action
은 일반적으로 데이터베이스 조회, 비즈니스 로직, 또는 외부 API 호출 같은 다양한 역할을 담당합니다.
이렇게 API Routes와 Action을 나누다 보면, 로직의 경계를 명확하게 설정하기 어려워지는 경우가 자주 발생합니다.
-
API Route에 데이터 검증 및 간단한 로직을 넣어야 할지, Action에서 전부 처리할지 명확히 결정하기 어려워질 수 있습니다.
-
프로젝트가 커질수록 Action 내의 책임 범위가 흐려져 유지보수가 어려워질 수 있습니다.
📌 2. Next.js의 내장 미들웨어 기능 미활용으로 인한 한계
Next.js는 기본적으로 Middleware 기능을 통해 인증, 권한 확인, 지역화(Localization) 같은 크로스-커팅(cross-cutting) 기능을 쉽게 적용할 수 있는 환경을 제공합니다. 그러나 API Route와 Action 방식만 활용하면 다음과 같은 제한이 발생합니다.
-
공통 처리 로직(예: 인증, 권한 검사 등)을 매번 각 API Route에서 수동으로 호출해야 하는 경우가 생길 수 있습니다.
-
Middleware를 제대로 활용하지 않고 Action에서만 로직을 처리하면 불필요한 코드 중복과 관리 포인트가 증가합니다.
📌 3. 서버리스(Serverless) 환경 특성으로 인한 한계점
Next.js의 API Route는 기본적으로 Serverless 형태로 동작하기 때문에 함수의 콜드 스타트(Cold Start)나 제한된 실행 시간(Time Limit)과 같은 서버리스 환경의 단점이 그대로 존재합니다.
-
Action 내부에서 매우 긴 시간이 소요되는 작업이나 무거운 작업(예: 많은 데이터 처리를 동반한 복잡한 비즈니스 로직)을 수행하는 경우, 성능 저하나 Timeout 이슈가 빈번하게 발생할 수 있습니다.
-
무거운 로직을 수행하기엔 Next.js의 API Routes 자체가 최적의 환경이 아닐 수 있습니다.
📌 4. 폴더 구조 관리의 복잡성 증가
API와 Action을 나누어 관리하면 폴더 구조가 점차 복잡해지고 관리가 어려워질 수 있습니다.
폴더 구조가 이렇게 복잡해질 때 까지 Next Server 하나를 유지하고 있다면 문제가 있어보입니다. 폴더 구조 관리 복잡성이 느껴질 때 MSA 진행을 권장 드립니다.
-
Action 폴더가 너무 커지면 파일이 증가하여 구조가 복잡해지고 탐색이 어려워집니다. (여기까지 갔으면 문제가 있어보입니다.)
✅ 최종 의견 및 결론
사실 작은 규모의 프로젝트나 명확한 역할 분리를 위한 초기 프로젝트에서 매우 유용한 기능들입니다. 하지만 프로젝트가 커지거나 복잡한 비즈니스 로직을 처리해야 하는 상황까지 왔다면 Next 서버의 한계를 느끼기 때문에 더 적합한 별도의 서버 환경을 도입하는 등의 추가적 고려가 필요합니다.