2차 프로젝트도 팀원이 같고 그대로 내가 팀장을 맡고 진행하였다.
1차 프로젝트에는 맡았던 역할과 다르게 이번엔 할것들이 많았다. JWT 인증, 회원가입 CRUD , AWS + 도커 + nginx 배포를 진행하게되었다. JWT 는 자료는 많은데 버전마다 구현로직이 다달라 애를 많이 먹었다. 회원가입은 다른것보다 쉬울거같아 일단 최후방으로 밀고 JWT부터 진행하게되었다. JWT 진행하면서 포기할까도 생각했지만 유튜브에서 귀인을 만나...
진행할수있었다.
위에 사진들은 배포서버에서 로그인후에 찍은 사진입니다.
jwt 로직을 다짜서 postman 으로 확인했는데 postman으로 잘되던데 로컬에서는 잘 안됬는데 이유가 CORS 설정과 SSL 때문이었다. 백엔드에서 브라우저 헤더에 access 토큰을 담아보내도 CORS 설정을 안해주면 프론트 axios에서 해당 헤더를 볼수가없다. 그래서 해당 access 토큰 헤더를 보여주는 추가 CORS 설정을 해줬고 refresh 토큰은 보통 보안때문에 HttpOnly 를 적용한 쿠키를 브라우저 헤더에 던진다. 해당 HttpOnly 쿠키는 일반 쿠키와 다르게 클라이언트가 불러올수없어 조작이 불가능하다 라고알고있다. 왜냐하면 js코드나 어떠한 코드로든 해당 쿠키를 불러올수없고 단지, 프론트에서
withCreadentials=ture 설정하고 백엔드에 던져줄수있게만 한다. 또한, 해당 쿠키는 secure 적용하여 https 에서만 작동하기에 ssl 적용하여 테스트를 진행하였다. 구글링하여 찾아보니 임시로 로컬서버를 ssl을 적용해 https 쓸수있게 해주는 라이브러리가 있어 그걸로 테스트하였다.
그리고 secure 적용시 최근 브라우저들은 samesite 설정("None")을 같이 해주어야 해당 쿠키가 헤더에 적용되어 클라이언트에서 보여진다.
JWT를 완료 후에 회원가입 부분을 시작하였는데 게시판 부분이랑 비슷한 부분이많아 금방금방 진행하였다.
유효성검사를 통한 회원가입을 진행하게하였다.
원래 목표는 docker 를 활용한 aws+nginx 배포였는데 시간이 없어서 도커는 생략하고 진행하게되었다.
추후에 jenkins를 활용한 CI/CD + 도커를 추가해볼예정이다.
aws + nginx 배포를 하면서 nginx 에 대해 많이 알게되었다. 서버 구성도라든지 url 설정이라든지
리눅스언어도 많이 몰랐는데 putty 를 쓰기보다는 ubuntu에서 하고싶어
ubuntu 활용을 위해 잘 몰르는 부분 명령어는 찾아가면서 진행했다.
프론트 부분은 SSL 받은 파일들을 패키징해 적용시켰다. 해당 도메인에서 주는 API문서 보는걸로 충분히 할수있어 어려움은 없었다. 리액트를 써서 build 해서 따로 build 경로를 쥐어졌고 백엔드는 공용IP를 활용해 연동했다.
사실 학원에서 주어진 기간 마지막 전날에 밤새면서 했는데도 못했다.
근데 기간내에 못하더라도 배포는 꼭하고싶어 이틀동안 씨름한결과 백엔드와 연동을 성공시키면서 배포쪽은 마무리하게되었고 팀원들과 같이 수정할 부분은 수정하고 코드를 추가할 예정이다.
이번 2차 팀프로젝트를 진행하면서 딥하게 알아간거같다. 특히 JWT 나 배포쪽을 경험해본것이 너무 좋았다.
jwt 힘들었지만 할만은했고 배포는 정말... 나를 너무도 힘들게했다. 도저히 난 배포를 못하겠다라는 생각까지 가게했다.
그래도 배포를 하겠다는 열정으로 정말.. 견고한 벽을 뚫었다.
뭔가 벽을 하나 뚫으면 더 거대한 벽이 나와 나를 힘들게했지만 결국 뚫음으로써 성장한다는게 기분이 너무좋았다.
이번 프로젝트는 나도그렇고 팀원들 모두 너무 고생했고 팀원들에게 너무나도 고맙다.
'프로젝트' 카테고리의 다른 글
팀 프로젝트 중 JWT 관련 트러블 슈팅 (0) | 2024.05.06 |
---|---|
처음해본 팀 프로젝트 (0) | 2024.04.29 |
이제 갓 시작한 개발자 블로그 계속 발전하겠습니다. 최예나 팬입니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!