LINE에서 인증 도메인의 백엔드 개발을 담당하고 있습니다.
2부에서는 Java NIO를 소개하고 Selector를 이용한 멀티플렉싱 기반의 다중 접속 서버를 구현하는 방법을 알아보았습니다. 이번 3부에서는 Reactor 패턴과 이벤트 루프(event loop)에 대해 알아보겠습니다. 비동기 서버에서 이벤트 루프를 블록하면 안 되는 이유 1부 - 멀티플렉싱 기반의 다중 접속 서버로 가기까지 비동기 서버에서 이벤트 루프를 블록하면 안 되는 이유 2부 - Java NIO와 멀티플렉싱 기반의 다중 접속 서버 비동기 서버에서 이벤트 루프를 블록하면 안 되는 이유 3부 - Reactor 패턴과 이벤트 루프 글은 다음과 같은 순서로 진행합니다. Reactor 패턴 Reactor 핸들러 이벤트 루프 다양한 이벤트 루프 구현체 이벤트 루프를 블록하면 안 되는 이유 마치며 Reactor 패턴 Reactor 패턴은 동시에 들어오는 여러 종류의 이벤트를 처리하기 위한 동시성을 다루는 디자인 패턴 중 하나입니다. Reactor 패
1부에서는 Armeria 이벤트 루프의 기반인 I/O 멀티플렉싱에 대해 살펴봤습니다. 이번 글에서는 1부에서 C 언어로 살펴봤던 멀티플렉싱을 Java에서 어떻게 구현할 수 있는지 알아보려고 합니다. 먼저 Java NIO(New Input Output)를 소개한 뒤 Java NIO와 함께 도입된, Java에서 I/O 멀티플렉싱을 구현한 셀렉터(selector)를 살펴보겠습니다. 비동기 서버에서 이벤트 루프를 블록하면 안 되는 이유 1부 - 멀티플렉싱 기반의 다중 접속 서버로 가기까지 비동기 서버에서 이벤트 루프를 블록하면 안 되는 이유 2부 - Java NIO와 멀티플렉싱 기반의 다중 접속 서버 비동기 서버에서 이벤트 루프를 블록하면 안 되는 이유 3부 - Reactor 패턴과 이벤트 루프 글은 다음과 같은 순서로 진행합니다. Java NIO와 멀티플렉싱 기반의 다중 접속 서버 Java NIO는 Java의 기존 I/O API를 대체하기 위해 Java 1.4 버전에서 도
안녕하세요. MSE2(Messaging Server Engineering 2)에서 인증 도메인을 개발하고 있는 김종민입니다. LINE에서는 서버 개발에 비동기 서버사이드 프레임워크인 Armeria를 적극 사용하고 있습니다. Armeria와 같은 비동기 서버를 처음 사용해 서버 애플리케이션을 개발하다 보면 간혹 서버의 응답 속도가 느려지거나 서비스가 응답 불능 상태가 되는 문제를 겪게 됩니다. 이는 비동기 서버의 이벤트 루프를 블록하기 때문에 발생하는 문제일 가능성이 높습니다. 사실 위와 같은 문제는 Armeria뿐만 아니라 이벤트 루프를 바탕으로 하는 라이브러리나 프레임워크를 이용해 애플리케이션을 개발하는 경우에는 언제 어디서나 발생할 수 있는 문제입니다. 저도 처음 위와 같은 문제를 겪고 이벤트 루프가 무엇인지 열심히 찾아가며 공부했던 기억이 있는데요. 그 과정이 쉽지만은 않았습니다. 그래서 제가 공부했던 내용을 바탕으로 이벤트 루프가 무엇이고 블록하는 것이 왜 문제가 되는 것인