안녕하세요, 여기에 여쭙는 것이 맞을까 고민하다가 혼자 해결할 별다른 방도가 없어서 부득이하게 글을 남깁니다. 강의와는 조금 동떨어져 있는 고민일 수 있지만 읽어주시면 감사하겠습니다.
얼마 전까지 저는 개인 토이 프로젝트를 구현할 때, MVC 강의에서 가르쳐주신 세션 방식의 로그인을 사용하였습니다. 그런데, 취업을 위해 여러 포트폴리오나 프로젝트 예시들을 보고 OAuth2 를 이용한 로그인 방식을 적용해보기로 마음 먹었습니다. 그래서 주로 인터넷을 통해 스프링 시큐리티와 OAuth2에 대한 자료들을 찾아 공부했는데, 공부를 하면서 다소 부족하다는 느낌을 많이 받았습니다. 스프링 시큐리티 기술의 난이도가 높은 탓인지 사용되는 모든 코드에 대한 명쾌한 설명을 얻을 수 없었기 때문입니다. 그리고 무엇보다도 찾아본 예제들에서 액세스 토큰을 다루는 방식들이 제각각 보안 취약점을 갖고 있다보니 이 코드들이 정말 실무에서 그대로 활용될 수 있는 코드들인지 확신할 수 없었고, 실무에서는 클라이언트와 서버가 어떠한 방식으로 액세스 토큰을 주고 받게끔 설계할지 감이 잘 오지 않았습니다. (이에 비하면 사소한 문제긴 하지만, 최근 스프링 시큐리티 6이 나오고, 여러 기능이 deprecate 된 탓에 코드를 그대로 적용하지 못하고 일일이 찾아보면서 수정해야 하니 더 까다롭게 느껴지기도 했습니다.)
때문에 강의나 서적을 통해 스프링 시큐리티를 활용하는 방법을 제대로 이해할 필요가 있지 않을까 하는 생각을 하게 되었습니다. 다만, 저는 취업을 목적으로 공부하고 있고, 시간이 한정되어 있는 상황에서 새로운 기술을 습득하는 데에 많은 시간을 쓰는 것이 조금 걱정이 되기도 합니다. 때문에, 기업에서 보통 신입 개발자에게 스프링 시큐리티 기술에 대해 어느 정도 수준으로 이해하고 있을 것을 요구하는지 여쭤보고자 합니다. 물론 당연히 기업마다, 상황마다 다를 수 있기에 어리석은 질문이라는 생각이 듭니다. 하지만, OAuth2 로그인 적용을 위해 해당 기술의 개념과 적용 코드들을 깊이 있게 공부하는 것보다, Spring MVC와 DB 접근 기술, Spring Data JPA 등의 이해도와 활용 능력을 키우는 것이 중요하다면, 후자에 집중하고 싶다는 마음이 큽니다.
긴 글 읽어주셔서 감사하고, 양질의 강의 제공해주셔서 정말 감사합니다.
안녕하세요. 영민님
신입 개발자에게 기대하는 수준은 기업마다 다릅니다. 일부 기업에서는 스프링 시큐리티에 대한 심도 있는 지식을 기대하겠지만, 대부분의 기업에서는 단지 기본적인 원리와 사용 방법을 이해하는 것이 충분하다고 생각할 수 있습니다. 그러나 일반적으로, 신입 개발자가 깊이있는 보안 지식을 가지고 있을 것을 기대하기 보다는 기본적인 원리를 이해하고, 주어진 문제를 해결하는 데 필요한 도구를 선택하고 적용할 수 있는 능력을 더 중요시 합니다.
OAuth2와 같은 복잡한 인증 기술은 팀 전체가 아니라 보안에 특화된 몇몇 개발자가 주로 다루는 경우가 많습니다. 그래서 이것이 신입 개발자에게 필수적인 기술은 아닙니다. 물론 이것이 가치 있는 기술이고 배울 가치가 있는 것은 사실이지만, 기본적인 개발 역량을 먼저 갖추는 것이 훨씬 더 중요하다는 것을 기억해주세요. 예를 들어서 본인이 회원/인증을 직접적으로 다루는 팀에 지원한다면 OAuth2 개념이 중요하지만 그렇지 않다면 개념을 대략 이해하는 정도만으로도 충분하다 생각합니다.
포트폴리오 프로젝트에서 다양한 기술을 적용해 보는 것은 좋지만, 이해하지 못하는 기술을 억지로 적용하기 보다는 자신이 이해하고 효과적으로 사용할 수 있는 기술을 사용하는 것이 더 중요합니다. 이렇게 하면 자신의 실력을 제대로 보여주고, 면접에서 자신감 있게 대답할 수 있을 것입니다.
정리하자면 백엔드의 경우 스프링 기본, 스프링 MVC, 스프링 DB 접근 기술등이 더 중요합니다. 물론 웹 애플리케이션에서 세션 개념은 아주 기본이어서 필수로 알아야 하는 것이고, OAuth2를 사용하는 방법은 필수는 아니라 생각합니다. 대신에 개념을 알아두는 정도만 해도 충분하다 생각합니다. 물론 본인이 회원/인증과 관련된 팀에 지원한다면 필수로 잘 알아야하겠지요?
도움이 되셨길 바래요.
답글
지영민
2023.08.04정성스럽게 답변 달아주셔서 감사합니다! 열심히 공부하겠습니다 ㅎㅎ 좋은 하루 되세요!