1. 시스템 데이터 흐름 및 아키텍처 개요
파이프라인은 데이터 적재, 파싱, 렌더링의 3단계 레이어로 구분된다. 각 단계별 핵심 메커니즘과 처리 기술은 다음과 같다.
| 단계 (Stage) | 백엔드 영역 (Notion) | 프론트엔드 영역 (Streamlit) | 핵심 처리 기술 (Tech Stack) |
| 1. 데이터 적재 | 마스터 데이터베이스 내 포스트 생성 | API 호출 트리거 및 캐싱 적용 | notion-client SDK / @st.cache_data |
| 2. 데이터 파싱 | 페이지 블록 구조화 (JSON Block-API) | JSON 오브젝트의 마크다운 변환 | 구조적 딕셔너리 디코딩 (Parsing) |
| 3. 동적 렌더링 | 리치 텍스트 및 미디어 자원 관리 | 웹 컴포넌트 매핑 및 출력 | st.markdown() / st.columns() |
2. 장문(Long-form) 콘텐츠 처리를 위한 3대 핵심 설계 원칙
기술 블로그의 특성상 텍스트의 길이가 길고 다량의 미디어 및 코드 블록이 포함되므로, 시스템 부하 최소화와 가용성 확보를 위해 아래의 아키텍처적 제안을 반드시 준수해야 한다.
가. 블록 타입별 재귀적 파싱 (Recursive Parsing) 알고리즘 구현
단일 텍스트가 아닌 복수의 독립된 '블록(Block) 오브젝트' 배열로 반환한다. 텍스트가 장대해질수록 코드 블록, 인용구, 토글, 콜아웃 등 다양한 블록 타입이 중첩 구조를 형성한다. 따라서 파서(Parser) 설계 시 각 블록의 type 필드를 식별하고, 상호 참조 구조를 재귀적으로 추적하여 누수 없이 마크다운 표준 규격으로 변환하는 로직을 견고히 구축해야 한다.
나. 메타 인덱스 데이터베이스와 상세 본문 데이터베이스의 구조적 분리
단일 데이터베이스 내에 대용량 본문 텍스트와 메타데이터를 동시에 상주시키는 방식은 메인 페이지 로딩 속도를 심각하게 저하시킨다.
- 메타 데이터베이스: 제목, 작성일, 카테고리 태그, 게시 여부(Status) 등 최소한의 인덱싱 정보만 보유하여 메인 화면의 리스트를 신속하게 렌더링한다.
- 본문 상세 데이터: 사용자가 특정 아티클을 선택하여 진입하는 시점에 한하여, 해당 페이지 고유 ID(page_id)의 하위 블록 서브트리만 개별 쿼리(retrieve)하도록 람다식 형태의 지연 로딩(Lazy Loading)을 구현한다.
다. API 호출 제한(Rate Limit) 대응을 위한 캐싱 기법 고도화
노션 API는 초당 요청 횟수에 제한이 존재하므로, 사용자의 페이지 요청마다 API를 상시 호출하는 구조는 상용 서비스에 부적합하다.
스트림릿의 @st.cache_data(ttl=3600) 데코레이터를 데이터 수집 함수에 적용하여, 한 번 파싱된 데이터는 최소 1시간 동안 메모리 내에 상주하도록 동적 캐싱 플래그를 설정해야 한다. 이는 외부 API 트래픽을 저감하고 렌더링 속도를 극대화하는 필수 요건이다.
나머지 시간은 태블로 개인과제 ...
'내일배움캠프(QA,QC_5기)' 카테고리의 다른 글
| [내일배움캠프] QA/QC_5기 ( 53일차 ) (0) | 2026.05.22 |
|---|---|
| [내일배움캠프] QA/QC_5기 ( 52일차 ) (0) | 2026.05.21 |
| [내일배움캠프] QA/QC_5기 ( 50일차 ) (1) | 2026.05.19 |
| [내일배움캠프] QA/QC_5기 ( 49일차 ) (0) | 2026.05.18 |
| [내일배움캠프] QA/QC_5기 ( 40일차 ) (0) | 2026.05.01 |