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.
Documentation
Read the documentation at Read the Docs.
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.