비동기 프로그래밍, 얼마나 알고 있나요? (Advanced Asynchronized)
·
backend
이벤트 기반 IO 처리 방식의 비동기 설계 패턴으로 여러 방식이 존재하고, 비동기 작업을 관리하지만 그 방식이 상이하다. 비동기 방식의 구분 : 이벤트를 감지하는 주체가 누구인가?두 방식 모두 "-actor"로끝나며 행동하는 주체로서 행위자(actor)를 의미한다. 따라서 어떤 방식으로 행동하는지를 나타낸다고 볼 수 있다. Reactor : IO 이벤트가 발생하면 직접 반응(React)하여 실행Proactor : 미리, 앞서서(Pro) + IO 작업을 요청해두고, 완료되면 OS가 자동으로 실행 1. Reactor 패턴I/O 이벤트가 발생하면 핸들러(Callback)를 등록해 두고, 이벤트가 발생하면 이를 처리하는 방식 동작 방식애플리케이션이 비동기 작업을 요청하고, 처리할 핸들러(콜백)를 등록I/O 멀티..
Spring의 비동기 프로그래밍 @Async에 대해 알아보자
·
backend
@EnableAsync, @Async 는 Spring에서 비동기로 작업을 처리하도록 쉽게 도와주는 어노테이션이다.​왜 ThreadPoolTaskExecutor를 등록해야 할까?Spring의 기본 비동기 처리 Executor는 매번 새로운 쓰레드를 생성하기에, 쓰레드풀을 만들어두면 성능 개선​​@EnableAsync 어노테이션을 들어가보자.​org.springframework.core.task.SimpleAsyncTaskExecutor 빈을 찾는다.does not reuse threads즉, 재사용하지 않고 매번 쓰레드를 생성한다.​​​쓰레드를 생성하는 작업은 매우 비용이 많이 드는 작업이라 쓰레드풀로 성능을 개선해보자​CPU Bound 작업보단 IO bound가 대부분인 애플리케이션 로직​​Java의 E..