GPT Archiving 5

Java - CompletableFuture & addCallBack

CompletableFuture는 Java의 비동기 프로그래밍을 지원하는 클래스입니다. Java 8에서 추가되었으며, 비동기 작업을 처리하고 조합할 수 있는 강력한 API를 제공합니다.1. CompletableFuture란?Java의 java.util.concurrent 패키지에 포함된 클래스.비동기적으로 작업을 수행하고, 그 결과를 처리하거나 다른 작업과 연결할 수 있도록 설계된 Future의 확장 버전.기존의 Future와 비교하여 더 유연하고 강력하며, 특히 비동기 작업을 쉽게 연결할 수 있습니다.2. CompletableFuture의 주요 특징비동기 작업 수행:특정 작업을 비동기적으로 실행하고 결과를 반환합니다.결과를 기다리지 않고 다른 작업을 계속 진행할 수 있습니다.작업 조합:여러 Comple..

GPT Archiving 2025.01.06

kafka - ProducerRecord

Kafka에서 ProducerRecord는 프로듀서가 Kafka로 데이터를 보낼 때 사용하는 데이터 구조입니다. 간단히 말하면, Kafka 토픽에 메시지를 보낼 때 필요한 정보를 담고 있는 객체입니다.ProducerRecord란?정의:ProducerRecord는 Kafka의 프로듀서 API에서 사용되며, 메시지를 Kafka 브로커로 전송할 때 메시지의 토픽, 키, 값, 헤더 등의 정보를 포함합니다.역할:Kafka 토픽에 메시지를 보낼 때 메시지의 메타데이터를 정의하고, 이를 기반으로 Kafka 브로커가 데이터를 처리할 수 있도록 합니다.ProducerRecord의 주요 필드Topic:메시지가 전송될 Kafka 토픽의 이름입니다.필수적으로 지정해야 합니다.Key (선택 사항):메시지의 키입니다. 키는 메시..

GPT Archiving 2025.01.06

kafka Sticky

Kafka 프로듀서에서 Callback과 함께 Sticky Partitioner를 사용하는 이유는 파티션 사용의 효율성과 성능 최적화를 위해서입니다. 이를 좀 더 구체적으로 살펴보겠습니다.Sticky Partitioner는 Kafka 2.4.0부터 도입된 파티셔닝 전략으로, 특정 파티션에 메시지를 "묶어서(sticky)" 전송하도록 설계되었습니다. 기존 파티셔너 (Round-Robin 파티셔너 또는 Key-Based 파티셔너)는 메시지가 각각 다른 파티션으로 분산되는 경우가 많아 파티션 변경 시 오버헤드가 발생할 수 있습니다. Sticky Partitioner는 연속적인 메시지 배치를 하나의 파티션으로 묶어 전송합니다. 기본적으로 배치 크기가 꽉 차거나, 전송 타임아웃이 발생하면 다른 파티션..

GPT Archiving 2025.01.06

dockerfile - 의존성 캐싱

COPY build.gradle settings.gradle gradlew /app/COPY gradle /app/gradle 역할: 프로젝트의 Gradle 설정 파일(build.gradle, settings.gradle)과 Gradle Wrapper(gradlew 및 gradle 디렉토리)를 Docker 이미지로 복사. Gradle Wrapper는 Gradle 버전을 일관되게 관리하며, 빌드 환경에 Gradle이 설치되어 있지 않아도 프로젝트를 빌드할 수 있게 합니다. 왜 필요한가?: Gradle Wrapper는 Gradle 버전을 명시적으로 관리하여 빌드 환경의 종속성을 제거합니다. 이 단계에서 소스 코드를 복사하지 않고 설정 파일만 복사하는 이유는 의존..

GPT Archiving 2025.01.06

dockerfile - booJar, plain Jar

긍께 외장톰캣에 넣는 jar는 플레인jar고,내장톰캣포함해서jar로만 서버 돌릴 수 있는게 bootJar이란거지?docker-compose로 컨테이너 띄울 떈 bootJar로 띄우는게 일반적이니까enabled = false로 설정해서 플레인Jar안나오도록 하는거고? 1. 외장 톰캣에서 사용하는 JAR (plain JAR)특징:Spring Boot의 부트스트래핑 로직과 내장 톰캣/제티 같은 임베디드 웹 서버가 포함되지 않음.순수 Java 라이브러리 또는 모듈로 동작하며, 외장 톰캣에 배포하려면 .war 파일로 패키징하는 것이 일반적.사용 사례:외장 톰캣에서 애플리케이션을 실행할 때.bootJar 대신 plain JAR이 필요할 때.2. 내장 톰캣 포함 실행 가능한 JAR (boot JAR)특징:Spring..

GPT Archiving 2025.01.06