Pwith
네 명의 팀에 백엔드로 참여하였고, 추후 인공지능을 접목할 계획으로 python 기반의 프레임워크 flask를 사용했다. 또한 해킹 동아리 IHHH에서 flask로 구현된 수많은 코드들을 읽어왔기에 큰 부담 없이 시작할 수 있었다.
직접 사용해보니 flask는 다양한 라이브러리를 쉽게 사용할 수 있다는 장점이 있으나, 가벼운 프레임워크이기에 spring boot에 비해 제공되는 기능이 적었다.
팀원 모두 프로젝트에 대한 경험이 없었고 맞춰가야 할 부분들이 많았다. 큰 범위의 DB 설계 및 정규화, 클라이언트와 서버 간의 요청과 응답 과정, 코드의 틀을 잡는 과정이 모두 처음이었고, 그래도 spring과 thymeleaf로 개인 프로젝트 경험이 있던 내가 전체적인 틀을 잡았고 미흡했으나 어떻게든 진행되었다.
마감 기한을 핑계로 코드의 효율은 크게 신경쓰지 못했으나 그래도 1학기 계획했던 파트를 마무리했고 결과적으로도 좋은 학점을 받을 수 있었다.
하지만 코드를 구현하면서 아쉬운 점이 참 많았다.
정상 동작은 되나 끊임없이 경고받았던 소켓 에러, 클라이언트-서버 간 요청과 응답의 형태, DB 워크벤치에 대한 높은 의존성, 코드 중복 처리 미흡, 급히 해결한 try-except 예외처리 방식, 통일되지 않은 객체 변수 접근 방식, 데이터베이스의 구조 등......
정말 많은 부분들에서 아쉬움이 남았고, 나의 제안으로 이번 여름방학은 코드 및 DB 리팩토링에 초점을 두기로 했다. DB에 손을 대는 순간 pymysql을 사용한 많은 코드들이 변화될 걸 알지만 부실한 데이터베이스의 구조를 차마 눈 뜨고 볼 수 없었기에.. 많은 시간을 들여서라도 진행하고 싶었다.
이렇게 보니 한 학기 동안 다양한 프로젝트를 진행하면서 나 많이 성장했나 보다. 3월의 나와 7월의 내가 이렇게까지 다를 수가 있을까. 뿌듯하고 기특하다.
팀 프로젝트 경험이 없는 네 명이서 개발 중에 '이 문서는 필요하겠다', '이 부분은 통일해야겠다' 하며 작성했던 문서들. 우리들의 일명 axios 문서
, 라우팅 경로
그리고 DB 스키마
문서들이 다른 본격적인(?) 프로젝트에서 API 명세서
와 ERD
로 사용되고 있었다. 우리만의 방식대로 작성했던 문서들이 결국 모든 프로젝트에서 단지 조금 더 고급진 이름과 형태로 사용되고 있던 것이다.
그냥 남들 다 사용하니 따라서 사용하는 것과, 정말 필요로 해서 만들어낸 것의 차이는 크다고 생각한다. 결과적으로 API 명세서와 ERD의 필요성을 제대로 체감한 것은 우리일테니까.
많은 시행착오가 있었고 크고 작은 변경사항들이 있었으나, 이번 방학 동안의 큰 개편을 통해 앞으로의 과정이 수월해지길 기원한다.
직접 코드를 리팩토링하는 사람이 아닌 타인들은 '너희 뭐했니' 싶을 수 있겠으나, 그러한 반응과 시간들을 감수하고서라도 미래의 우리를 위해 제자리걸음 아닌 제자리걸음을 해보기로 했다.