해당 글은 코드스쿼드 2022 마스터즈 코스 "Java 웹 백엔드" 과정을 수강하면서 학습한 내용 등에 대한 회고 글입니다. :)
수강 회고
올해 1월부터 하루하루 마스터즈 코스 관련 일일 회고를 쓰면서 언제즈음 100일차 회고를 써보지 했었는데, 늘 그렇듯이 벌써 마스터즈 코스를 시작한지 정규 일수로 100일 째가 되는 날이 됐다. (시간은 엄청 빨리간다..😅) 앞으로 남은 일수는 고작 20일밖에 되지 않는데, 이제 정말 마스터즈 코스가 마무리가 되가는 느낌을 받는다.
마스터즈 코스 전체 과정의 6개월이라는 시간은 결코 짧은 시간이 아니지만 이러한 과정들을 통해 지금 보다 더 성장하고 싶어서 지원하게 되었습니다. 혼자 개발을 함에 있어서도 많은 난관과 좌절이 있었던 만큼 분명히 마스터즈 코스를 수강하는 중에서도 많은 난관과 좌절이 있을 것이라고 생각됩니다. 하지만 “나를 죽이지 못하는 것은 나를 더 강하게 만든다.”라는 철학자 니체의 말처럼 적어도 키보드와 마우스는 놓지 않겠다라는 끈기있는 마음으로 코스 과정에 임하겠습니다.
민망하지만 😇 위 내용은 작년 12월 2022년 마스터즈 코스에 지원하기 위해 작성했었던 지원서 中 일부를 발췌해보았다. 마스터즈 코스에서 어떻게 학습하고 싶은지에 대한 각오를 적어달라는 지원서 질문에 대한 작성분인데, 나름대로 당찬 포부로 지원을 했었던 것 같다. 지금 보니 "나를 죽이지 못하는 것은 나를 더 강하게 만든다."라는 문구가 참 인상깊으면서도 민망하다. 🤣
요약하자면 6개월간 진행될 마스터즈 코스 전체 과정간 많은 어려움이 있을 것으로 예상하지만 포기하지만 않겠다라는 마음으로 과정에 임하겠다는 말이었다. 일단 지난 100일간의 마스터즈 코스 과정을 스스로 되돌아 보면 정말 예상했던 것 만큼 많은 어려움이 있었다. 😂 부스트 코스 "웹 프로그래밍(풀스택)" 과정을 끝내고 나름대로 기고만장(?) 한 상태로 마스터즈 코스에 입문했지만 현재 IT 웹 업계에서 필요로 하는 지식과 경험 대비 내가 알고 있는 지식과 경험은 새발의 피 수준이었다.
매번 새로운 미션 과제와 새롭게 학습해야 할 기술과 컴퓨터 과학 지식들 등등 내가 알아야 할 것들이 굉장히 많았고 매우 능력있는 수강생분들도 굉장히 많이 계셨다. 나에게 주어진 시간은 한정적이었기에 알아야할 것들이 많았지만 내가 흡수할 수 있는 것은 작은 일부에 불과할 수밖에 없었다.
그럴 때마다 무언의 압박감이 들면서 초조한 마음이 많이 들곤 했었다. 하지만 그럴 때마다 마치 주문처럼 "포기하지만 말자"라는 생각을 했었던 것 같다. "에이 뭐 될 때로 되라"라는 생각도 도움이 되었던 것 같다. 사실 회사에 다니면 이런 생각을 갖기는 왠만한 배짱이 아니고서는 쉽지 않다. 하지만 나는 지금 학습 단계에 있었기 때문에 잃을 것이 전혀 없었다.
아울러 사람별로 각자만의 환경과 상황 그리고 능력은 어느 정도 정해져 있기에 각 사람별로 이룰 수 있는 성과 역시 어느 정도는 정해져 있다고 생각한다. 그렇기 때문에 더욱 조급할 필요가 없었다고 생각했다. "있는 그대로 형편에 맞게 한다." 이 말 역시 나만의 모토가 되는 말이다.
나를 포함하여 모든 취업 준비생 분들 역시 다들 "좋은 회사"에 다니고 싶어할 것이다. 이때 "좋은"이라는 기준은 사람별로 다를 것이다.(연봉, 네임밸류, 근무지 등) 냉정하게 말하면 최선을 다한다고 해도 내가 갈 수 있는 회사는 사실상 정해져있으며, 그게 내가 원하는 "좋은 회사"가 아닐 수 있다. 하지만 이는 현실 그 자체이기에 이를 받아들일 수밖에 없다. 하지만 이를 받아들임으로써 압박감으로부터 자유로워질 수 있었고 이를 통해 학습에 온전히 집중할 수 있었던 것 같다.
아무쪼록 지난 100일을 되돌아 보았을 때 처음 호눅스에게 전해졌을 지원서에 적힌 "마스터즈 코스에서의 각오"는 나름 잘 지켰다고는 생각한다. 앞으로 20일밖에 남지 않았지만 나중에 후회하지 않기 위해 남은 20일간 전력을 다해 최선을 다하고자 한다.
학습 회고
오늘은 JWT를 통한 로그인 유지 기능을 구현하기 앞서 JWT에 대한 기본 개념을 학습했었다. 사실 지난 팀 프로젝트 미션 과제였던 "투두리스트"와 "반찬 주문 서비스" 웹 앱을 구현할 때 JWT를 활용한 로그인 유지 기능을 구현할 기회가 있긴 했었지만 나름대로 다른 새로운 기술들을 학습하느라 정신이 없었기에 기본 개념조차 학습하지 못했었다.
항상 생각으로만 JWT, JWT 하다가 이번 팀 프로젝트에서는 JWT를 통한 로그인 유지 기능을 구현하고싶다는 욕심이 생겼다. 사실 이번에 학습하기 전까지만 해도 단순히 JWT를 통한 로그인 유지 방식이 세션을 통한 로그인 유지 방식 보다 뭔가 새롭고 성능이 더 좋다고만 생각했었다.
하지만 세션과 JWT의 각각의 장단점이 있을 뿐이었고 자신의 서비스에 적합한 기술을 적용하는 것일 뿐이었다. 세션은 특정 서버(WAS 메모리, DB 등)에 사용자들의 상태를 별도로 저장하고 이를 관리한다. 이로써 메모리 부담 또는 잦은 하드디스크 I/O가 발생할 수 있다. 하지만 세션은 stateful하기 때문에 사용자들의 상태를 제어할 수 있는 장점이 있다. 예를 들어 세션 상태 관리를 통해 한 기기에서만 로그인이 가능한 서비스를 만들 수 있다. 특정 기기에서 로그인을 했다면 다른 기기에서는 로그인을 하지 못하도록 하는 것이다.
반면에 JWT는 사용자들의 상태를 서버 어딘가에 저장할 필요가 없다. 이를 통해 세션 처럼 WAS별로 세션 동기화를 하거나 메모리 부담이 적어 서버 증설에 유연하다(서버의 확장성이 좋다)는 장점이 있다. 하지만 누군가 토큰을 탈취할 경우 이 토큰을 무효화할 방법이 없다.
이러한 단점을 보완하기 위해 access token과 refresh token을 나누어 사용자에 발급하는데, acees 토큰의 만료 기한을 짧은 시간으로 두되, refresh token의 만료 기한은 좀 더 긴 시간으로 두고 이를 DB(보통 레디스를 사용한다고 한다.)에 별도로 저장하는 방법이 있다. 이때 사용자는 access 토큰 만료 기한이 다하면 refresh 토큰을 서버에 보내고 서버는 이것을 앞서 DB에 저장한 것과 비교하여 일치하면 새로운 access 토큰을 발급해주는 것이다.
하지만 access 토큰의 만료기한이 아주 짧은 시간일지라도 그 찰나에 살아있는 시간 동안에는 이를 무효화할 방법은 없다. 아주 일부의 요인들만 다루긴 했지만 이러한 점들을 미루어 보았을 때 JWT가 좋다 세션이 좋다라는 말 보다는 어떤 것이 내 서비스에 적합한지 충분히 고려하는 것이 중요하다는 것을 생각해볼 수 있었다.
좋았던 점
- 지난 100일을 되돌아 보았을 때 마스터즈 코스 들어오기 전 각오를 나름대로 잘 지킨 것 같아 만족합니다. 😇
아쉬웠던 점
- 마스터즈 코스에 오면서 느끼는 거지만 조금이라도 더 일찍 부트 캠프에 올걸이라는 마음이 들곤합니다. 하지만 작년에는 위염으로 오랜 시간 휴식을 취했었기에 부트 캠프에 가야겠다라는 생각을 못했었던 것 같습니다.
이전 보다 개선되었던 점
- 뭔가 너무 옛날이긴 하지만 마스터즈 코스 1일차(1월 4일) 때와 100일차인 지금의 모습과 비교해보니 정말 많은 성장이 있었던 것 같습니다. 👀
'2022 Masters Course > Project Course' 카테고리의 다른 글
2022 마스터즈 코스(백엔드) 102일차 회고(2022. 6. 7.) - "무작정 따라하기 보다는 이해한 것부터 차근차근" (0) | 2022.06.07 |
---|---|
2022 마스터즈 코스(백엔드) 101일차 회고(2022. 6. 6.) - "세 번째 프로젝트의 마지막 주간" (0) | 2022.06.06 |
2022 마스터즈 코스(백엔드) 99일차 회고(2022. 6. 2.) - "Just do it!!" (2) | 2022.06.02 |
2022 마스터즈 코스(백엔드) 98일차 회고(2022. 6. 1.) - "배포 삽질로 가득했던 하루" (0) | 2022.06.02 |
2022 마스터즈 코스(백엔드) 97일차 회고(2022. 5. 31.) - "지난 5월 되돌아보기" (0) | 2022.05.31 |