Skip to content

Spring ‐ Reactive Programming

woojin.jang edited this page May 13, 2026 · 4 revisions

비동기 처리

  • Kafka를 다루면서 비동기 프로그래밍을 덤으로 적용해보려고 했다. 그 과정에서 배웠던 비동기 프로그래밍에 대해 정리해보려고 한다.
  • 비동기 처리는 특정 작업이 다른 작업과 독립적으로 동작하도록 하여 다음 단계 작업이 이전 단계 작업 완료를 기다리지 않고 동시에 실행할 수 있도록 하거나 특정 작업의 완료를 기다리는 동안 다른 작업을 처리할 수 있는 장점이 있다.
  • 흔히 사용하는 방식은 동기적 처리로 한 작업이 완료되기를 기다렸다가 다음 작업을 순차적으로 실행하도록 구현하는 방식이고 비동기 처리는 여러 작업이 동시에 실행될 수 있고, 다른 작업의 완료를 기다리지 않고 실행하여 시스템의 자원을 최대한 활용할 수 있는 방식이다.
  • 비동기 처리를 통해서 성능 향상, 시스템 활용도 증가, 동시성 관리, 자원 활용 등의 장점을 누릴 수 있으나 복잡성 증가, 디버깅 어려움, 가독성 감소와 같은 단점을 고려할 필요가 있었다.

CompletableFuture

  • Java5부터 Future 인터페이스는 비동기 연산을 위해 추가되었지만 몇 가지 문제점을 가지고 있다.
    • 여러 연산을 결합하기 어렵다.
    • 비동기 처리 중 발생하는 예외 처리가 어려운 문제
  • 이러한 Future 인터페이스 문제를 개선한 CompletableFuture 클래스가 Java8에 등장했다.
  • CompletableFuture 클래스는 Future 인터페이스를 개선하기 위해 등장한 만큼 여러 연산을 결합한 비동기 연산 처리, 예외 처리 등을 위한 50가지의 다양한 메서드들을 제공하고 있다.
Future CompletableFuture
Blocking(동기식) Non-Blocking(비동기식)
여러 연산 연결 어려움 여러 연산 연결 가능
여러 연산 결합 어려움 여러 연산 결합 가능
연산 성공 여부만 확인 가능하고 예외 처리가 어려움 exceptionally(), handle() 통한 예외 처리

📖 Java

📖 Kotlin

📖 Coroutine

📖 Spring

📖 Spring Security

📖 Spring Batch

📖 Reactive Programming

📖 Database

📖 MySQL

📖 Redis

📖 JPA

📖 QueryDsl

📖 MSA

📖 Kafka

📖 Apache Flink

  • [Apache Flink - Apache Flink Architecture]
  • [Apache Flink - Stream Processing]
  • [Apache Flink - Data Stream API & Window]
  • [Apache Flink - State Management]

📖 HTTP

📖 AWS

📖 Docker

📖 Kubernetes

📖 CI/CD

📖 Nginx

📖 Monitoring🥈

  • [Monitoring - Log Concept]
  • [Monitoring - Log Level & Filter]
  • [Monitoring - Logback]
  • [Monitoring - Log Collection with ELK Stack]
  • [Monitoring - Log Monitoring with Kibana]
  • [Monitoring - Building a Monitoring System with Spring Boot Actuator]
  • [Monitoring - Server Monitoring with Prometheus and Grafana with Discord Alerts]

📖 Test

📖 Effective Java 3/E

📖 Kotlin Academy - Effective Kotlin

📖 Kotlin Academy - 핵심편

📖 스프링으로 시작하는 리액티브 프로그래밍

📖 가상 면접 사례로 배우는 대규모 시스템 설계 기초 1

📖 가상 면접 사례로 배우는 대규모 시스템 설계 기초 2

📖 Clean Code

📖 리팩토링 2판

📖 주니어 백엔드 개발자가 반드시 알아야 할 실무 지식

📖 GraphQL

Clone this wiki locally