/jazz-installer

Installer for Jazz Serverless Developer Platform!

Primary LanguagePythonApache License 2.0Apache-2.0

Jazz Logo

Build Status Gitter Slack Chat

Jazz Serverless Platform

Seamlessly build, deploy & manage cloud-native applications.

Jazz addresses gaps and pain points with serverless, particularly for production applications. It is not another FaaS implementation. Rather, it enhances the usability of existing FaaS systems. Jazz has a beautiful UI designed to let developers quickly self-start and focus on code. Its modular design makes it easy to add new integrations:

  • Services - Today devs can build functions, APIs and static websites. The template-based system makes it easy to define new ones.

  • Deployment Targets - Currently we deploy to AWS (Lambda, API gateway and S3). We plan to support Azure Functions.

  • Features - Services seamlessly integrate features like monitoring (CloudWatch), logging (ElasticSearch), authentication (Cognito) and secret management (KMS, Vault coming soon).

  • Deployment & CI/CD - We leverage Serverless Framework and Git/Bitbucket/Jenkins.

Jazz is open-sourced and under active development by T-Mobile's Cloud Center of Excellence.

Watch the video preview here.

Install

You can install Jazz in your account using the automated installer.

Try Jazz!

You can try out public preview version of Jazz by registering with your email address here. You will need a registration code which can be requested by joining slack. Once in slack, go to #jazz-serverless channel to get a working registration code.

User Guide

Quick version:

Ensure you have a standard install of Python 3.6 or greater, with pip and setuptools

Run:

git clone git@github.com:tmobile/jazz-installer.git
cd jazz-installer
python3 -m virtualenv env && source env/bin/activate
pip install -r requirements.txt
python Installer.py install --stackprefix myteststack --adminemail test@tst.com --region us-east-1 scenario3

Uninstall:

cd jazz-installer
source env/bin/activate
python Installer.py uninstall --mode=[all|frameworkonly]

Options:

python Installer.py

For more details, see the Wiki.

Development

If you're interested in submitting a PR, it would be a good idea to set up your editor/IDE to use the following checkers:

  • editorconfig so your editor follows the same whitespace/line-ending/indent rules as everyone else.
  • flake8 for Python linting
  • tflint for Terraform script linting
  • foodcritic for Chef script linting

Tooling

New contributions should consist entirely of Python(2, soon to be 3) code or Terraform scripts. No new shell script code will be accepted, we have too much of it and it's not particularly maintainable. If you want to add a new optional feature (rather than simply bugfix) please chat with the maintainers in Slack before starting, and take a look at the feature-extensions subdirectory for an example of how we currently structure such things.

Branching/release flow

  1. Breaking/nontrivial features first go into named feature branches cut from develop
  2. When/if a feature branch is chosen to be included in the next release, it is merged into develop
  3. Release testing happens in develop
  4. When confirmed/vetted, develop is merged into master, and master becomes the current release.
  5. Small fixes explicitly intended for the next release can be PRed directly into develop without first needing a feature branch.

tl;dr master is always the current release, develop is always the current state of the next release. If you want to contribute a PR, recommend you fork and work in a branch off of develop, then PR against develop. Project owners will move you into a feature branch if they deem it necessary.

License

Jazz is released under the Apache 2.0 License.