{"id":20695182,"url":"https://github.com/ibm-cloud-architecture/refarch-cloudnative-netflix","last_synced_at":"2026-03-10T18:02:51.749Z","repository":{"id":76530225,"uuid":"66389823","full_name":"ibm-cloud-architecture/refarch-cloudnative-netflix","owner":"ibm-cloud-architecture","description":"Reference application for deploying microservice-based applications onto IBM Bluemix, leveraging the Netflix OSS framework.","archived":false,"fork":false,"pushed_at":"2018-12-07T14:53:11.000Z","size":249,"stargazers_count":25,"open_issues_count":3,"forks_count":16,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-03-29T18:22:17.673Z","etag":null,"topics":["bluemix","containers","docker","ibm-cloud","microservices","microservices-architecture","netflix-oss-framework","spring-boot"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ibm-cloud-architecture.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-08-23T17:49:30.000Z","updated_at":"2024-11-25T12:26:14.000Z","dependencies_parsed_at":"2023-07-17T01:45:45.358Z","dependency_job_id":null,"html_url":"https://github.com/ibm-cloud-architecture/refarch-cloudnative-netflix","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibm-cloud-architecture%2Frefarch-cloudnative-netflix","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibm-cloud-architecture%2Frefarch-cloudnative-netflix/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibm-cloud-architecture%2Frefarch-cloudnative-netflix/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ibm-cloud-architecture%2Frefarch-cloudnative-netflix/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ibm-cloud-architecture","download_url":"https://codeload.github.com/ibm-cloud-architecture/refarch-cloudnative-netflix/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250315986,"owners_count":21410473,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bluemix","containers","docker","ibm-cloud","microservices","microservices-architecture","netflix-oss-framework","spring-boot"],"created_at":"2024-11-17T00:08:17.193Z","updated_at":"2026-03-10T18:02:46.702Z","avatar_url":"https://github.com/ibm-cloud-architecture.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# IBM Cloud Architecture - Microservices Reference Application for Netflix OSS\n\nReference applications for deploying microservice-based applications onto IBM Bluemix, leveraging the Netflix OSS framework.\n\n_This application has been developed and designed to run in the **IBM Bluemix us-south public region**. Changes may be required if it is to run on a different IBM Bluemix public region or on a local/dedicated environment._\n\n## Architecture\n\n  ![Application Architecture](static/imgs/WhatsForDinner-Netflix-OSS.png?raw=true)\n\n## Application Overview\n\nThe application is a simple dinner menu that displays available appetizers, entrees, and desserts for a non-existent restaurant.  There are several components of this architecture:\n\n- Menu UI \u0026 Backend services aggregate all the options and display them to the user\n- Individual microservices for menu options among Appetizers, Entrees, and Desserts\n- Menu microservices communicate to each other using the [Netflix OSS Framework](https://netflix.github.io/):\n    - [Zuul](https://github.com/Netflix/zuul) provides a proxy layer for the microservices.  \n    - [Eureka](https://github.com/Netflix/eureka) provides a service registry.  The reusable Java microservices register themselves to Eureka which allows clients to find them.\n- Menu microservices can be dynamically configured using the [Spring Framework](https://spring.io/):\n    - [Spring Cloud Config](https://cloud.spring.io/spring-cloud-config/) provides server and client-side support for externalized configuration in a distributed system.\n\n## Project Component Repositories\n\nThis project runs itself like a microservice project, as such each component in the architecture has its own Git Repository and tutorial listed below.  \n\nInfrastructure Components:  \n\n1. [Eureka](https://github.com/ibm-cloud-architecture/refarch-cloudnative-netflix-eureka)  - Contains the Eureka application components for microservices foundation  \n2. [Zuul](https://github.com/ibm-cloud-architecture/refarch-cloudnative-netflix-zuul)  - Contains the Zuul application components for microservices foundation  \n3. [Config](https://github.com/ibm-cloud-architecture/refarch-cloudnative-spring-config) - Contains the Config application components\n\nApplication Components:  \n\n1. [Menu UI](https://github.com/ibm-cloud-architecture/refarch-cloudnative-wfd-ui)  - User interface for presenting menu options externally  \n2. [Menu Backend](https://github.com/ibm-cloud-architecture/refarch-cloudnative-wfd-menu)  - Exposes all the meal components as a single REST API endpoint, aggregating Appetizers, Entrees, and Desserts.  \n3. [Appetizer Service](https://github.com/ibm-cloud-architecture/refarch-cloudnative-wfd-appetizer)  - Microservice providing a REST API for Appetizer options\n4. [Entree Service](https://github.com/ibm-cloud-architecture/refarch-cloudnative-wfd-entree)  - Microservice providing a REST API for Entree options  \n5. [Dessert Service](https://github.com/ibm-cloud-architecture/refarch-cloudnative-wfd-dessert)  - Microservice providing a REST API for Dessert options\n\nResiliency Components:\n\n1. [Hystrix](https://github.com/ibm-cloud-architecture/refarch-cloudnative-netflix-hystrix) - Contains the Hystrix Dashboard container version application component for microservices foundation\n2. [Hystrix CF](https://github.com/ibm-cloud-architecture/refarch-cloudnative-netflix-hystrix-cf) - Contains the Hystrix Dashboard Cloud Foundry version application component for microservices foundation\n3. [Turbine](https://github.com/ibm-cloud-architecture/refarch-cloudnative-netflix-turbine) - Contains the Turbine application component for microservices foundation\n\nDevOps Components:\n\n1. [CF Toolchain](https://github.com/ibm-cloud-architecture/refarch-cloudnative-wfd-devops-cf) - A one click full deployment process which will create a toolchain for the Cloud Foundry version of this architecture\n2. [IC Toolchain](https://github.com/ibm-cloud-architecture/refarch-cloudnative-wfd-devops-containers) - A one click full deployment process which will create a toolchain for the IBM Bluemix Containers version of this architecture\n\n\n### Branches\n\n1.  **master** - This is the active development branch with the latest code and integrations.  \n2.  **BUILD** - This is the [Milestone 1](https://github.com/ibm-cloud-architecture/refarch-cloudnative-netflix/tree/BUILD) branch.  It contains base microservice code, Eureka, Zuul, and Config Server components.\n3.  **DEVOPS** - This is the [Milestone 2](https://github.com/ibm-cloud-architecture/refarch-cloudnative-netflix/tree/DEVOPS) branch.  It contains DevOps pipelines for easy deployment to Bluemix, as well as Active Deploy integration scenarios.\n4.  **RESILIENCY** - This is the [Milestone 3](https://github.com/ibm-cloud-architecture/refarch-cloudnative-netflix/tree/RESILIENCY) branch.  It contains integration with Netflix Hystrix for circuit breaker implementations, as well as Zipkin/OpenTracing for distributed tracing implementations.\n5.  **MANAGE** - This is the (planned) Milestone 4 branch.  It will contain cloud-based service management capabilities allowing for 24x7 operational excellence of microservice-based applications.\n\n## Run the reference applications locally and in IBM Cloud\n\n### Prerequisites: Environment Setup\n\n- Install Java JDK 1.8 and ensure it is available in your PATH\n- Install Docker on Windows or Mac\n\n- Acquire the code\n  - Clone the base repository:\n    **`git clone https://github.com/ibm-cloud-architecture/refarch-cloudnative-netflix`**\n  - Clone the peer repositories using the `master` branch, which is the active development branch:\n    **`./clone_peers.sh`**\n  - Or you can specify a branch when cloning the peer projects to clone and checkout a specific milestone branch.  By default, `master` is selected if no parameter is supplied:\n    **`./clone_peers.sh BUILD`** to clone peer projects and use the **BUILD** branch for all projects\n\n### Run locally via Docker Compose\n\nYou can run the entire application locally on your laptop via Docker Compose, a container orchestration tool provided by Docker.\n\n#### Step 1: Build locally\n\nRun one of the following build script to build all the necessary Java projects.  \n\n-   **`./build-all.sh [-d]`** will build all the components required runnable JARs using [Gradle](https://gradle.org/) and optionally package them into Docker containers.\n\n-   **`./build-all.sh -m [-d]`** will build all the components required runnable JARs using [Apache Maven](https://maven.apache.org/) and optionally package them into Docker containers.\n\n#### Step 2: Run Docker Compose\n\nRun one of the following Docker Compose commands to start all the application components locally:\n\n  - **`docker-compose up`** to run with output sent to the console _(for all 7 microservices)_  \n    or  \n  - **`docker-compose up -d`** to run in detached mode and run the containers in the background.  \n\n#### Step 3: Access the application\n\nYou can access the application after a few moments via **`http://localhost/whats-for-dinner`**!  That's easy enough!  \n\nThe backing services are automatically registered with Eureka and routed to the necessary dependent microservices, upon calling the _Menu_ service.\n\n### Run on Bluemix via Cloud Foundry\n\nRun the following script to deploy all the necessary Java projects as Cloud Foundry apps.\n\n  **`./deploy-to-cf.sh`**\n\n### Run on Bluemix via IBM Container Service\n\nRun the following script to deploy all the necessary Java projects as Container Groups.\n\n  **`./deploy-to-ics.sh`**\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fibm-cloud-architecture%2Frefarch-cloudnative-netflix","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fibm-cloud-architecture%2Frefarch-cloudnative-netflix","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fibm-cloud-architecture%2Frefarch-cloudnative-netflix/lists"}