커리큘럼
home
React
home

GUBU(구독부자)

Specialty
Node.js
FE Github
BE GitHub
Specialty
날짜

프로젝트 소개

Logo / mascot
서비스 시연 영상
서비스 시연 영상
서비스 시연 영상
서비스 시연 영상
link iconGuBuThe most powerful no-code platform <  GUBU서비스 로 가려면.. >
서비스 시연 영상
**<  GUBU서비스 로 가려면.. >**
link iconGuBuThe most powerful no-code platform <  GUBU서비스 로 가려면.. >
서비스 시연 영상
link iconGuBuThe most powerful no-code platform <  GUBU서비스 로 가려면.. >
서비스 시연 영상
link iconGuBuThe most powerful no-code platform <  GUBU서비스 로 가려면.. >
서비스 시연 영상
link iconGuBuThe most powerful no-code platform <  GUBU서비스 로 가려면.. >
서비스 시연 영상
link iconGuBuThe most powerful no-code platform <  GUBU서비스 로 가려면.. >
서비스 시연 영상
link iconGuBuThe most powerful no-code platform <  GUBU서비스 로 가려면.. >
서비스 시연 영상
GitHub Link
• Service Github
• Batch Github
발표 영상
“대 구독 시대”에 필요한 구독 관리 사이트
프로젝트 목표 : 사용자 구독 플랫폼 관리 서비스
프로젝트 설명 : 저희 구부(구독 부자)는 사용자들이 이용하고 있는 다양한 구독 서비스(유튜브, 웨이브, 왓챠 등)를 편리하고 간단하게 관리할 수 있고, 언제 어떤 서비스를 얼마나 이용하고 있는지 쉽게 파악할 수 있습니다. 특히, 구독 결제일 하루 전에 알림을 제공하여 중요한 결제를 놓치지 않고, 구독 정보를 체계적으로 관리할 수 있는 서비스를 제공합니다.

서비스 기획 의도

 내가 구독하는 플랫폼을 한 번에 볼 수 있는 ”구독 서비스 현황 확인”
 결제 날을 미리 알려주는 “구독 서비스 결제일 알림”
 구독 플랫폼의 계정 정보를 안전하게 저장하는 ”구독 계정 정보 보안”
 인기 플랫폼을 한 눈에 볼 수 있는 ”구독 서비스 랭킹 제공”
Search

서비스 아키텍처

기술 스택 및 기술적 의사결정

BACKEND

Tech Stack
도입 이유
Redis
백엔드 API 구현 시 평균 응답 속도를 300ms로 목표를 잡았습니다. Redis Cache를 활용하면 데이터베이스에서 직접 조회하는 것보다 처리 속도가 훨씬 빠르다는 것을 알게 되었고, 실제로 Redis Cache를 적용하여 테스트를 진행한 결과 Index Key 추가만으로 얻었던 성능 개선보다 60.82% 더 빠른 응답 속도를 달성할 수 있었습니다. 이를 바탕으로, 데이터 변동이 적고 자주 호출되는 데이터에 Redis Cache를 활용하여 더욱 빠른 응답 속도를 확보했습니다.
Batch
저희 서비스는 웹 사용자가 머무는 시간이 짧아, 실시간 알림이 반드시 필요하지 않다는 점을 고려했습니다. 따라서 실시간 알림 방식(소켓, SSE) 대신 배치 방식을 채택하여 특정 시간에 알림을 일괄적으로 생성하도록 구현했습니다. 이 방식은 리소스 사용을 최적화할 뿐만 아니라 서버 부하를 줄여, 전체 시스템의 안정성과 효율성을 크게 향상하는데 기여했습니다.
Scheduler
이번 프로젝트에서 직접 API를 호출하지 않고 원하는 시간에 함수가 자동으로 실행되도록 하기 위해, Nest.js에서 제공하는 스케줄링 패키지를 활용하기로 결정했습니다. 결제일 알림 전송 및 플랫폼 랭킹 산정 기능에 사용해 본 결과, Cron 표현식을 통해 정확한 시간에 함수가 실행되는 것을 확인할 수 있었습니다.
Lambda
저희는 배치 작업에 있던 알림 기능을 AWS Lambda로 변경했습니다. 그 이유는, 해당 배치 작업이 하루에 한 번만 실행되기 때문에 지속적으로 서버를 유지하는 것보다 서버리스 환경에서 필요 시간에만 실행하는 것이 더 효율적이고 경제적이라고 판단했기 때문입니다. Lambda는 일정 주기에 맞춰 자동으로 실행되며, 필요할 때만 리소스를 사용하기 때문에 비용 절감 효과도 큽니다. 그 결과 효율성을 극대화하고, 유지보수의 편의성을 높이는 데 큰 기여를 했습니다.

FRONTEND

Tech Stack
도입 이유
Bubble.io
BE 개발에 더 집중하기 위해 FE 페이지를 빠르게 구현할 수 있는 노코드 툴을 조사하던 중 API 호출이 용이하고 저희 서비스에 맞는 페이지 개발에 적합한 Bubble.io를 찾았습니다. 설계단계에서 테스트 후 실제 서비스에 적용하여 프론트엔드 페이지 제작에 시간 효율성을 높이고 배포를 원활하게 진행했습니다.

