Web

공연 예매 프로젝트 - 후기

필립 2024. 7. 11. 01:51

오늘은 

프로젝트를 마감한 뒤, 이번 프로젝트 후기를 작성해보겠습니다. 

 

고려했던 부분

이번 개인 프로젝트를 시작하기 전, 가장 비중을 둔 것은 설계였습니다.

API 명세서와 ERD를 작성하며 어떤 식으로 서비스가 동작할지, 어떤 API가 필요할지 고민을 했습니다. 

매번 다른 튜터님들께 찾아가며 명세서와 ERD 피드백을 받았고 튜터님들마다 개발 스타일에 차이가 있으시기 때문에 다양한 시각에서 의견을 받아볼 수 있었습니다.

가장 적합하게 구현할 방법은 무엇일까? 생각을 많이 했던 것 같습니다. 

배운 점

매번 프로젝트를 할 때마다 느끼지만 '이게 되나' 싶다가도, 차근차근 태스크를 밟아가며 진행이 될 때마다 많이 배워가는 중입니다. 

 

1. 초기 설계는 중요하기 때문에 잘 만들어야 한다. 

- 이번 프로젝트에서 초기 설계에 신경을 많이 쏟았는데 효율적이라고 생각했던 구조가 만들려는 서비스에는 어울리지 않는 경우가 있었고 데이터를 아끼려고 설계한 로직이 생각보다 구현이 어려워서 오래 걸렸습니다. 기능적인 구현은 되었지만 '잘 만들었나?' 하는 생각도 한 편에 있기 때문에 초기 설계에서 고려해야 될 게 많구나, 직접 겪어보며 배운 것 같습니다. 

2. NestJS와 TypeScript 

- 처음으로 NestJS와 TypeScript를 사용해서 프로젝트를 진행했습니다. 아직은 이해가 어려운 부분도 많았지만 타입 명시 + NestJS에서 제공하는 모듈화, 데코레이터, 가드, 파이프 등 여러 부분을 다뤄봤습니다. 

3. 백엔드 코드 구성 전 의사 코드 작성 

- ERD에서 테이블이 전보다 많이 생겼기 때문에 한 개의 테이블이 생성될 때 여러 개의 테이블도 연간 관계를 이루며 생성되야 하는 작업이 있었습니다. 직접 코드를 작성하기 전에 의사 코드를 작성했고 덕분에 빠르게 코드를 완성할 수 있었습니다. 

아쉬운 점

1. NestJS와 TypeScript 

- 배운 점과 아쉬운 점이 같습니다. 프로젝트에서 좀 더 NestJS와 TypeScript에 기술적인 부분에 집중해봤으면 어땠을까라는 아쉬움이 있습니다. 이번 프로젝트에서는 설계, 구현하기 위한 코드 구성 등 서비스 기능에 좀 더 집중했기 때문에 NestJS와 TypeScript 자체에는 조금 소홀한 부분이 있었던 것 같습니다. 

2. 완성도 

- NestJS에서 제공하는 인터셉터를 사용하여 반환값을 주고 싶었는데 시간이 부족하여 구현하지 못했습니다. 서비스에서 반환 메세지가 작성 안된 부분이 있어서 전체적인 완성도 면에서 아쉬웠습니다. 

3. 복잡한 코드 

- 코드가 길어지면서 가독성이 떨어진 것 같다는 생각이 듭니다. 코드 중간에 함수를 만들어서 사용하는 부분이 있는데 따로 코드 바깥으로 빼서 코드 상에는 필요한 부분만 남겼으면 더 가독성이 좋아졌을 것 같습니다. 

개선 + 적용해 볼 기술

1. 커스텀 제너레이터

2. 인터셉터 

3. 스웨거 

4. 익셉션 필터 

튜터님 피드백 

1. Import 하고 있지만 사용하지 않는 모듈이 너무 많습니다. 해당 부분은 삭제해주세요. 

2. 기능을 잘 구현하였습니다. 

3. 기본적인 이해도가 매우 높습니다. 

4. 전반적으로 사용하지 않는 코드들에 대한 주석이 너무 많습니다. 사용하지 않는다면 삭제해주세요. 

5. Nest에 대한 이해도를 조금 더 올릴 필요가 있습니다. 

6. 수고하셨습니다.

 

-ggomma 튜터님 

 

마무리

개선 + 적용해 볼 기술에 적은 내용을 바탕으로 리팩토링을 진행하여 다시 한번 후기를 적어보도록 하겠습니다. 

뿌듯

API 명세서 + ERD + Trouble Shooting

https://stephenoeul.notion.site/af9d083846824aea92879c71c0a3b4f5?pvs=4