✅ 프로젝트 개요

  • 목표: Google News 기반 뉴스 수집 및 요약 앱
  • 핵심 가치 (PCA 관점):
    • 고가용성 설계
    • CI/CD 파이프라인 구축 (GitHub Actions + Cloud Build)
    • 비용 효율적인 서버리스 아키텍처

🏗️ 아키텍처 구성도

+--------------------+           +--------------------+
|  User Frontend     | <-------> | Firebase Hosting   |
|  (React Native)    |           | + Firebase Auth    |
+--------------------+           +--------------------+
                                        |
                                        v
                                +------------------+
                                | Firestore (DB)   |
                                +------------------+
                                        ^
                                        |
+----------------------+       +---------------------------+
| Cloud Scheduler      | ----> | Cloud Functions           |
| (매일 크롤링 트리거)  |       | (뉴스 크롤링/요약 실행)     |
+----------------------+       +---------------------------+
                                        |
                                        v
                            +---------------------------+
                            | Cloud Run (LLM API 연동) |
                            +---------------------------+

⚙️ 각 컴포넌트 설명 및 역할

컴포넌트 역할 PCA 고려 포인트
Firebase Hosting 프론트엔드 정적 호스팅 글로벌 CDN 활용으로 고가용성 확보
Firebase Authentication 로그인 및 인증 처리 OAuth2, Anonymous 등 다양한 인증 방식 간편 지원
Firestore 사용자별 뉴스/요약 저장 글로벌 분산 NoSQL, Auto-scaling 및 고가용성 내장
Cloud Functions 뉴스 크롤링 및 요약 자동화 서버리스 처리로 이벤트 기반 트리거 가능 (Cloud Scheduler or HTTP)
Cloud Scheduler 주기적 크롤링 트리거 시간 기반 이벤트, 관리 비용 없음
Cloud Run 뉴스 수집/요약 요청 처리 및 LLM API 호출 서버 (FastAPI 기반) 필요 시만 실행되어 비용 최적화 가능
Cloud Build + GitHub Actions CI/CD 파이프라인 구성 Build/Deploy 자동화, 롤백도 가능

💰 비용 효율 아키텍처 전략

전략 설명
서버리스 기반 Cloud Run, Functions, Firestore 모두 사용량 기반 과금 (idle 시 비용 없음)
Cloud Scheduler + Functions 분리 주기적 트리거만 필요하므로 Compute Engine 등 상시 서버보다 훨씬 저렴
LLM 연동은 Cloud Run에서 제한적으로 사용 필요 시만 호출, API 요금 절감
CI/CD 자동화로 개발 효율 극대화 GitHub Actions → Cloud Build로 배포까지 자동 처리

📌 개발 단계

  1. 뉴스 수집 및 요약 기능
    • FastAPI + Cloud Run
    • Gemini API 연동 + JSON 반환
    • 수동 테스트용 엔드포인트 우선 개발
  2. 사용자 인증 및 저장/조회 기능
    • React Native + Firebase Auth
    • Firestore에 요약 저장, 조회 UI 구현
  3. 자동화 및 고도화
    • Cloud Scheduler + Functions로 주기적 호출
    • Slack 또는 Email 연동 통한 실패 알림 추가 가능

🧱 공통 포함 사항

  • Firestore 스키마 설계
users/
  {userId}/
    summaries/
      {summaryId}: {
        "url": "https://news.example.com",
        "title": "기사 제목",
        "summary": "요약된 본문",
        "createdAt": "2025-06-21T07:30:00Z",
        "source": "Google",
        "category": "Technology",
        "keywords": ["AI", "Google", "ChatGPT"],
        "summaryTokens": 156
      }
  • 필드 설명
필드명 타입 설명
url string 요약한 뉴스의 원본 링크
title string 뉴스 제목
summary string 요약된 본문 내용
createdAt timestamp Firestore 서버 시간 기반 생성일
source string 뉴스 출처 (예: Google, Naver, Daum)
category string 뉴스 카테고리 (예: Technology, Politics, Health)
keywords array Gemini 또는 기타 LLM이 추출한 키워드 리스트
summaryTokens number 요약된 텍스트의 토큰 수 (LLM 비용 추적용)
  • 기술 요약 테이블
항목 기술/서비스 설명
뉴스 수집 Python (requests, BeautifulSoup) 주요 뉴스 사이트 크롤링
요약 처리 Gemini Free API(2.5 Flash) 텍스트 요약 모델 호출
API 서버 Cloud Run (FastAPI) REST API 형태로 제공
인증 Firebase Authentication Google, 이메일 등 연동
저장소 Firestore 요약 결과 사용자별 저장
모바일 앱 React Native (Expo) iOS/Android 앱 구현
스케줄링 Cloud Scheduler + Functions 뉴스 자동 수집/요약 트리거
CI/CD GitHub Actions + Cloud Build 자동 테스트/배포 파이프라인

마무리

이 작업은 요즘 인기 있는 Firebase Only로 고민해 보는 것도 좋겠지만, 처음에 적었 듯 Google Cloud Platform으로 서비스를 구성해보는 것이 목표였다.

뉴스 요약을 시작으로 한 것도 기존에 NAS에서 Google News에서 검색하고 GPT로 요약한 것을 Obisidan에 연동하는 기능이 이미 구현된 것이 있어서 Cloud와 React Native, 특히 모바일에 집중해서 학습이 가능할 것으로 보였다.

이 후에는 Bacekend에 API 설계 구현하고 News Summary를 저장하는 것을 먼저 하게 될 것 같다. 좀 더 익숙하기도 하고, 이 후에는 React Native에 집중해서 학습 할 수도 있을 것 같고 좀 더 편할 것 같기도 하다.

 

참고 링크

https://github.com/blcktgr73/GCPNewsPortal

 

+ Recent posts