Spring은 Framework이다 프레임워크라는 건, >Framework는 어떠한 목적을 달성하기 위해 복잡하게 얽혀있는 문제를 해결하기 위한 구조며, 소프트웨어 개발에 있어 하나의 뼈대 역할을 한다. 라고 나와 있기는 한데, 사람을 이해시킬 생각이 있는 설명인지는 의문이다. 개인적으로 너무 추상적인 설명이라고 본다. 보다 구체적으로 말하자면, 프레...
OOP란? 소프트웨어는 계속해서 변화하고 수정된다. 그 때문에 주먹구구식의 수정을 반복하다 보면 코드는 결국 이런 모양이 된다. 다 때려부수고 새로 만드는 게 나을지도 심정이 어떻든 간에 동작은 하는 애플리케이션이라면 현실적으로 다 뜯어고치기는 힘들다. 이를 한 번에 해결하는 방법은 존재하지 않고, 해결을 위해 들이는 모든 시간과 노력이 결국 코...
Spring Core? Spring Boot에 대해 알아보기 전에 어떤 기술들에 의해 그것이 쌓아올려졌는지 알아보자. Spring Core란, Spring framework의 근본/핵심 부분으로 DI를 지원하는 기능을 담당한다. 사진에 보이는 Core Container 내의 Core가 바로 DI, 내지는 IoC를 담당하는 서브 프레임워크이다. 그러나...
Spring Web MVC란? Spring에서 제공하는 웹 모듈로 MVC 패턴 즉, Model, View, Controller로 나뉘는 세 요소를 활용해 사용자의 HTTP 요청을 처리하고 응답을 준다. 이 응답은 단순 텍스트 일 수도, RESTful한 응답일 수도, View를 포함한 시스템일 경우 완성된 html 일 수도 있다. 다양한 요청을 처리하고...
Spring Security의 기본 동작 세세한 걸 알아보기에 앞서, 전체적인 동작을 확인해 보자. 우선, Spring Security는 Servlet의 Filter 기반으로 작동한다. 문제는 여기에 있다. Filter는 Spring Context 밖에 있는 녀석이다. 그 말은, Bean을 인식하지 못한다는 거다. 그렇기에 Servlet의 Filt...
Authentication 전편에 Security 모듈이 어떤 식으로 구성되어 있고, Spring Framework와는 어떻게 연결되어 있는지 알아봤다. 이번에는 이 녀석이 하는 일, 인증 그 자체에 대해 알아보자. 우선 Authentication의 아키텍쳐 구성 요소들은 다음과 같다. SecurityContextHolder : Spring Secu...
Authentication의 주요 매커니즘 Username and Password OAuth 2.0 Login Remember Me 등이 있다. 자주 쓰이는 것만 대강 추려보았다. 하나씩 알아보도록 하자. Username/Password Authentication 아마 가장 보편적인 방식의 인증일 것이다. 기본적으로 유저의 ID와 비밀번호를 검...
JWT Authentication JWT는 Bearer 토큰을 이용, Basic Authentication 방식처럼 헤더에 토큰 정보를 넣어 인증에 활용한다. 쿠키, 세션이 필요없기 때문에 같은 세션을 공유하지 않는 RESTful API에서 인증을 위해 많이 사용하곤 한다. 다만, 토큰은 한번 발행되고 나면 유출되었을 시에 만능키처럼 활용될 수 있다는...
개요 Spring Batch는 일반적으로 대용량의 데이터를 처리할 때 이용한다. 예를 들어, 1일 1회 외부 api를 통해 대량의 데이터를 받아 일괄처리를 해야 하는 경우. 매일 생성 기간이 일정 이상 지난 오래된 데이터를 일괄 정리하는 경우 등. 하지만 단순 대량 처리를 할 뿐이라면 꼭 Spring Batch를 사용할 필요는 없다. Batch Fram...
OAuth? 개념부터 잡고 넘어가보자. >OAuth 2.0 is the industry-standard protocol for authorization. OAuth의 공식 레퍼런스 사이트에서는 위와 같이 말하고 있다. 한 마디로, 인증을 위한 개방형 표준 프로토콜이다. OAuth가 나오기 전에는 여러 서비스사에서 각자 개발한 방식대로 인증을 진행했...
이전글에서 OAuth 2.0의 개념을 잡았으니 이번글에는 Spring Boot를 이용한 실습을 해보겠다. 목표는 2가지이다. Google을 이용한 로그인. Kakao를 이용한 로그인. 왜 이렇게 2가지냐면, Google은 CommonOAuth2Provider에 정의되어 있다. Kakao는 그렇지 않다. 그렇기 때문에 Kakao를 통한 로그인을 위해서...
Background Spring의 OAuth2-Client를 이용해 OAuth2 프로토콜을 이용하는 로그인은 구현을 했다. 로컬 테스트를 성공적으로 마치고 안심하고 있었다. 그러다가 프론트팀과 함께 통합테스트를 했는데...ㅋㅋ 별의별 문제가 다 생긴다. 그래서 CORS 테스트를 안 했었구나 하는 깨달음을 얻고, 기존 프로젝트에서 페이지 렌더링을 하는...
Background 이번 프로젝트에 소셜 로그인을 도입하면서 별별 문제를 다 겪었는데, 생각보다 소셜로그인 튜토리얼이 없다는 걸 느꼈다. 사실 해놓고 보면 진짜 별 거 없어서 안 쓴 걸까? 하는 생각도 들기는 한다. 근데 내가 소셜 로그인을 처음 시도할 때에는 특정 라이브러리를 써야 하는 걸까? 어떤 식으로 필터를 구성해야 하지? 등등의 걱정을 많이 ...
API 문서 RESTful service에서 (그리고 아마도 GraphQL service에서도) api의 사용법을 안내하는 것은 중요하다. 각 메소드의 목적과 사용방법이 무엇인지 추측하면서 작업을 진행하는 것은 너무나 비효율적인 일이기 때문이다. 그렇기 때문에 백엔드 개발자로서 API 문서를 만들고 유지보수하는 것은 필수적이지만, 솔직한 말로 굉장히 ...