기간 : 2023.09~2024.01
인원 : 1명
주제 : 커플다이어리앱 썸로그
프론트 스택 : nextjs, typescript, react-query, styled-components, aws s3, eslint, prettier, craco
백엔드 스택 : sequelize, express, javascript, nodejs, aws s3, aws ec2, ubuntu
사이트&코드 : https://github.com/5o-hyun/somelog-client , https://github.com/5o-hyun/somelog-server
모든 과정을 혼자 해봄으로써, 협업 구조와 프로세스의 전체적인 흐름을 이해한다.
개발을 하다보니 백엔드를 해보지않아 프론트로 오기까지의 과정이 이해가 잘 되지않았다.
이론으로 어느정도 공부가 되기는 하지만 쏙쏙 이해가 가지는 않는 느낌,,
그래서 이번 프로젝트의 목표는 "나혼자 기획, 디자인, 프론트, 백엔드까지 다 해보면서 과정을 다 해보기" 였다.
비전공자이다보니 전문용어들을 쓰면 잘 이해가 안되고는하는데, 그때 아는 프로세스가 나오면 이해가 바로 됬던 경험이 있었다.
그래서 전체적인 흐름을 이해하면 다른 팀원들과의 소통이 훨씬 원활해지니 협업 시 요구사항을 정확히 이해하고 더 나은 아이디어를 제안할 수 있어 효율적인 협업이 가능하다고 생각했다.
보통 기획에서 겪는 문제점은 기술적인 이해가 부족하다는것인데 나는 개발자다보니 그건 크게 어렵지않았다.
다만 프로젝트가 진행될수록 추가적인 기능 요구가 생겨나고, 원래의 목표를 초과하는 경우가 많아졌다. 이렇게 기획 범위가 커지는 스코프 크리프가 발생하다보니 일정 지연과 품질 저하가 생겼다.
앞으로 기획을 한다면, mvp범위를 먼저 설정하는게 중요할 것 같다는 생각을 했다.
퍼블리셔로 일할 떄 디자인도 했었기 떄문에 전문적인 디자인을 못할 뿐 크게 어렵지않았다.
디자인은 포토샵과 피그마로했고, 시간이 너무 오래걸릴것 같아서 UI 라이브러리를 적극 이용했다.
antd가 손에 잘 익어있어서 antd로 선택했고, 이는 미리 설계된 버튼, 입력 폼, 모달, 테이블 등의 다양한 컴포넌트를 제공하는 라이브러리여서, 개발할 때는 컴포넌트를 가져다 사용하기만 하면 되어 개발 시간이 단축되었다.
프론트와 백엔드를 왔다갔다 하면서 개발하다보니 어지러웠다. 창이왔다갔다 왔다갔다...ㅋㅋㅋㅋ
새삼 풀스택 개발자들이 대단하다고 생각했다.
백엔드의 구조와 플로우에 대해 이해를 많이 할 수 있던 시간이였다. 솔직히 용어만 알아듣고 대충 지나쳤었다. 내가할거아니니까~~ 했는데,, 진짜 반성한다.
혼자 하는만큼 누군가 알려주는 사람이 없기에, 그래서 최대한 자세하게 알려고 노력했다.
예를들면 ORM으로 sequelize를 사용했는데 그럼 ORM이 무엇인가, 왜사용해야하는가, 종류에는 무엇이 있는가 등등 공부했다.
그렇게 했기때문에 확실히 이해가 잘갔지만 시간이 오래걸렸다는 단점이있었다.
하지만 정말 많은 공부가 되었다.
역시 사람은 직접 느껴보고 부딪혀 봐야 하는 것 같다.
지금은 프론트서버와 백엔드서버를 두개를 두고 운영하는 방식을 택했는데, next로 백엔드 작업까지 한번에 하는 방법이 있다고해서 바꿔야겠다는 생각이들었다.
다음 프로젝트에 알아봐서 적용할 예정이다!! 꼭!
나에게 가장 어려웠던것은 역시 백엔드의 데이터베이스, 서버 관리 등이 어려웠다.
비전공자이다보니 기본 지식이 부족해서 인강도 듣고 책도 읽고있었지만, 역시 실무에서 하는것과 이론은 체감상 차이가 났다.
그래서 제일 먼저했던것은 전반적인 백엔드시스템의 구조이해였던것같다.
이때 많이 몰라서 주변 전공자 개발자들한테 많이 물어보고, 구글링도 엄청 했던것같다.
확실히 이론이나 용어를 잡고나니, 개발이 좀 더 쉬워지는 느낌이였다. 간단한 CRUD는 기본이고, 테이블 조인 등 도 손쉽게 해낼 수 있었다.
특히 ERD설계가 처음이라 오래걸리긴했지만, 역시 설계를 다 해놓고 테이블을 짜다보니 훨씬 쉬워진 느낌이고 직관적이여서 보기좋았다.
확실히 전반적으로 내가 직접 다 설계해보니 전반적인 흐름자체가 너무 이해가 잘갔다.
실무때 왜 백엔드가 이런부분에서 이런요구를했구나 하는것을 잘 알게되었달까,
사실 그 전에는 그냥 개발해달라면 해주는 수동적인 입장이였는데 직접 모든 직군을 해보니 어떤 부분에 있어서는 너무 수동적으로 있지말고 더 좋은 방향으로 제의를 드려야겠다는 생각을 하게되었다.
또, 실무에서만 사용했지 개인적인 프로젝트에서 next를 사용한게 처음인데, 이부분은 확실히 잘 사용했다는 생각이 들었고 유지하고싶다.
사용하다 next에 대해 많이 공부하게되었는데 ssr을 보다 쉽게할수있거나, 이미지 최적화가 되는 등 아주 기능이 잘되어있어서 만족스럽다
이 프로젝트를 완성한지는 좀 되었는데, 늦게 회고를 쓰고 정리를 하다보니 개선할점이 너무 많이보인다.
우선 코드 리팩토링을 한번 해야 할 것 같다는생각이다. 처음 설계를 한것과는다르게 도중에 점점 기능과 로직추가가 많이되어서 붙이다보니 좋은 코드를 사용하지 못한것같다.
그리고 최근 next를 보면 any말고 unknown을 권장하고있는데 나의경우에는 몇몇개가 any도 보여서 타입정의를 확실히 해야할 것 같다.
버전2에서 새로운 기능을 추가한다면?
채팅기능을 추가하고 싶은 마음이 크다. 사실 채팅까지도 개발범위였는데 점점 기능이 늘어남에따라서 mvp범위가 축소되어 개발하지못했다.
곧 자격증 시험도있고 사이드프로젝트 들어가는게 2개나 있어서 개인적인 프로젝트는 잠시 미뤄두고 일정이 다 끝난 후에 진행 할 예정이다.