안녕하세요, 2025-1학기에 수강한 시스템종합설계(캡스톤디자인) 수업의 프로젝트 후기를 작성해보려고 합니다.
🎯 개요
- 수업명 : 시스템종합설계 (캡스톤디자인)
- 프로젝트명 : 날씨어때
- 팀명 : 오늘날씨어때
- 프로젝트 특징 : 졸업프로젝트까지 연계
- 따라서 수업 종강 기간까지 1차 개발로 주된 기능 구현을 마무리
- 졸업프로젝트 마감 기간까지 2차 개발 진행 예정 (졸업프로젝트 종료 이후 별도 포스팅 예정)
- 깃허브 링크 : https://github.com/howWeather/howWeather-backend
☀️ 프로젝트 주제 선정
수업에서의 프로젝트를 졸업프로젝트로까지 연계할 것을 처음부터 염두에 두고 주제를 선정했습니다.
따라서 저희 프로젝트는 아래 조건을 충족해야 했습니다.
- 보안을 중요 요소로 둘 것 [시스템종합설계]
- 팀원 3명이 프론트/백/AI를 담당하므로 AI를 반드시 포함할 것 [졸업프로젝트]
4~6월까지의 개발만으로 앱의 주요 기능이 동작하면서도 완성도가 높고, AI를 포함하는 주제를 찾는 것이다 보니 주제를 정하는 데 시간이 굉장히 많이 걸렸습니다. 최종적으로 결정된 주제는 AI 담당 팀원이 제시한 "사용자의 체감 온도를 학습해서 사용자 맞춤형 의상 정보를 제공하는 앱"입니다.
저는 프로젝트에 백엔드로 참여했습니다.
🌤️ 개발 전
🎨 디자인
디자이너가 별도로 존재하지 않았기 때문에 저희가 디자인을 직접 다 했습니다. 저는 Bloom Booth 프로젝트에서처럼 전체적인 틀을 만들었고, 이를 프론트 담당 팀원이 세부사항을 수정하는 형태로 갔습니다.
💾 ERD
항상 그래왔듯이 이번에도 ERD를 구상했습니다. 리팩토링 예정인데 테이블의 구조에 변화가 있을 거 같아 프로젝트 종료 후 쓸 2차 개발 후기에서 다시 언급하도록 하겠습니다.
🌥️ 개발 중
📌 Auth
1. 자체 계정 회원가입/로그인/로그아웃
JWT와 Redis를 이용해서 구현했습니다. 토큰 관리는 처음이라 열심히 구글링 하면서 개발했습니다. 토큰 블랙리스트 처리를 위해 Redis를 사용했습니다.

2. 비밀번호 변경/초기화
비밀번호 변경은 어렵지 않았고, 초기화는 사용자가 회원가입 시 기재한 이메일이나 아이디 입력 ➡️ 해당 이메일로 초기화된 비밀번호를 전송하는 간단한 형태로 디자인했습니다.

이를 위해 SMTP를 사용했고, 메일 내 디자인은 일단 간단하게 아래처럼 구현했습니다.

3. 소셜 로그인

소셜 로그인은 카카오와 구글을 구현했습니다.


📌 기록달력 및 의상
1. 글 작성 및 조회

기록을 이용해서 AI 학습을 진행하기 때문에 학습의 일관성을 위해 수정 및 삭제는 불가하도록 처음부터 설정했습니다. 달력에서 현재 온도와 유사한 날씨 (±2도)를 바로 확인할 수 있도록 유사 날씨를 조회하는 기능도 구현했습니다.
또한 일일 기록 조회 시 상의, 아우터에 대해서 기본 이미지를 제공하는데 이를 위한 API도 구현했습니다. 이미지를 사용자가 올리는 것이 아니라 저희 쪽에서 미리 올려두고 상황에 맞게 URL을 반환하면 돼서 어렵지 않았습니다.
2. 의상 등록, 수정, 삭제, 조회

기본적인 CRUD 기능입니다.
3. 의상 추천 및 예측 체감

