Spring
-
Reactive Streams 여정기(2부) - JVM 과I/OSpring 2023. 8. 6. 22:29
1. JVM과 I/O 1.1. 개요 이번 편에서는 JVM에서 I/O 를 어떤 방식으로 처리하는지에 대해서 알아보고자 합니다. I/O Multiplexing JVM 환경에서의 I/O 기술 Java I/O Java NIO Java AIO Reactor Pattern 과 Reactive Streams 그리고 Reactive Programming Spring과 I/O Multiplexing 구현 기술 Netty와 Armeria 구현 기술 이전 편과 마찬가지로, Java I/O 그리고 NIO 더 나아가서 NIO2(AIO)에 대해서 학습은 했지만 정확히 어디서 어떻게 사용하고 왜 이렇게 발전을 했는지에 대해서 개념을 잡아가기 힘들다고 생각합니다. 필자도 2019년 처음 개발 공부를 접하면서 학습한 내용이지만 지금에..
-
Reactive 여정기(1부) - I/O Multiplexing 과 Asynchronous I/O 그리고 Event LoopSpring 2023. 7. 26. 23:58
1. I/O Multiplexing 1.1. 개요 I/O Multiplexing 이란 단어는 어디서 한 번쯤 들어보았지만 실제 어떤 기술인지 그리고 어디서, 어떻게 활용 되는지에 대해서 모르는 경우가 많습니다. 그래서 이번 포스팅에서는 비전공자 관점으로 최대한 쉽게 풀어서 설명을 해보려 합니다. 우선, 포스팅 할 내용과 관련해서 시리즈로 작성하려 하는데 전체적인 구상은 아래와 같습니다. I/O Multiplexing JVM 환경에서의 I/O Multiplexing 구현 기술 Spring과 I/O Multiplexing 구현 기술 Netty와 Armeria 구현 기술 1.2. 어디서 사용되는가? 어떤 지식을 학습하고 체득하기 위해서는 나무가 아니라 숲을 볼 줄 알아야 하는 것이라 생각합니다. 단순히 개념점..
-
FCM과 함께 춤을(발행 보장)Spring 2023. 7. 16. 01:12
1. 시작하기에 앞서 FCM 과 함께 춤을(1차 튜닝) 1. 기존 Push 메시지 방법 기존 작성된 Push 메시지 전송 로직은 100개의 메시지 전송이 필요하다고 가정했을시 아래와 같이 동작하고 있었다. 100번을 각각 전송 100번에 대한 Blocking 발생 이 같은 문 kwj1270.tistory.com 이전 포스팅에서 FCM 의 성능을 향상시키기 위한 방법에 대해서 기술했다. 사실 더 좋은 방법들도 많고 개선될 여지가 있으나, 이는 추후에 다루려고 한다. 이번 편에서는 이전 포스팅에 이어서 FCM 메시지를 어떻게 보장시킬까? 에 대해 정리하려고 한다. 이 또한, 100% 효율적이고 좋은 방법인지는 잘 모르겠으나 방법 중 하나라고 봐주면 감사드린다. 2. 개요 네트워크 통신이 이루어진다면 언제든 ..
-
FCM 과 함께 춤을(튜닝)Spring 2023. 6. 3. 01:03
1. 기존 Push 메시지 방법 기존 작성된 Push 메시지 전송 로직은 100개의 메시지 전송이 필요하다고 가정했을시 아래와 같이 동작하고 있었다. 100번을 각각 전송 100번에 대한 Blocking 발생 이 같은 문제를 개선하고자 아래와 같이 고민했다. 100번을 배치성으로 전송 페이지네이션이 필요할 경우, 이를 여러 쓰레드로 분리하여 전송 실제로 FCM 은 1번의 배치 메시지 전송시 1000개 까지만 허용한다. 2. 1차 튜닝 포인트(비동기) 2-1. Async 설정 스프링에서 비동기 스레드풀을 사용하는 방법은 간단하다. HTML 삽입 미리보기할 수 없는 소스 HTML 삽입 미리보기할 수 없는 소스 단 주의점이 위와 같이 단순 설정시 기본 설정값으로 단일 스레드를 사용한다.(등록된 빈 환경 마다 ..
-
Spring 에서 Master Slave Datasource 분리하기Spring 2023. 3. 14. 03:05
개요 데이터베이스에서 고가용성을 위한 작업으로 Replication 을 선택하는 것은 거의 당연한일이다. 이외에도 Replication 을 가지면 얻을 수 있는 특징은 아래와 같다. High Availability Scalability DisasterRecovery Backup Analysis DataWareHouse Application 의 요청을 처리하는 DB 인스턴스가 하나일 경우 모든 쓰기 요청과 읽기 요청 대해서 작업을 처리해야하는 문제가 발생한다. 당연스럽게도 대용량의 요청이 들어오면 이를 처리하지 못해 지연 및 장애가 발생하게 된다. (Scale Up 으로 해결할 수 있으나, 더 많은 대용량 요청이 들어오면 한계가 드러난다.) 사실 단일 DB 인스턴스 뿐만 아니라 분산 환경에서도 문제가 발생..