본문 바로가기
728x90

전체 글138

Kafka - Kafka Connect 개요 Kafka Connect 의 용어 정리와 확장성AWS MSK Connect 와 Kafka Connect 는 기능적으로는 같은 것이며, 다만 AWS MSK Connect 는 AWS 에서 제공해주는 완전 관리 시스템이라는 점에서 차이가 있습니다.AWS MSK Connect 가 Kafka Connect 기반으로 만들어진 것이라 Kafka Connect 에서 사용할 수 있는 플로그인은 전부 사용가능합니다.Kafka Connect 용어 정리 - 커넥트? 커넥터? 소스 커넥터? 싱크 커넥터?커넥트는 서비스명이며, 커넥트에서 실제 기능을 담당하는 플로그인(또는 인스턴스)을 커넥터라고 합니다.커넥터로 생성된 인스턴스를 worker 라고 부르며, 커넥터 하나 당 worker 하나를 가지면 한 곳의 topic 에 데이터를.. 2024. 11. 26.
Kafka - consumer 구현체 비교 Record인터페이스커밋 방식MessageListenerAuto CommitAcknowledgingMessageListenerManual CommitConsumerAwareMessageListenerConsumer 객체 활용AcknowledgingConsumerAwareMessageListenerManual Commit + Consumer 객체 활용  Batch인터페이스커밋 방식BatchMessageListenerAuto CommitBatchAcknowledgingMessageListenerManual CommitBatchConsumerAwareMessageListenerConsumer 객체 활용BatchAcknowledgingConsumerAwareMessageListenerManual Commit +.. 2024. 11. 26.
Kafka - Avro 포맷 Primitive Typesnull: 값 없음boolean: 이진 값int: 32비트 부호 있는 정수long: 64비트 부호 있는 정수float: 단정밀도(32비트) IEEE 754 부동소수점 숫자double: 배정밀도(64비트) IEEE 754 부동소수점 숫자bytes: 8비트 부호 없는 바이트의 순서string: 유니코드 문자 시퀀스 예시avro typejson typeexamplenullnullnullbooleanbooleantrueint,longinteger1float,doublenumber1.1bytesstring"\u00FF"stringstring"foo"recordobject{"a": 1}enumstring"FOO"arrayarray[1]mapobject{"a": 1}fixedstring"\.. 2024. 11. 21.
Kafka - Kafka Producing 성능 비교와 멱등성 조건 Producing 성능 비교의 두가지 Factor - Acks, Synchronized/Asynchronized acks=all 동기acks=all 비동기acks=1 동기acks=1 비동기비교 조건acks=allSynchronizedacks=allAsynchronizedacks=1Synchronizedacks=1Asynchronized기타 조건replication factor: 2enable.idempotence: truemax.in.flight.requests.per.connection: 5retries: 3reconnect.backoff.max.ms: 1000Lbatch.size: 5KBlinger.ms: 10mscompression.type: gizpreplication factor: 2enable.. 2024. 6. 2.
MSK Cluster 간단 소개 MSK 이란 MSK (Amazon Managed Streaming for Apache Kafka) - 완전관리형 Apache Kafka 카프카는 크게 Producer, Broker, Consumer 로 구성됩니다. Kafka Cluster 부터 보시면 여러개의 Broker 로 구성되어있습니다. 각각의 Broker 가 하나의 서버라고 보시면 됩니다. Kafka 는 실시간 데이터 플랫폼 또는 이벤트 스트리밍 플랫폼 입니다. 비동기 통신과 pub/sub 방식을 지원합니다. Producer 는 메시지를 발행하는 서버 Consumer 는 메시지를 받아서 처리하는 서버 Producer 에서 메시지를 발행(Publisher) 하고 Consumer 에서 토픽 단위로 구독(Subscribe) 하고 메시지를 소비(Cons.. 2024. 2. 21.
JPA QueryDSL - 쿼리 함수 정리 JPAQueryFactory 함수 select() - 조회할 컬럼 지정 select( entity.variable 명, entity.variable 명) selectFrom() - 조회할 컬럼 전체 및 from 테이블 entity 지정 seledtFrom( entity 인스턴스명) as() - 컬럼 alias 함수 from() - 조회 대상 테이블 from(centerStockOutMaster) join() - join 할 테이블 지정 join(saleBusinessPlaceMaster) leftJoin() - left join 할 테이블 지정 rightJoin() - 사용하지 말자 innerJoin() - join()과 동일 on() - join 시 join 테이블에 매핑되는 컬럼 정의 on(cente.. 2024. 2. 12.
Kotlin - 테스트 코드 어노테이션 및 MockMvc 테스트 Mock 테스트 주요 어노테이션//@ActiveProfiles(ProfileConstants.DEVELOPMENT)//@AutoConfigureMockMvc//@TestPropertySource(properties = ["spring.profiles.active=develop"])@WebMvcTest(SlackMessageForwardingController::class)@ExtendWith(SpringExtension::class)@Import(MessagingClient::class, WebClientProvider::class)class SlackMessageForwardingControllerTest( @Value("\${spring.config.activate.on-profile}".. 2024. 1. 10.
Kotlin - Any 와 * 의 차이 코틀린에서 Any와 *는 다른 목적으로 사용됩니다. 차이점은 다음과 같습니다. AnyAny는 코틀린에서 최상위 타입입니다. Java의 Object와 유사합니다.모든 코틀린 클래스는 암시적으로 Any를 상속합니다.Any는 원시 타입, null이 가능한 타입 등 코틀린의 모든 타입을 포함합니다.예: 함수가 어떤 타입의 객체든 받을 수 있을 때 Any를 사용할 수 있습니다.fun printHashCode(value: Any) { println(value.hashCode())}  *(별표, Star-projection)*는 제네릭에서 사용되며, 타입 인자를 알 수 없거나 관심이 없을 때 사용됩니다. 이것은 Java의 와일드카드인 ?와 유사합니다.별표 프로젝션을 사용하면, 특정 제네릭 타입에 대해 타입 인자.. 2023. 10. 26.
Application To Slack https://jojoldu.tistory.com/552 Slack Webhook API 생성하기요즘 대부분의 개발도구들은 Slack과의 통합 (Integration)을 지원하지만, 여전히 미지원 하는 도구들도 많습니다. 이런 미지원 도구들을 Slack에 연동할때 Slack Webhook을 사용합니다. 저도 종종 사용하jojoldu.tistory.com Slack API 참고https://api.slack.com/methods/conversations.list/test conversations.list API methodLists all channels in a Slack team.api.slack.com  1. Slack WebHooks 생성 앱 생성 https://api.slack.com 에서 시작h.. 2023. 10. 23.
RxJava - Flux 함수 Reactor Core에서 제공하는 Flux는 0개 이상의 아이템을 처리할 수 있는 리액티브 스트림 시퀀스를 나타냅니다. Flux에는 데이터 스트림을 생성, 변환, 조합, 처리하는데 사용할 수 있는 다양한 연산자와 메서드가 있습니다. Flux의 대표적인 함수와 연산자 생성 연산자: just(...): 주어진 아이템들로 Flux를 생성합니다. fromIterable(...): Iterable로부터 Flux를 생성합니다. range(...): 주어진 범위의 숫자로 Flux를 생성합니다. empty(): 아무 아이템도 발행하지 않는 Flux를 생성합니다. interval(...): 주어진 시간 간격으로 숫자를 발행하는 Flux를 생성합니다. 변환 연산자: map(...): 각 아이템을 다른 형태로 변환합니다... 2023. 8. 27.
AWS Glue - Schema Register AWS MSK 를 사용할 때, 저장되는 데이터 포맷을 JSON 또는 Avro 포맷을 지정할 수 있습니다. 포맷 지정 시에 저장되는 데이터의 스키마를 Schema Register 서버에 저장하여 관리할 수 있습니다. AWS Glue 를 통해 스키마 레지스터를 저장하고 호출하는 형식으로 사용할 수 있으며, 서버리스로 인스던트를 제공하기 때문에 관리하기에 용의합니다. AWS Schema Register 생성 AWS > Data Catalog > Stream schema registries Add registry 클릭 registry 를 등록하고 registry 내부에 스키마들을 저장하고 관리합니다. schema 생성 AWS > Data Catalog > Stream schema registries > Sch.. 2023. 8. 24.
kafka - Datadog Metrics Sink Connector 이거는 유료 커넥터 플러그인입니다. 체험판으로 30일 무료로 이용 가능합니다. https://docs.confluent.io/kafka-connectors/datadog-metrics/current/overview.html#license 위의 Confluent 에서 제공된 Datadog Metrics Sink Connector 특징은 다음과 같습니다. At Least Once Delivery: 이 커넥터는 메시지 전달을 적어도 한 번 이상 보장합니다. 이는 데이터의 유실을 방지하며 안정적인 데이터 이동을 보장합니다. Dead Letter Queue: 실패한 메시지를 보관하고 관리하는 메커니즘으로, Dead Letter Queue를 통해 처리되지 않은 메시지를 추적하고 분석할 수 있습니다. Multiple.. 2023. 8. 10.
Kotlin - 일급 시민(First-class citizen) 일급 시민 (First-class citizen) 코틀린의 일급 시민 (First-class citizen)은 함수나 객체 지향 프로그래밍 언어에서 어떤 개체가 다른 객체들과 동일한 조건으로 사용될 수 있을 때 그 개체를 일급 개체 또는 일급 값이라고 합니다. 코틀린에서는 주로 함수를 일급 시민으로써 다룹니다, 이로 인해 여러 프로그래밍 패러다임을 지원하게 됩니다. 1. 변수에 할당할 수 있다. 함수를 변수에 할당할 수 있으며, 이 변수를 통해 함수를 호출할 수 있습니다. val greet: (String) -> Unit = { name -> println("Hello, $name!") } greet("Alice") 2. 함수의 인자로 전달할 수 있다. 함수를 다른 함수의 인수로 전달할 수 있습니다. f.. 2023. 8. 8.
코틀린에서 @RequiredArgsConstructor @RequiredArgsConstructor 애노테이션과 유사한 기능을 구현하기 위해 data class와 @JvmOverloads 애노테이션을 사용할 수 있습니다. data class는 Lombok의 @RequiredArgsConstructor와 유사한 불변성을 제공하며, @JvmOverloads는 자동으로 오버로딩된 생성자를 생성할 수 있도록 합니다.dependencies { implementation 'org.projectlombok:lombok:1.18.20' kapt 'org.projectlombok:lombok:1.18.20'}@NoArgsConstructordata class MyClass(val param1: String, val param2: Int) { @JvmOverl.. 2023. 6. 12.
JAVA - 리플렉션 getField, getDeclaredField 차이 getField vs getDeclaredField상속관련해서 getDeclaredField 은 상속된 프로퍼티를 불러올 수 없다.반면 getField 는 public 으로 상속된 프로퍼티만 불러들일 수 있다. - (Field[]) getFields() : 클래스에 선언된 필드들 반환(public 접근지시자만)- (Field) getField(String name) : name에 해당하는 필드를 반환 (없으면 NoSuchFieldException)- (Field[]) getDeclaredFields() : 클래스에 선언된 모든 필드들 반환(private 까지도 포함)- (Field) getDeclaredField(String name) : name에 해당하는 필드를 반환(없으면 NoSuchFieldExc.. 2023. 5. 20.
728x90