노션클론 리팩토링 (20) - 마무리와 회고

김영현·2025년 1월 27일
1

시작하게 된 계기

노션 클론 프로젝트를 포트폴리오로 사용하고있었는데, 2024년 9월쯤(정확히는 모르겠음) 서버가 죽었다. 서버가 죽은 김에 백엔드 공부할겸 다시 시작했다.

백엔드는 왜 공부했냐면...


부족한 점을 찾아보자

작년 8월말인가 9월에 이렇게 부족한점을 하나씩 채우기로했고, 조바심 내지 않기로했다. 일과 병행하니 절대적인 시간도 부족하고...닦달하면 끝내 퍼져서 아무것도 안하고있다.

아무튼 4달이나 되는 시간동안 뭘 채웠는지 확인해보자.

뭐 했지?

  • DB : KOCW의 DB강의를 수강하고, 프로젝트에 nosql인 mongodb를 적용했다. 이때 ODM인 mongoose를 사용하지 않고 기본적인 mongodb node driver를 사용하여 쿼리했다. 복잡한 데이터베이스는 아니었지만 맛보기정돈 되었다.
  • 객체지향 : 객체지향 언어인 C#을 이용해 간단한 게임을 만들어보기도하고...백엔드를 계층형 패턴과 의존성주입을 이용해 제작하기도 하였다.
  • JS를 제외한 다른 언어 경험 : 유니티와 C#을 이용해 게임을 만들었었다. 유익한 시간이었음!
  • Docker : 도커가 무엇인지, 이를 이용해 컨테이너 이미지를 만들고 docker-compose를 이용해 여러 도커파일을 한번에 빌드하는 법을 알게되었다.
  • 번들러(Webpack) : 번들러가 무엇이고, 웹팩이 무엇이고, 웹팩을 기초부터 어떻게 사용하는지 알게되었다. 개발 환경 설정은 덤이다.
  • 테스트 : 단위테스트, 통합테스트, test double에 대해 알게되었고, mock과 stub의 차이에 대해 알게되었다. 또한 테스트 코드를 작성하는 것이 겁나지 않게되었다.(프론트엔드 코드는 아직!)
  • 백엔드 : node.js의 http모듈을 이용하여 웹서버를 구축하여 파일이 어떻게 클라이언트에게 서빙되는지 알게되었다. 또한 미들웨어 로직을 직접 작성하여 백엔드의 동작 방식에 대해 알게되었다.

해당 프로젝트로 얕지만 넓은 지식을 획득할 수 있었다. 뿐만 아니라 여러 트러블 슈팅을 통해 아예 모르던 지식도 얻을 수 있었다.

꽤 많아보이기도 하는데, 적어보이기도 한다. 짬나는 시간을 최대한 더 활용해보자.

아쉬웠던 점

아쉬웠던 부분도 적어보자.

  • AWS를 이용해 배포를 진행하지 않았다. 아쉬워서 조만간 해볼 것 같긴한데...일단 보류. (잘못해서 비용 많이나올까봐 쪼금 무서움)
  • 백엔드에 집중하느라 프론트엔드 측 코드를 거의 건들지 못했다. 프론트엔드 개발자를 지망하면서 이 무슨.....😭 사실상 보이는 화면자체는 변경된 점이 없다.
  • 레포지토리를 원만하게 나눠서 관리하지 못하였다. 커밋할때 프론트측 수정과 백엔드쪽 수정을 구분하지 못할 것 같음. 이래서 레포지토리를 나눠쓰나 싶다
  • 더 빨리 끝낼 수 있었는데 지체된 시간이 많았다. 다음 프로젝트는 혼자 하더라도 일정관리를 철저하게 해야겠다.

격히 깨달은 점

테스트, 타입스크립트는 무조건 사용해야한다....선택이 아닌 필수다ㅋㅋㅋ
예를들어 기능변경이 이루어졌을때 테스트는 기능의 동작을 보장한다...
타입스크립트는 DI시 큰 효과를 발휘하고...기능들이 어떤 값을 받고 어떤 값을 뱉는지 파일마다 일일히 확인하지 않아도 되고...아무튼 생산성이 장난 아니게 올라갈 것이다.

이러한 기능들 없이 개발하던 옛날 JS 개발자들이 존경스럽다ㅎㅎ


언젠가...

리팩토링은 재미없다고 생각했다. 데브코스 당시 과제를 리팩토링해보라는 소리를 들었을때도 귀찮음 뿐이었다. 사실 지금도 귀찮다.
근데 아무도 쓰지 않는 서비스, 단순한 과제용, 포트폴리오용이었던 프로젝트가 조금씩 발전하고 공부했던 내용을 적용하면서 해보니 은근 재미있다. 망해도 괜찮은 프로젝트라니! 부담없이 즐기기 너무 좋다.

다음에 새로운걸 배우면 또 이 프로젝트에 적용하러오지 않을까?

그날을 기약하며...이번 리팩토링 회차는 종료!

profile
모르는 것을 모른다고 하기

0개의 댓글