프로젝트 설명
🌿 바쁜 직장인들을 위한 자동 제어 시스템이 탑재된
바질 스마트팜
- 기간: 2023.04 - 2023.05 (4주)
- 프론트엔드 2명, 백엔드 2명, 디바이스 2명
- 상세 역할: 백엔드 개발 및 프로젝트 리딩
- IoT 프로젝트 최우수상 수상 🏆
Github
https://github.com/ha-ccoon/basilfarm-backend
회고
이번 프로젝트를 통해 관리와 보안 강화, 성능 최적화에 대한 중요성을 깨달았습니다. 다양한 업무를 경험하면서 팀의 성과에 기여할 수 있었고, 문제 해결 능력과 기술적인 역량을 향상시킬 수 있었습니다. 아쉬운 점은, 팀원들의 러닝커브 등 프로젝트를 제 시간에 완성하지 못할 수도 있다는 점에 타입스크립트로 개발을 시작하지 못했던 점이 아쉬웠습니다.
Frontend
- NextJS
- Recoil
- Emotion
- Hook Form
- ChartJS
- Axios
Backend
Database
DevOps
- Docker
- AWS EC2
- AWS ELB
- AWS ACM
- AWS CloudWatch
- Route 53
Tools
기능 구현 및 이슈 해결
- 구현 기능
- JWT 토큰을 이용한 로그인 서비스 구현 - RefreshToken 구현으로 토큰에 대한 보안 강화
- AWS ELB, AWS ACM, AWS Route 53를 사용하여 HTTPS로 프로토콜을 적용, 로그인 서비스 보안 강화
- Docker를 이용한 백엔드, 프론트엔드 배포 및 관리
- 서버와 Mosquitto 브로커 (IoT 프로그램) 연결 및 스마트팜 수동 제어 명령 로직 구현
- 트러블 슈팅
- 로그인시 토큰이 담긴 쿠키가 도메인 차이로 인해 브라우저에 보이지 않는 문제 발생
- 프로젝트 기간동안 임시로 응답 바디에 토큰을 담아 전송했지만, 이후 HTTPS 프로토콜을 적용하여 문제를 해결하고 다시 토큰을 쿠키를 이용해 전송
- 로그인 정보가 그대로 payload에 노출 되는 문제와 AccessToken만으로 구현한 로그인 서비스 보안의 취약성 발견
- RefreshToken을 추가하여 AccessToken의 보안 취약성 보완
- HTTPS 프로토콜 적용하여 보안 강화 및 토큰을 쿠키에 전송함으로서 payload에 정보가 노출 되는 문제 해결
- AWS EC2 인스턴스 성능 저하 문제 발생 (인스턴스 느려짐, 다운)
- 프론트 빌드 파일 용량 과다와 (600MB +) 프리티어 레벨의 인스턴스 사용으로(1G) 인한 메모리 리소스 부족
- Webpack-bundle-analyzer을 사용하여 프론트 빌드 파일에서 무거운 파일 탐색 후 삭제
- Swap 가상 메모리 추가로 부족한 메모리 리소스 충족

Webpack-bundle-analyzer를 이용하여 용량 과다 파일 탐색

swap 메모리 사용으로 메모리 부족 해결
API 명세서
API 명세서 (1)
인프라 아키텍처
.png)
화면흐름도