들어가며 뉴스낵의 백엔드는 메인 API 서버, AI 서버, 오케스트레이터라는 성격이 전혀 다른 세 시스템이 하나의 데이터베이스를 공유하는 구조다. 이 복합적인 시스템을 프로덕션 환경에 올리기 위해서는 단순히 서버를 켜는 것을 넘어, 보안·비용·재현성 세 가지를 동시에 만족하는 인프라 아키텍처를 설계해야 했다. 이 글에서는 초기 VPC 설계부터 Ng...
배경: 인프라 고정 비용 최적화의 필요성 뉴스낵의 MVP 개발을 마무리하고 운영이 시작되자 인프라 고정 비용에 대한 고려가 필요해졌다. 초기에는 안정성을 명목으로 메인 API 서버(Spring Boot), AI 서버(FastAPI), 오케스트레이터(Airflow)을 각각 서로 다른 3대의 분리된 EC2 t3.small (x86 아키텍처, 2GB RA...
들어가며 이전 글에서는 단일 노드 환경에서 Airflow를 도입하여 뉴스낵의 핵심 데이터 파이프라인을 구축한 경험을 공유했다. 하지만 이 파이프라인은 운영 단계에서 LLM API의 장애 등 통제 불가능한 외부 변수로 인한 한계를 보였다. 이 글에서는 파이프라인의 단일 장애점과 데이터 정합성 문제를 해결하기 위해, 시스템의 제어권을 Airflow로 ...
들어가며 뉴스낵은 매시간 언론사 RSS를 수집하고, 매일 2회 기사들을 바탕으로 상위 이슈를 선별하고, 각 이슈들에 대한 AI 기사(뉴스툰)를 만든 후, 최종적으로 오늘의 뉴스낵까지 만드는 긴 호흡의 데이터 생성 프로세스를 거친다. flowchart LR A([기사 수집]) --> B([이슈 클러스터링]) B --> C([...
들어가며 뉴스낵은 매일 새로운 기사가 쏟아지는 뉴스 피드 중심의 서비스다. 피드형 애플리케이션에서 조회 성능은 사용자 경험(UX)과 직결된다. 백엔드 API를 설계할 때 가장 먼저 선택해야 했던 것이 페이징 전략이었다. 기술적 선택지는 크게 두 가지였다. Offset 기반: SELECT ... LIMIT N OFFSET M으로 원하는 페...
들어가며 서비스를 운영하다 보면 외부 요인으로 인한 서비스 장애를 마주하곤 한다. 1월 29일 오후 5시, 팀 계정으로 사용하던 구글 계정에 접속하자 로그아웃 상태와 함께 본인인증 화면이 나타났다. 인증을 시도하자 계정이 보안 정책 위반으로 정지됐다는 화면이 출력되었다. 이의신청만 가능했고 명확한 복구 일정은 알 수 없는 상황이었다. 뉴스낵...
들어가며 뉴스낵 백엔드 시스템은 FastAPI를 기반으로 수많은 외부 API(LLM 호출, AWS S3 통신 등)와 맞물려 돌아간다. 이러한 I/O 바운드 작업에서 병목을 막고 높은 처리량을 달성하기 위해 비동기(async/await) 프로그래밍을 도입했다. 또한 FastAPI의 BackgroundTasks를 사용하여 API 요청 시 즉각적으로 HT...
들어가며 AI에게 4장을 요청했더니 만들어낸 1장의 4컷 만화 뉴스낵은 기사 본문을 바탕으로 AI가 상황에 맞는 4컷짜리 뉴스툰(웹툰, 카드뉴스)를 그려낸다. 하지만 단순히 LLM에게 “만화 4장을 그려달라”고 요청하면 4장 미만의 이미지가 생성되는 경우가 허다했다. 그렇다면 각각의 장면 프롬프트 4개를 따로 처리하면 어떨까? 하지만 이 방식은...
이전 글에서 이어지는 글입니다. 이 글은 오늘의 뉴스낵 생성 워크플로우 구축기를 다룹니다. 들어가며 이전 포스팅에서 다루었던 AI 기사 작성 워크플로우가 동적인 분기 중심이었다면, 이번에 다룰 ‘오늘의 뉴스낵’ 워크플로우는 여러 기사를 하나로 통합하는 흐름에 초점을 맞추고 있다. 오늘의 뉴스낵은 사용자가 선택한 여러 개의 뉴스 기사들을...
이 글은 뉴스낵 AI 엔진의 두 가지 주요 워크플로우 중 AI 기사 작성 워크플로우의 구축 과정을 설명합니다. 뉴스낵 첫 화면 들어가며 뉴스낵은 Airflow 기반의 파이프라인을 통해 매일 다양한 언론사에서 수집된 기사들을 유사한 내용끼리 묶어 ‘이슈’ 단위로 관리한다. AI 엔진은 이렇게 묶인 기사들을 토대로 뉴스툰이나 오늘의 뉴스낵을...