🌿 jadelog
🔎 Practice

노션(Notion)을 서비스 DB로 활용한 토이 프로젝트 후기

status
Public
date
Jan 3, 2026
slug
notion-as-a-database-pros-and-cons
summary
토이 프로젝트에서 Notion API를 활용하며 느낀 장단점과, 초당 3회 Rate Limit을 극복하기 위한 Next.js ISR 및 캐싱 전략을 공유합니다.
type
Post
category
🔎 Practice
tags
NotionAPI
Nextjs
thumbnail
kwtbk1kwtbk1kwtb.png
series
이번에 몇 가지 토이 프로젝트를 진행하며 Vercel을 통해 서비스를 배포해 보았습니다. 처음에는 Firebase를 고려했지만, 조금 더 가볍고 친숙한 도구인 Notion API를 대안으로 선택해보았는데요. 실제 사용해 보며 느낀 장단점을 공유합니다.
 
진행했던 프로젝트는 여기에서 확인 가능합니다.
todoist-replica
inxnxngUpdated Mar 23, 2026

장점

  1. 비용 부담 제로 (학생 계정 활용):
    1. 학생 계정이나 개인용 프로 플랜을 사용 중이라면 블록 제한 없이 데이터를 쌓을 수 있어 초기 비용이 전혀 들지 않습니다. 사실 이게 짱 중요하죠.
  1. 별도의 어드민 페이지 미불필요:
    1. 데이터를 확인하고 수정하기 위해 별도의 백오피스를 개발할 필요가 없습니다. 노션 워크스페이스 자체가 강력한 데이터 관리 GUI가 됩니다.
  1. 가벼운 아키텍처:
    1. 내부(로컬) DB나 무거운 서버 설정 없이 API 호출만으로 동작하므로, Vercel과 같은 서버리스 환경에서 서비스가 매우 가볍게 유지됩니다.
  1. 유연한 데이터 구조:
    1. 기획이 바뀌어 데이터 항목을 추가해야 할 때, 복잡한 마이그레이션 없이 노션에서 컬럼만 추가하면 즉시 반영됩니다.

단점

  1. 성능 및 속도 제한:
    1. 데이터 양이 많아질수록 쿼리 속도가 체감될 정도로 느려집니다. 특히 API 호출 횟수 제한(Rate Limit)이 엄격하여 동시 접속자가 많은 서비스에는 부적합합니다.
  1. 복잡한 쿼리의 어려움:
    1. RDB처럼 화려한 SQL을 사용할 수 없습니다. 노션에서 제공하고 있는 다중 관계(Relation)를 활용한 복잡한 데이터 조회가 필요하다면 로직이 매우 매우 매우 ……. 복잡해집니다.
  1. 데이터 무결성 위험:
    1. 노션 UI에서 실수로 컬럼 타입이나 이름을 변경하면 연동된 API에서 런타임 에러가 발생할 수 있습니다. 자유도가 높은 만큼 개발자가 책임져야 하는 부분이 많은 것으로 생각하면 됩니다.
  1. 검색 엔진 최적화(SEO) 제약:
    1. 데이터가 노션 API를 거쳐 동적으로 렌더링되므로, 설정에 따라 SEO 최적화에 추가적인 노력이 필요할 수 있습니다.
 

결론

노션은 빠른 검증이 필요한 MVP나 개인용 대시보드를 만들 때 괜찮은 선택지라고 생각합니다. 어차피 운영 서비스라면 확장성과 성능 이슈로 전문(…)DB(PostgreSQL, MongoDB 등)로 옮기는 것은 다들 당연하게 생각할테구요.
성능보다는 생산성이 중요한 토이 프로젝트라면, Notion DB는 괜찮은 선택지라고 생각합니다!
 

참고 사항

