드디어 코테에 합격해봤다... 👍
처음으로 기업 코딩 테스트에 합격했다. 내가 붙은 코테는 데브코스가 전부였는데, 그 동안의 노력을 인정받는 것 같아 행복하다. 하지만 합격의 기쁨도 잠시 1차 면접에 대한 부담감이 몰려왔다. 처음에는 어떤 특별한 일을 해야할까 안절부절했지만, 하루동안 고민한 결과는 그냥 하던대로 하자
였다.
처음에는 아직 엄청 부족한 내가 어떻게 1차 면접을 준비할지 부담감이 앞섰는데, 결론적으로 어차피 모든 일은 완벽히 준비될 수 없다는 것이다. 어떤 일이든 준비를 많이 해도 막상 그 일이 다가오면 준비가 덜 된 것 같이 느껴진다. 원래 하던 것을 꾸준히 하면서, 내가 했던 프로젝트를 정리하고, CS 에 대해 복습하는 시간을 추가하면 될 것 같다. 면접이라고 생각하기 보다 멘토링 받을 수 있는, 나의 현재 위치를 객관적으로 검증받을 수 있는 시간이라고 생각하며 면접까지 남은 기간동안 최선을 다해 준비해야 겠다.
프로젝트의 크기에 집중하기 보다 작은 개념 하나라도 진득히 느껴보자 ❗️
토스 서술형에서 나왔던 개념들을 실전 프로젝트를 통해 공부해보면 좋을 것 같아, 주제를 잡고 개발을 시작했다. 토스 합격이 발표되기 전에 이미 프로젝트를 기획하고 개발을 시작하고 있었는데, 합격이 되서 해당 프로젝트의 무게감이 달라졌다. 😂
이번 프로젝트를 통해서 이론적 지식들을 실제로 경험해보고 느껴보는 것이 목표다. 많은 기술을 적용하여 서비스를 개발하기 보다 정말 필요한 기술들만 적용하고, 내가 학습하고자 하는 영역에만 집중하여 개발해보려고 한다.
진짜 너무 어렵다... 개인적으로 Spring 시리즈 중에서 가장 Top 급의 난이도인 것 같다.. 😭
Togg 프로젝트에서 유저를 식별하기 위해 OAuth2 + JWT 를 활용하여 회원가입과 로그인을 구현했다. 해당 기술을 구현할 때, 정말 어려웠던 것 같다. 기본적으로 어떤 에러가 발생했을 때 디버깅하는 것이 너무 어렵다고 생각했다. 수많은 Spring Security 필터 속에서 어느 필터에서 문제가 발생하는지 파악해야 했다.
구체적인 예로 CSRF 설정을 비활성화 해주지 않아, Access Token 을 헤더에 잘 넣어줬음에도 불구하고 인증이 제대로 이루어지지 않고, /login 으로 리다이렉트 되는 문제가 발생했다. 해당 문제의 경우 Get 요청일 땐 잘 되고 Post 요청일 때만 문제가 발생하여 더욱더 찾기가 힘들었던 것 같다. 에러가 발생하는 것이 아닌 요청한 URL 을 컨트롤러가 잡지 못하고, 계속 /login 으로 리다이렉트되어, 어떤 필터가 이런 발칙한 일을 하는지 찾아야 했다. 호출된 trace 를 역으로 타고 들어가서 문제를 찾으려 했지만 너무 많은 필터의 흐름 속에 결국 내 머리가 버티지 못했다.
힘겨운 디버깅 속에 문제를 해결했지만, 이 과정에서 Spring Security 에 대한 근본적인 학습을 제대로 해야겠다고 생각했다. 단순히 생각했을 때, 스프링에서 /login 을 리다이렉트 시킨다는 것은 인증이 제대로 이루어지지 않았다는 것이고, 인증이 제대로 이루어지지 않은 것이라면 Jwt 인증 필터가 제대로 작동하지 않거나, 앞선 필터에서 403 권한 에러를 발생시켰을 것이다. 결국 Spring Security 의 기본이 탄탄했다면, 금방 문제를 해결했을 것 같다.