본 프로젝트는 [SW 프리캡스톤 디자인 교과목]을 통해 [다우기술]과 연계하여 진행되었습니다.
Introduction
디지털 정보화 시대에도 여전히 디지털 서비스를 이용하기 어려운 계층이 존재합니다. PPURISAM은 이러한 문제를 해결하기 위해 탄생한 서비스로, 음성 인식 기술과 생성형 AI를 결합해 누구나 쉽고 빠르게 문자와 이미지를 생성하고 전송할 수 있는 솔루션을 제공합니다.
이 서비스는 음성 인식 기반의 텍스트 입력과 문자와 어울리는 이미지 생성이라는 차별화된 기능을 통해 사용자 경험을 혁신합니다. 특히, 고령층과 디지털 소외 계층을 포함한 다양한 사용자들에게 직관적이고 접근 가능한 서비스를 제공합니다. 예를 들어, 고령층 사용자는 음성 명령만으로 손쉽게 메시지를 작성하고 공유할 수 있어 디지털 소통의 장벽을 낮출 수 있습니다.
또한, 음성인식이 가능한 챗봇 시스템을 통해 사용자는 직관적인 UI와 가이드라인에 맞는 최적의 메시지와 이미지를 간편하게 생성하고 초보자도 쉽게 활용할 수 있습니다.
지금 바로 PPURISAM과 함께 디지털 소통의 새로운 가능성을 경험해보세요.
✨ DEMO
[회원가입&로그인]
[홈화면]
[주소록]
[문자 보내기]
#실제 문자 화면
[발송조회]
[챗봇]
#실제 문자 화면
[마이페이지]
💾 ERD
⚙️ System Architecture
컨테이너 기반 가상화 플랫폼인 Docker를 사용하였습니다. Docker는 가상머신보다 가벼우며, 이미지와 컨테이너 레이어를 통해 빠른 실행 속도를 제공합니다.
이를 통해 팀원 간의 개발 환경과 운영 환경의 차이로 인한 문제를 줄일 수 있었으며, 일관된 환경에서 효율적으로 작업할 수 있었습니다. 또한, Docker Compose를 활용하여 여러 개의 컨테이너를 묶어 손쉽게 관리할 수 있었습니다.
Amazon EC2는 저희 애플리케이션에 적합한 인스턴스를 설계하고 간편하게 생성할 수 있는 클라우드 서비스입니다. EC2를 통해 필요에 따라 확장 가능한 인프라를 구축할 수 있었으며, 유연한 리소스 관리가 가능하여 개발 및 운영의 효율성을 높일 수 있었습니다.
NGINX는 비동기 이벤트 기반으로 설계되어 대규모 동시 연결을 효율적으로 처리할 수 있습니다. 또한, 보안을 강화하기 위해 HTTPS를 사용하여 데이터 전송의 안전성을 보장하였습니다. NGINX의 높은 안정성과 낮은 리소스 사용량 덕분에 애플리케이션의 응답 속도를 향상시킬 수 있었습니다.
프론트엔드 개발에는 React와 Vite를 함께 사용하여 사용자 인터페이스(UI)를 구축하였습니다. React의 컴포넌트 기반 구조 덕분에 재사용 가능한 UI 요소를 쉽게 만들 수 있었으며, 동적인 사용자 경험을 제공하는 데 큰 도움이 되었습니다.
Vite는 빠르고 효율적인 빌드를 가능하게 하며, 개발 중 즉각적인 모듈 핫 리로드(HMR)를 지원하여 생산성을 크게 향상시켰습니다. 이 두 기술의 결합으로 개발 속도와 효율성을 극대화할 수 있었습니다.
백엔드 프레임워크로는 Spring Boot를 선택하였습니다. Spring Boot는 학습이 용이하고 API 개발에 최적화되어 있어 빠르고 효율적인 백엔드 개발을 가능하게 했습니다. 또한, 다양한 플러그인과 확장성을 제공하여 프로젝트의 요구사항에 유연하게 대응할 수 있었습니다.
데이터베이스로는 MySQL을 사용하였습니다. MySQL은 안정적이고 성능이 우수한 오픈 소스 관계형 데이터베이스 관리 시스템으로, 높은 동시성을 지원하며 빠른 데이터 읽기 및 쓰기 성능을 제공합니다. 또한, 다양한 프로그래밍 언어와의 호환성이 뛰어나 개발자들에게 사용이 편리하였습니다.
Prometheus를 이용해 CPU, 메모리 사용률, 트래픽 등의 시스템 메트릭을 수집하였고, Grafana를 통해 이를 시각화하여 모니터링하였습니다. 메트릭을 사용하면 애플리케이션의 대기 시간과 처리하는 데이터 양을 추적하여 시스템 성능 저하의 원인을 쉽게 파악할 수 있었습니다. 이러한 모니터링 도구들은 시스템의 안정성과 성능을 유지하는 데 중요한 역할을 하였습니다.
Elastic Stack을 활용하여 로그를 수집하고 데이터 분석을 수행하였습니다. Beats와 Logstash를 통해 다양한 소스에서 로그 데이터를 수집하고, Elasticsearch를 사용하여 강력한 검색 기능과 로그 분석을 구현하였습니다.
Kibana를 통해 실시간으로 데이터를 시각화하여 시스템 내 문제점을 신속하게 파악하고, 서비스의 안정성을 높일 수 있었습니다. 특히, Elasticsearch는 발송조회, 주소록 같은 유연한 검색 기능과 Nginx 로그 분석 모두에 활용되어 다양한 요구사항을 효과적으로 충족시켰습니다.
Team Members
- 장원진 | Frontend
- 배건우 | Frontend | Backend | DevOps
- 진기태 | Frontend | Backend
- 박지원 | Backend
- 박진성 | Backend