✅ 프로젝트 개요
- 목표: 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로 배포까지 자동 처리 |
📌 개발 단계
- 뉴스 수집 및 요약 기능
- FastAPI + Cloud Run
- Gemini API 연동 + JSON 반환
- 수동 테스트용 엔드포인트 우선 개발
- 사용자 인증 및 저장/조회 기능
- React Native + Firebase Auth
- Firestore에 요약 저장, 조회 UI 구현
- 자동화 및 고도화
- 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
'Cloud Technology' 카테고리의 다른 글
| Ubuntu 24.04 Docker 설정- 트러블슈팅 가이드 (1) | 2026.01.11 |
|---|---|
| [GCP Project1] 고가용 저비용 뉴스 요약 서비스 구현 (2) | 2025.09.10 |
| Google Cloud Platform Professsional Cloud Architect (0) | 2025.06.04 |
| 리눅스 프로세스에서 클라우드까지: 2 가상화와 클라우드 (3) | 2025.05.28 |
| 리눅스 프로세스에서 클라우드까지: 1 컴퓨터 구조 (2) | 2025.05.21 |