Dev-its
Preview Image

소셜로그인 기능을 직접 만들어보자 (with Spring Oauth 2.0 Client)

이제는 소셜로그인을 지원하지 않는 서비스를 찾는 것이 더 어려워졌다. 어찌보면 당연한 현상이다. 서비스별로 아이디와 암호를 모두 외우는 대신 계정 하나의 아이디와 암호만 외우는 게 이용자로 하여금 훨씬 쉽기 때문에 그만큼 빠르게 보급되었다. 이 소셜로그인은 바로 지난 포스트에서 알아본 OAuth와 OIDC(OpenID Connect)를 통해서 구현되는...

Preview Image

OAuth에 이어, OIDC에 대해 알아보자

개발자 입장에서 로그인이나 회원 가입 등 사용자 정보를 직접 관리하는 것은 어찌 보면 당연한 일이지만, 동시에 굉장히 부담스러운 일이기도 하다. 최근 발생하는 다양한 보안 이슈만 보더라도, 이 작업이 얼마나 어려운 일인지 알 수 있다.시간이 지날수록 우리가 사용하는 서비스의 종류는 점점 늘어나고 있다. 이는 사용자에게도 부담스러운 일이다. 내 정보를 ...

Preview Image

OAuth 개념과 동작 원리를 정리해보자

요즘 다양한 서비스에서 소셜로그인을 기본적으로 지원하는 모습을 쉽게 볼 수 있다. 이 소셜로그인은 사용자가 별도의 회원가입 없이 구글, 카카오, 네이버 등 외부 플랫폼 계정으로 간편하게 로그인할 수 있게 해주는데, 그 동작 원리는 바로 OAuth 2.0 프로토콜에 기반한다. 소셜로그인의 핵심 동작 원리는 OAuth 2.0 권한 부여 프로토콜을 활용해...

Preview Image

[Spring Boot에서 캐시(Cache) 활용하기] - 글로벌 캐시 사용하기

지난 포스트에서는 Spring Boot 애플리케이션에 로컬 캐시(Caffeine Cache)를 적용하는 방법과 그 효과에 대해 살펴보았다. 이번 포스트에서는 저번 포스트에서 사용한 책 정보 서비스에 글로벌 캐시(Redis)를 적용과 관련하여 알아보자. 도입 배경 로컬 캐시의 한계 로컬 캐시는 애플리케이션 인스턴스의 메모리에 직접 데이터를 저장하여...

Preview Image

[Spring Boot에서 캐시(Cache) 활용하기] - 캐시 적용해보기

지난 포스트에서는 캐시의 기본 개념과 Spring에서 제공하는 캐시 추상화에 대해 알아보았다. 이번 포스트에서는 간단한 서비스를 직접 구현한 뒤, 여기에 로컬(Caffeine Cache) 캐시를 적용해보고 실제로 어떤 변화가 있는지 살펴보겠다. 캐시를 적용하기 전후의 성능 차이를 비교하면서, 캐시가 서비스에 어떤 장점을 가져다주는지 구체적으로 확인해보...

Preview Image

[Spring Boot에서 캐시(Cache) 활용하기] - 캐시 개념과 기본 사용법

단순한 조회 작업마다 매번 데이터베이스를 호출하는 것은 비효율적일 수 있다. 서비스의 규모가 커지고 트래픽이 증가할수록 이러한 비효율은 더욱 두드러진다. 이럴 때 캐시는 문제를 해결할 수 있는 효과적인 방법 중 하나다. 자주 접근하는 데이터를 미리 저장해두고 필요할 때 빠르게 제공함으로써 데이터베이스 부하를 줄이고, 응답 시간을 단축시킬 수 있다. ...

Preview Image

NoSQL 데이터베이스 가이드: 언제, 어떤 모델을 선택해야 할까

레디스(Redis)에 대해 찾아보던 중, 자연스럽게 NoSQL 데이터베이스 전반에 대한 궁금증이 생기게 되었다. 레디스도 엄연히 NoSQL이기 때문에, 이를 제대로 알기 위해서는 NoSQL에 대해서 먼저 알아둘 필요가 있다고 생각했다. NoSQL에는 어떤 특징과 차이점이 있는지 한 번쯤 정리해두면 좋을 것 같았다. 이번 포스트에서는 NoSQL의 정의...

Preview Image

Controller에서는 어떻게 파라미터를 받을까?

Spring에서 Controller는 사용자의 요청을 받아서 처리하고, 그 결과를 클라이언트에 반환하는 역할을 한다. 요청 데이터를 컨트롤러 메소드에 전달하는 방법에는 여러 가지가 있다. @RequestParam 애노테이션을 사용하여 요청 파라미터(즉, 쿼리 파라미터나 폼 데이터)를 컨트롤러의 메서드 매개변수에 바인딩할 수 있다. @RequestBo...

Preview Image

Spring Data JPA에서의 페이지네이션과 정렬 방법을 정리해보자

페이지네이션 (Pagination) 사용자가 요청했을 때 데이터베이스에 있는 모든 데이터를 조회하여 제공한다면 부하가 굉장이 클 것이다. 이를 방지하기 위해 대부분의 서비스에서는 데이터를 일정 길이로 잘라 그 일부만을 사용자에게 제공하는 방식을 사용한다. 사용자는 현재 보고 있는 데이터의 다음, 이전 구간 혹은 특정 구간의 데이터를 요청하고, 전달...