Skip to content
Berlioz - Get your microservices applications automatically delivered to AWS .
Branch: master
Clone or download
berlioz
Latest commit 2d717b8 Mar 20, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
assets
bin
docs
lib
support
.gitignore
LICENSE
README.md
package-lock.json
package.json

README.md

Release License GitHub last commit Slack Analytics

Berlioz is a service that delivers microservices applications to AWS public cloud. Application components are defined in YAML using high level abstractions. This enables teams to work independently and focus on business problems rather than cloud logistics. Berlioz will also configure AWS native services like DynamoDB, Kinesis, etc.

Another very useful capability of Berlioz is to deploy the application locally on a workstation as if it is running in an AWS cloud. This will also work even if the application is using cloud native resources and services. This significantly improves development team productivity.

Features

Cloud Provisioning Cloud Provisioning - Describe your container based microservices application in a developer-friendly declarative manner and get it automatically deployed in AWS public cloud.

Service Discovery Service Discovery - Zero-config discovery is available for all services out of the box. Berlioz does much more than just Load Balancer and DNS.

Multi-Region Support Multi-Region Support - We also support the deployment of services to multiple regions. Numerous options are available to control communication allowance across/within regions and availability zones.

Native Resources Native Resources - We configure, bind and manage cloud-native resources like storage volumes, message queues, etc. and make them available for stateful services to consume.

Network Configuration Network Configuration - We automatically configure the network and ensure the availability and security of your application.

Load Balancing Load Balancing - Single line entry in your service declaration would provision load balancer for your service.

Isolated Deployments Isolated Deployments - Get your application deployed per your staging (test & prod) and your team member needs.

Local Deployment Local Deployment - For means of rapid development, the application can be launched on a local workstation as if it is running in a cloud.

Getting Started

Follow steps below to:

  1. Prepare your workstation following this guide
  2. Install berlioz command line tool
  3. Download sample projects
  4. Deploy HelloWorld web application to local workstation
$ npm install berlioz -g
$ git clone https://github.com/berlioz-the/samples.git
$ cd samples/01.HelloWorld/v1.basic
$ berlioz local push-run

Now lets deploy the same application to AWS. The steps below will:

  1. Register an account with Berlioz
  2. Link AWS account with Berlioz. Follow this guide to obtain AWS key and secret.
  3. Create new deployment definition for production
  4. Build docker images and push the to the cloud
  5. Deploy the application to production
  6. Check the deployment status
  7. See the endpoints
$ berlioz signup
$ berlioz provider create --name myaws --kind aws --key <key> --secret <secret>
$ berlioz deployment create --name prod --provider myaws
$ berlioz login --region <...>
$ berlioz push --region <...>
$ berlioz run --deployment prod
$ berlioz status --region <...>
$ berlioz endpoints --deployment prod

With the single web application up and running we can make some code changes to add the second service and let them communicate. Just like before we will run the application on a local workstation:

$ cd ../v2.second-service
$ berlioz local push-run

and then, to the cloud:

$ berlioz login --region <...>
$ berlioz push --region <...>
$ berlioz run --deployment prod
$ berlioz status --region <...>
$ berlioz endpoints --deployment prod

This was the most trivial application example we could come up with. For more sample uses and scenarios checkout the complete samples repository here.

Documentation

Complete documentation reference:

  • Language - declarative YAML to define services and interactions.
  • Command Line Interface - toolkit to build and deploy applications.
  • Connectors - client library to enable service-discovery.
  • Samples - probably one of the best way to explore Berlioz capabilities.
You can’t perform that action at this time.