본문 바로가기

Spring4

[Spring WebSocket] Redis를 이용한 채팅 고도화 0. In-Memory 기반 Message Broker 문제점 Spring에서 제공하는 STOMP를 활용해 내장된 Simple Message Broker를 통해 채팅 서버 구현이 가능하지만, Spring 서버의 내부 메모리에서 동작하게 되면 아래와 같은 문제가 발생할 수 있다. 서버거 다운되거나 재시작하면 Message Broker에 있는 데이터들이 유실될 수 있다. 다수의 서버일 경우 서버 간 채팅방을 공유할 수 없어 다른 서버 간에 있는 사용자와의 채팅이 불가능하다. 이러한 문제를 해결하기 위해 외부 Message Broker를 사용할 수 있다. 대표적으로 Apache Kafka, Redis, RabbitMQ 등이 있다. 1. Redis Redis는 STOMP 프로토콜을 지원하지 않지만, Redis가.. 2023. 9. 1.
[Spring WebSocket] Spring WebSocket STOMP 적용 1. STOMP STOMP(Simple Text Oriented Messaging Protocol)는 메시징 전송을 효율적으로 하기 위한 프로토콜로, PUB/SUB 기반으로 동작한다. WebSocket만 사용해서 구현하면 해당 메시지가 어떤 요청인지, 어떤 포맷인지, 메시지 통신 과정을 어떻게 처리해야 하는지 정해져 있지 않아 일일이 구현해야 한다. STOMP를 서브 프로토콜로 사용하면 클라이언트와 서버가 서로 통신하는 데 있어 메시지의 형식, 유형, 내용 등을 정의해준다. 따라서 메시지를 송신, 수신에 대한 처리를 명확하게 정의할 수 있으며, WebSocketHandler를 직접 구현할 필요없이, @MessageMapping과 같은 어노테이션을 사용해서 메시지 발행 시 엔드포인트를 별도로 분리해서 관리.. 2023. 6. 19.
[Spring REST Docs] Spring REST Docs 적용기 0. 들어가며 SSAFY에서 첫 번째 프로젝트를 진행할 당시 API 명세서를 노션에 작성하였다. 프로젝트 관리를 노션으로 했기 때문에 접근이 편하고, 가독성이 좋다는 장점이 있었지만, 개발을 진행하며 API가 수정되었는데 API 명세서에 반영되지 않아 프론트엔드 팀원에게 소환되는 일이 종종 발생했었다. 이러한 문제를 해결하기 위해 API 명세서 작성을 자동화해야겠다고 생각했고, 두 번째 프로젝트에서 바로 적용했다. 비교적 도입이 쉬운 Swagger가 아닌 Spring REST Docs를 채택한 이유는 세 가지다. 이전에 써봤다. Spring 스터디를 진행하며 Spring REST Docs를 완벽하게 이해하고 사용한 것은 아니지만, 어찌저찌 써본 경험이 이번 프로젝트에서는 더 잘 쓸 수 있을 것이라는 용기.. 2023. 5. 31.
[Spring] @Bean vs @Component 0. 들어가며 Spring Container에서 관리하는 자바 객체를 Bean이라고 한다. Bean을 등록하는 방법은 아래 세 가지가 있다. XML Annotation Java Config 2, 3번 방법을 사용할 때 @Component와 @Bean 어노테이션 모두 객체를 Bean으로 등록하는 역할을 수행하는데 두 어노테이션의 차이가 무엇인지 궁금해서 찾아보았다. 1. @Bean @Bean 어노테이션은 Spring Container에 의해 관리될 Bean을 생성함을 나타낸다. @Bean 어노테이션을 이해하기 위해 가장 먼저 봐야할 것은 @Target 어노테이션이다. @Target 어노테이션은 해당 어노테이션이 사용될 수 있는 타입을 지정한다. @Bean의 타겟은 메소드와 어노테이션이다. 아직 어노테이션 .. 2022. 4. 17.