목록 보기
Java CompletableFuture로 비동기 적용하기
기타

Java CompletableFuture로 비동기 적용하기

11번가
11번가
2024년 1월 3일

안녕하세요. 11번가 클레임개발팀 박지훈입니다. 중앙 집중식 데이터베이스를 영역별로 분리하는 탈중앙화를 대비하여 분리 대상 테이블을 참조하고 있는 쿼리를 분리하고, 이관하는 작업을 진행하고 있습니다. 코드를 이관하는 과정에서 가장 중요한 부분은 as-is, to-be 결과를 비교하는 부분일 텐데요. 기존 결과 비교를 위해 이관 전/후 로직을 실행하는 부분이 순차적으로 실행되다 보니 전체적인 실행시간이 두 배로 증가하는 문제를 마주하였고, 1초 차이로 조회 결과가 달라지는 경우 이관 전 로직 실행이 완료된 이후 이관 후 로직이 실행되면서 정상 케이스임에도 결과 비교가 실패하는 문제를 발견하게 되었습니다. as-is, to-be 로직을 순차적으로 실행하면서 발생하는 실행 시간 증가 문제와 1초 차이로 조회 결과가 달라지는 문제를 마주하여 안전한 이관을 위해 개선의 필요성을 느끼게 되었고 이 문제를 비동기로 해결하게 되었습니다. 비동기는 Java8에 등장한 CompletableFuture 클래스를 활용하게 되었는데요. 비동기를 처음 적용하다 보니 관련 내용을 학습하면서 나중에 다른 분들도 쉽게 비동기를 적용하실 수 있도록 기본적인 학습 내용을 공유하면 좋겠다는 생각을 시작으로 글을 작성하게 되었습니다. Contents Contents 비동기 처리 CompletableFuture CompletableFuture 인스턴스 순차적으로 연산 처리하기 연산 결합하기 thenApply or thenCompose 병렬처리 비동기 메서드 예외 처리 Timeout 마무리 비동기 처리 비동기 처리는 특정 작업이 다른 작업과 독립적으로 동작하도록 하여 다음 단계의 작업이 이전 작업의 완료를 기다리지 않고 동시에 실행할 수 있도록 하거나, 특정 작업의 완료를 기다리는 동안 다른 작업을 처리할 수 있는 장점이 있습니다. 흔히 사용하는 방식은 동기적...

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...