본문 바로가기

spring boot4

Spring boot with React: STOMP를 통해 채팅 시스템을 구현해보자(With Mysql, MongoDB)(1) 들어가기  Spring boot로 채팅방을 구현하는 프로젝트를 진행하려고 한다. 채팅방은 실시간으로 채팅 내용을 저장할 수 있게 데이터베이스에 저장하도록 생각하였다. 하지만 채팅내용이 보내질 때마다 데이터베이스에 저장을 하는 비용이 발생한다. 이를 위한 해결 방법으로는 메모리에 채팅 내용을 저장해 두고 스케줄링하여 일정 주기마다 데이터베이스에 Bulk Insert 하는 방식, RDB보다 데이터 접근 비용이 적은 NoSQL을 사용하는 방식 등이 있다.나는 두번째 방법을 선택하여 NoSQL 중 MongoDB를 사용하기로 하였다.처음 프로젝트 설정부터 연동 및 React 부분까지 두 개의 글로 나눠서 작성할 것이다.이 글에선 데이터베이스 연동 없이 Spring boot와 React 연동 및 STOMP를 통한 .. 2024. 5. 13.
Spring boot With MongoDB - WebFlux를 통해 비동기적으로 MongoDB에 접근해보자. 들어가기 이전에 채팅방 채팅 내용을 저장하기 위해서 MongoDB를 사용해 본 적이 있었다. Gradle 의존성을 'spring-boot-starter-data-mongodb'로 설정하였었는데, 알고 보니 'spring-boot-starter-data-mongodb-reactive'라는 의존성이 따로 있었다.  이 두 의존성의 차이는 동기적으로 접근할 것인가, 비동기 적으로 접근할 것인가였다. 'reactive'가 추가된 의존성이 비동기 적으로 접근하는 것이다. 찾아보니 채팅 애플리케이션에서 채팅 내용을 저장하고 조회하는 기능은 실시간성(real-time)이 중요한 요소이기에, 비동기적인 처리가 더 적합할 수 있다고 한다. 이는 아래의 비동기 처리의 장점과 동기 처리의 단점을 통해 확인할 수 있다.  비.. 2024. 4. 23.
Docker compose를 통한 Nginx, Spring boot, React, Mysql 연동 및 배포 서론 최근 프로젝트에서 도커를 통해 Spring boot와 React 프로젝트를 진행하면서 리버스 프록시 역할을 수행하는 Nginx를 같이 실행해 보았다. 추가로 Mysql까지 실행하며 모든 컨테이너는 Docker compose에 의해 실행될 수 있도록 구현하였다. Spring boot는 비즈니스 로직을 처리하며 Mysql과 연동하여 데이터를 저장, 처리, 조회하는 기능을 담당한다. React는 사용자와 상호작용하는 부분으로 Nginx 서버를 통해 구동되며, Nginx 서버는 사용자 요청을 url에 따라 Spring boot로 보낼지, React로 보낼지 정하는 리버스 프록시 역할을 수행한다. 이 글에서는 docker-compose를 통해 각 서비스를 배포한 과정을 기록한 것이다. 본론 우선 실행을 위한.. 2024. 4. 7.
Spring boot with MongoDB - Spring Data MongoDB를 사용해보자. 들어가기 Springboot로 채팅방을 구현하는 프로젝트를 진행하려고 한다. 채팅방은 실시간으로 채팅 내용을 저장할 수 있게 데이터베이스에 저장하도록 생각하였다. 하지만 채팅내용이 보내질 때마다 데이터베이스에 저장을 하는 비용이 발생한다. 이를 위한 해결 방법으로는 메모리에 채팅 내용을 저장해두고 스케줄링하여 일정 주기마다 데이터베이스에 Bulk Insert 하는 방식, RDB보다 데이터 접근 비용이 적은 NoSQL을 사용하는 방식 등이 있다.나는 두번째 방법을 선택하여 NoSQL 중 MongoDB를 사용하기로 하였다.그러기 위해선 MongoDB에 대한 사용방법을 알아야 한다.이 글은 MongoDB에 대한 내용과 Spring boot 프로젝트에서 Spring Data MongoDB를 통해 데이터 저장, .. 2024. 3. 7.