들어가며오늘은 SpringBoot 환경에서 RabbitMQ 를 사용해서 비동기 이벤트 처리를 해보겠습니다. 참고로 오늘은 이벤트 발행자 와 수신자 딱 두가지 기능을 구현해볼 예정입니다. 메시지를 보내는 발행자 : Producer(=issuer)메시지를 받는 수신자 : Recevier(=consumer) 위 두가지 기능 구현을 위주로 이야기를 해보겠습니다. 서론비동기 처리를 알아보기 전에 간단한 개념설명을 해보겠습니다. RabbitMQ 는 무엇일까요?AMQP 를 구현한 오픈소스 메세지 브로커 이다.위 라이브러리를 사용하는 이유는 비동기 작업이 필요할 때 즉 많은 작업이 요청되어 처리를 해야 할 때 사용합니다. ❓그럼 AMQP 는 무엇일까요Advanced Message Queueing Protocol의 ..
안녕하세요 오늘은 스프링 시큐리티 Config 설정 중에서 만난 오류에 대해서 알아보려고 합니다. csrf()' is deprecated since version 6.1 and marked for removal 위 오류는 Spring Security 에서 config 설정을 할 때 일어난 오류 입니다. 기존에 csrf 방어는 디폴트로 활성화가 되어 있지만, 공부를 하는 입장에서는 비활성화 상태로 하기 위해서코드를 작성하다가 오류가 생겼습니다. Deprecated 는 이제 과거 코드이고, 지원하지 않는다고 하여 Spring Security 문서를 보니 함수형으로 바꿔서 쓰라고 친절하게 예시 코드가 보여 주었습니다. 스프링6.0 이 출시되면서 스프링부트 또한 3.x 버전으로 업그레이드가 되었습니다.스프링6...
들어가며오늘은 프로젝트에서 로그 메시지에 대한 내용을 수정하기 위한 작업을 해볼 예정입니다. 로그 메세지를 왜 수정해야 할까요? 이미 스프링부트 환경에서는 자동으로 로그메세지도 제공해주고,Error 면 Error, Info 면 Info 알아서 나오지 않나요? 라는 생각을 할 수 있습니다. 하지만 로그도 하나의 코드라는 생각으로 스프링에서 제공해주는 일반적인 로그가 아닌내가 알아보기 편한, 즉 가독성(=읽기 편한) 로그를 만들어주는 것 또한 중요하다고 생각합니다. 실질적으로 서비스를 운영하면, 다양한 환경에서 Error 및 Info 로그를 체크해야 할 일이 많습니다. 그 로그들을 편리함,가독성, 팀원 과 공통적인 설정, 여러가지 보안적인 부분 프로젝트 스펙을 클라이언트와 맞추기 위해서 로그 스펙을 설정..
안녕하세요✋오늘은 JWT Token에 대해서 간단하게 알아보려고 합니다. JWT Token은 보통 로그인 로직을 짤 때 많이 활용하고는 합니다.Spring Security에서 JWT 를 사용하기 위해서 공부를 해보았고아래 내용을 보면서 기본 개념이랑 어떻게 활용하는지에 대해서 더 알아보겠습니다. 📌 기본 개념JWT(JSON Web Token) 은 웹 표준으로써 데이터의 JSON 객체를 사용하여 가볍고 자가 수용적인 방식으로 정보를 안전하게 전달할 수 있도록 전달할 수 있도록 설계된 토큰 기반의 인증 방식입니다. 토큰이라는 개념이 생소할 수도 있습니다. 일단 내용을 쭉 읽으시면서 자연스럽게 알 수 있습니다. JWT는 URL, HTTP Header, Cookie, HTML Form 과 같은 다양한 방식으..
안녕하세요🖐 오늘은 제가 토이프로젝트 시작에 앞서, 어떻게 패키지를 구성하고, 파일을 관리할지 고민을 하던 중에 스프링 계층 구조에 대해서 알게되어서 공부하게 되었습니다. 그 내용을 포스팅 해보겠습니다. 저는 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 라는 책을 보며, 스프링 계층구조에 대하여 자세히 알게되었습니다. 위 사진이 대표적인 스프링의 계층 구조라고 합니다. 각각의 계층은 계층마다 독립적으로 분리하여 구현하는 것이 가능해야하고, 각 계층에서 담당해야 할 기능들이 있다. Web Layer(= Presentation Layer) 우리가 흔히 사용하는 Controller와 View 영역입니다. 스프링을 사용하면서 MVC패턴을 들어보셨을 것이라고 생각합니다. 그 중에서 View와 Controlle..
안녕하세요🖐 오늘은 스프링부트에서 의존성 주입에 대하여 알아볼 것 입니다. 스프링에서 중요한 개념인 Spring Core 관련된 내용은 꼭 알고서 개발을 시작해야 합니다. 대표적으로 POJO, AOP, DI 등 중요 개념들이 있습니다. 그 중에서 오늘은 DI에 대하여 알아보겠습니다. 의존성 주입은 스프링 을 사용하는 백엔드 개발자라고 하면은 개발시 자주 사용하고 있을 것 입니다. 저도 개발을 하면서 객체에 의존성 주입을 하는 상황이 자주 있습니다. 항상 궁금했습니다. 어떻게 이 방식으로 Bean에 의존성이 주입이 되고, 내가 원하는 객체에서 메소드를 사용하고 또 어떠한 방법들이 있을까? 그래서 이번 기회에 의존성주입(Dependency Injection) 에 대하여 자세하게 알아보았습니다. 모든 글은 W..
안녕하세요 오늘은 웹 백엔드 개발자라 하면은 꼭 알아야 웹 서버, 웹 어플리케이션 서버 개념에 대해서 알아보도록 하겠습니다. 일단 웹 브라우저 및 웹 환경에서는 클라이언트와 서버가 통신하기 위해 HTTP 라는 통신 프로토콜을 통해 데이터를주고 받습니다. 🖐 여기서 그럼 HTTP 가 무엇인지를 궁금해 하실 수 있습니다. HTTP란?HTTP는 클라이언트와 서버 사이에 이루어지는 요청/응답(request/response) 프로토콜이다 간단하게 이정도 의미라고만 알고 있으면 될 것 같습니다. 자세하게 HTTP에 대하여 공부하시고 싶으시면https://www.cloudflare.com/ko-kr/learning/ddos/glossary/hypertext-transfer-protocol-http/요 링크에서 ..
안녕하세요🖐 오늘은 스프링부트 환경에서 스프링 시큐리티를 활용한 로그인&로그아웃을 구현해보겠습니다. 스프링 시큐리티는 내용이 정말 많은 것 같아요😂 그만큼 공부할 부분이 많고, 활용범위가 넓다는 뜻입니다. 그만큼 한번 잘 공부해두면 두고두고 잘 사용할 수 있습니다. 스프링 시큐리티는 방대한 프레임워크이다. 따라서 스프링 시큐리티가 내부적으로 어떻게 동작하는지 알기 위해서는 스프링 시큐리티에 대해서 자세히 공부해야 한다. (스프링 시큐리티는 책 1권 분량으로 나올만큼 방대한 프레임워크이다. 실제로 스프링 시큐리티에 대한 책은 많이 출판되었다.) 이 책은 스프링 시큐리티 자체에 대한 내용보다는 활용적인 측면에 대해서만 다룰 것이다. 하지만 개략적인 개념 설명을 추가했으니 이해에 도움이 되기를 바란다. 기능구..