스파르타 내일배움캠프 WIL 4주차 회고

Kim Dae Hyun·2021년 10월 10일
0

TIL

목록 보기
28/93

📌 2차 프로젝트

1차 프로젝트 때 목표로 한 기능 위주로 개발을 했다면 2차 때에는 기존 기능을 정말 사용 가능하도록 보완하고 몇 개 기능을 추가하는 작업을 예정했다.

초반에는 소셜 로그인JWT를 이용한 인증을 구현하고 구현된 인증 로직을 1차 프로젝트 때 만든 기능에 추가하는 작업을 주로 진행했다.


무엇이 좋은 코드일까? 이론적으로만 알고 있었지만 제대로 깨달았던..

인증 기능을 추가하면서 왜 확장성 있는 코드를 만들어야 하고 모듈화를 해야 하며 초반 설계를 제대로 해야하는 지를 절실하게 깨달았다. 처음부터 당장 인증을 적용하지는 않더라도 인증을 추가했을 때 다른 코드들로 연쇄적인 작용이 없더록 설계를 했어야 했다. 인증을 추가하면서 DB 스키마도 변경됐고, 좋아요/싫어요, 즐겨찾기 등의 기능에 대한 로직 자체를 변경했다. 만약 우리가 선택한 DB가 변경에 용이한 NoSQL이 아니고 RDBMS 였다면 훨씬 더 많은 시간이 소요됐을 것이다. 정말 설계를 잘 해야한다..


쉽다면 쉽지만 신경쓴다면 한없이 어려운 인증.. 😭

우리 프로젝트는 소셜 로그인만을 지원하기로 했다. 추가로 사용자로부터 입력받아 유지해야 할 데이터가 없다고 판단되어 인증의 수단만으로 로그인은 사용하기로 했기 때문이다.

인증 방식은 JWT를 이용한 토큰방식을 선택했다. 솔직히 말하면 선택한 이유가 기술적인 것은 아니다.. 캠프에서 배운걸 최대한 사용하고 싶었고 배운게 JWT 였다. 하지만 구현에서 끝내지는 않았다. JWT에 대해 충분히 자료를 찾아보고 이해하려 노력했다. 결과적으로 아직까지 정립되진 않았지만 말이다.. JWT에 대해 어떤 한 방식은 안다고 할 수 있을 것 같다. 하지만 다른 방식보다 왜 좋은가? 에 대해 대답이 바로 튀어나오지 않는다.

예를 들면 토큰을 클라이언트가 어디에 저장하고 어떤 식으로 재발급을 요청하고 서버는 어떤 식으로 제어할 수 없는 토큰에 안전장치를 해두냐의 문제이다. 나름대로 정리한 키워드는 Refresh Token, HttpOnly, Access Token에 짧은 만료기간, Flask-jwt-Extended 이다.


단순 CRUD에서 발전한 mongoDB 스킬 ~

NoSQL에서 많은 관심을 받는 기술답게 자료가 참 많다.
구글링하며 배우면서 코딩하는 맛이 있는 기술이였던 것 같다.

$set, $each, $push, $pull, $unset, sort, limit 등 ...
참 매력적인 db 이다. 다른 언어에서도 거의 똑같은 인터페이스를 지원하는 것 같다. 이번 기회에 잘 익혀두면 부분적으로 mongoDB를 사용해야 할 때 큰 도움이 될 것이다.


📌 이번주 구현 테스트 !!

딱 테스트 시간에 개인적인 일이 생겨서 테스트 종료 후 혼자 시간을 재며 테스트를 진행했다. 난이도는 딱 좋았다. 쉬워서 좋은 것이 아니고 풀이가 가능했지만 공부해야 할 여지가 분명히 있는 테스트라 느껴진 것이 좋았다.

일단 서버측 처리에서 크게 어려운 것은 없었다. 하지만 프론트 쪽에서 시간을 다 써버렸다. HTML, CSS 등 퍼블리싱 기술은 자료가 정말 많은데 아직 자료를 이해하는 센스가 부족한 것 같다. (프론트앤드랑 안 맞는건가..?) 그냥 자료를 봐도 제대로 써먹지를 못한다. 이번에 모달창을 구현할 때 거의 정답을 그대로 주는 자료가 있었는 데도 잘 쓰지 못했다.. 오히려 많은 자료만큼 너무 다양한 방식이 있어서 혼돈을 주는 것 같기도 하다..

아무튼 이번 구현테스트에서 주요했던 것은 클릭 이벤트에 따른 정렬이였다. 당연히 mongoDB를 사용했고 막힘없이 될 줄 알았지만 또 시간을 잡아먹은 부분이 있었다. 더 짜증나는 것은 똑같은 이슈를 TIL에서 다룬 적이 있다는 것이다 ... (링크...)

pymongo 로 데이터를 정렬할 때 find된 결과에 sort 를 이용하는데 이 때 조건을 리스트 안에 튜플 형태로 넣어줘야 한다

[ key1을 내림차순 후 key2를 오름차순 정렬 ]

find({}, {'_id':0}).sort([('key1',-1),('key2',1)])



이번 주도 부끄럽지 않게 열심히 했다 ㅎ

다음 주도 코딩 코딩 코딩 코딩 코딩 열심히 합시다 .. !

profile
좀 더 천천히 까먹기 위해 기록합니다. 🧐

0개의 댓글