가디언 번역&요약 뉴스레터 서비스 구축기
나디언 뉴스레터 기획, 개발 과정을 요약하였습니다.
기획 의도
1. 왜 만들게 되었는가?
저는 언론 기사를 읽는걸 즐겨하는데요, 국내 언론사 기사는 토픽이 한정적이며, 필터링된 정보만 제공되다 보니 세세한 내용이 누락되는 것이 아쉬웠습니다.
그렇다보니 여러 외신을 읽는걸 시도하고 있는데, 다음과 같은 문제점들을 마주했습니다.
제가 느낀 문제점(Problem):
영어로 된 원문 기사는 읽는 데 시간이 오래 걸린다.
기사를 읽었지만 부수적인 정보가 많아 핵심을 파악하기 어렵다.
시간을 들여 읽었더니 내가 별로 관심 없는 토픽이었다.
→ 핵심 내용 파악이 오래 걸린다.
2. 해결책 구상
위 문제를 해결하기 위해 다음과 같은 방안을 고민했습니다.
외신을 한국어로 번역하여 볼 수 있을까?
핵심만 요약하면서도 부수적인 정보도 놓치지 않을 수 있을까?
내가 관심 있는 분야의 기사만 자동으로 정리해서 받아볼 수 있을까?
3. 최종 목표
위 고민을 바탕으로 다음과 같은 서비스를 구상했습니다.
내가 관심 있는 분야(Technology)의 외신에서
핵심 내용을 한국어로 번역하고 요약
핵심 내용을 이해하는데에 도움이 될 부수 정보 설명
2번과 3번을 뉴스레터로 담아 매일 정해진 시각에 발송
비슷한 문제를 겪고 있는 사람들도 있을 것 같아 서비스화하기로 결정했습니다.
개발 과정
1. 실행 환경 선택
먼저, 로직을 어디에서 실행할지를 고민했습니다.
로컬 환경에서 실행할 것인가?
클라우드 서버에서 실행할 것인가?
결론: 클라우드 서버를 선택. 이유는 로컬 환경이 동작 여부와 상관없이 정해진 시간에 로직이 실행되어야 하기 때문입니다.
2. 클라우드 서버 선택
서버를 클라우드에서 실행하기로 결정한 후, 고려해야 할 사항은 다음과 같습니다.
어떤 클라우드 서버를 이용할 것인가?
어떤 CPU 및 스토리지를 사용할 것인가?
선택: Amazon EC2
EC2를 선택한 이유
로직이 복잡하지 않다 → 텍스트 처리 작업 위주라 고성능 CPU가 필요 없음.
스토리지가 많이 필요하지 않다 → 구독자 정보와 기사 데이터만 저장하면 됨.
Free Tier에서 저사양 인스턴스(t2.micro, t3.micro)를 제공한다.
Free Tier란?
Amazon 계정을 생성하면 12개월 동안 적용됨.
EC2는 Free Tier 기간 동안 t2.micro를 750시간/월 무료 제공.
- 즉, 한 달 내내 1개의 인스턴스를 24시간 구동 가능.
EC2와 함께 사용하는 스토리지 서비스(EBS)도 무료 제공량(30GB) 있음.
3. 기사 데이터 가져오기
두 가지 방법이 있음:
API로 가져오기
웹 스크래핑
💡 스크래핑은 대부분의 서비스에서 금지되므로 API를 제공하는 언론사를 찾기로 결정.
API를 제공하는 외신 탐색
언론사 | 지원 여부 |
뉴욕타임즈 | ❌ 기사 제목과 요약만 제공 (본문 X) |
가디언(The Guardian) | ✅ 기사 본문까지 API로 제공 |
결론: 가디언의 API를 사용하여 Technology 섹션의 기사를 제공.
최신 뉴스를 다루기 위해 매일 10개 기사를 가져오기로 결정.
뉴스레터를 매일 읽지 않는 사용자도 고려하여 다소 여유롭게 기사를 수집.
4. 기사 요약 및 번역
목표 Output
핵심 개념을 설명
가독성을 고려한 요약 제공
원문 + 한국어 번역 결과 함께 배치
사용한 기술 스택
Microsoft Azure
요약: ❌ 추출 요약 방식 → 가독성이 낮음
번역: ❌ 괜찮긴 하지만 품질이 만족스럽지 않음
Hugging Face AI 모델
요약: ✅ facebook/bart-large-cnn 모델이 가장 우수한 성능
번역: ✅ 요약 퀄리티가 높아서 번역도 퀄리티가 높게 나옴
문제점: t2.micro 인스턴스의 RAM이 1GB로 1.6GB 이상의 가중치를 갖고 있는 모델 로드 불가능(최소 4GB 필요)
Gemini API (최종 선택)
✅ 요약 성능 우수
✅ 번역 성능 만족
✅ Free API 호출량 충분(15 RPM, 1,000,000 TPM, 1,500 RPD)
→ 최적의 선택: Google Gemini 1.5 Flash 모델
5. EC2 인스턴스에 배포
Python 3.9 가상환경에서 실행
API를 호출하여 가디언 기사를 가져오고, Gemini로 요약 및 번역
EC2에서 주기적으로 실행하도록 스케줄링(cron)
6. 도메인 구매
SPF, DKIM, 그리고 DMARC을 인증해야 메일을 보낼 수 있는데, DNS 등록을 위해선 도메인 구매 필요
여러 도메인 구매 사이트를 비교한 결과 dynadot에서 lifejourney.dev를 1년 신규로 구매
7. 이메일 발송 서비스
이메일을 보내기 위해서는 Amazon SES, Brevo, Mailchimp 등의 이메일 발송 서비스 이용 필요
가격적인 측면에서는 Amazon SES가 매우 우수하나, 신규 계정이거나 발송 기록이 없으면 AWS Trust & Safety Team의 허가를 받기 어려움
하루 300통의 이메일을 무료로 보낼 수 있는 Brevo를 선택
최종 정리
시도했던 기술 스택
방법 | 요약 | 번역 | t2.micro RAM | 결과 |
Azure | ❌ 추출 요약 | ❌ 품질 부족 | ✅ API 사용 | 실패 |
Hugging Face | ✅ 성능 우수 | ✅ 번역 우수(Azure) | ❌ RAM 부족 | 실패 |
Gemini API | ✅ 최적의 성능 | ✅ 번역 우수 | ✅ API 사용 | 성공 |
최종 구현 과정
가디언 API를 통해 Technology 기사 최신순으로 10개 가져오기
Gemini API를 활용하여 요약 + 번역
EC2에서 매일 아침마다 1,2번 로직 실행하도록 스케쥴링
dynadot에서 이메일 도메인 구매
Brevo를 통해 이메일 발송
개발 과정에서 여러 시행착오가 있었지만, 최종적으로 Google Gemini API를 활용한 자동 뉴스레터 시스템을 구축할 수 있었습니다.
소감
Amazon의 서비스(EC2, EBS, SES)를 써보면서 한계점을 느낄 수 있어서 좋았습니다.
EC2는 Free tier에서 제공되는 인스턴스의 RAM이 적어서 AI 모델을 로드하지 못함.
EBS는 Free tier에서 30GB까지도 제공하나 한번 늘린 용량은 다시 줄일 수 없음.
SES는 타 서비스에 비해 압도적인 가격 경쟁력을 갖고 있으나 심사 과정을 통과하기 어려움.
도메인에 대해 이해할 수 있었습니다.
TLD, SLD등 도메인 DNS 계층 구조.
미래 가치를 고려하여 lifejourney.dev 구매
namecheap, godaddy, dynadot 등 플랫폼마다 같은 도메인이더라도 신규, 갱신의 금액이 매우 다름.
AI 모델을 비교하고 프롬프트 엔지니어링을 해볼 수 있었습니다.
Hugging Face에서 뉴스 요약과 관련된 여러 모델을 로드하여 테스트 진행.
general purpose AI 모델(Gemini)에서 원하는 output 출력을 위해 프롬프트 엔지니어링 진행.
Next step
피드백을 받아서 다음과 같은 task들이 백로그에 들어와있습니다. 빠른 시일내에 반영하도록 노력하겠습니다.
구독 신청 페이지에서 구독 요청이 성공적으로 발생했음을 유저에게 모달 혹은 확인 이메일 발송으로 알림
메일 수신함에서 볼 수 있는 preview text 추가
Technology 외의 다른 섹션도 선택해서 구독하는 기능
그동안의 번역&요약된 기사를 한눈에 보는 웹페이지
마지막으로…
이렇게 만들어진 나디언 뉴스레터 무료 구독은 아래 링크에서 신청하실 수 있습니다.