토리맘의 한글라이즈 프로젝트 logo 토리맘의 한글라이즈 프로젝트

스프링 클라우드 데이터 플로우 공식 레퍼런스를 한글로 번역한 문서입니다.

전체 목차는 여기에 있습니다.


샘플 스트림 애플리케이션들을 설정해 빌드하고, 지원하는 메세지 브로커 중에 하나를 골라 함께 실행되도록 설정을 완료했다면, 이 애플리케이션들은 local 환경에서 독립형으로 실행할 수 있다.

목차


Local Deployment using Kafka

아직 설정을 완료하지 않았다면, 로컬 환경에 Kafka를 다운받아 실행하거나 docker-compose를 이용해 KafkaZookeeper를 컨테이너로 실행시키면 된다.

Install and Run Kafka

아카이브를 다운로드받고 압축을 풀어라. 그런 다음 카프카 설치 디렉토리에서 아래 명령어를 실행해 ZooKeeperKafka 서버를 시작해라:

./bin/zookeeper-server-start.sh config/zookeeper.properties &
./bin/kafka-server-start.sh config/server.properties &

Run with Docker Compose

아니면 도커 전용 trial Confluent platform을 다운받아도 된다.

curl --silent --output docker-compose.yml \
  https://raw.githubusercontent.com/confluentinc/cp-all-in-one/6.1.0-post/cp-all-in-one/docker-compose.yml

이 플랫폼을 시작하려면:

docker-compose up -d

이렇게 하면 카프카 브로커 외에도 Control Center를 포함한 다른 Confluent 컴포넌트들을 설치하게 된다. 토픽에 발행한 메세지들을 조회하려면 http://localhost:9021에서 Control Center에 액세스해서 Topics를 선택라.

Running the Source

미리 정의돼 있는 설정 프로퍼티들을 사용하면 UsageDetailSender 애플리케이션은 다음과 같이 실행할 수 있다:

java -jar target/usage-detail-sender-kafka-0.0.1-SNAPSHOT.jar &

카프카 바이너리를 설치했다면 다음과 같이 카프카 콘솔 컨슈머를 이용해 카프카 토픽 usage-detail로 전송되는 메세지를 확인할 수 있다:

./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic usage-detail

Confluent platform을 설치했다면 위에서 설명한 대로 Control Center에 접속해라. usage-detail 토픽과 Messages 탭을 선택하면 다음과 같은 내용을 확인할 수 있을 거다:

Standalone Usage Detail Sender Kafka

토픽들을 확인해보려면 아래 명령어를 실행해라:

./bin/kafka-topics.sh --zookeeper localhost:2181 --list

Running the Processor

미리 정의돼 있는 설정 프로퍼티들을 사용하면 UsageCostProcessor 애플리케이션은 다음과 같이 실행할 수 있다:

java -jar target/usage-cost-processor-kafka-0.0.1-SNAPSHOT.jar  &

UsageDetailSender 소스 애플리케이션이 카프카 토픽 usage-detailUsageDetail 데이터를 전송하면, 다음과 같이 카프카 토픽 usage-cost에서 UsageCostDetail을 확인할 수 있다.

 ./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic usage-cost

또는 Control Center를 사용한다면:

Standalone Usage Cost Processer Kafka

Running the Sink

미리 정의돼 있는 설정 프로퍼티들을 사용하면 UsageCostLogger 애플리케이션은 다음과 같이 실행할 수 있다:

java -jar target/usage-cost-logger-kafka-0.0.1-SNAPSHOT.jar &

이제 이 애플리케이션이 UsageCostDetail를 기록하는 것을 확인할 수 있다.

...
2021-03-05 10:44:05.193  INFO 55690 --- [container-0-C-1] i.s.d.s.u.UsageCostLogger     : {"userId": "user2", "callCost": "0.7000000000000001", "dataCost": "21.8" }
2021-03-05 10:44:05.193  INFO 55690 --- [container-0-C-1] i.s.d.s.u.UsageCostLogger     : {"userId": "user2", "callCost": "0.7000000000000001", "dataCost": "21.8" }
2021-03-05 10:44:06.195  INFO 55690 --- [container-0-C-1] i.s.d.s.u.UsageCostLogger     : {"userId": "user4", "callCost": "0.5", "dataCost": "24.55" }
2021-03-05 10:44:06.199  INFO 55690 --- [container-0-C-1] i.s.d.s.u.UsageCostLogger     : {"userId": "user4", "callCost": "0.5", "dataCost": "24.55" }
...

Clean up

docker-compose로 Confluent platform을 시작했다면 리소스를 정리할 땐:

docker-compose stop

