- 개발 기간
- 개발 환경
- E-R 다이어그램
- 프로젝트 목적
- 프로젝트 기능
- 프로젝트를 통해 느낀 점
2024.08.01 ~ 2024.09.04
언어
- Python
- HTML/CSS
- JavaScript
서버
- Uduntu (운영 체제)
프레임워크
- Flask Framework
DB (데이터베이스)
- MariaDB
IDE (통합 개발 환경)
- Visual Studio Code
- Sublime Text
- Google Cloud Flatform(GCP) VM
- FileZilla
- Docker
API, 라이브러리
- OpenAI API
- Pandas
- Flask-Session
- mysql-connector-python
- Werkzeug
이 프로젝트를 기획한 이유?
최근 Flask 특강을 통해 백엔드의 기본적인 CRUD 구현과 데이터 시각화, 최소한의 인프라 사용법을 배웠습니다. 이 배움을 실천으로 이어가고자 Flask를 이용한 개인 프로젝트를 기획했습니다. 기본적으로 익힌 CRUD 기능과 pandas를 이용한 데이터 시각화와 함께, 예전부터 사용해보고 싶었던 OpenAI API를 활용할 수 있는 프로젝트를 구상하게 되었습니다.
첫 프로젝트인 만큼 흥미를 가지고 계속 진행할 수 있는 주제를 선택하고자 했습니다. 요즘 운동에 관심이 많아지면서, 운동 일정 관리 및 추천 웹/앱을 만드는 아이디어가 떠올랐습니다. 이 프로젝트는 제 관심사를 반영하며, 헬스 열풍인 요즘에 유용하게 활용할 수 있을 거라 생각했습니다. 현재의 실력으로는 기능이 부족할 수 있지만, 이 프로젝트를 통해 개발 역량을 키우고 나중에는 완성도 높은 프로젝트로 발전시키고자 하는 목표를 가지고 있습니다.
1) 로그인/회원가입 기능
1. DB테이블 설계의 중요성
프로젝트 초기에는 필요한 데이터를 기반으로 테이블을 설계하고 백엔드 코드를 작성한 후, 프론트엔드에서 컨텍스트를 통해 데이터를 템플릿 렌더링하려 했으나, 데이터 표시가 제대로 되지 않았고 외래 키 설정 부족으로 코드가 복잡해졌습니다. 이 과정에서 데이터 모델링의 중요성을 느끼고, 테이블 설계를 다시 검토해야겠다는 생각이 들었습니다. 데이터 모델링를 하면서 E-R 다이어그램 만드는데 가장 시간을 많이 투자했는데, 특히 식별자 관계와 비식별자 관계의 구분이 어려웠습니다. SQL 자격증 공부를 통해 익혔던 개념들이 시간이 지나면서 까먹게 되었고, 이를 계기로 유튜브와 블로그를 참고해 다시 공부하게 됐습니다. 이번 기회에 데이터 모델링을 새롭게 이해하고, 설계의 중요성을 다시 한번 깨달았습니다.
https://77hjoon.tistory.com/33
2. 프론트엔드와 백엔드 역할
이번 프로젝트를 통해 프론트엔드와 백엔드를 처음으로 함께 구현해 보았습니다. 이 과정에서 백엔드와 프론트엔드를 반복적으로 수정하면서, 초기 설계와 데이터 구조 정의의 중요성을 깨달았습니다. 프로젝트 진행 중에는 프론트엔드와 백엔드 간의 문서화와 효과적인 의사소통이 필수적임을 느꼈고 앞으로는 프론트엔드와의 협업에서 문서화 툴과 Git을 활용하여 협업에 필요한 툴을 익히고 싶습니다.
3. REST API 사용
이번 프로젝트에서는 Flask 템플릿 렌더링 방식을 사용하여 프론트엔드와 백엔드 간의 데이터를 전송했습니다. 이 방식은 간단한 애플리케이션 제작에는 적합하지만, 보통 REST API 방식을 선호합니다. REST API는 확장성, 유지보수성, 다양한 클라이언트 지원의 장점이 있습니다. 아직 REST API를 사용해 본 경험은 없지만, 다음 프로젝트에서는 REST API를 활용하여 협업과 개발을 더욱 효율적으로 진행할 계획입니다.
4) Docker 사용
Docker를 처음 사용하면서, Docker 컨테이너 내에서 실행되는 프로젝트가 기존의 환경에서와는 다르게 다양한 문제를 일으킨다는 것을 경험했습니다. 특히, 로그인 기능, 추천 기능, 한글 깨짐, 시각화 등 여러 기능에서 예상치 못한 오류가 발생했습니다. Docker에 대해 잘 알지 못한 상태에서 이미지를 빌드하고 컨테이너를 실행했을 때 문제가 발생했고, 이를 해결하는 과정에서 Docker 네트워킹 방법에 대해 배우게 되었습니다. 그중에서도 가장 많이 사용되는 docker-compose를 활용하여 프로젝트를 성공적으로 구현할 수 있었습니다. 이에 대한 해결 방법을 여러 시도 끝에 찾게 되었고, 이 과정에서 얻은 경험을 아래 URL에서 자세히 정리했습니다:
https://77hjoon.tistory.com/35
또한, 가장 많은 시간을 할애했던 오류는 한글 깨짐 문제였습니다.
https://77hjoon.tistory.com/36
Docker를 사용한 프로젝트 구축 과정은 어려움이 많았지만, 이를 통해 많은 것을 배울 수 있었고, Docker 환경에 대한 이해도도 크게 향상되었습니다.









