BackEnd 85

Spring Batch 실행 순서 정리

Spring Batch는 Job → Step → Reader/Processor/Writer 구조로 구성되며, 실행 시 각 컴포넌트가 정의된 순서와 스프링 컨텍스트 초기화 흐름에 따라 동작합니다. 이 글에서는 클래스 단위 기준으로 실행 순서를 정리합니다.✅ 실행 순서 흐름 (클래스 단위)BatchApplication└─ BatchConfig ← @Configuration: Job, Step, Reader 등 Bean 등록└─ UserJobLauncher ← @Component: JobLauncher로 수동 Job 실행 └─ ImportUserJob ← BatchConfig에서 정의된 Job ..

Spring Boot 어노테이션 실행 순서 정리

Spring Boot 애플리케이션이 실행될 때, 다양한 어노테이션들이 어떤 순서로 처리되는지 정확히 이해하는 것은 설정과 초기화 과정을 설계하는 데 매우 중요합니다. 이 글에서는 애플리케이션 구동 시 어노테이션이 처리되는 순서를 정리합니다.✅ 전체 흐름 요약Spring Boot는 SpringApplication.run(...) 실행 시 다음과 같은 단계로 어노테이션을 처리합니다:1. @ComponentScan2. @Configuration3. @Enable* / @Import4. @Component / @Service / @Repository / @Controller5. @Autowired / 생성자 주입6. @PostConstruct7. @ApplicationRunner / @CommandLineRun..

BackEnd/Spring Boot 2025.06.24

K6란? 성능 테스트 도구 소개 및 실습 결과 분석

