어느새 항해를 시작한 지 28일째…
시간 참 빠르다. 99일이라는 시간이 원래 길지 않은 시간이다 보니 매일매일 몰두하면서 무언가를 파고드는 일을 오랜만에 해서 그런지 답답하고 이해 안 되다가도 이것저것 구글링도 해보고 책도 보고 하면서 야금야금 이해되는 느낌이 썩 나쁘진 않은 듯??
한 주간의 이야기
주특기 두 번째 주차를 시작하며 새로운 과제와 생소한 기술들을 보면서 하나 더 배운다는 것이 설렘 비슷하게 다가온 것이 재미있었다
기존에는 Mongoose를 이용한 NoSQL 방식의 DB를 사용하여 서버를 구축하였었는데, 이번에는 관계형 DB인 MySQL으로 변경하고 JWT토큰과 Joi를 이용한 authorization을 구현해 보는 게 주요 과제였다.
사실 비관계형 DB인 MongoDB와 관계형 DB인 MySQL의 차이를 공부하긴 했으나, 직접 써보고 나니 확실한 차이를 느꼈다. 가장 큰 차이는 MongoDB에서는 테이블과 스키마라는 개념이 약간 모호한데 MySQL은 테이블과 스키마가 확실하고 엄격한 느낌이었다. (JavaScript가 MongoDB라면, MySQL은 TypeScript쯤?)
기존의 과제 적용되어 있는 mongoose를 MySQL로 변환하는 작업은 직접 하는 방법도 있겠지만 언제나 그렇듯 이런 거 있으면 편하겠다 생각되는 건 npm 라이브러리에 있다.
그중 ORM에 속하는 Sequelize라는 라이브러리는 자바스크립트 문법과 메서드로 SQL Query를 쓰지 않고도 데이터를 조작하게 해주는 멋진 라이브러리이다.
이 녀석 얘기를 빼먹을 수가 없는데, 과제를 제출하고 시간적으로 여유가 있으면 구현해 보라는 얘기에 궁금함을 참지 못하고 덤벼들었다.
약간의 설명을 하자면 백엔드 개발자가 API 명세서를 엑셀이나 표로 나타낸 문서형식으로 프런트엔드 개발자에게 그저 전달하게 되면 프런트엔드 개발자입장에서 구체적으로 어떻게 해야 할지 애매한 상황을 좀 더 쉽게 풀어주는 일종의 라이브러리라고 이해했다.
그냥 구글링 조금 하고 무작정 덤볐는데 쉽지 않았다. 무엇보다 JavaSpring으로 구현한 예시는 많은데 Node.js로 구현한 예시는 이해가 안 되기도 했고 많이 없어서 기초자료와 공식문서를 통해서 처음엔 yaml 형식으로 일일이 손으로 작성해서 기본적인 get방식 까지는 구현했으나, 로그인 로그아웃과 같은 jwt토큰이 필요한 작업은 구현을 못했었다.
그러고 나서 swagger-autogen이라는 라이브러리를 알게 됐고 전부는 아니지만 내가 작성한 API를 토대로 swagger의 기본적인 틀은 json형식으로 만들어주어 수정하고 jwt토큰까지 적용시켜 구현을 끝냈다.
많이 난해 하기도 하고 사실 과정은 하나씩 동작할 때마다 신기하고 재미는 있었지만 하루 조금 넘는 시간을 이 시기에 투자한 것은 조금 과하다는 생각을 지울 수가 없다. (그래도 필요할 때 잘 쓸 수 있겠지..)
한 주간 아쉬웠던 점
- 매주 똑같은 아쉬움이 남는 거 같은데 기초다지기 철저하게 해야겠다
- 우선순위를 너무 애매하게 정하고 계획하고 하기보다 즉흥적으로 한 게 많았다.
한 주를 보내고 남은 것들
https://github.com/JangKroed/hanghea99_week4
GitHub - JangKroed/hanghea99_week4
Contribute to JangKroed/hanghea99_week4 development by creating an account on GitHub.
github.com