반응형

개발 일지 54

API Documentation 정리 (oas,swagger,asyncAPI)

개요 개발 문서 중 API Document를 작성할 방안에 대한 조사 진행 목표는 신뢰성 있으며, 유지보수에 용이한 API 문서 작성이다. Target API 프로토콜로 REST, RSocket, Kafka Message, Websocket Message 이다. 신뢰성: 문서와 실제 구현상의 간극이 최소화 되는 것을 말함 유지보수 용이: Document 작성을 위한 시간을 최소화 하여, 생산성을 높이는 것, 또한 여러 타입의 문서로 재생산 가능한 것도 포함한다. OpenAPI Specification 이란 OAS란 OpenAPI Specification의 약자로 REST API를 json 또는 yaml로 표현하는 방식에 대한 스펙을 의미한다. 2010년대 초 Tam Wordnik이 개발할 당시에는 Swa..

개발 일지 2023.08.02

mysql-connector with mariaDB 버전 호환성 이슈

개요 보안 이슈로 인하여, OS 버전업을 하게되면서, DB 버전을 올리는 일이 발생했다. 기존 코드는 mysql jdbc connector를 사용하여 mariaDB에 붙고 있었고 mariaDB의 버전이 올라가는 상황이다. 버전 업 과정에서 Connection 생성을 못하는 상황이 발생했으며, 해당 이슈 해결과정을 기록으로 남긴다. 변경 사항 전 후 mariaDB version 10.1.25 11.0.2 mysql-connector-java version 8.0.21 8.0.21 이슈 분석 예외 발생 Caused by: java.sql.SQLException: Unknown system variable 'transaction_isolation' at com.mysql.cj.jdbc.exceptions.SQ..

개발 일지 2023.07.26

Kafka Consumer #4 Offset Commit Strategy

개요 Kafka Consumer의 Commit 설정 및 전략에 대한 조사 Kafka Commit Config name Desc Default enable.auto.commit Auto-Commit 사용 여부 true auto.commit.interval.ms Auto-Commit 사용 시 Commit을 수행할 시간 (ms) 5000 AUTO-Commit enable.auto.commit : commit 여부 auto.commit.interval.ms : commit interval 시간 public void maybeAutoCommitOffsetsAsync(long now) { if (autoCommitEnabled) { nextAutoCommitTimer.update(now); if (nextAutoC..

개발 일지 2023.06.22

Kafka Consumer #3 Consume 로직

개요 Consum 과정은 polling(fetch) + commit offset으로 볼 수 있다. Broker로부터 Date를 가져와서 처리 후 처리된 offset만큼 commit하는 과정이다. - kafkaConsumer가 initialize 하면서 Broker로 부터 커밋된 offset 정보를 받아온다. - polling을 통해 Data를 받는다. - commit을 통해 offset을 올린다. 1. Fetch Offset 1. poll 호출을 받으면 우선 모든 구독된 토픽/파티션에 offset이 있는지 확인한다. 2. 만약 하나라도 offset 정보가 없다면 resfresh offset 로직이 동작한다. 3. ConsumerCoordinator는 OffsetFetch Reuqest를 만들고, futu..

개발 일지 2023.06.21

Kafka Consumer #2 Partition Assignor Strategy

개요 Kafka Consumer에 대한 세부 조사 #1 글에 이어서 Consumer Partition Assignor 파티션을 할당하기 위한 Interface consumer 설정의 partition.assingment.strategy 로 구현체를 세팅할 수 있다. ConsumerGroup의 정보와, Topic의 Partition 정보를 받아서, 배분한다. 5개 정도의 구현체가 있다. Custom한 전략도 구현 가능하다. Consumer Rebalancing 전략은 Broker의 Coordinator가 아닌 Consumer들이 정한다. 따라서 Rebalance에서 발생하는 모든 오퍼레이션은 Consumer (Leader)가 관장하여, coordinator는 leader가 오퍼레이션 하기 위한 브로커 역할..

개발 일지 2023.06.15

Kafka Consumer #1 Startup / Rebalance Flow

개요 Kafka Consumer에 대한 세부 조사 Kafka Client와 Kafka Broker의 rebalance flow 및 requset / response data 조사 Kafka Consumer Assignor 관련 조사 Kafka Consumer STW 관련 조사 Consumer Startup Group Coordinator 란 Kafka Broker에서 Consumer Group을 관리하기 위한 컴포넌트 기본적으로 Consumer Group 별로 존재 Cluster내 임의의 broker에 생성 됨 Consumer Group내 member의 변동을 감지하고 Rebalance를 관장 kafka topic을 이용해서 group의 metadata를 유지 총 3가지 단계로 coordinator와 c..

개발 일지 2023.06.14

Expand Kafka Cluster

개요 Kafka Cluster를 확장할 시 발생하는 이펙트에 대한 조사 Broker Data Reassignment Strategy 단순 Broker Add 기본적으로 Broker가 추가되는 경우 기존 topic 및 Data에 대해서는 아무런 작업을 진행하지 않는다. 앞으로 추가되는 topic에 대해서 신규 브로커가 포함된 형태로 Cluster가 동작한다. Migrate data to new Broker 수동적으로 트리거링하여 기존 데이터를 새 Broker에 마이그레이션 할 수 있다. 시스템 중단 없이 작업 가능한 방법 내부적으로 다음 프로세스를 적용하여 마이그레이션이 진행됩니다. 1. 신규 Broker를 기존 파티션의 follower로 지정 2. 신규 Broker는 기존 파티션의 모든 Data를 rep..

개발 일지 2023.06.13

Webclient 동작 원리 및 Configuration

개요 Webclient는 Spring Webflux에 포함된 외부 요청 / 응답에 대한 Handling을 담당하는 모듈이다. 기존 RestTemplate의 요청 응답 사이의 동기성을 해결하고, 보다 효과적으로 서버 리소스를 사용하기 위해 등장했다. 내부적으로 비동기적으로 구성되어 있으며, 구현은 Spring Webflux를 활용했다. WebClient 사용 분석 WebClient는 총 4단계로 요청 -> 응답 처리를 추상화하였다. Http Config → Reqeust Config → Exchange → Response Handling 각각 - http 기본 설정 (socket 설정 포함) - 요청 정의 - 발송 - 응답 처리 1. Build with Config WebClient.builder() ....

개발 일지 2023.05.30

Kafka Connect 사용성 검토

개요 - 데이터 파이프라인 생성 시 반복 작업을 줄이고 효율적인 전송을 이루기 위한 애플리케이션 - 반복작업에 대해서 매번 Producer, Consumer 애플리케이션의 배포/운영해야 하는 비효율 보완 - Connect 를 이용하면 특정한 작업 형태를 템플릿으로 만들어 놓은 Connector 를 실행함으로써 반복작업을 줄일 수 있음. - Kafka 브로커와 별도의 클러스터를 구성하며 Connector 가 실행되는 환경을 제공 장단점 장점 단점 관리 용이 모니터링 가능 개발 생산성 최적화 및 유지보수되는 pre-build connector 시스템 복잡성 증가 보안 문제 가능성 증가 (타 시스템 연동 때문) 제한된 기능 Confluent Platform 소개 Confluent Platform은 여러 소스 ..

개발 일지 2023.05.24
반응형