개요 이번에는 Docker Desktop의 내용과 설치를 정리해 보려 합니다. Docker Desktop은 도커를 데스크탑 환경에서 사용할 수 있게 해주는 프로그램 입니다. 여기서 데스크탑 환경이란 Mac이나 Windows를 말합니다. Docker Desktop을 설치하면 Docker Engine, Docker CLI, GUI 환경을 제공해 줍니다. Docker Desktop을 사용하면 개발자는 컨테이너화된 애플리케이션을 쉽게 구축, 배송, 실행할 수 있습니다. 특징 배포 용이성 Docker Desktop에 포함된 Docker Engine을 사용하면 개발자가 어디서든 쉽게 배포하고 실행할 수 있는 컨테이너를 만들 수 있습니다. 이를 통해 다양한 환경에서 일관성과 배포 용이성을 얻을 수 있습니다. 공유 D..
개요 RabbitMQ와 Spring Boot를 연결해 보겠습니다. RabbitMQ를 Spring Cloud Bus로 활용하여 Spring Cloud Config가 관리하는 설정 파일이 변경되면 해당 파일을 사용하는 서버들을 모두 업데이트 해보려 합니다. Spring Cloud Bus란 Spring Cloud 환경에서 마이크로 서비스 간 메세지 전달을 지원하는 프레임워크 입니다. 주로 서비스 간의 설정 변경, 애플리케이션 이벤트 전파, 다른 서비스로 신호 전송 등에 사용됩니다. 구현 RabbitMQ를 Spring Boot에 사용하기 위해 코드를 추가하겠습니다. 의존성 추가 Spring Cloud Config 서버 의존성 추가 // actuator implementation 'org.springframewo..
개요 RabbitMQ는 오픈소스 메세지 브로커로 시스템 간 메세지를 안전하게 전달하는데 사용합니다. AMQP을 기반으로 하며 다양한 메시징 패턴과 다양한 언어 및 플랫폼에서 사용할 수 있습니다. 이번에는 windows 환경에서 RabbitMQ를 설치해보려 합니다. 설치 Windows 환경에서는 RabbitMQ를 설치하기 전에 Erlang을 설치해야 합니다. RabbitMQ는 Erlang 프로그래밍 언어로 작성되었기 때문에 Erlang 런타임 시스템이 필요하기 때문입니다. Erlang 설치 홈페이지에서 Erlang을 다운 받습니다. https://erlang.org Index - Erlang/OTP The official home of the Erlang Programming Language www.erl..
개요 이번에는 Kafka Connect을 이용하여 Spring Boot에서 데이터를 보내면 MySQL에 저장하는 로직을 구현해보려 합니다. 멀티 서버 환경에서 Kafka Connect을 이용하여 순차적으로 처리하여 동시성 문제를 해결할 수 있고 비동기적으로 처리하여 성능 향상을 기대할 수 있습니다. Spring Boot - Producer Spring Boot에서 MySQL에 DB에 저장하기 위해서는 정해진 패턴대로 메시지를 전송해야 합니다. 정해진 패턴이란 Schema 와 payload로 구성되어 있습니다. Schema는 Table의 구조를 나타내고 payload는 실제 데이터를 나타냅니다. 스키마를 참고하여 payload의 데이터를 Table에 넣는 식 입니다. 이전 글에서 본 Producer 구조와..
개요 이번에는 Kafka Source Connect와 Kafka Sink Connect를 등록해보려 합니다. Kafka Source Connect는 MySQL에 변경 사항을 감지하여 Kafka Topic에 데이터를 보내는 역할을 합니다. Kafka Sink Connect는 Topic에 저장된 메세지를 MySQL에 보내 저장하는 역할을 합니다. 이를 위해 Kafka Connect와 MySQL에 접근하기 위해 JDBC Connector와 MySQL Connector 설정되어야 합니다. 이는 전글을 참조하면 좋을 거 같습니다. https://cladren123.tistory.com/205 Kafka Connect 설치 & 실행 & MySQL 설정 개요 이번에는 Windows에 Kafka Connect 설치해보..
개요 이번에는 Windows에 Kafka Connect 설치해보려 합니다. Kafka Connect는 Apache Kafka 일부로 제공되는 프레임워크로 스트림 데이터를 외부 시스템과 연결하는데 사용합니다. Kafka Connect는 Kafka Connect Source 와 Kafka Connect Sink 가 있습니다. Kafka Connect Source : 외부 시스템의 데이터를 가져와 메시지 형태로 Kafka Topic에 저장합니다. 예시) RDBMS에서 변경 사항을 실시간으로 Kafka에 전송할 때 쓰입니다. Kafka Connect Sink : Topic에 저장된 메세지를 구독하고 있는 외부 시스템으로 전달합니다. 예시) Kafka Topic에 있는 데이터를 Elasticsearch, RDBM..
개요 이번에는 Kafka와 Spring Boot를 연동해보려 합니다. Spring Boot에 메시지를 전송하는 Producer, 메시지를 받는 Consumer의 코드를 추가하여 Kafka를 통해 메시지를 주고 받게 해볼 겁니다. 이 글은 Kafka Consumer 구현, Kafka Producer 구현, 테스트 순으로 정리했습니다. 시작하기 전 Spring Boot에 Producer, Consumer 코드를 추가하기 전에 Kafka에 Topic을 하나 생성해야 합니다. 또한 테스트를 하려면 ZooKeeper와 Kafka를 실행시켜야 합니다. ZooKeeper와 Kafka를 설치하고 실행하는 글은 이전에 정리한 글을 참조하시면 도움이 될 것 입니다. https://cladren123.tistory.com/..
개요 이번 글에서는 Kafka를 Windows 환경에서 설치하고 간단한 테스트를 통해 잘 실행되는지 확인해 보겠습니다. Kafka 설치 Kafka 홈페이지 Kafka를 다운받기 위해 홈페이지로 이동합니다. http://kafka.apache.org Apache Kafka Apache Kafka: A Distributed Streaming Platform. kafka.apache.org Kafka 다운로드 우측 상단 위에 DOWNLOAD KAFKA 를 클릭해 다운로드 페이지로 이동합니다. 2.X.X 버전의 Scala 2.13을 다운 받습니다. (3 버전 때에는 버그가 있어서 동작이 잘 안될 수도 있다고 합니다.) tgz 압축 파일 해제 tgz 파일을 C 드라이브에서 압축 해제 합니다. (바탕화면에 풀었다가..
Apache Kafka에 대해 정리 글을 써보려 합니다. Kafka 란? 카프카란 분산형 이벤트 스트리밍 플랫폼 입니다. 카프카는 여러 서버나 노드에 데이터와 처리를 분산시켜 가용성과 확장성이 높은 특징이 있습니다. 이러한 특성으로 카프카는 서버 간의 비동기 데이터 교환을 용이하게 해주는 메시징 시스템으로 활용될 수 있으며 하루에 수 조개의 이벤트 처리를 가능하게 합니다. 즉, 카프카는 플랫폼 내에 다양한 서비스 간의 데이터 흐름을 실시간으로 제어해 서비스들을 연계하는 중추 역할을 수행합니다. 이러한 카프카는 초기에는 대용량 로그 데이터 처리를 위해 개발되었으며 현재는 다양한 분야에서 실시간 데이터 파이프라인 구축에 널리 사용되고 있습니다. 분산형 이벤트 스트리밍 플랫폼 분산형 : 여러 서버나 노드에 데..
목차 Nginx 란? Nginx 란 높은 성능을 가진 비동기, 이벤트 기반 구조의 경량화 웹 서버 프로그램 입니다. Nginx는 프로젝트에서 어떤 역할을 할까요? Nginx는 웹 서버와 리버스 프록시 서버로 주로 활용됩니다. Nginx는 웹 서버로서 사용자들의 요청에 따라 정적 파일을 응답해 주기도 하고 Reverse Proxy Server로 WAS의 부하를 줄일 수 있는 로드밸런서의 역할을 하기도 합니다. Nginx 를 사용하면 어떤 장점이 있을까요? Nginx는 동시 접속 처리 능력이 뛰어납니다. Nginx는 비동기, 이벤트 기반 방식으로 요청을 처리합니다. 이벤트가 발생하면 코드가 동작하는 원리로 비동기적인 동작을 가능하게 하여 여러 이벤트를 병렬로 처리합니다. 이는 대량의 트래픽이 발생하는 웹 사..
목차 Jenkins Jenkins란 오픈소스 CI/CD 도구 입니다. Jenkins는 빌드, 테스트, 배포 등의 프로세스를 자동화하고 스케줄링하여 소프트웨어 품질과 개발 생산성을 향상시킵니다. 또한, Jenkins는 다양한 플러그인을 통해 기능을 확장하므로 다양한 도구와 통합할 수 있습니다. Jenkins를 사용하면 개발자들은 크게 두 가지 이점을 얻을 수 있습니다. 첫째, Jenkins를 사용하면 개발자들은 반복적인 업무를 자동화하여 버그를 빠르게 찾아내거나 변경사항을 빠르게 적용할 수 있어 고객에게 빠르게 서비스를 제공(배포) 할 수 있습니다. 즉, 고객의 요구사항에 빠르게 대응할 수 있개 해줍니다. 둘째, 고객에게 서비스를 제공하기 위한 빌드, 테스트, 배포 과정이 자동화됨으로 개발자가 수동으로 해..
목차 이번 글에서는 Docker 에 대해서 공부한 내용을 정리해보려 합니다. Docker 가 무엇인지, 어떤 식으로 프로세스가 진행되는지 알아보겠습니다. Docker Docker 란 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 컨테이너 기반인 오픈소스 가상화 플랫폼 입니다. Docker는 소프트웨어를 컨테이너라는 표준화된 유닛으로 패키징하며, 이 컨테이너에는 라이브러리, 시스템 도구, 코드, 런타임 등 소프트웨어를 실행하는 데 필요한 모든 것이 포함되어 있습니다. Docker를 사용하면 환경에 구애 받지 않고 애플리케이션을 신속하게 배포 및 확장할 수 있으며 코드가 문제 없이 실행될 것임을 확신할 수 있습니다. Docker 기술은 왜 등장하게 되었을까요? Docker 등장 배경 Docker ..