Judaeng
코드 스테이츠 파이널 프로젝트 회고 본문
4주 간의 파이널 프로젝트를 무사히 마무리했다😭😭😭😭😭
아쉬웠던 점들도 많았지만, 4주 간 진행하면서 많은 것을 배울 수 있는 기회였다.
그것들을 정리하는 시간(?)을 가져보려고 한다.
DokDok : 지도와 실시간 채팅을 통한 책 교환 서비스
다 읽고 먼지만 쌓여가는 책이 있지 않으신가요? 아니면, 한두 장 읽고 나니 흥미를 잃은 책은 없으신가요?
새로 읽을 책이 필요한데, 새로 사기는 부담되시나요?
DokDok은 게시글 내에 거래 위치를 지정할 수 있어,
위치를 검색하면 주변에 어떤 책들이 당신을 기다리고 있는지 손쉽게 확인할 수 있는 서비스입니다.
버리기엔 아쉽고, 그냥 두기엔 자리만 차지하는 책들을 DokDok을 통해 다른 흥미로운 책으로 교환해 보세요.
위에 글은 우리 프로젝트의 주제 내용이다.
로그인을 하지 않아도 다른 사람들이 어떤 책을 올렸는지 볼 수 있고, 그 책들이 마음에 든다면 로그인하여 채팅을 보내서 만남 장소를 정할 수 있고, '좋아요'를 표시해 관심 글에 등록할 수도 있다.
프로젝트의 결과를 보려고 한다면 메인 페이지에서 우리 서비스(프로젝트)에 대한 설명을 간단하게 설명해 준다.
디자인 전공을 하셨던 팀원분 덕분에 이쁘고 깔끔한 페이지가 나올 수 있었다고 생각한다.
페이지들이 정말 심플해서 이쁘다. (개인적 생각 ㅎ);
우리 프로젝트의 주요 기능 3가지 정도를 소개해볼까 한다.😃
게시글 기능, 채팅 기능, 지도 기능이다.
게시글은 교환하고 싶은 책을 등록하고, 변경하며, 사람들과 콘텐츠를 공유해야 되기 때문에 필요한 기능이다.
지도 기능은 책을 교환할 장소를 알아야 하기 때문에 지도 기능도 필요한 기능이라고 생각한다. => 따로 찍기 귀찮아 한 번에 보여준다😅
채팅은 책을 교환하고 싶을 때 그 책의 주인과 책을 교환할 장소, 책 상태 등을 이야기하려면 꼭 필요한 기능이라고 생각한다.
그 이외에도 다양한 기능들이 있다.
소셜 로그인, 문의하기, 검색하기 등이 있다. 궁금하면 꼭 방문해보도록 하자☕️
주요 기능은 여기까지 설명하고, 4주간 프로젝트를 진행해오면서 느낀 점 혹은 과정을 이야기해보려고 한다.
프로젝트 과정
SR(Software Requirement)
4주 프로젝트를 진행하면서 아이디어 기획 단계부터 모두 줌으로 진행했다.
그러다 보니 같은 기능에 관해 이야기하는데 서로 다르게 이해했던 상황이 일어났었다.
생각보다 얼굴을 마주 보지 않고 이야기하면 자주 일어나는 상황이었다.🤔
우리는 그 상황을 최대한 의사소통으로 해결하고, 1주일 동안 아이디어 회의를 진행했다.
아이디어 회의에서는 여러 가지 주제들이 나왔었다.
부동산 앱, 음악 플레이리스트, 당근 마켓, 코인 거래소, 트렐로(협업 툴) 등이 나왔다😂
이 중에서 선뜻하고 싶었던 주제가 없었는지 서로 눈치를 보다가 주제가 합쳐진 것이 책 교환 서비스였다.
그 이후에는 와이어 프레임, 워크플로우, DB 스키마, API 문서 등을 차근차근 작성했다.
사용한 스택
이번 프로젝트에서 팀원들과 이야기로 TypeScript에 대해서 서로 토론했었는데, 사용하면 좋겠지만 기존에 하던 대로 진행하면 좋겠다는 의견이 있어서 사용하지 않았다.
오히려 익숙한 스택, 언어를 사용하는 것이 나도 프로젝트 진행 방향에도 좋고 더 자세하게 배우고 공부할 수 있어서 좋았다.😃
System Architecture
위에 있는 스택들이 코드 스테이츠 과정에서 공부하면서 배운 것들이라니, 생각보다 많다😂
그래서 나는 위에 스택 중 몇 개를 선택해 왜 사용하려고 했는지에 관해서 이야기해보려고 한다.
NodeJS, Express
- 숙련된 개발자들이 모여 있는 상황이 아니고, 큰 규모의 서비스를 개발하는 것이 아니기 때문에, 가볍고 유연하게 사용할 수 있는 NodeJS와 Express를 선택했다.
- 점유율도 높고, 커뮤니티의 규모도 가장 크기 때문에, 개발 과정에서 오류가 생기거나 막히는 부분을 빠르게 해결할 수 있을 것으로 예상했다.
multer, multer-s3 라이브러리
스택은 아니고, npm 라이브러리인데 Node.js 환경에서 파일 업로드를 하려면 필요한 라이브러리이다.
정확히는 파일 업로드를 위해 사용되는 multipart/form-data를 다루기 위한 node.js 미들웨어이다.
이걸 설명하려는 이유는 내가 프로젝트를 진행하면서 2~3일 동안 고생하고, 이해하기 위해 인터넷, 영상 시청 등을 활용하고, 테스트를 꾸준히 해서 구현해낸 부분이기 때문이다.
- 사용법을 보고 사용 방법을 알아야 한다.
- S3에 파일을 업로드하려면 업로드되는 과정을 이해해야 한다.
하지만 어려움을 극복하고 보니, 매우 좋고 간단한 라이브러리라고 느껴졌다.
업로드하는 방식도 single, array, fields 등 3가지 올리는 방법이 있다.
이 라이브러리를 사용하는 이유는 S3에 이미지를 업로드해서 사용자에게 프로필 사진, 게시글 이미지 등을 제공하기 위해서 사용했다.
Jenkins
코드 스테이츠에서 알려준 배포 과정 이외에도 알아보니 자동화 배포 환경 만들기 등의 과정이 있었다.
처음엔 지나가듯이 글을 보았지만, 보다 보니 흥미가 생겨서 "한번 해볼까?"라는 호기심으로 자동화 배포 환경 만들기를 시작했었다.
자동 배포 환경이라고 하면 CI/CD 개념을 공부할 수밖에 없는데, 우리 프로젝트에서는 CD(Continuous Delivery) 또는 (Continuous Deploy)라는 지속적인 서비스 제공, 지속적인 배포 등의 개념만 적용해서 환경을 구성했다.
정리하자면! 우리 프로젝트의 편리한 배포 환경을 만들기 위해 Jenkins라는 프레임워크를 활용하게 되었다!
CloudFlare
처음엔 유료 도메인을 구입해서 AWS Route53 서비스를 사용했었지만, AWS 프리티어에 적용되지 않아 비용이 발생하여 다른 플랫폼을 찾아보다가 지인의 추천으로 "CloudFlare"라는 무료 플랫폼을 사용하게 되었다.
개인적으로 사용하는 방법만 알고 있다면 Route53보다 쉽게 사용할 수 있는 것 같다.
프로젝트 후기
4주 동안 프로젝트를 진행하면서 발생했던 오류, 느낀 점, 공부해야 할 내용을 공책에 기록했었는데 4~5장 빽빽이 적혀있다.
이번 프로젝트를 통해 정말 배운 것들이 너무 많았다.
회고를 적으면서, 프로젝트를 진행하면서 생겼던 이슈, 느낀 점 등을 정리하고자 한다.
역할 분배의 중요성
파이널 프로젝트 전에 퍼스트 프로젝트를 진행하면서도 느낀 점이다.
역할 분배는 깃 헙을 활용해 프로젝트를 마일스톤 단위로 나누고, 태스크 단위로 나누어 이슈 카드를 만들어 분배한다.
하지만 퍼스트 프로젝트 때 역할 분배에 대해서 너무 개념이 없었고, 팀원과 정확히 이야기가 안 되어서 1주가 거의 다 지나가고 난 뒤에서야 역할이 정해졌다.
겨우 어찌어찌 만들고 마무리를 했지만, 진행 속도가 너무 느려서 시간 관리도 소용이 없었던 경험이 있었다.😥
이런 경험을 통해서 파이널 프로젝트에서는 같이 진행하던 팀원 분과 역할 분배를 정확히 했으면 좋겠다는 의사를 이야기하고 하나씩 하고 싶은 기능들을 정하고, 태스크 분배를 시작했다.
이렇게 분배를 해놓으니 자신이 어느 부분을 개발해야 할지 확인하면서 할 수 있었고, 다음에 그 부분에 대해서 오류가 발생했을 때 맡은 부분을 인지하고 해결 과정에서도 수월하게 진행할 수 있었다.
물론 시간 관리도 잘 되었고, 내가 해야 하는 일이 다 끝나면 이슈 카드를 마무리하고, 내가 더 추가로 해야 하는 것이 무엇인지를 찾아볼 수 있는 시간도 있어서 너무 좋았다.
정말 글로 정리하면서도 느끼지만 역할 분배는 너무나 중요한 부분인 것 같다.
역할 분배가 잘 되었고, 그리고 하나씩 성취해 나가면서 뿌듯함을 느끼고, 더 나아가 내가 할 수 있는 것이 더 무엇이 있는지까지 생각할 수 있으니 정말 중요한 부분 중의 하나인 것 같다.
협업에서 의사소통
팀 단위의 협업에서 의사소통은 중요해!라고 강조해도 무방한 것 같다.
2주 프로젝트, 4주 프로젝트를 진행하면서 똑같은 상황이 있었는데, 그것은 같이 기능에 대해 토론을 하면서 이야기를 해도 각자 생각하고 이해한 것이 다르다는 것이었다.🤮
어쩌면 온라인으로 진행해서 생기는 문제점이라고도 할 수 있을 것 같다.
"오프라인이었다면 조금 더 이해하는데 문제가 없었을까?"라는 생각을 한 번은 해봤던 것 같다.
서로 간의 오해, 갈등은 역시 의사소통을 통해 해결하는 것이 바르다고 생각한다.
한 명씩 자신이 생각하고 있는 기능에 관해서 이야기하고 그 주제에 대한 다른 생각이 있다면 바로 이야기하여 해결하는 것이 중요하다고 생각한다.
앞으로도 소통 방법에 대해서 고민하고 사람들의 이야기를 조율하고 소통을 많이 해보도록 노력해야 될 것 같다.
그리고 추가로 이야기하자면 "어떻게 이야기해야 그 팀원분에게 기분 나쁘지 않게 이야기할 수 있을까"라는 생각을 많이 했었다.
정말 어려운 부분이라고 생각하는데, 어쩔 수 없이 갈등은 생기고, 이 부분을 소통으로 해결해야 된다고 생각한다.
진행 상황 공유하기
우리 팀은 매일 아침 10시, 오후 5시에 이슈 공유, 진행 상황을 공유했다.
서로의 상황을 알고, 맡은 일을 어디까지 진행했는지 알 수 있는 중요한 시간이었다.
"오늘은 맡은 역할에서 어떤 부분을 해결할 예정이고, 추가로 어떤 부분을 공부할 예정이다"라는 계획을 말해주고 5시 토론 때 진행 상황을 이야기하는 시간을 가졌다.
그리고 진행하던 도중 문제(이슈) 등이 발생하면 바로 공유하는 것도 우리 팀이 잘 이야기해준 것 같다.
각자 맡은 일이 있지만, 이슈를 공유하면 잘 들어주고 그 문제(이슈)를 어떻게 생각하는지에 관해서 이야기해주면 해결방법이 잘 떠올랐다. 이 부분이 정말 나는 너무 좋았던 부분이다.
서로 이야기를 잘 들어주고? 서로의 생각을 말하기! 이것은 정말 최고였다.
마무리하며 느낀점😎
팀원들 덕분에 프로젝트를 잘 마무리했던 것 같다.
무엇보다 프로젝트를 통해 git의 기능들 P/R, merge, conflict 해결, branching, stash, wiki, 태스크 카드 관리 등을 공부하고 사용해볼 수 있어서 정말 좋았고, 배포, AWS의 서비스들에 대해서 알아보고, 적용해볼 수 있는 시간이 되어서 좋았다.
이 외에도 팀원들과의 의사소통을 통해 해결한 과정, 다 같이 발표 영상 제작 등 이야기가 많지만 이쯤 하도록 하겠다.😅
그리고 코드 스테이츠에서의 공부는 이 프로젝트를 마지막으로 마침표를 찍게 되었다.
1월부터 6월까지 쉬지 않고 공부할 수 있고, 그만큼 많이 성장한 것 같아 기분이 좋다.
하지만 나는 여전히 부족하다고 생각이 들기에 꾸준히 성장하는 개발자가 되는 것을 목표로 할 것이다.
화이팅! ✊
'Daily > Me' 카테고리의 다른 글
4주간 Pre코스를 마무리하며 쓰는 회고록⚡ (2) | 2021.02.22 |
---|---|
2021 맥북 프로 M1, 에어팟 프로 도착 😎😎 (0) | 2021.01.31 |