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

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

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


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

이번 섹션에선 이 세 가지 Spring Cloud Stream 애플리케이션을 클라우드 파운드리 환경에 배포하는 방법을 안내한다.

목차


Deploy with Apache Kafka

이 글을 쓰는 시점에는, 카프카는 반드시 클라우드 파운드리 환경에 액세스할 수 있는 외부 서비스로 관리해야 한다.

Create deployment manifests

각 애플리케이션마다 외부 카프카 브로커에 연결하도록 설정하는 CF 매니페스트를 생성해라.

UsageDetailSenderusage-detail-sender.yml이란 CF 매니페스트 YAML 파일을 생성한다:

applications:
- name: usage-detail-sender
  timeout: 120
  path: ./target/usage-detail-sender-0.0.1-SNAPSHOT.jar
  memory: 1G
  buildpack: java_buildpack
  env:
    SPRING_CLOUD_STREAM_KAFKA_BINDER_BROKERS: [Kafka_Service_IP_Address:Kafka_Service_Port]
    SPRING_CLOUD_STREAM_KAFKA_BINDER_ZKNODES: [ZooKeeper_Service_IP_Address:ZooKeeper_Service_Port]

UsageCostProcessorusage-cost-processor.yml이란 CF 매니페스트 YAML 파일을 생성한다:

applications:
- name: usage-cost-processor
  timeout: 120
  path: ./target/usage-cost-processor-0.0.1-SNAPSHOT.jar
  memory: 1G
  buildpack: java_buildpack
  env:
    SPRING_CLOUD_STREAM_KAFKA_BINDER_BROKERS: [Kafka_Service_IP_Address:Kafka_Service_Port]
    SPRING_CLOUD_STREAM_KAFKA_BINDER_ZKNODES: [ZooKeeper_Service_IP_Address:ZooKeeper_Service_Port]

UsageCostLoggerusage-cost-logger.yml이란 CF 매니페스트 YAML 파일을 생성한다:

applications:
- name: usage-cost-logger
  timeout: 120
  path: ./target/usage-cost-logger-0.0.1-SNAPSHOT.jar
  memory: 1G
  buildpack: java_buildpack
  env:
    SPRING_CLOUD_STREAM_KAFKA_BINDER_BROKERS: [Kafka_Service_IP_Address:Kafka_Service_Port]
    SPRING_CLOUD_STREAM_KAFKA_BINDER_ZKNODES: [ZooKeeper_Service_IP_Address:ZooKeeper_Service_Port]

Deploy with RabbitMQ

Create a RabbitMQ service

CF 마켓 플레이스에서 사용 가능한 RabbitMQ 서비스 플랜 중 하나로 rabbitmq라는 RabbitMQ 서비스 인스턴스를 생성해라. 예를 들어 서비스 플랜 p.rabbitmq single-node의 경우 아래 명령어를 사용한다:

cf create-service p.rabbitmq single-node rabbitmq

Create deployment manifests

각 애플리케이션마다 이 rabbitmq 서비스에 바인딩하도록 설정하는 CF 매니페스트를 생성해라.

UsageDetailSenderusage-detail-sender.yml이란 CF 매니페스트 YAML 파일을 생성한다:

applications:
- name: usage-detail-sender
  timeout: 120
  path: ./target/usage-detail-sender-rabbit-0.0.1-SNAPSHOT.jar
  memory: 1G
  buildpack: java_buildpack
  services:
    - rabbitmq

UsageCostProcessorusage-cost-processor.yml이란 CF 매니페스트 YAML 파일을 생성한다:

applications:
- name: usage-cost-processor
  timeout: 120
  path: ./target/usage-cost-processor-0.0.1-SNAPSHOT.jar
  memory: 1G
  buildpack: java_buildpack
  services:
    - rabbitmq

usage-cost-logger.yml이란 CF 매니페스트 YAML 파일을 생성한다:

applications:
- name: usage-cost-logger
  timeout: 120
  path: ./target/usage-cost-logger-0.0.1-SNAPSHOT.jar
  memory: 1G
  buildpack: java_buildpack
  services:
    - rabbitmq

UsageDetailSender 애플리케이션을 해당 매니페스트를 사용해 푸시해라:

cf push -f usage-detail-sender.yml

UsageCostProcessor 애플리케이션을 해당 매니페스트를 사용해 푸시해라:

cf push -f usage-cost-processor.yml

UsageCostLogger 애플리케이션을 해당 매니페스트를 사용해 푸시해라:

cf push -f usage-cost-logger.yml

이 애플리케이션들은 아래 예시처럼 cf apps 명령어를 실행해 확인할 수 있다 (출력 문구도 같이 표기했다):

cf apps
name                   requested state   instances   memory   disk   urls
usage-cost-logger      started           1/1         1G       1G     usage-cost-logger.cfapps.io
usage-cost-processor   started           1/1         1G       1G     usage-cost-processor.cfapps.io
usage-detail-sender    started           1/1         1G       1G     usage-detail-sender.cfapps.io

배포가 잘 되었는지 보려면 usage-cost-logger 애플리케이션 로그를 추적하면 된다.

cf logs usage-cost-logger

아래와 유사한 로그를 볼 수 있을 거다:

   2019-05-13T23:23:33.36+0530 [APP/PROC/WEB/0] OUT 2019-05-13 17:53:33.362  INFO 15 --- [e-cost.logger-1] i.s.d.s.u.UsageCostLogger     : {"userId": "user5", "callCost": "1.0", "dataCost": "12.350000000000001" }
   2019-05-13T23:23:33.46+0530 [APP/PROC/WEB/0] OUT 2019-05-13 17:53:33.467  INFO 15 --- [e-cost.logger-1] i.s.d.s.u.UsageCostLogger     : {"userId": "user1", "callCost": "19.0", "dataCost": "10.0" }
   2019-05-13T23:23:34.46+0530 [APP/PROC/WEB/0] OUT 2019-05-13 17:53:34.466  INFO 15 --- [e-cost.logger-1] i.s.d.s.u.UsageCostLogger     : {"userId": "user4", "callCost": "2.2", "dataCost": "5.15" }
   2019-05-13T23:23:35.46+0530 [APP/PROC/WEB/0] OUT 2019-05-13 17:53:35.469  INFO 15 --- [e-cost.logger-1] i.s.d.s.u.UsageCostLogger     : {"userId": "user3", "callCost": "21.0", "dataCost": "17.3" }

Clean Up

애플리케이션 인스턴스들을 삭제하려면:

cf d -f usage-detail-sender
cf d -f usage-cost-processor
cf d -f usage-cost-logger

RabbitMQ를 사용한다면 서비스 인스턴스를 삭제해야할 수도 있다:

cf ds -f rabbitmq

Next :
Stream Processing with Data Flow and RabbitMQ
Stream DSL을 이용해 Spring Data Flow로 스트리밍 애플리케이션 배포하기

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

<< >>

TOP