전체 글(193)
-
Spring boot jar 파일 실행시 profile 적용
기존에 제가 담당하던 시스템을 매우 Legacy한 시스템입니다.최근에 spring boot를 적용하고 생성된 jar 파일을 실행시키는데 profile이 제대로 적용되지 않는 상황이 발생했습니다.여러 자료들을 찾아보니 jar 파일을 실행새키면서 profile을 적용하는 방법은 총 2가지가 있었습니다.Java System Propertiesjava -jar -Dspring.profiles.active={프로파일} 파일위치 java option현 구조에서 주의해야할 사항은 -Dspring.profiles.active 옵션이 파일 위치보다 앞에 있어야 합니다. 만약 그렇지 않다면 실행시 profile을 인식하지 못 합니다.Program Argumentsjava -jar 파일 위치 --spring.profiles..
2024.12.21 -
Consumer Group Rebalance
리벨런싱이란컨슈머 그룹 내의 컨슈머들은 자신들이 읽는 파티션의 소유권을 공유합니다. 즉 하나의 켠슈머 그룹에서 컨슈머 A가 담당하던 파티션 읽기 작업을 컨슈머 B가 이관받아 작업을 처리할 수 있습니다. 이와 같은 컨슈머 그룹 내의 소유권 이관 작업을 리밴런싱(Rebalance)라고 합니다. 이처럼 리밸런싱은 컨슈머 파티선 소유권을 조정할 수 있기 때문에 컨슈머 그룹의 확장성과 가용성을 높여줍니다.컨슈머 그룹 코디네이터컨슈머 그룹 코디네이터는 특정 컨슈머 그룹을 관리하는 브로커입니다. 즉, 컨슈머 그룹 별로 관리하는 브로커가 지정되는데 이 브로커가 해당 컨슈머 그룹의 코디네이터가 됩니다. 그룹 코디네이터는 아래와 같은 정보를 추적하고 관리하는데 만약 해당 정보에 대해 변경이 발생하면 리밸런싱을 실시합니다...
2024.12.16 -
Kafka Consumer Group
Kafka Consumer GroupKafka Consumer Group은 Kafka의 개별 Consumer 인스턴스들을 하나로 묶는 논리적 그룹 단위 입니다. 하나의 Topic에는 여러 Consumer Group이 동시에 접속해 메시지를 가져올 수 있습니다. 이것은 기존의 다른 메시징 큐에서 Consumer가 메시지를 가져가면 큐에서 삭제되어 다른 Consumer가 가져갈 수 없는 것과는 다른 방식입니다. 이 방식을 통해 하나의 데이터를 다양한 용도로 사용할 수 있습니다.Kafka Consumer Group을 사용하는 이유장애 내성특정 Consumer에 문제가 생기는 경우 동일 Group 내의 다른 Consumer가 계속해서 파티션에서 데이터를 읽을 수 있습니다.예를 들어 위 그림에서 server1에 ..
2024.12.02 -
Reactor Kafka
Project Reactor란Project Reactor란 Java 환경에서 비동기 application을 만들기 위한 reactive library입니다. Reactor는 java에서 비동기를 위해 제공하는 Flux와 Mono를 활용하고 있습니다. 이를 통해 메모리를 효율적으로 사용하고 불필요한 buffering이나 blocking을 방지합니다.Reactor KafkaReactor Kafka는 앞서 설명한 Project Reactor를 활용한 Kafka의 reactive library입니다. Project Reactor를 활용해서 Kafka의 메시지 송수신을 비동기로 처리할 수 있게 합니다.Reactor Kafka 특징Kafka를 위한 Functional InterfaceReactor Kafka는 Ja..
2024.11.16 -
Github Actions
Github Actions란Github Actions는 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 CI/CD 플랫폼입니다. repository에 대한 모든 pull 요청을 빌드 및 테스트하거나 병합된 끌어오기 요청을 프로덕션에 배포하는 워크플로를 만들 수 있습니다.Github Actions의 특징컨테이너(도커) 기반으로 동작개발자는 워크플로를 작성하여 다양한 이벤트를 기반으로 실행 가능워크플로는 runners라 불리는 인스턴스 내에서 실행됨Github 마켓 플레이스에서 여러 사람이 공유한 워크플로를 찾아서 사용할 수도 있고 직접 만들어서 공유도 가능YAML로 작성Github Actions의 장점별도의 서버 설치가 불필요. 제공해주는 클라우드가 있음비동기적 병렬 실행이 가능한 CI/CDGithu..
2024.10.10 -
Kafka가 빠른 이유
Sequential I/O일반적으로 RAM은 랜덤 액세스를 지원히자만, 디스크는 데이터가 위치하는 블록을 찾는 시간과 찾은 데이터 블록을 메모리에 카피하는 시간 등의 오버헤드가 존재합니다. 데이터가 RAM에 이미 존재한다면 이 과정은 생략되지만, 그렇지 않다면 page fault가 발생하여 느리게 인식됩니다. 하지만 대용량의 데이터를 처리하는데 그 모든 데이터를 RAM에 올리는 것은 현실적으로 어려움이 많습니다.Kafka는 디스크를 저장소로 사용하는 대신 Sequential I/O를 통해 탐색시간을 최소화합니다. Kafka의 데이터는 consumer가 읽어도 지워지지 않으며, 데이터는 맨 끝에 추가만 됩니다. 이로 인해 Kafka의 데이터는 디스크에 조각으로 나누어지지 않고 연속적인 블록에 저장됩니다. ..
2024.07.25