노션 API의 가장 큰 장벽은 역시 초당 3회(Average of 3 requests per second)라는 매우 엄격한 Rate Limit입니다. 이를 해결하지 않으면 바로 429 Too Many Requests 에러를 확인할 수 있습니다 핫핫…
하지만 Vercel과 Next.js 환경을 선택한다면 다음과 같은 캐싱 전략을 조합하여 성능을 극대화할 수 있습니다.
참고로, 제가 진행한 이번 프로젝트에서는 가장 쉽게 설정할 수 있는 Next.js의 revalidate 옵션(ISR)을 적용해 보았습니다. 찾아보니 이것만으로도 노션 API 호출의 90% 이상을 줄일 수 있다고 하는데, 만약 실시간성이 조금 더 중요한 서비스라면 하다면 10~30초 정도로 짧게 잡으셔도 무방하다고 합니다.
계층
적용 기술
역할
렌더링
Next.js ISR
주기적으로 노션 데이터를 정적 페이지로 업데이트 (가장 강력함)
데이터 페칭
Upstash (Redis)
API 응답값을 저장해두고, ISR 갱신 주기 사이의 요청을 방어
속도 제어
P-Queue
서버 내 API 호출 함수가 초당 3회를 넘지 않도록 강제 제어
  1. ISR (Incremental Static Regeneration) 활용
    1. Next.js를 사용하신다면 가장 권장되는 방식입니다. 빌드 시점에 페이지를 미리 만들고, 일정 시간마다 백그라운드에서 노션 데이터를 새로고침하는 방식입니다.
      • 동작 방식: 사용자가 접속했을 때 노션 API를 호출하는 것이 아니라, 이미 렌더링된 HTML을 즉시 보여줌
      • 설정 예시 (App Router):
        • // fetch 옵션에 revalidate 시간을 설정 (예: 60초) const res = await fetch(`https://api.notion.com/v1/databases/${DATABASE_ID}/query`, { next: { revalidate: 60 }, headers: { ...notionHeaders } });
      • 장점: 노션 API 호출 횟수를 줄이면서, 사용자에게는 zero-latency(0ms)에 가까운 속도를 제공
 
  1. In-Memory 캐싱 (Server-side)
    1. 서버리스 함수(Vercel Functions) 내에서 동일한 데이터에 대한 반복 요청을 방지하는 전략입니다.
      • 전략: API 응답 결과를 메모리나 외부 저장소에 잠시 보관
      • 도구: lru-cache 같은 라이브러리를 사용
        • 제미니한테 물어보니, 조금 더 규모가 있다면 Upstash(Redis)를 추천하네요.
          • Upstash는 Vercel과 궁합이 좋고, 프리티어가 넉넉하여 토이 프로젝트에서 노션 API 응답을 캐싱하기에 최적
 
  1. Request Batching & Queuing
    1. 여러 개의 요청이 동시에 발생할 때 이를 순차적으로 처리하거나 하나로 묶는 방법입니다.
      • P-Queue 사용: 동시에 실행될 수 있는 프로미스(Promise)의 개수를 제한하는 라이브러리
      • 구현 로직: 노션 API를 호출하는 모든 로직을 하나의 Queue 인스턴스를 통하게 하여, 초당 요청이 3회를 넘지 않도록 강제로 스로틀링(Throttling)을 검
 
4. Client-side Stale-While-Revalidate (SWR / React Query)
서버 부하뿐만 아니라 클라이언트 단에서도 불필요한 재요청을 막아야 합니다.
  • 전략: 사용자가 페이지를 나갔다 들어오거나 포커스를 맞출 때마다 노션 API가 호출되지 않도록 staleTime을 길게 설정
  • 효과: 동일한 세션 내에서는 이미 가져온 노션 데이터를 재사용하여 API 쿼터 소모를 방지
Related Posts
🔎 Practice
Google Antigravity 시작하기 및 실제 프로젝트 구현해보기

Google Antigravity 시작하기 및 실제 프로젝트 구현해보기

Feb 28, 2026

구글 안티그래비티를 실제 프로젝트에 적용하며 얻은 기술적 통찰을 정리한다. 단순한 코드 추천을 넘어 스스로 계획을 수립하고 실행하는 '에이전트'로서의 특징과, 실제 배포 과정에서의 생산성 및 쿼터 관리 효율성을 분석한다. 개발자의 역할이 단순 코더에서 전체 프로세스를 관리하는 디렉터로 변화하는 지점을 가식 없이 기술한다. This post provides a technical review of Google Antigravity based on real-world project application. It explores its capabilities as an autonomous "Agent" that goes beyond code suggestions to planning and execution. The review analyzes productivity gains and the realities of quota management, highlighting the industry's shift where developers evolve from manual coders into strategic directors of AI agents.

AI & Tools
🔎 Practice
Notion API 변경 대응: morethan-log 오류 해결 로그

Notion API 변경 대응: morethan-log 오류 해결 로그

Feb 9, 2026

최근 Notion API 데이터 구조 변경(중첩된 value 속성)으로 인해 morethan-log 블로그 게시물이 로딩되지 않는 오류를 해결합니다. getPosts.ts 및 주요 파일의 코드 수정 방법을 정리했습니다.

NotionAPI
Troubleshooting
🔎 Practice
[Review] AWS Certified Solutions Architect - Associate 합격 후기
Series: 자격증

[Review] AWS Certified Solutions Architect - Associate 합격 후기

Feb 2, 2026

2년 넘게 AWS 실무를 경험한 후, 시스템 아키텍트로 나아가기 위해 도전한 AWS Solutions Architect - Associate (SAA-C03) 단기 합격 후기입니다. 퇴근 후 2시간씩 투자한 밀도 있는 학습 루틴, 덤프(기출) 활용법, 오역 대처법, 그리고 시험장 메모장 활용 팁까지 실전에 꼭 필요한 전략을 확인해 보세요. How I passed the AWS SAA-C03 in just 2 weeks! Read my real-world study strategy, including focused dump analysis, active note-taking on Notion, and practical exam room tips (like checking English originals for translation errors) to boost your score.

AWS
Certificate
Cloud
Solution Architect
🔎 Practice

Ollama를 통한 LLM 모델 벤치마킹 후기

Dec 6, 2025

가벼워서 (프로급) 로컬에서 충분히 잘 동작하고, 결과물 품질도 허용할 수 있을 만큼 좋은 LLM 모델을 찾기 위해 Ollama에 있는 여러 모델을 벤치마킹해봤다. 여기서는 그 과정과 결과를 공유하고, 직접 따라 해볼 수 있는 방법도 정리했다.

Model Benchmarking
Ollama