PaaSTA - Build, Deploy, Connect, and Monitor Services
PaaSTA is a highly-available, distributed system for building, deploying, and running services using containers and Apache Mesos!
Want to know more about the opinions behind what makes PaaSTA special? Check out the PaaSTA Principles.
Note: PaaSTA has been running in production at Yelp for years, and has a number of "Yelpisms" still lingering in the codebase. We have made efforts to excise them, but there are bound to be lingering issues. Please help us by opening an issue or better yet a pull request.
Components
Note: PaaSTA is an opinionated platform that uses a few un-opinionated tools. It requires a non-trivial amount of infrastructure to be in place before it works completely:
- Docker for code delivery and containment
- Mesos / Kubernetes for code execution and scheduling (runs Docker containers)
- Marathon for managing long-running services
- Tron for running things on a timer (nightly batches)
- SmartStack / Envoy for service registration and discovery
- Sensu for monitoring/alerting
- Jenkins (optionally) for continuous deployment
The main advantage to having a PaaS composed of components like these is you get to reuse them for other purposes. For example at Yelp Sensu is not just for PaaSTA, it can be used to monitor all sorts of things. Also Mesos can be re-used for things like custom frameworks. For example at Yelp we use the Mesos infrastructure to run our large-scale testing framework: Jolt. SmartStack is used at Yelp for service discovery for Non-PaaSTA things as well, like databases, legacy apps, and Puppet-defined apps. Most PaaS's do not allow for this type of component re-use.
On the other hand, requiring lots of components means lots of infrastructure to setup before PaaSTA is fully baked. If you are looking for a project that doesn't require external components, we encourage you to look at the doc comparing PaaSTA to other tools.
Design Goals
- Declarative, rather than imperative, control
- Fault tolerance
- Service isolation
- Efficient use of resources
- No single points of failure
- Pleasant interface
PaaSTA is an opinionated platform, and it is not designed to interoperate with every possible backend service out there.
Think of it as an example of how we have integrated these technologies together to build a cohesive PaaS. It is not a turn-key PaaS solution.
Getting Started
See the getting started documentation for how to deploy PaaSTA.
Debugging PaaSTA (in VS Code)
To debug PaaSTA in VS Code, please refer to the internal PaaSTA wiki page "Debugging PaaSTA (in VS Code)".
Documentation
Read the documentation at Read the Docs.
Yelp-internal Documentation/Links
Videos / Talks About PaaSTA
- EvanKrall speaks at QCon NYC 2015 (Oct 2015)
- EvanKrall, solarkennedy, and jnb give a behind the scenes tour of PaaSTA at Yelp (Oct 2015)
- Rob-Johnson talks about PaaSTA at MesosCon 2015 (Nov 2015)
- solarkennedy presents at Box to give a Theory of PaaSes (Jan 2016)
- nhandler speaks at OSCON about Running Applications at Yelp (Slides / Video) (May 2016)
License
PaaSTA is licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0
Contributing
Everyone is encouraged to contribute to PaaSTA by forking the Github repository and making a pull request or opening an issue.