📌 해당 글은 패스트캠퍼스X야놀자 백엔드 개발 부트캠프 🤸♂️ 에 참여하고 있는 수강생이 작성했습니다! ✍
처음 과제부터 프로젝트를 진행한지도 벌써 3개월! 믿을 수 없는 시간이 흘렀습니다.... ⏰
우물쭈물댔던 첫 Java 과제부터 Spring 프로젝트까지.... 알찬 프로젝트를 진행했습니다!
그동안 무엇을 배웠느냐면...
- 부트캠프의 온라인 강의! 실시간 강의! 멘토님과 소통! 자유로운 자습까지!!!
- 저번 토이프로젝트에서 협업과 페어프로그래밍을 배웠고, 스프링 프레임워크로 MVC로 개발하는 방법을 배웠었죠!
- 그리고.. 그동안 같이 프로젝트를 진행했던 동기들과의 프로젝트와 스터디!!!
정말정말 많은 것을 배웠습니다!! 😭
이번 포스팅에서는.. 이번 프로젝트에서 배웠던 중심 내용과 함께 버전 관리 협업 방식에 대해서 다루어보겠습니다! 🤸
저번 토이 프로젝트에서 개발했던 프로그램에서 사용자 로그인/회원가입 기능 없이 프로젝트를 진행했습니다! 프로젝트 주제는 여행 여정을 기록, 관리하는 SNS 서비스
였죠!
저번에는 단순하게 정보를 주고 받는 일만을 하는 웹 서버를 개발했기 때문에 프로젝트 난이도가 덕분에 쉬웠던 감이 없지 않았죠.
이번 프로젝트에서는 저번 프로젝트에 이어서 사용자 권한 기능을 추가하여 SNS 서비스를 구축하는 주제를 받았습니다!
백엔드 개발자로서 사용자 권한에 대한 이야기는 빠질 수 없는 주제라고 생각합니다! 이제 제가 이번 프로젝트에서 개발했던 내용과 권한에 관련된 내용을 한번 다뤄볼까 합니다!! 😉
새롭게 추가된 정보들이 담겨있는 데이터베이스의 설계도 입니다. 뭔가 많이 들어가있죠? 사실 오른쪽 테이블은 토이프로젝트 2차 때 사용된 테이블입니다. 저희가 특히 보아야 할 부분은 바로 왼쪽 부분입니다.
좋아요 : 사용자는 여행 정보에 좋아요를 할 수 있다.
댓글 : 사용자는 여행 정보에 댓글을 달 수 있다.
사용자 : 사용자가 데이터베이스에 저장된다!
그리고 API 문서도 빼놓을 수 없죠!
권한은 예로부터 다른 사람의 침입으로부터 정보를 보호하고, 나의 정보를 안전하게 관리할 수 있는 도구로 활용되어 왔습니다! 이러한 권한은 어떻게 설계되는지 살펴봅시다.
스프링 프레임워크에서 일단 이러한 권한을 다루기 위해 아주 훌륭하고 복잡한 스프링 시큐리티
라는 라이브러리를 만들었습니다! 저희 토이프로젝트 조도 이 라이브러리를 활용해서 권한 기능을 만들었습니다!
또, 스프링 프레임워크에서 권한 설계는 크게 2가지 방법이 있습니다. 첫번째는 세션 방식
설계이고, 두번째는 JWT 방식
설계가 있습니다. 두 방식의 장단점을 알아보면 다음과 같습니다!
(출처: https://tecoble.techcourse.co.kr/post/2021-05-22-cookie-session-jwt/)
저희는 빠른 인증 처리와 우수한 확장성을 가진 JWT 방식
을 사용하기로 결정했습니다!
JWT 방식
에서는 토큰을 통해 서버와 클라이언트가 통신합니다! 이 방식에 대해서의 설명은 타 사이트에도 많이 있으므로 생략하고, 이 방식을 적용했던 코드를 한번 보시죠!
JWT 토큰을 스프링 웹
에서 사용되는 필터
를 통해 들여보내는 작업을 하고 있죠. 그리고 스프링 시큐리티
에서 사용되는 여러 작업(시큐리티 콘텍스트, 인증, 인가, 인증토큰 등....)을 통해서 처리하고 있는 모습을 보실 수 있습니다!
이번이 마지막 토이프로젝트였습니다! 제가 느끼기에 사실상 이번 프로젝트가 최대 핵심 프로젝트가 아니었나 싶습니다. 그동안 많은 우여곡절이 있었지만, 잘 버텨내고 잘 해나갔어서 정말 다행이었습니다.
그동안 같이 개발했던 토이프로젝트 조원분들, 도움 주셨던 멘토분들께 정말 감사의 말씀을 드립니다!!! 다들 고생하셨습니다!