
[spring-boot-starter-actor] Redis 없이 spring boot 채팅 애플리케이션 개발하기
2025. 5. 29. 22:26
Java/Spring Boot
프로젝트에 사용된 코드 GitHub - examples-seonwkim/spring-boot-chatContribute to examples-seonwkim/spring-boot-chat development by creating an account on GitHub.github.com 분산 시스템에서 채팅 애플리케이션을 개발하기 위해서는 서로 다른 서버에 접속한 유저에게 메시지를 송신할 수 있도록 Redis 등의 메시지 전송을 위한 미들웨어가 필요합니다. 다른 방법으로는 서버를 클러스터로 묶고 서로 통신할 수 있도록 하는 방법이 있는데요, 요 포스팅에서는 액터 클러스터링 기능을 활용해서 후자의 방법으로 채팅 애플리케이션을 개발해 보겠습니다. Java 진영의 대표적인 액터 라이브러리로는 Pekko가..

[Spring Boot] Spring Batch Partitioning을 통해 Step을 분리해보자
2023. 7. 8. 14:21
Java/Spring Boot
Spring Batch 애플리케이션을 작업하다보면 이 애플리케이션이 처리해야하는 데이터가 많아졌을 때 다음과 같은 고민을 어떻게 해결할 수 있을지 궁금했습니다. 기존 코드 변경을 최소화하며 단일 서버의 처리량을 최대한 높이는 방법이 없을까? 동시성을 최소한으로 신경쓰고 처리량을 높일수는 없을까? 위 궁금증을 해소할 수 있는 방법을 찾던 중 spring batch의 partitioning 기능이 있다는 것을 알게됐습니다. 이번 포스팅에서는 위 궁금증을 spring batch에서 어떻게 해소해주는지 살펴보겠습니다. 코드는 아래 링크에서 확인해주세요. Main 브랜치에 partitioning을 적용하고 no-partitioning 브랜치는 일반적인 batch를 구현하였습니다. GitHub - seonwoo96..

[Spring Boot] CRUD Project Template
2022. 11. 17. 23:12
Java/Spring Boot
매번 스프링 부트를 활용해서 새로운 프로젝트를 진행할 때마다 기본 환경 구성이 너무 귀찮았습니다. 그래서 저는 제가 자주 사용하는 기술을 모아서 하나의 템플릿으로 만들어서 사용하고 있는데요, 이 프로젝트를 공유드리고자 합니다. https://github.com/seonwoo960000/spring-boot-all-in-one GitHub - seonwoo960000/spring-boot-all-in-one: A spring boot project with default dependencies A spring boot project with default dependencies . Contribute to seonwoo960000/spring-boot-all-in-one development by crea..

[Spring Boot]Spring Boot JPA는 MySQL에서 어떤 쿼리를 실행시킬까?
2022. 10. 29. 09:53
Java/Spring Boot
Spring Boot JPA를 사용하던 중 실제로 어떤 쿼리가 실행되는지 문뜩 궁금해졌습니다. 그래서 MySQL에서 수행되는 실제 쿼리를 살펴봤는데요, 이번 포스팅을 통해 공유해보고자 합니다. MySql 쿼리 실행 기록 MySql은 쿼리의 실행 기록을 확인할 수 있는 방법이 있습니다. 아래와 같은 쿼리를 실행시키면 general_log 값을 알 수 있습니다. general_log가 OFF일 경우 쿼리 실행 기록이 남지 않습니다. 만약 general_log가 ON이라면 쿼리가 실행될 때마다 general_log_file에 쿼리 실행 이력이 저장됩니다. 그럼 general_log를 ON으로 설정하고 쿼리의 실행 이력이 어떻게 저장되는지 살펴보겠습니다. ※ 주의 ) general_log를 ON 값으로 설정하고..

[Spring Boot] @Transactional이 COMMIT을 실행하는 코드까지
2022. 8. 6. 14:59
Java/Spring Boot
Spring Boot의 @Transactional 어노테이션은 트랜잭션을 사용자가 편리하게 사용할 수 있도록 제공되는 어노테이션입니다. @Transactional 어노테이션을 통해 해당 트랜잭션의 다양한 옵션을 설정할 수 있습니다(propagation, isolation level 등). 이번 포스팅에서는 @Transactional 어노테이션이 어떻게 동작하는지 알아보겠습니다. Spring Boot는 AOP(Aspect Oriented Programming) 기법을 통해 공통 관심사를 Aspect의 형태로 처리합니다. @Transactional 기능은 데이터베이스와 상호작용하는 다양한 메서드들의 공통 관심사인 트랜잭션을 분리해서 처리하는 점에서 AOP에 포함된다고 볼 수 있습니다. 그럼 AOP를 구현하는..

[Spring Boot] refresh context 차근차근 따라가기
2022. 5. 11. 08:19
Java/Spring Boot
해당 포스팅은 [Spring Boot] 대체 어떻게 실행되는걸까 ? 포스팅의 일부입니다. 2022.05.01 - [Java] - [Spring Boot] 대체 어떻게 실행되는걸까 ? [Spring Boot] 대체 어떻게 실행되는걸까 ? beanFactory.registerSingleton("springApplicationArguments", applicationArguments); Spring boot를 사용하다 보면 이 마법 같은 프레임워크가 어떻게 동작하는지 궁금할 때가 있습니다. Spring boot는 어떻게.. code-run.tistory.com Spring Boot의 ApplicationContext가 초기화되는 과정에서 refresh 과정이 있습니다. 이번 포스팅을 통해 refresh가 어떻..

[Spring Boot] Bean이 살고있는 집 ApplicationContext 기능 살펴보기
2022. 5. 5. 12:51
Java/Spring Boot
해당 포스팅은 [Spring Boot] 대체 어떻게 실행되는걸까 ? 포스팅의 일부입니다. 2022.05.01 - [Java] - [Spring Boot] 대체 어떻게 실행되는걸까 ? [Spring Boot] 대체 어떻게 실행되는걸까 ? beanFactory.registerSingleton("springApplicationArguments", applicationArguments); Spring boot를 사용하다 보면 이 마법 같은 프레임워크가 어떻게 동작하는지 궁금할 때가 있습니다. Spring boot는 어떻게.. code-run.tistory.com ApplicationContext의 기능 ApplicationContext는 Spring의 advanced container입니다. Applicatio..

[Spring Boot] 알쏭달쏭한 환경변수 설정원리
2022. 5. 1. 21:40
Java/Spring Boot
해당 포스팅은 [Spring Boot] 대체 어떻게 실행되는 걸까? 포스팅의 일부입니다. 2022.05.01 - [Java] - [Spring Boot] 대체 어떻게 실행되는 걸까? [Spring Boot] 대체 어떻게 실행되는걸까 ? beanFactory.registerSingleton("springApplicationArguments", applicationArguments); Spring boot를 사용하다 보면 이 마법 같은 프레임워크가 어떻게 동작하는지 궁금할 때가 있습니다. Spring boot는 어떻게.. code-run.tistory.com Spring boot의 환경변수를 설정하는 방법은 다양합니다. application.properties 설정, system의 환경변수 또는 comman..