웹 애플리케이션을 개발하다보면 클라이언트의 요청 없이도 서버에서 특정한 데이터를 클라이언트로 보내주어야 하는 상황이 생긴다. 예를 들어, 댓글 알림이나 물건 판매 알림과 같이 실시간 알림 기능을 위해서는 서버에서 해당 이벤트가 발생하는 즉시 클라이언트로 알림을 보내주어야 한다. 개인 프로젝트에서도 해당 기능이 필요한 상황이 생겼다. 어드민에서 사용자가 판매 요청을 진행한 물건을 검토 후 판매 허가를 진행하면, 해당 사용자는 본인의 물건이 판매 허가가 떨어졌다는 실시간 알림을 받아야 하는 기능이 필요했다. 일반적인 HTTP 기반 통신 방식으로는 이 기능을 구현하기에는 어려운 부분이 있다. 서버에서 해당 알림을 보내기 위해서는 클라이언트의 요청이 꼭 필요하기 때문이다. 이렇게 HTTP 기반으로 실시간 통신이..
Spring
이 글에서는 Spring에서 제공하는 HTTP client 중에 하나인 RestClient에 대해서 알아볼 것이다. RestClient란?RestClient는 Spring Boot 3.2 부터 새롭게 추가된 HTTP client이다. RestClient가 추가되기 이전부터, Spring에서는 RestTemplate과 WebClient와 같은 HTTP client를 제공하고 있었다. 하지만 이들은 각각 문제점을 갖고 있었다. RestTemplate의 문제점:직관적이지 않은 사용법Template 클래스에 너무 많은 HTTP 기능이 노출WebClient의 문제점:WebFlux에 대한 의존성 필요RestTemplate이 갖고 있던 문제점 중 하나로 Template 클래스에 너무 많은 HTTP 기능이 노출되어..
개요기존에 진행하고 있던 프로젝트에서 일정 주기마다 반복적으로 작업을 수행해야 하는 기능이 필요하게 되었다. 해당 방법을 어떻게 구현할지 고민하던 중, Spring에서 스케줄링 기능을 제공한다는 것을 알게 되었고, 이를 활용하여 해당 기능을 쉽게 구현할 수 있었다.이 글에서는 Spring Boot가 제공하는 스케줄링 기능에 대해 알아보고, 해당 기능을 프로젝트에 어떻게 적용했는지 설명한다. 스케줄링 설정@EnableScheduling 설정Spring에서 스케줄링 기능을 사용하려면 먼저 @EnableScheduling이라는 어노테이션을 추가해야 한다. 해당 어노테이션은 Application 클래스 혹은 아래와 같이 @Configuration이 붙은 configuation 클래스에 붙여 추가해야 한다.@C..
개요Spring Security는 기본적으로 Servlet Filter를 활용해 요청 권한을 확인하는 기능을 제공한다. 하지만, 이 방식 외에도 실행되는 메서드 단위로 권한을 확인할 수 있는 기능을 제공하는 것을 알게 되었고, 이 글을 통해 해당 기능을 설명하고자 한다. Method Security 란?Spring Security는 요청 레벨에서의 권한 확인 뿐만 아니라, 메서드 레벨에서도 권한을 확인할 수 있는 기능을 지원한다. 해당 기능을 특정 메서드에 적용하면 Spring Security에서 설정한 권한에 맞는 사용자만 해당 메서드에 접근할 수 있게 된다. 설정메서드 레벨에서 권한을 확인하기 위해서는 먼저 아무 @Configuration이 붙은 클래스에 @EnableMethodSecurity 어노..
개요 [Spring / AWS] Spring Boot 3 + AWS Lambda 사용하기개요개인 프로젝트에서 serverless에 배포를 고민하고 있다. 대표적인 클라우드 serverless 서비스인 AWS Lambda를 통해 프로젝트를 배포하는 것을 고려하고 있기 때문에 현재 프로젝트에 사용 중인 Sprindavidy87.tistory.com 이전 글에서 Spring Boot 환경에서 AWS Lambda를 어떻게 연동하는지 알아보았다. 이번에는 Spring의 하위 프로젝트인 Spring Cloud로 AWS Lambda를 어떻게 사용하는지 알아보도록 하자. Pre-requisitesAWS CLISAM CLIGradle 1. build.gradle 설정모든 설정은 아래의 링크들을 참고했다.https:..
개요개인 프로젝트에서 serverless에 배포를 고민하고 있다. 대표적인 클라우드 serverless 서비스인 AWS Lambda를 통해 프로젝트를 배포하는 것을 고려하고 있기 때문에 현재 프로젝트에 사용 중인 Spring과 AWS Lambda를 어떻게 연동하는지 알아보았다. 대표적으로 Spring Boot에 직접 연동하여 배포하는 방법과 Spring Clound Function을 사용해 연동하는 방법이 있다. 이 글에서는 먼저 Spring Boot에서 직접 연동하여 배포하는 방법을 적어본다. 1. 프로젝트 설정Pre-requisitesAWS CLISAM CLIGradle build.gradle 설정의존성 추가dependencies { implementation ('org.springframe..