AtomicReferenceFieldUpdater 사용하기

Armeria 내부 구현을 보면 아래와 같은 코드를 심심찮게 볼 수 있다. public class DefaultStreamMessage<T> extends AbstractStreamMessageAndWriter<T> { private static final AtomicReferenceFieldUpdater& »

RxJava의 subscribeOn와 observeOn (2)

이전 글 에서 RxJava의 subscribeOn(), observeOn()의 내부 구현을 한번 살펴보며 쓰레드의 동작에 대해 정리해보았다. 이번 글에서는 로그를 남겨보며 이 실제 동작을 한번 살펴 볼것이다. Rxjava2 »

RxJava의 subscribeOn와 observeOn (1)

현재 약 2년동안 실무에 RxJava를 사용하고 있지만, 아직까지(부끄럽게도) 항상 동작이 헷갈리는 함수 2개가 있다. 바로 subscribeOn() 과 observeOn()이다. 이미 많은 블로그들의 글을 읽어봤지만, 여전히 »

Armeria의 Circuit breaker 사용해보기

Circuit Breaker란? 만약 예상치 못한 장애(ex. 네크워크 이슈, 서버가 내려감)가 발생하여, 어떤 한 원격 서버가 요청에 대한 응답을 내리지 못하는 상태라고 가정해보자. 이러한 상황에서 »

Java Heap Dump 분석하기

Spring으로 개발한 웹어플리케이션을 운영하다보면, 많은 트래픽으로 인해 또는 구현상의 버그로 인해(보통은 이 경우겠지만) Heap의 사용량이 순간적으로 증가할 수 있다. 이 경우 GC(Garbage Collection)가 »