REST 서비스를 하는 두개의 마이크로서비스 (Consumer, Provider)를 샘플로 구현합니다. Consumer : 외부의 요청을 받아서 Provider를 호출하고 그 결과값을 외부 요청자에게 전달해 주는 서비스 Provider : 자체적인 서비스를 제공하는 벡엔드 서비스
샘플 Application 다운로드 : 샘플 Git 주소
샘플 Application을 Zip 파일로 다운로드 합니다.
Project Explore 에서 Import
Git에서 다운 받은 bwce_provider_consumer-main.zip
파일을 Import 합니다.
bwce_provider_consumer-main.zip
파일에 Consumer 와 Provider 두개의 Application이 존재합니다.
Consumer REST 서비스 보기
Consumer가 호출하는 Provider의 HOST와 Port정보가 Module Property(PROVIDER_HOST, PROVIDER_PORT) 로 정의 되어 있습니다.
Provider의 Port정보가 Module Property - PROVIDER_PORT로 정의 되어 있습니다.
Property 정보는 Applicatoin구동시 파라미터 정보로 변경 가능합니다.
Consumer 와 Provider 두개의 Application을 체크 합니다.
lrestdoc
을 입력합니다. Consumer 와 Provider Application의 REST Discovery Url (Swagger UI) 을 얻습니다.
Provider Application의 Swagger UI를 통한 REST 서비스 테스트
브라우저에서 Provider Application의 REST Discovery Url (Swagger UI) 입력
Provider -> Try it out -> RequestID 입력 -> Execute 클릭 -> Server Response 결과 값 확인
Consumer Application의 Swagger UI를 통한 REST 서비스 테스트
브라우저에서 Consumer Application의 REST Discovery Url (Swagger UI) 입력
Consumer -> Try it out -> RequestID 입력 -> Execute 클릭 -> Server Response 결과 값 확인
Consumer와 Provider Application의 EAR 파일을 생성합니다.
Project Explore -> Consumer.application -> Create Enterprise Archive(EAR)
Project Explore -> Provider.application -> Create Enterprise Archive(EAR)
각 Provider.application_1.0.0.ear와 Consumer.application_1.0.0.ear 파일이 생성됩니다.
$ cat <<EOF | tee Dockerfile_Provider
#BWCE Base Docker 이미지 태그 네임
FROM tibco/bwce:latest
#Base Docker에 Copy할 EAR 파일 이름
ADD Provider.application_1.0.0.ear /
#외부 오픈 포트 이름
EXPOSE 8000
#환경변수 BWCE Module Property에 값 전달
ENV BW_PROFILE Docker
ENV PROVIDER_PORT 8000
EOF
ENV 환경 변수는
docker run -e
옵션을 통해서도 전달 가능하며, BWCE에서 기본으로 사용되는 환경 변수는 https://docs.tibco.com/pub/bwce/2.6.1/doc/html/GUID-25BD2BA4-6BA4-418C-98D4-6EB3C9196399.html 를 참조하시기 바랍니다.
$ docker build -t provider:latest -t provider:1.0 -f Dockerfile_Provider .
$ docker images
$ cat <<EOF | tee Dockerfile_Consumer
#BWCE Base Docker 이미지 태그 네임
FROM tibco/bwce:latest
#Base Docker에 Copy할 EAR 파일 이름
ADD Consumer.application_1.0.0.ear /
#외부 오픈 포트 이름
EXPOSE 7000
#환경변수 BWCE Module Property에 값 전달
ENV BW_PROFILE Docker
ENV PROVIDER_PORT 8000
#PROVIDER_HOST (Docker Host IP 혹은 Docker Link의 이름 )
ENV PROVIDER_HOST provider-host
ENV CONSUMER_PORT 7000
EOF
ENV 환경 변수는
docker run -e
옵션을 통해서도 전달 가능하며, BWCE에서 기본으로 사용되는 환경 변수는 https://docs.tibco.com/pub/bwce/2.6.1/doc/html/GUID-25BD2BA4-6BA4-418C-98D4-6EB3C9196399.html 를 참조하시기 바랍니다.
$ docker build -t consumer:latest -t consumer:1.0 -f Dockerfile_Consumer .
$ docker images
$ sudo docker run -d -p 8000:8000 --name provider_1.0 provider:latest
-p 8000:8000
Docker Host의 8000 port를 Container의 8000(REST HTTP Connector) port로 바인딩 합니다.
-name provider_1.0
실행되는 conatiner의 이름을 지정합니다.
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fe9a3f15a8db provider:latest "/scripts/start.sh" 45 seconds ago Up 44 seconds 0.0.0.0:8000->8000/tcp provider_1.0
$ curl -X GET "http://localhost:8000/provider?RequestID=testID" -H "accept: application/json"
{"Provider_Version":"V1.0","Message":"This is from Provider V1.0 for RequestID : testID"}
브라우저에서 http://localhost:8000/swagger 로 접근
$ sudo docker run -d -p 7000:7000 --link=provider_1.0:provider-host --name consumer_1.0 consumer:latest
-p 7000:7000
Docker Host의 7000 port를 Container의 7000(REST HTTP Connector) port로 바인딩 합니다.
-name consumer_1.0
실행되는 conatiner의 이름을 지정합니다.
--link=provider_1.0:provider-host
를 사용하여 앞서 실행한 provier_1.0의 container를 provider-host 정보에 링크 시킵니다. 해당 옵션 대신-e PROVIDER_HOST=[Docker Host IP]
를 이용하여 PROVIDER_HOST Property 값을 바로 전달 가능합니다.
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
990324039c1c consumer:latest "/scripts/start.sh" 9 seconds ago Up 8 seconds 0.0.0.0:7000->7000/tcp consumer_1.0
841e7ed9a9e8 provider:latest "/scripts/start.sh" 4 minutes ago Up 4 minutes 0.0.0.0:8000->8000/tcp provider_1.0
$ curl -X GET "http://localhost:7000/consumer?RequestID=testID" -H "accept: application/json"
{"Consumer_Version":"V1.0","Provider_Version":"V1.0","Message":"This is from Provider V1.0 for RequestID : testID"}
브라우저에서 http://localhost:7000/swagger 로 접근
docker run
으로 Docker hub에서 PostgreSQL 이미지 다운 및 실행
$ sudo docker run -d \
--name postgres_bwce_mon \
-e POSTGRES_USER=bwuser \
-e POSTGRES_PASSWORD=bwuser \
postgres
docker run
으로 BWCE Applicatoin Monitoring Container 실행
$ sudo docker run -d -p 8080:8080 \
--link=postgres_bwce_mon:postgres-host \
--name bwce_mon \
-e PERSISTENCE_TYPE="postgres" \
-e DB_URL="postgresql://bwuser:bwuser@postgres-host:5432/postgres" \
tibco/bwce-mon:latest
$ sudo docker stop consumer_1.0 provider_1.0
$ sudo docker rm consumer_1.0 provider_1.0
$ sudo docker run -d -p 8000:8000 --name provider_1.0 \
--link bwce_mon:bwce_mon \
-e BW_APP_MONITORING_CONFIG='{"url":"http://bwce_mon:8080"}' \
provider:latest
$ sudo docker run -d -p 7000:7000 --link=provider_1.0:provider-host --name consumer_1.0 \
--link bwce_mon:bwce_mon \
-e BW_APP_MONITORING_CONFIG='{"url":"http://bwce_mon:8080"}' \
consumer:latest
BW_APP_MONITORING_CONFIG
환경변수에 Monitoring Container 의 접속 정보를 입력하여 연계합니다.
브라우저를 통한 Monitoring Container의 URL 접속
Consumer Application Process 통계 정보 보기
Consumer Application Process Instance 히스토리 보기
Process 호출 이력 및 호출 당시의 각 엑티비티의 성공 여부와 Input/Output에 대한 값을 확인 할 수 있습니다.