본문 바로가기
카테고리 없음

[Express.js] 1주차 중간점검

by Chaedie 2023. 3. 12.
728x90

[Express.js] 1주차 회고

Express.js 백엔드에 대해 제대로 아는것이 없는 상태에서 무작정 만들면서 배우기 시작한지 1주일차. 이번주엔 무엇을 배웠나..?

기본적인 CRUD… 이전에… 세팅부터 (PostgreSQL, RDS, Raw Query)

CRUD 자체는 FE 하면서도 많이 해본것이라 큰 어려움은 없었다. 다만 강의, 공식문서와 환경이 똑같지 않아 환경설정 등에서 어려움을 겪었고, 예기치 못한 에러들을 많이 만나는 경험을 했다. 특히 connect-redis 를 버젼 다운하며 해결했던 문제는 정말… 지금 생각해도 황당하다. ㅎㅎ

제로초님 <Node.js교과서>에선 Sequelize를 사용하는데, 개인적으론 Raw Query를 연습하면서 익숙해지고 싶다는 생각에 SQL문을 직접 사용하기로 했다. PostgreSQL이 Non-blocking IO에 특화된 Node.js와 궁합이 좋다는 것이 기억나 DB 또한 MySQL이 아닌 PostgerSQL을 사용했다. 거기다 로컬DB가 아니라 AWS RDS를 사용하고 싶어서 기초적인 CRUD를 경험해본 뒤 바로 RDS로 넘어갔다. (메모리 배열 CRUD, fs CRUD, sqlite, Local PostgreSQL)

DB 툴링

DB는 건드린지 꽤 오래되어 기초적인 툴링부터 쉽지 않았다. Datagrip은 유료라 사용하지 못하고 있고, Workbench는 쿼리치면 튕겨서 못쓰고 있다. 결국 pgAdmin4과 DBeaver를 사용하고 있고, 현재는 pgAdmin4이 가장 편하게 느껴져 사용중에 있다. CLI로 DB를 잘 다루면 좋겠지만,,, 우선은 GUI로 해결하는 중이다.

AWS LightSail 배포, CORS

LightSail에 서버를 배포했다. AWS EC2에 배포해본적이 있어서 그때 경험에 비해 훨씬 간단했고, git도 이전에 비해 익숙해진 상태라 Linux환경에서 코드가 꼬이거나 미세한 수정이 필요할 때 어렵지 않게 해결할 수 있었다. 다만 Vercel을 활용해 배포한 Next.js 프론트와 LightSail을 활용해 배포한 BE가 CORS를 계속 만났고, CORS를 해결한 지금도 쿠키가 묻어 오지 않아 인증/인가에서 난항을 겪고있다.

인증/인가

  • Passport 코드 경험
  • Passport 없이 세션방식, JWT방식, JWT + 세션 유지
  • Passport Local Strategy 방식

위 흐름대로 인증/인가를 경험중이다. FE를 배울 당시 JWT토큰을 받아서 헤더에 담아 보낼때는 인증/인가가 무척 간단하게 느껴졌었다. 팀원의 카카오 로그인을 도와줄 당시에도 꽤 간단하게 해결했던 경험이 있다. 하지만 인증/인가가 백엔드 코드에선 꽤 까다로운 문제였다는걸 이번 기회에 알게 되었다.

사실 아직 배포환경에서 제대로 작동하지 않고 있어서 배울게 많이 남은 상태이지만,,, 1주차에 한것만 해도 굉장히 많은것을 배웠다. 특히 FE 면접 준비를 하면서 네트워크 파트에서 나왔던 세션+쿠키 방식에 대해 개념적으로만 알고 있었는데, 이를 실제로 코드상에서 적용하니까 꽤 신기했다. 개념만 아는 상태에서 직접 하려니 많이 어려웠는데, 역시나 많이 접하다보니 익숙해지는 중이다. 물론 지금도 부족한 점이 많지만 이해하고 코드를 짤수있게 되어 다행이다.

CI/CD

서버에서 git pull하고 pull 한 코드를 reload하는 과정이 굉장히 귀찮게 느껴졌다. 그래서 CI/CD를 검색해서 따라해보았다. 그리고 실패했다… AWS 인증이 계속 안되는 중인데, 일단 우선순위가 높은건 아니고, 다른 경험을 더 한 뒤 보는게 효과적일것 같다는 생각에 미뤄두고 있다…

너무 귀찮아서 CI/CD부터 되면 좋겠지만… 아직은 역부족이다. 4주차쯤되면 성공하겠지!


요약하면,

배운점

  • CRUD 이외에 세팅, 배포 등을 경험
  • 인증/인가 프로세스에 대해 제대로 알게 됨
  • API문서를 작성해보면서 문서 자동화 툴이 간절해짐 (SWAGGER 꼭 도입하고 싶다…)

개선 점

  • 요구사항을 일단 만족을 시키고 있는데 첫 프로젝트고 잘 모르고 하는거다보니 코드가 스파게티가 되어간다. 구조도 Nest구조를 따라 만들어보았는데, 오히려 더 헷갈리는것 같다. 특히 다른 사람들 코드를 참고하려 할 때 구조가 많이 다르다 보니 힘든점이 있다. 처음엔 커스텀이 구조가 아닌 스탠다드 구조로 가는게 맞는듯
  • 이것저것 다 적용해보고 싶다보니 제대로 끝내지 못한 일들이 많다. 특히 로컬에선 되고 배포환경에선 안되는 상황이 있는데, 이거 해결을 제대로 못하고 병행하면서 가고 있어서 Commit도 꼬이는중이다… 해결좀 하자..!

 

 

 


한주간 안되는게 꽤 많았네.. 다음주도 잘해보자..!

댓글