1차 프로젝트 회고

Sinf·2021년 12월 29일
0

생각정리

목록 보기
2/15

프로젝트 종료

벌써 끝?

프로젝트를 시작하면서 프로젝트에서 배운 것들을 블로그에 정리하려고 했다.

하지만 프로젝트 마감이 가까워질수록 블로그를 들어올 시간이 없었다.

2주 안에 결과물을 내고 평가를 받는 상황이다보니 눈 떠서 눈 감을 때까지 코딩, 코딩, 코딩의 연속이었다.

발표가 끝나고 나서야 한숨 돌리고 프로젝트에서 배운 것을 정리하려고 한다.

결과물

프로젝트 주제는 자유 주제였다.
팀원들과 주제를 정할 때도 어려웠다.
첫만남, 얼굴도 못보는 상황, 디스코드의 정적,
모든 것이 쉽지 않은 상황이었다.

주제는 서로 생각해온 것에 대해서 나누고 시작했는데,
딱! 이거다! 싶은 것이 없었다.

그래서 관심사에 대해 나누자고 했고,
우리의 프로젝트로 연결될 수 있었다.

여행, 음식에 초점이 맞춰진 우리 팀은 여행지별로 먹었던 것을 기록할 수 있으면 좋겠다는 생각으로 주제가 잡혔다.

이거 먹어 봄?

이라는 제목으로 대한민국 방방곳곳 맛집 SNS를 개발하기 시작했다.

처음에 계획한 기능은 로그인, 포스팅, 북마크 기능 정도였는데, 점차 개발에 익숙해지니 댓글 기능까지도 구현하게 되었다.

나의 역할

나는 백엔드 직무를 부여받았다.
Node.js 기반으로 Express.js 프레임워크를 이용해 개발했다. 그리고 DB는 NoSQ 기반의 MongoDB를 사용했다.

그 안에서도 내가 구현해야할 기능은 포스팅과 관련된 기능이었다. 포스팅의 CRUD, 이미지 업로드, 이미지 리사이징, 이후에는 북마크, 댓글 기능까지 구현하게 되었다.

포스팅 CRUD

포스팅과 관련된 CRUD는 이전에 게시판 앱을 만든 경험이 있어서 완전히 낯설지는 않았다. 다만 mongoDB를 처음 사용했기 때문에 어색함이 있어 조금씩 공부하면서 구현했다.

이미지 업로드, 리사이징

사실 이미지, 동영상을 서버에서 어떻게 처리하는지가 제일 궁금했다. 내가 교육 관련 서비스를 관심에 두기 때문에 인강과 같은 경우 서버에 어떻게 업로드되고, 요청되고, 호출되는지 궁금했기 때문이다.

구글링을 통해 본 결과, AWS S3의 파일서버를 두고 요청에 따라 가져온다고 한다. 리사이징의 경우 AWS Lambda를 이용해 서버에 부하를 주지 않고 처리된다고 한다.

우리 팀에게는 하나의 서버가 주어졌기 때문에 서버에서 처리할 방법을 생각해야 했다.

구글엔 모든 답이 있다

node.js기반의 multer, sharp 모듈을 사용하기로 했다.
multer는 이미지 업로드에 대한 처리를, sharp는 이미지 리사이징에 대한 처리를 할 수 있는 모듈이다.

그리고 이미지에 대한 요청은 nginx에서 이미지에 대한 요청 url을 처리하도록 구성했다.

댓글 기능

처음에 계획에 없던 기능이 추가되었다.
정말, 기능 하나를 추가하는데, 고려해야할 것이 한두가지가 아니었다. 그저 모델 변경하고 댓글 추가되면 되는거 아닌가? 했지만 그렇게 끝나진 않았다.

지금 생각해보면 간단하게 정리되지만 그 당시에는 아무리 역할을 분리한다고 해도 내가 짠 코드에서 거미줄처럼 엮인 코드들이 많았다. 그래서 모델 하나의 변경에도 수정사항이 많아 힘들었다. 하지만 이 때, 내가 과감히 할 수 있었던 것은 테스트 코드의 존재였다.

테스트 코드

사실 이번 프로젝트를 진행하면서 가장 큰 수확과도 같다.
중요하다는 것은 익히 들어 알고 있지만,
사실 게시판 앱을 만들거나, 이미 익숙하게 코드를 적을 수 있는 것들에는 테스트 코드가 필수적이라는 생각을 하지 않았다.

그래서 쉽게 쉽게 빠르게 코딩을 했지,
내 코드를 믿고만 넘어 갔지,
테스트 코드를 작성할 생각을 별로 안했다.

프로젝트를 진행하면서 많은 벽을 만났다.

내가 봐도 비효율적이고 기능만 구현된 코드를 바꾸려할 때, 사실 그 속을 정확히 알 수 없었다. 혹시라도 잘못 건드렸다가 다른 기능까지 문제되면 어떻게 하지? 라는 걱정...

테스트 코드는 이런 걱정을 덜어주고, 개발 속도를 높여줬다. 정말 필수라고 말할 수 있다. 처음엔 테스트 코드 작성이 오래 걸려서 비효율적이라고 생각했는데, 나중에 프로젝트에 기능이 많아지면서 테스트 코드는 개발을 더욱 효율적이면서 안정적으로 만들어줬다.

앞으로 더 좋은 테스트 코드를 짤 수 있도록 노력해야 된다는 생각!

나는 프로젝트를 통해 무엇을 배웠을까?

Git 그리고 협업

처음으로 Git을 협업에 사용했다.
Git이 없었으면 어떻게 되었을까 싶을 정도로 Git은 정말 고맙다. 협업에 있어 정말 편리하다. 뿐만 아니라 나의 코드를 돌이키는데 정말 이건 말로 표현 못한다. 돌아가는 길이 기억 안나도 누군가 나를 그곳으로 워프시키는 경험은.

그리고 함께 개발한다는 것은 어렵지만 너무 즐겁다.
힘들 때 함께 떠들고 힘이 된다. 그리고 내가 확신이 없는 것에 대해 서로 리뷰해준다. 그리고 또 배운다.

테스트 코드

위에서 장황하게 설명해서 패쓰..

썩지 않는 프로젝트

프로젝트가 마무리되고 팀장님과 얘기했다. 만든 프로젝트에 대해서 어떻게 관리할 것인지.

처음으로 게시판, 투두리스트가 아닌 특정 서비스를 개발하고 나니 정말 기뻤다. 근데 이 프로젝트가 이대로 깃헙에 썩어간다면 너무 아쉽다라는 생각이 들었다.

앞으로 SQL 기반의 DB로, 좀 더 좋은 테스트 코드, 그리고 더 많은 기능, 리팩토링을 계속해보고 싶다.

profile
주니어 개발자입니다. 🚀

0개의 댓글