SSR, JWT, venv 패키지 공유방법(항해일지 4일차)

김형준·2022년 5월 12일
0

TIL&WIL

목록 보기
4/45
post-thumbnail

첫번 째 미니 프로젝트가 종료되었다.
GitHub:https://github.com/Kim-HJ1986/hanghaeMusic99

1) 개발 현황 및 학습 일지

오전에는 PullRequests를 통해 팀원들과 코드를 Merge하고, AWS EC2 프리티어로 배포하였다.
배포를 하고, 팀원들 모두 QA를 진행하며 꽤 많은 오류를 찾고 고치고를 반복했다.
이 과정에서 몇가지 이슈들이 발생했다. (아래 이슈에서 다룸)

오후에는 프로젝트를 제출하기 위해, 프로젝트를 녹화하여 유튜브에 업로드하고, readMe.md 파일을 작성했다. 벨로그가 마크다운 형식을 지원하여 작성하는 데 어려움이 없었다.

또한 제출하며, 필수 항목이었던 SSR방식의 jinja2와 JWT토큰의 장점에 대해 복습했다.

복습한 내용은 아래와 같다.
SSR 방식의 장점은 첫 렌더링된 html 을 클라이언트에게 전달해 주기때문에 초기로딩속도를 많이 줄여줄 수 있으며,
자바스크립트 파일을 불러오고 렌더링 작업이 완료되기 전에 사용자가 사이트 컨텐츠를 이용할 수 있게된다.

JWT는 Json Web Token의 약자이고 인증에 필요한 정보들을 암호화시킨 토큰을 말한다.
세션 방식처럼 토큰 자체를 쿠키에 담아서 보내줄 수도 있고 HTTP 헤더에 담아서 보내줄 수도 있다.
진행방식은
1.사용자가 로그인을 한다.
2.서버에서는 계정정보를 읽어 사용자를 확인 후, 사용자의 고유한 ID값을 부여한 후, 기타 정보와 함께 Payload에 넣는다.
3.JWT 토큰의 유효기간을 설정한다.
4.암호화할 SECRET KEY를 이용해 ACCESS TOKEN을 발급한다.
(SECRET KEY는 암호를 풀어내는 키가 되기에 깃허브에 업로드할 때 gitignore를 사용하여 업로드 되지 않도록 주의해야한다!!!)
5.사용자는 Access Token을 받아 저장한 후, 인증이 필요한 요청마다 토큰을 헤더에 실어 보낸다.
6.서버에서는 해당 토큰의 Verify Signature를 SECRET KEY로 복호화한 후, 조작 여부, 유효기간을 확인한다.
7.검증이 완료된다면, Payload를 디코딩하여 사용자의 ID에 맞는 데이터를 가져온다.
이다.
쿠키에 비하여 보안성이 보장되고/ 세션에 비하여 서버에 부하를 줄 위험성이 적다.
(클라이언트(쿠키)에 토큰 정보를 저장시키기 때문)

또한 Java의 제네릭스, 람다, 스트림에 대해 학습했다.

제네릭스는 Java 언어의 타입 안정성을 보장하여 컴파일 시 타입을 체크하여 의도치 않은 타입의 객체가 저장되는 것과 잘못된 형변환을 막게해준다.
(JavaScript가 타입 안정성을 보장받지 못하는 인터프리터 언어이기 때문에 이를 보완하고자 탄생한 것이 TypeScript라는 컴파일 언어임을 다시금 복기했다)

람다와 스트림을 통해 Collection 프레임워크의 요소들을 데이터의 흐름에 따라 특정 메서드 구현 없이 기능을 구현할 수 있음을 알게되었고, 여러 예제를 풀어보며 감을 익혔다. 하지만 아직도 생소하여 더 많은 코드 작성이 필요할 것 같았다. (스프링 프로젝트에서 꼭 써볼것이다!! 꼭!!!)

2) 오늘의 이슈

오늘은 다양한 이슈들을 맞이했는데, 대부분이 소소한 이슈였다

하지만 로컬 환경과 클라우드 환경(우분투)에서 파이썬의 버전이 달라서 발생한 이슈는 소소하지 않았다.
자세한 내용은 로컬 환경에서 개발했을 때 .decode(utf-8)이 필요없었으나, 클라우드 환경에서는 버전이 낮아 위 메서드가 필요했던 경우였다.
물론 콘솔창에 오류를 읽어보면 쉽게 고칠 수 있었지만, 향 후 배포 과정에서 패키지 버전 차이에서 기인한 다양한 오류들을 맞이할 수 있겠다는 예감이 들었다.
지금은 파이썬 프로젝트이기 때문에, 각 프로젝트 마다 패키지를 저장해주는 venv(가상환경)에 대해 구글링해봤다.
그 결과

$ pip freeze > requirements.txt

$ pip install -r requirements.txt

이 두줄의 명령으로 현재 venv에 설치된 패키지(버전까지)를 모두 text에 담아 다른 환경에서 그대로 install할 수 있다는 것을 알게 되었다.

현재 파이썬 프로젝트를 깃허브에 업로드할 때 venv 파일이 업로드 안된다는 점을 봤을 때, 맨 처음 파이썬 프로젝트 세팅 완료 후 push하는 사람은 첫번 째 명령어로 모든 패키지 정보를 텍스트에 담아서 업로드 해주고,
이를 pull한 사람들은 두번 째 명령어로 자동으로 패키지를 설치하면 된다!

이렇게 간편한 방식이 있었다니....(다음 파이썬 플젝에선 꼭 활용해볼 것!)

3) 코멘트

내일부터는 알고리즘 주차가 시작된다. 나는 문제를 더 많이 풀어야한다는 달리기 반을 선택했는데, 내 선택에 후회가 없길 바라며 열심히 달려야 겠다.
오늘도 하루종일 정말 많은 양의 정보들이 오고 갔는데, 나중에 다시 읽어보며 중요한 정보들을 복기할 수 있길...
오늘도 고생했다 내일도 힘내자 화이팅!

profile
BackEnd Developer

0개의 댓글