웹 서비스의 안정성을 확보하기 위해선 사전에 성능 테스트가 필수입니다. 특히 많은 요청이 몰릴 때 서버가 어떻게 반응하는지를 미리 확인하고 병목을 찾는 작업이 중요합니다. 이 글에서는 K6란 무엇인지, 기존 성능 도구(ab, JMeter 등)와의 차이점, 그리고 실제 부하 테스트 예시 및 결과 분석까지 정리합니다. ✅ K6란?K6는 Grafana Labs에서 만든 모던 부하 테스트 도구입니다. 주요 특징은 다음과 같습니다:코드 기반 테스트 (JavaScript)CLI 기반 실행 (스크립트 파일로 실행)HTTP 기반 API 테스트에 최적화고성능 (Go 기반)장점항목설명✅ 코드 중심테스트 시나리오를 JavaScript로 작성, 조건 분기와 반복도 가능✅ DevOps 친화적CI/CD에 쉽게 통합 가능 (Git..

BackEnd 2025.06.20

[WebFlux_2] @RestController vs @Component

✅ Spring WebFlux의 핵심 구조: DispatcherHandler와 그 내부 구조앞에서 @RestController와 @Component 방식의 차이를 다뤘다면, 이번에는 이 둘이 내부적으로 어떤 구조에서 동작하며, 왜 그 차이가 발생하는지를 정리해본다.🔸 DispatcherHandler란?DispatcherHandler는 Spring WebFlux의 중앙 진입점이다. Spring MVC에서의 DispatcherServlet과 역할이 동일하며, HTTP 요청을 받아 핸들러를 찾고 실행한 뒤 결과를 반환하는 흐름을 제어한다. WebFlux는 논블로킹 환경에서 동작하기 때문에 DispatcherHandler도 내부적으로 Mono와 Flux를 사용해 모든 처리를 리액티브하게 실행한다.🔸 Rest..

Kafka + Spring Boot 완전 연동기: Apache Kafka 실패부터 Bitnami Kafka 성공까지

Kafka를 처음부터 끝까지 Docker 기반으로 설정하고 Spring Boot 애플리케이션과 연동하는 과정을 공유합니다.특히 Apache Kafka 이미지로 고생한 뒤 Bitnami Kafka로 전환해 성공한 내용을 기록합니다.✅ 1. Spring Boot로 Kafka 연동하기Spring에서는 spring-kafka 의존성만 추가하면 Kafka를 쉽게 연동할 수 있습니다.// build.gradle.ktsimplementation("org.springframework.kafka:spring-kafka")Kafka 설정은 application.yml로 구성하며, 기본적인 Consumer/Producer 설정은 다음과 같습니다:spring: kafka: bootstrap-servers: localh..

BackEnd 2025.06.19

[WebFlux_1] @RestController vs @Component

Spring WebFlux를 사용할 때 가장 먼저 마주치는 애노테이션 중 하나가 @RestController입니다. 그런데 같은 스프링 빈으로 등록되는 @Component와 무엇이 다른 걸까요? 이 글에서는 @RestController와 @Component의 차이를 기본 개념부터 실무 사용 포인트, 내부 동작까지 정리합니다. 1️⃣ WebFlux란?Spring WebFlux는 Spring 5부터 도입된 리액티브 논블로킹 웹 프레임워크입니다.서블릿 기반 대신 Netty, Undertow 등 리액티브 서버를 기반으로 동작주요 리턴 타입: Mono, Flux (Project Reactor 기반)비동기 스트림 처리에 최적화2️⃣ @RestController vs @Component 기본 차이 항목@RestCon..

[MQ]메시지 큐 3개 비교: Amazon SQS vs Apache Kafka vs RabbitMQ

비동기 메시지 처리와 마이크로서비스 통신이 일반화되면서, **메시지 큐(MQ)**는 필수 인프라가 되었습니다.그중에서도 가장 널리 사용되는 세 가지: ☁️ Amazon SQS🪵 Apache Kafka🐇 RabbitMQ 이 글에서는 이 세 가지 MQ 시스템을 기능, 구조, 사용 목적, 실무 적용 방식 기준으로 정리하고 비교합니다. 🧾 기본 개요 비교 항목Amazon SQSApache KafkaRabbitMQ설계 목적완전 관리형 큐대용량 스트리밍유연한 라우팅 기반 큐메시지 저장 방식Queue로그 (토픽/파티션)Queue (Exchange 기반)프로토콜HTTP(S)자체 프로토콜AMQP (표준)설치 방식AWS 관리형직접 설치 (또는 클라우드)직접 설치 (또는 클라우드) 📦 메시지 처리 구조 비교항목Am..

BackEnd 2025.06.17

[MQ] Kafka란?

Apache Kafka는 LinkedIn에서 시작되어 현재는 Apache Software Foundation에서 관리하는 분산 스트리밍 플랫폼입니다.이 글에서는 Kafka의 개념부터 메시지 수신, 처리 실패 시 흐름, 그리고 실무에서 꼭 알아야 할 메시지 처리 구조를 정리합니다.📨 1. Kafka란?Kafka는 메시지를 로그처럼 저장하고, 이를 다수의 소비자가 순차적으로 읽어가는 구조의 분산 메시지 시스템입니다.기존 큐 방식과 달리 메시지를 삭제하지 않고 보존하기 때문에 스트리밍 처리와 재처리에 매우 유리합니다. ✅ 특징 요약고성능, 고가용성, 수평 확장에 특화메시지를 로그 형태로 저장소비자 그룹 기반 병렬 처리토픽(Topic), 파티션(Partition), 오프셋(Offset) 구조⚙️ 2. 메시지 ..

BackEnd 2025.06.17

[MQ] SQS란?

Amazon SQS(Amazon Simple Queue Service)는 AWS에서 제공하는 완전 관리형 메시지 큐 서비스입니다.이 글에서는 SQS의 개념부터 메시지 수신, 실패 처리, FIFO 옵션의 차이까지 실무 중심으로 정리합니다.📨 1. SQS란?SQS는 **생산자(Producer)**와 소비자(Consumer) 간의 통신을 비동기적으로 분리시켜주는 메시지 큐 서비스입니다.생산자는 메시지를 큐에 보내고, 소비자는 나중에 메시지를 받아 처리할 수 있습니다. ✅ 특징 요약완전 관리형 서비스 → 인프라 관리 필요 없음높은 내구성 (S3 수준)최대 256KB 메시지, 14일 보존 가능FIFO 및 Standard 큐 지원⚙️ 2. 메시지 흐름 구조 (기본 처리 흐름)▶️ Step 1. 메시지 전송**생산..

BackEnd 2025.06.17

[Monitoring]Promtail + Loki 설치 및 연결(Docker 기반)

Spring Boot 애플리케이션의 로그를 실시간으로 수집하고 시각화하기 위해 Loki + Promtail을 설치해보자.여기서는 Docker 단독 실행(docker run) 방식으로 간단하게 구성하는 방법을 설명한다. ✅ 1. 이미지 다운로드 (Docker Pull)먼저 필요한 이미지를 로컬에 다운로드하자.# Loki 이미지 다운로드docker pull grafana/loki# Promtail 이미지 다운로드docker pull grafana/promtail✅ 2. Loki 설정 파일 작성Loki는 수집된 로그를 저장하고 쿼리하는 역할을 한다.기본적으로 /etc/loki/local-config.yaml 경로에 설정 파일을 두고 실행한다.# ~/monitoring/loki/loki-config.yamla..

BackEnd 2025.06.14