Local Deployment using RabbitMQ

샘플 스트림 애플리케이션들을 설정해 빌드하고, RabbitMQ와 함께 실행되도록 설정을 완료했다면, 이 애플리케이션들은 local 환경에서 독립형으로 실행할 수 있다.

Install and Run RabbitMQ

RabbitMQ 도커 이미지를 설치하고 실행하려면 아래 명령어를 실행해라:

docker run -d --hostname rabbitmq --name rabbitmq -p 15672:15672 -p 5672:5672 rabbitmq:3.7.14-management

설치를 완료하면 http://localhost:15672에서 로컬 시스템에 있는 RabbitMQ management 콘솔에 로그인할 수 있다. 디폴트 계정의 username과 password, guest/guest를 사용해도 된다.

Running the UsageDetailSender Source

미리 정의돼 있는 설정 프로퍼티들을 사용하면 UsageDetailSender 애플리케이션은 다음과 같이 실행할 수 있다:

java -jar target/usage-detail-sender-rabbit-0.0.1-SNAPSHOT.jar &

애플리케이션을 실행하면 다음과 같이 RabbitMQ exchange usage-detail이 생성되고, 이 exchange에 usage-detail.usage-cost-consumer란 큐가 바인딩된 것을 확인할 수 있다:

Standalone Usage Detail Sender RabbitMQ

또한 Queues를 클릭해 usage-detail.usage-cost-consumer 큐를 체크하면 다음과 같이 이 durable 큐에서 컨슈밍되고 저장되는 메세지들을 볼 수 있다:

Standalone Usage Detail Sender RabbitMQ Message Guarantee

Source 애플리케이션에 대한 컨슈머 애플리케이션을 설정할 때는 group 바인딩 프로퍼티를 설정해 해당 durable 큐에 연결하면 된다.

requiredGroups 프로퍼티를 설정하지 않으면, usage-detail exchange에 있는 메세지를 컨슘하기 위한 queue가 없는 것을 확인할 수 있는데, 그렇기 때문에 이 애플리케이션을 기동하기 전에 컨슈머를 동작시키지 않으면 메세지는 유실된다.

Running the Processor

미리 정의돼 있는 설정 프로퍼티들을 사용하면 UsageCostProcessor 애플리케이션은 다음과 같이 실행할 수 있다:

java -jar target/usage-cost-processor-rabbit-0.0.1-SNAPSHOT.jar &

RabbitMQ 콘솔에선 다음을 확인할 수 있다:

애플리케이션을 실행하면 다음과 같이 RabbitMQ exchange usage-cost가 생성되고, 이 exchange에 usage-detail.usage-cost-consumer란 durable 큐가 바인딩된 것을 확인할 수 있다:

Standalone Usage Cost Processor RabbitMQ Required Groups

또한 Queues를 클릭해 usage-cost.logger 큐를 체크하면 다음과 같이 이 durable 큐에서 컨슈밍되고 저장되는 메세지들을 볼 수 있다:

Standalone Usage Cost Processor RabbitMQ Message Guarantee

Running the Sink

미리 정의돼 있는 설정 프로퍼티들을 사용하면 UsageCostLogger 애플리케이션은 다음과 같이 실행할 수 있다:

java -jar target/usage-cost-logger-rabbit-0.0.1-SNAPSHOT.jar &

이제 이 애플리케이션이 durable 큐 usage-cost.logger를 통해 RabbitMQ usage-cost에서 읽어온 usage cost detail을 기록하는 것을 확인할 수 있다:

2019-05-08 08:16:46.442  INFO 10769 --- [o6VmGALOP_onw-1] i.s.d.s.u.UsageCostLogger     : {"userId": "user2", "callCost": "28.3", "dataCost": "29.8" }
2019-05-08 08:16:47.446  INFO 10769 --- [o6VmGALOP_onw-1] i.s.d.s.u.UsageCostLogger     : {"userId": "user2", "callCost": "12.0", "dataCost": "23.75" }
2019-05-08 08:16:48.451  INFO 10769 --- [o6VmGALOP_onw-1] i.s.d.s.u.UsageCostLogger     : {"userId": "user4", "callCost": "16.0", "dataCost": "30.05" }
2019-05-08 08:16:49.454  INFO 10769 --- [o6VmGALOP_onw-1] i.s.d.s.u.UsageCostLogger     : {"userId": "user1", "callCost": "17.7", "dataCost": "18.0" }

Next :
Kubernetes Deployment
샘플 스트림 애플리케이션을 쿠버네티스 환경에 수동으로 배포하기

전체 목차는 여기에 있습니다.

<< >>

TOP