Skip to content

DevOps repository for the cloud native reference architecture for the microservices workstream, deploying with Cloud Foundry runtimes.

Notifications You must be signed in to change notification settings

jesusmah/refarch-cloudnative-wfd-devops-cf

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 

Repository files navigation

refarch-cloudnative-wfd-appetizer

Microservices Reference Application - What's For Dinner Toolchain (Cloud Foundry)

This repository contains the DevOps toolchain for managing and deploying the Java microservices making up the What's For Dinner app to Bluemix as Cloud Foundry apps.

How to use

In order to create a toolchain for the What's For Dinner Microservices Reference Application, please click below on the Create toolchain button and follow the instructions.

Create wfd Deployment Toolchain

  1. The "What is for dinner Toolchain" creation view will open.
  2. In this window, you will be asked to specify the following properties for your toolchain:
  3. Specify a name for your toolchain that is unique among all toolchains on your Bluemix namespace DevOps section.
  4. Click on the GitHub icon. This opens the GitHub settings. Please, give your desired name to each of the repos that will be cloned.
  5. Click on the Delivery Pipeline icon. This opens the delivery pipeline settings:
  • Specify the Bluemix domain where your app will be hosted (by default: mybluemix.net). * Specify the build branch you would like your delivery pipelines to build the code from (by default: RESILIENCY).
    • Specify your app and APIs endpoints which must be unique within Bluemix public (by default: "mymenu" and "menu-apis" respectively).
    • Specify a unique identifier which will be used to make the What's For Dinner microservices and their routing unique within Bluemix public (by default: toolchain's creation timestamp).
  1. Click the Create button to complete the toolchain creation.
  2. After creating the toolchain, make sure to deploy the What's For Dinner microservices in the same order as the delivery pipelines are numerated.

Details

This RESILIENCY branch of the What's For Dinner DevOps GitHub repository not only implements the same toolchain as the master branch but also includes the new resiliency artifacts for the What's For Dinner app in its implementation.

These new elements are the Netflix OSS component Hystrix (metrics and circuit breaker) as well as the appropriate CloudAMQP service (Managed HA RabbitMQ Server) for integration. For further detail on these new components as well as on this new architecture that includes the resiliency pieces for the What's For Dinner app, please read the resiliency branch main app's readme.

Microservices implementing the Hystrix's Circuit Breaker pattern need the RabbitMQ Server credentials beforehand, so that they can establish connection to the server during their startup. Therefore, the CloudAMQP delivery pipeline must be executed before the Menu and Menu UI microservices are deployed (pipelines are numbered so that they are executed in the right order).

The CloudAMQP delivery pipeline will create a new CloudAMQP service. If there is an existing CloudAMQP service already, the CloudAMQP delivery pipeline will unbind it from any microservice and then delete it before creating the new one. Finally, it will bind the new CloudAMQP service to the previous bound microservices and re-stage them, so that these microservices use the new CloudAMQP service.

The Netflix OSS component Hystrix gets deployed after the Menu and Menu UI microservices and it is bound to the previously created CloudAMQP service in order to read Menu's and Menu UI's messages.

IMPORTANT: The Netflix OSS component Hystrix used for the What's For Dinner app has been modified in order to use web sockets rather than long HTTP polling.

About

DevOps repository for the cloud native reference architecture for the microservices workstream, deploying with Cloud Foundry runtimes.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published