brunch

You can make anything
by writing

C.S.Lewis

by 강수빈 Jan 03. 2024

Stacker-Labs, 개발자 커뮤니티

`23.12.11. ~ `24.01.02.

4인 프로젝트


Frontend가 할 일이 많을 것으로 예상되어 Frontend 3명, Backend 1명으로 팀을 나눴다.

내가 backend를 담당했다.

OAuth와 채팅을 구현해본 경험이 없어 이번 프로젝트 때 시도해 볼 생각이다.


1주차


12.11.

ERD, API 문서를 간단히 작성하고 entity를 구성, TypeORM을 활용해 postgreSQL DB를 생성했다.


12.12.

Github, Google, Kakao OAuth 로그인과 기본 회원가입, 로그인을 구현하고 AWS 배포를 준비했다.


12.13.

유저 관련 기능과 게시글 CRUD까지 구현하고 EC2에 배포, Frontend 팀원들에게 Swagger를 공유했다.


12.14.

댓글 + 무한 depth 대댓글과 게시글 좋아요, 유저 팔로우를 구현했다.


12.15.

S3 이미지 업로드를 구현하고 EC2 Free tier에서 nest build 간 부족한 메모리를 swap으로 보충했다.


12.16.

메인과 댓글 페이지네이션을 구현하고 일부 API를 RESTful하게 변경 후 로직을 새로 작성했다.


향후 개선사항

class-transform의 PlainToInstance를 활용한 Response DTO 정의.

Foreign key를 생성하지 않고 OneToMany 연결.

lazy loading 활용.


2주차


12.18.

response로 쿠키를 설정했고, S3 이미지 업로드 에러를 수정했다.


12.19.

localhost에서의 요청을 허용했다. 검색에 페이지네이션을 구현하고 무한 스크롤을 구현했다.


12.20.

유저 간 채팅방을 만들었다.


12.21.

내가 담당한 Backend가 어느정도 완료되어 Frontend 팀원들을 돕기 시작했다.


12.22.

페이지네이션 함수를 common으로 이동해 여러 곳에서 사용했고, 테스트 코드 작성법을 공부했다.


12.23.

유저 테스트 코드를 작성했고, 유저 Swagger 응답 예제를 추가했다.


향후 개선사항

DDD에 대한 고민.

TDD를 위한 테스트 코드 작성.


3주차


12.25.

Github actions를 활용한 CI / CD를 공부했다.


12.26.

Frontend CD를 위한 AWS 설정과 yml 파일을 작성했다.


12.27.

Frontend의 유저 정보 출력, 댓글 출력, 댓글 수정 구현을 지원했다.


12.28.

팔로우 취소 시 채팅방이 삭제되지 않는 문제를 해결하고 Frontend의 채팅 구현을 지원했다.


12.29.

Frontend의 게시글 좋아요 기능과 유저 등록, 유저 정보 수정 구현을 지원했다.


향후 개선사항

CI / CD를 위한 DevOps 학습.

Frontend 개발을 위한 Next.js 학습.


결과


Frontend: 기여도 15%

Backend api: 기여도 100%

Github


반성


ORM으로 relation을 설정해 모든 정보를 보내면서 성능에 대한 고민을 하지 않았다.

Swagger에 response DTO를 만들어 적용하면 응답 예제를 볼 수 있다는 것을 나중에 알았다.

Backend 개발 시 TDD를 진행하지 않아 당연히 작동해야 할 부분에서 작동하지 않는 간단한 실수를 찾아 수정하는데 시간이 걸렸다.

DDD에 대한 고민없이 코드를 작성했기에 하나의 service가 비대해졌고 코드의 재사용이 어려워졌다.

CI / CD 간 AWS의 code deploy와 S3를 활용해야 하는 이유를 알아보지도 않고 그저 필요없다고 느껴 Github actions만 활용해 구현했다.


앞으로 공부할 내용


Typeorm lazy loading

PostgreSQL Query

단위테스트, 통합테스트

서비스 도메인 지식

AWS DevOps

Nest.js

keyword
작가의 이전글 AWS 상용 서비스 구축하기 | 보완 필요
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari