서버리스 애플리케이션 구현 - 서비스 기획

whdbtjd·2025년 3월 24일

캡스톤

목록 보기
2/3
post-thumbnail

1. 프로젝트 구상 배경 및 주요 기능

최근 AWS에 대해 공부하면서, 이론적으로만 배웠던 내용을 실제로 구현해볼 수 있는 애플리케이션 주제가 없을까 고민하게 되었다. 우선 내가 평소에 관심 있는 것들부터 떠올려보았다. 나는 평소 뉴스를 자주 찾아보는 편이지만, 해외 뉴스는 유튜브에서 누군가 정리해준 내용을 간단히 접하는 경우가 대부분이었다.
이런 경험을 바탕으로, 해외 주요 뉴스를 간편하게 정리해서 읽을 수 있는 애플리케이션이 있다면 나에게도 정말 도움이 많이 될 것 같았고, 이를 AWS의 다양한 서비스들을 활용해 서버리스 구조로 구현해본다면, 실용성과 학습 두 측면 모두에서 큰 도움이 될 것이라 생각하여 이 아이디어를 구상하게 됐다.

2. 아키텍처 구성

프론트 엔드

프론트는 vue.js를 활용할 예정이다. 작년까지 spring위주의 백엔드 공부만 했었던 터라 프론트 개발에 대한 경험은 거의 없다. 때문에 전체적인 UI나 디자인 같은 경우는 높은 수준으로 구현하긴 힘들 것 같지만 프로젝트 목적에 부합하는 기능적인 부분들은 모두 구현할 예정이다.
구현한 페이지는 최종적으로 Amazon S3버킷을 통해 정적 웹사이트 형태로 배포할 예정이다.

백엔드

기존에 로컬에서 작업하던 모든 과정을 AWS 콘솔에서 해결한다. SpringBoot를 사용했을 땐 컨트롤러 계층에서 API요청을 받고 서비스계층에서 요청에 따른 비즈니스 로직을 처리했다면, 이번에는 Amazon API Gateway를 통해 api요청 및 응답을 처리하고 Amazon Lambda를 통해 로직을 처리한다.
이처럼 코드를 로컬 서버에 배포하거나 별도의 웹서버를 구성하지 않고, AWS 리소스만으로 간단하게 백엔드 로직을 구성하는 것이 목표다.

데이터 수집 파이프라인

이는 아래의 과정이 일정 주기로 실행된다.

1. Amazon EventBridge를 활용하여 Amazon Lambda에 트리거를 보냄

2. 트리거를 받으면 Lambda에선 내장된 함수로 뉴스 api를 호출하여 애플리케이션 요구 사항에 맞게 데이터를 파싱한다. 파싱한 후 뉴스 본문을 스크래핑

3. 이렇게 파싱된 데이터들을 Amazon Translate를 통해 한글로 번역한 후 Amazon DynamoDB에 저장

4. DB에 TTL값을 설정하여 일정 기간이 지난 데이터는 삭제하고, 프리티어 한도를 초과하지 않게 조정


3. 개발 순서 및 계획


1. 뉴스 API 테스트 및 파싱 코드 작성

  • Lambda 함수에서 사용할 기본 뉴스 API 호출 로직 작성

  • JSON 응답 구조 파악 및 필요한 필드만 추출

  • trafilatura 라이브러리로 본문 스크래핑

2. Lambda 함수 생성 및 테스트

  • Python Lambda 코드 구현

  • 뉴스 파싱 + 번역 + DynamoDB 저장까지 단일 함수로 구성

3. Amazon EventBridge 설정 (주기적 실행)

  • Lambda 함수를 24시간마다 자동 실행하도록 스케줄링

4. DynamoDB 테이블 구성 및 TTL 설정

  • 뉴스 항목을 저장할 테이블 생성 (필드 구조 정의)

  • 오래된 뉴스 자동 삭제를 위한 TTL 설정

5. API Gateway 연동 (백엔드 API 구성)

  • 뉴스 조회용 API 구성

  • Lambda와 연결된 엔드포인트 생성(추후 프론트에서 이 API 호출)


6. 프론트엔드(Vue) 개발 및 연동

  • Vue로 기본 UI 구성 (카테고리 선택, 뉴스 리스트 등)

  • Axios 등으로 API 호출하여 뉴스 데이터 표시

  • S3를 통한 정적 웹사이트 배포

  • Vue 앱 빌드 후 S3 버킷에 업로드

  • 정적 웹 호스팅 설정 및 퍼블릭 액세스 설정


4. 학습 목표

애플리케이션을 직접 구현하면서 서버리스라는 개념에 대해 더 깊게 배우는 계기가 되었으면 좋겠다. 이론적으로만 알고있던 서버리스 개념이지만, 이번 프로젝트를 통해 서버리스 아키텍처가 어떤 점에서 효율적인지 직접 체감해보자 하며, 이 과정에서 추후 학습할 Terraform을 대비해 AWS의 보다 다양한 기능들을 접하고, 콘솔에 익숙해지는 경험을 쌓고자 한다.

profile
취업ㄱㄱㄱ

0개의 댓글