Infra(5)
-
[kafka] 카프카(kafka) 오픈소스 주요 개념정리
학습동기 예전부터 알고도 있었고, if kakao에서 아파치 플링크와 함께 로그 분석에 사용했다고하여, 간단히 producer, broker, consumer 구성으로 엇비슷하게 로그를 파싱하여 분산 프로세스별로 토픽을 나눠 broker에 저장하고, 검증이 필요한 프로세스별로 필요한 로그만 comsumer가 소비하여 기능 검증을 위한 로직을 만들어 본 경험도 있습니다. 하지만 그때는 제가 개발한 범위에서 kafka까지 써가며 그렇게 해야되는가? 라는 물음이 있었습니다. 규모가 작은데 별도의 broker 인스턴스까지 띄워서 처리를 해야하나 하는 것이었고, 프로그램이 죽지 않는다면 하나의 어플리케이션 내에서도 멀티스레드와 이벤트 큐를 활용해서 충분히 구현히 가능하기 때문이라 판단했습니다. 그러나 최근 어느정..
2022.12.07 -
[Kafka] Kafka Cluster Docker-compose로 구축하기
Kafka Cluster를 Docker-Compose로 구축하는 예제입니다. kafka 이미지를 Docker Hub에서 검색해보면 bitnami에서 제공하는 이미지가 가장 다운로드 횟수가 많습니다. 하지만 찾아보니 현재 kafka는 confluent라는 회사에서 실질적으로 유지관리 및 기능 개발을 진행하고 있다고 합니다. 그리고 Apache 재단에서 하는 kafka와 동일한 기능을 제공하지만, 버전 매핑 방식등이 조금 차이가 있어서 어떤 이미지를 사용할까 고민을 했는데, 일단 저는 현재 해당 오픈소스를 관리하는 회사의 이미지를 사용해야 된다고 생각하여 'confluentinc/cp-kafka' 이미지를 사용하였습니다. 이것도 일단 다운로드 횟수가 적지 않기에 사용에 무방하다고 생각합니다. ( bitnam..
2022.12.07 -
[ERROR] kafka cluster 구성 후 --zookeeper 옵션 사용 시 에러 발생
kafka 클러스터를 구성하고 토픽 리스트를 확인하거 토픽을 생성하는 과정에서 '--zookeeper' 옵션을 추가하는 경우 에러가 발생합니다. (예시 './kafka-topics.sh --describe --zookeeper locakhost:2181' 등 ) docker-compose를 사용하여 클러스터를 구성하였고 아래 이미지를 사용하였습니다. bitnami/kafka:latest bitnami/zookeeper:latest 아파치 카프카 공식 사이트에서 이미지 버전을 확인했을 때, bitnami에서 만드는 이미지들은 아파치 카프카 버전과 동일한 것으로 보입니다. 해당 이슈에 대해서 카프카 공식 도큐먼트를 찾아 보았습니다. 키워드는 'zookeeper option'으로 검색했고 아래와 같은 결과를 ..
2022.12.07 -
Docker Compose로 MySQL Replication 구축
Docker로 MySQL Replication 구축 내용을 간단하게 기록합니다. MySQL Replication을 구축하게 된 계기는 CQRS 패턴을 학습하면서 DB를 이중화하고 읽기와 쓰기를 구분해서 사용하기 위해 구성을 잡아보았습니다. docker로 MySQL Container를 띄워서 사용하였는데, 이번기회에 Docker Compose를 사용하여 띄워보았습니다. 환경 세팅 Host PC에 MySQL 설치 Host PC에 Docker, Docker-compose 설치 아래 내용으로 구성할 예정이고, 실제 배포를 한다면 Spring-Application도 docker로 Container에 띄우고 같은 Network에 연결시켜서 통신을 하겠다고 생각이 드는데... 백엔드 실무 경험은 없어서 일단 여기까지..
2022.11.25 -
[Error] Jenkins build 과정에서 Error: Could not find or load main class org.gradle.wrapper.GradleWrapperMain
Jenkins를 설치하고 아래와 같은 구성으로 세팅을 잡았습니다. webhook 방식이 아니라 Jenkins에서 '지금 빌드하기'를 눌렀을 때 GitHub의 소스를 가져와서 빌드를 진행하고 배포하는 구성입니다. Docker로 2개의 컨테이너를 띄웠습니다. 하나는 Jenkins가 구동되는 컨테이너이며, 다른 하나는 Spring Application이 배포 될 컨테이너이며 우분투를 설치하였습니다. 이런 구성을 선택한 이유는 2가지 입니다. 하나는 사이드 프로젝트라 규모가 작기 때문이고, 또 다른 하나는 이전에 해보았던 방식들과는 조금 다른 방식으로 사용하기 위함입니다. 해당 구성방식은 링크를 남기고 에러에 대한 이야기로 넘어가겠습니다. 에러내용은 아래와 같습니다. ... 중략 ... ( git pull 로그..
2022.11.24