백그라운드 작업이란 사용자 인터페이스와 독립적으로, 별도의 쓰레드나 프로세스에서 실행되는 작업을 말한다.
예를 들어, 사용자 요청에 응답하기 위해 데이터베이스에서 대량의 데이터를 처리하거나, 주기적으로 외부 API를 호출하는 작업들이 백그라운드 작업에 해당한다.
Spring boot 에서
1 @Scheduled: 정해진 시간 간격으로 메서드를 자동으로 실행하게 할 수 있다.
2 Async: @EnableAsync와 @Async 애노테이션을 이용하여 비동기 메서드를 생성할 수 있다.
3 Quartz Scheduler: 복잡한 스케쥴링 요구사항을 처리할 수 있는 강력한 라이브러리다.
큐는 일련의 작업을 순차적으로 처리하기 위해 일시적으로 저장하는 데이터 구조다.
큐는 FIFO(First In, First Out) 원칙을 따르므로, 가장 먼저 추가된 항목이 가장 먼저 처리된다.
1 JMS(Java Message Service): Java에서 메시지 기반의 미들웨어를 만들기 위한 API 다.
ActiveMQ, RabbitMQ 등과 같은 브로커를 이용하여 메시지를 큐에 넣고, 해당 큐를 소비하여 비동기 메시지 처리를 할 수 있다.
2 AMQP(Advanced Message Queuing Protocol): RabbitMQ와 같은 브로커를 이용하여 메시지 기반의 마이크로서비스 아키텍처를 구현할 수 있다.
3 Kafka: 대용량 스트림 데이터를 처리할 수 있는 메시지 큐입니다. 매우 높은 처리량과 데이터 보관 능력으로 대용량 데이터 스트림 처리에 주로 사용된다.