NestJS, 과제 사이트를 만들고 난 느낌

2021. 7. 7. 18:09개발/Node

 

사내에서 과제 사이트를 만들어야 할 일이 있어서 NestJS를 사용해보았습니다.

일주일 정도 걸린 것 같은데 생각보다 우여곡절이 많아서 그 내용을 가볍게 공유해보고자 합니다.

 

필요한 기능

  • 사용자는 첫 화면에 접속해서 몇가지 input 정보를 입력합니다.
  • form을 이용해 넘어가면 화면에서 임의의 랜덤 값으로 cookie를 생성 후 dynamodb에 정보를 기록합니다.
  • 문제를 봅니다.

 

이미 express로 만들어 놓은 간단한 기능이기 때문에 경험이 없는 NestJS로도 며칠 고생하면서 만들면 금방 만들거라고 생각했습니다.

 

serverless를 사용한다면 아직 fastify는 추천하지 않습니다.

간단한 프로젝트는 전부 serverless를 사용하기 때문에 이번에도 사용했습니다.

일단 NestJS에서 serverless를 올리는 예제도 많이 없을 뿐더러 fastify를 이용하는 방법도 많이 없습니다.

저는 serverless에 올리는 handler를 작성하기 위해 2가지 package와 fastify docs를 참고하여 전부 조금씩 이용해서 만들었습니다.

 

그렇게 올려도 cookie 같은 작업은 잘 되지 않았습니다. 그래서 결국엔 fastify를 떼어내고 express를 이용해서 다시 만들게 되었습니다.

 

기준은 필요합니다.

프론트를 잘 모르는 입장에서 사용하려다보니 쓰는게 참 많아졌습니다.

위에서 언급한 Fastify가 대표적인 예입니다. 한창 작성하다보니 Express와 Fastify가 혼재되어 있었습니다.

같은 느낌으로 Typescript와 Javascript. 그리고 NPM과 Yarn. 

기준 없이 혼용해서 쓰는 상태에서 serverless에 올리게 되면 되던게 안되고 이게 되면 저게 안되고 이게 안되면 저게되는 난항을 겪게 됩니다.

이럴때는 stackoverflow도 큰 도움이 되지 않습니다.

내가 쓰는 Response가 그냥인지 express인지 fastify인지 정확하지 않다면요.

 

어쨌든 공부도 필요합니다.

처음에 당황했던 에러는 Cannot set headers after they are sent to the client 였습니다.

@Render() 를 사용한 상태에서 중간에 redirect를 하게되어서 만난 에러인데 이때는 호출시기에 대해 잘 모르고 있었습니다.

 

이런 수많은 이유들이 엮여서 간단한 프로그램을 만드는데 꽤 많은 시간을 소모하게 되었습니다.

이 또한 좋은 경험이라면 경험일텐데 쉽지 않았습니다. 아쉬움도 많이 남구요. (특히 Fastify)

일주일로 NestJS를 조금이라도 알았나? 싶으면 아닌 것 같습니다. 

이 과제는 계속해서 발전시켜 나갈 예정입니다.