여기는 AI ↔️ 백엔드 ➡️ 프론트엔드 구조로 구성되어 있습니다. 백엔드와 AI 간 통신은 전송하고자 하는 JSON 데이터를 AES 암호화하고, 암호화된 데이터를 HTTPS로 전송했습니다.
로직은 다음과 같습니다.
1️⃣ 사용자 의상 정보 + 예보 데이터 전달 : 백 ➡️ AI
사용자가 입을 수 있는 의상 조합과 예보데이터를 AI 서버 측으로 전송합니다. 이때 의상 조합은 상의 1~2벌 & 아우터 0~1벌이 가능한데 조합 생성에 대한 리팩토링을 진행할 예정입니다.
2️⃣ 유사 날씨 사용자 기록 데이터 전달 : 백 ➡️ AI
1️⃣의 데이터와 함께 전송합니다. 2️⃣의 데이터를 참고하여 AI모델이 예보 데이터를 기준으로 적절한 의상조합을 구합니다. 그리고 앞에서 구한 조합을 입었을 때의 시간별 체감 상태를 예측합니다.
3️⃣ 모델 예측 결과 수신 : AI ➡️ 백
2️⃣에서 구한 의상조합 + 시간별 체감 상태를 받아와서 DB에 저장합니다.
4️⃣추천 의상 + 체감 온도 예측 결과 조회 : 백 ➡️ 프론트
3️⃣에서 저장한 정보를 프론트 화면에 맞게 정리 헤서 전달합니다.
📌 마이페이지
1. 프로필 조회/수정

해당 부분은 단순 GET, PATCH API이기 때문에 빠르게 구현했습니다.
2. 알람 설정

여기에서의 알람은 사용자에게 오전/오후/저녁에 기록달력에 착장 기록 및 체감 정보를 기록하라고 푸시 알림의 형태로 리마인드 하는 것을 말합니다. 이를 위해 FCM을 이용했고 알람 전송을 위해 스케줄러를 구현했습니다.

사용자가 오전/오후/저녁에 대한 알람을 선택적으로 받을 수 있도록 수신 설정을 하고 조회하는 기능도 구현했습니다.
📌 배포
1. 1차 배포 : HTTP
wearther 프로젝트에서 깃허브액션을 이용한 CI/CD 자동화, AWS EC2, Docker Compose를 이용한 배포 경험이 있었습니다. 그래서 상대적으로 빠르게 세팅을 끝낼 수 있었습니다.

2. 2차 배포 : HTTPS
HTTPS 통신을 위해 가비아에서 도메인을 구매하고, Nginx와 Certbot(Let's Encrypt)를 이용해서 세팅했습니다.



⛅ 개발 화면
앱 화면은 아래와 같습니다.









🌦️ 후기
혼자 백엔드를 전부 다 담당해야 하는 것에 대한 부담을 가지고 시작했습니다. 그래도 백엔드 개발 경험 + http 배포 경험이 있었던 덕분에 빠르게 기능 구현을 진행할 수 있었던 것 같습니다. 날씨, AI 서버와의 통신, 알람 등을 위해서 스케줄러를 많이 써볼 수 있었습니다.
'활동 > 프로젝트, 해커톤' 카테고리의 다른 글
| [⛅졸업프로젝트/앱백엔드] 날씨어때 2차 개발 후기🌨️ (0) | 2026.01.10 |
|---|---|
| [SOLUX/앱솔브🫂/앱백엔드]🧷⛅'wearther' 프로젝트 후기 💛 (0) | 2025.02.24 |
| [모바일소프트웨어💐/앱프론트] Find your bloom! Bloom Blooth 후기🩷 (1) | 2025.01.03 |
| [SOLUX/솔룩션🫂/웹백엔드] 🧭🤝'MIDPOINT : 우리 어디서 만날까?' 프로젝트 후기💙 (0) | 2024.08.07 |
| [SW중심대학사업단 해커톤/IRIS🌈] 🌡️💤SWING 2023 교육&데이터 해커톤 with LONDON 후기 ❤️ (0) | 2023.08.28 |