Database

Tech Stack
도입이유
TypeORM
프로젝트에서 타입 안정성을 높이기 위해 TypeORMPrisma를 비교한 결과, TypeORM이 관계형 데이터베이스의 복잡한 관계 설정을 잘 관리하고 TypeScript와의 호환성도 뛰어나 우리 프로젝트에 적합하다고 판단했습니다. TypeORMEntity 기능을 통해 데이터베이스 구조를 명확히 정의하고, 타입 오류를 사전에 감지할 수 있어 개발 효율성을 높일 수 있었습니다. 따라서, TypeORM을 사용하여 복잡한 쿼리와 관계 설정을 효과적으로 처리하고 타입 안정성을 유지했습니다.

Test

Tech Stack
도입이유
Artillery
개발한 API의 성능 개선을 위해 성능 테스트를 진행했습니다. 여러 성능테스트 도구 중 다양한 시나리오를 적용하여 대규모 트래픽에 대한 부하 테스트를 진행할 수 있는 Artillery를 선택했고, HTMLJSON 형식으로 가독성 좋은 통계 자료로 분석이 용이하다는 것도 확인했습니다. 실제 Artillery를 사용하여 테스트 후 결과를 바탕으로 성능 개선을 달성할 수 있었습니다.
Bulk test
API 구현 후 최적화하기 위해 가장 많은 데이터를 처리하는 결제 알림 생성 로직을 리팩토링했습니다. TypeORM의 SAVE메서드와 BULK INSERT 쿼리문을 비교 결과 SELECT를 진행하는 SAVE보다 BULK INSERT 쿼리문을 사용하는 경우 속도가 훨씬 빠르다는 것을, 테스트를 통해 확인했고 해당 로직에 적용하여 소요시간 86%를 감소하는 최적화를 진행했습니다.

DevOps / Infra

Tech Stack
도입이유
GitHub Action
초기 개발 환경에서는 코드가 자주 변경되고 업데이트되기 때문에 배포 작업의 자동화를 목표했습니다. EC2 인스턴스와 배치 작업, 배포 과정에서 문제가 없음을 확인하고 서비스에 GitHub Actions 기반의 CI/CD 파이프라인을 적용하여 배포 작업을 자동화하고 속도와 안정성을 크게 개선했습니다.
AWS EC2
서버를 운영하면서 유지보수와 관리의 어려움을 해결하기 위해 AWS EC2를 도입했습니다. EC2는 신속한 배포와 자동화 지원, CI/CD 통합으로 인프라 관리 효율성을 크게 향상, EC2를 통해 빠른 배포와 오토스케일링을 검증하였습니다. RDS, S3, Lambda 등 다양한 AWS 서비스와의 통합으로 고가용성과 장애 복구를 자동화할 수 있었습니다. 이를 통해 개발 및 운영 속도와 비용 효율성을 크게 향상했습니다.
AWS CloudWatch
결제 알림 생성 로직을 Lambda로 이동 후 AWS의 서비스를 활용하여 모니터링 하기 위해 조사하였고 통합 관리가 가능한 CloudWatch 서비스가 있는 것을 알았습니다. Lambda 함수 실행 시 모든 로그를 기록하여 에러의 원인을 파악할 수 있고, SNS 서비스과 연결하여 에러 발생 시 slack으로 알림을 받을 수 있다는 것을 확인 후 적용했습니다.
AWS IAM
팀원 모두가 AWS에 접근하며 안전하게 관리하기 위해 root 계정 대신 IAM(Identity and Access Management)을 사용했습니다. 세분화된 접근 권한 관리가 가능하다는 것을 확인하고 현업에서 사용 중인 사례를 바탕으로 IAM 계정을 생성하여 팀원과 공유하여 AWS의 기능 중 람다를 함께 구현했습니다.
Slack API
서버 및 데이터베이스 오류에 신속하게 대응하기 위해, 에러 발생 시 알림을 받는 시스템을 구축하고자 했습니다. 저희는 Slack API를 통해 배치 작업에서 캐시 데이터 생성이 실패했을 때와 AWS Lambda에서 결제 알림 생성이 실패했을 때 Slack으로 알림을 받을 수 있도록 구현했습니다.
GitHub Action
AWS
Slack API

트러블 슈팅

Search

추후 기술적인 도전 계획

유저 테스트 결과 정리
유저 테스트 결과 분석 및 피드백 자체 평가
긍정 평가
각각의 플랫폼 평점 및 후기
플랫폼 랭킹 TOP10
결제 전 하루 전 알림
많은 서비스를 한 번에 볼 수 있다.
부정 평가
이용 속도가 너무 느리다
사이트 내용 안내가 너무 부족하다.
편의성 개편
새로운 의견
구독 가격 자동 갱신 시스템
자동 해지 시스템
결제 대행 (연동 시스템)
구독 검색 기능
모바일 어플화

유저 피드백 개선 방향 및 계획

앱 서비스 구현 과제
구독 검색 기능
자동 결제 및 구독 해지
성능 개선 과제
속도 개선
편의성 및 안내 개편