Top Related Projects
Define and run multi-container applications with Docker
Production-Grade Container Scheduling and Management
Apache Mesos
Nomad is an easy-to-use, flexible, and performant workload orchestrator that can deploy a mix of microservice, batch, containerized, and non-containerized applications. Nomad is easy to operate and scale and has native Consul and Vault integrations.
Deploy and manage containers (including Docker) on top of Apache Mesos at scale.
Conformance test suite for OpenShift
Quick Overview
PaaSTA is an open-source platform-as-a-service (PaaS) system developed by Yelp. It's designed to manage and deploy containerized applications at scale, leveraging technologies like Docker, Mesos, and Marathon. PaaSTA aims to simplify the deployment process and provide a robust infrastructure for running microservices.
Pros
- Highly scalable and flexible, capable of managing thousands of services
- Integrates well with existing DevOps tools and practices
- Provides comprehensive monitoring and alerting capabilities
- Supports both long-running services and scheduled jobs
Cons
- Steep learning curve due to its complex architecture
- Requires significant infrastructure setup and maintenance
- May be overkill for smaller organizations or simpler deployments
- Documentation can be challenging to navigate for newcomers
Getting Started
To get started with PaaSTA, follow these steps:
- Set up your infrastructure (Mesos, Marathon, Docker, etc.)
- Install PaaSTA:
pip install paasta-tools
- Configure your services in
service.yaml
files:
---
service_name: my_service
instance_type: marathon
instances: 3
cpus: 1
mem: 1024
- Deploy your service:
paasta push-to-registry
paasta mark-for-deployment
paasta deploy
For more detailed instructions, refer to the official PaaSTA documentation.
Competitor Comparisons
Define and run multi-container applications with Docker
Pros of Compose
- Simpler setup and configuration for small to medium-sized projects
- Widely adopted in the Docker ecosystem with extensive community support
- Easier to understand and use for developers new to containerization
Cons of Compose
- Limited scalability for large, complex microservice architectures
- Lacks advanced deployment and service management features
- Not designed for multi-datacenter or multi-cloud deployments
Code Comparison
Compose example:
version: '3'
services:
web:
image: nginx
ports:
- "80:80"
PaaSTA example:
---
instance_type: marathon
mem: 128
cpus: 0.1
instances: 3
healthcheck_mode: http
Key Differences
- PaaSTA is designed for large-scale, multi-datacenter deployments, while Compose is more suitable for local development and simpler production environments
- PaaSTA offers more advanced features for service discovery, monitoring, and autoscaling
- Compose focuses on defining and running multi-container Docker applications, while PaaSTA provides a complete platform for deploying and managing services
Use Cases
- Choose Compose for smaller projects, local development, or when getting started with containerization
- Opt for PaaSTA when dealing with complex microservice architectures, multi-datacenter deployments, or when advanced service management features are required
Production-Grade Container Scheduling and Management
Pros of Kubernetes
- Widely adopted industry standard with extensive ecosystem and community support
- Highly scalable and flexible for diverse deployment scenarios
- Rich set of built-in features for service discovery, load balancing, and rolling updates
Cons of Kubernetes
- Steeper learning curve and more complex setup compared to PaaSTA
- Can be resource-intensive for smaller deployments or simpler use cases
- Requires more manual configuration and maintenance for certain features
Code Comparison
PaaSTA configuration example:
---
instance_type: marathon
mem: 1024
cpus: 0.5
instances: 3
Kubernetes deployment example:
apiVersion: apps/v1
kind: Deployment
spec:
replicas: 3
template:
spec:
containers:
- name: app
resources:
limits:
cpu: "0.5"
memory: 1024Mi
Summary
Kubernetes offers a more comprehensive and widely-adopted container orchestration solution, while PaaSTA provides a simpler, more opinionated approach tailored for specific use cases. Kubernetes excels in flexibility and scalability, but may introduce more complexity. PaaSTA offers easier setup and management for organizations with simpler requirements or those already using Yelp's infrastructure tools.
Apache Mesos
Pros of Mesos
- More mature and widely adopted project with a larger community
- Supports multiple frameworks and programming languages
- Offers fine-grained resource allocation and isolation
Cons of Mesos
- Steeper learning curve and more complex setup
- Requires more infrastructure and management overhead
- Less opinionated, which can lead to more decision-making for users
Code Comparison
Mesos (C++):
class MesosSchedulerDriver : public SchedulerDriver {
public:
virtual Status start();
virtual Status stop(bool failover = false);
virtual Status abort();
// ...
};
PaaSTA (Python):
class PaastaService:
def start(self):
# ...
def stop(self):
# ...
def restart(self):
# ...
PaaSTA is more focused on simplifying deployment and management of services in a PaaS-like environment, while Mesos provides a lower-level distributed systems kernel for resource management across diverse workloads. PaaSTA leverages other tools (including Mesos) to create a more opinionated and streamlined experience for deploying services, whereas Mesos offers greater flexibility but requires more configuration and setup.
Nomad is an easy-to-use, flexible, and performant workload orchestrator that can deploy a mix of microservice, batch, containerized, and non-containerized applications. Nomad is easy to operate and scale and has native Consul and Vault integrations.
Pros of Nomad
- More versatile, supporting both containerized and non-containerized workloads
- Simpler architecture and easier to set up, especially for smaller deployments
- Better integration with other HashiCorp products like Consul and Vault
Cons of Nomad
- Less opinionated, requiring more configuration for complex scenarios
- Smaller community and ecosystem compared to PaaSTA's Mesos-based approach
- Fewer built-in features for service discovery and configuration management
Code Comparison
Nomad job specification:
job "web" {
datacenters = ["dc1"]
type = "service"
group "frontend" {
count = 3
task "nginx" {
driver = "docker"
config {
image = "nginx:latest"
}
}
}
}
PaaSTA service configuration:
---
instance_type: t2.micro
cpus: 1
mem: 1024
instances: 3
docker_image: nginx:latest
While both systems allow for declarative configuration, Nomad's job specification is more detailed and flexible, allowing for fine-grained control over task placement and resources. PaaSTA's configuration is simpler but may require additional files or steps for complete service definition.
Deploy and manage containers (including Docker) on top of Apache Mesos at scale.
Pros of Marathon
- More mature and widely adopted in the industry
- Better suited for large-scale distributed systems
- Offers built-in service discovery and load balancing
Cons of Marathon
- Less integrated with specific cloud providers
- Requires more manual configuration and setup
- Limited support for custom scheduling policies
Code Comparison
Marathon application definition:
{
"id": "/my-app",
"cmd": "python3 -m http.server 8080",
"cpus": 0.5,
"mem": 32,
"instances": 2
}
PaaSTA service definition:
---
instance_type: marathon
instances: 2
cpus: 0.5
mem: 32
cmd: python3 -m http.server 8080
Both PaaSTA and Marathon use declarative configuration files to define services, but PaaSTA's YAML format is generally more readable and concise. Marathon's JSON format provides more detailed configuration options out-of-the-box, while PaaSTA offers a simpler abstraction layer that can be extended as needed.
PaaSTA is designed specifically for Yelp's infrastructure and integrates well with their tooling, whereas Marathon is more generic and can be used in various environments. Marathon's maturity and widespread adoption make it a solid choice for many organizations, but PaaSTA may be more appealing for those looking for a more opinionated and integrated solution.
Conformance test suite for OpenShift
Pros of Origin
- More comprehensive container platform with built-in CI/CD, networking, and storage solutions
- Larger community and enterprise support through Red Hat
- Better suited for multi-tenant environments and larger scale deployments
Cons of Origin
- Steeper learning curve due to more complex architecture
- Requires more resources to run and maintain
- Less flexibility for customization compared to PaaSTA's modular approach
Code Comparison
Origin (Kubernetes-based deployment):
apiVersion: apps/v1
kind: Deployment
metadata:
name: example-app
spec:
replicas: 3
selector:
matchLabels:
app: example-app
PaaSTA (Marathon-based deployment):
{
"id": "/example-app",
"instances": 3,
"container": {
"type": "DOCKER",
"docker": {
"image": "example-image:latest"
}
}
}
Both projects aim to simplify container orchestration, but Origin provides a more comprehensive platform while PaaSTA offers a modular approach. Origin is better suited for larger enterprises, while PaaSTA may be more appropriate for organizations looking for a customizable solution with a gentler learning curve.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
PaaSTA - Build, Deploy, Connect, and Monitor Services
PaaSTA is a highly-available, distributed system for building, deploying, and running services using containers and Kubernetes.
PaaSTA has been running production services at Yelp since 2016. It was originally designed to run on top of Apache Mesos but has subsequently been updated to use Kubernetes. Over time the features and functionality that PaaSTA provides have increased but the principal design remains the same.
PaaSTA aims to take a declarative description of the services that teams need to run and then ensures that those services are deployed safely, efficiently, and in a manner that is easy for the teams to maintain. Rather than managing Kubernetes YAML files, PaaSTA provides a simplified schema to describe your service and in addition to configuring Kubernetes it can also configure other infrastructure tools to provide monitoring, logging, cost management etc.
Want to know more about the opinions behind what makes PaaSTA special? Check out the PaaSTA Principles.
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
- Kubernetes for code execution and scheduling (runs Docker containers)
- Tron for running things on a timer (nightly batches)
- SmartStack and Envoy for service registration and discovery
- Sensu for monitoring/alerting
- Jenkins (optionally) for continuous deployment
- Prometheus and HPA for autoscaling services
One 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. We also use Kubernetes to run other more complex workloads like Jolt and Cassandra. Our service mesh, which is a heavily customised version of SmartStack and Envoy, allows many systems at Yelp to communicate with PaaSTA services and each other.
On the other hand, requiring lots of components, means lots of infrastructure to setup before PaaSTA can work effectively! Realistacally, running PaaSTA outside of Yelp would not be sensible, because in addition to the integrations mentioned above we also have strong opinions encoded in other tooling that you would need to replicate. Nevertheless, we code PaaSTA in the open because we think it is useful to share our approach and hope that the code can at least help others understand or solve similar problems.
Integrations and Features
In addition to the direct integrations above PaaSTA also relies on other components to provide PaaSTA users with other features and to manage compute capacity at Yelp.
- We use Karpenter to autoscale pools of EC2 instances to run PaaSTA. Formerly we used our own autoscaler Clusterman
- We bake AMIs using Packer
- We collect logs from services and send them via Monk to Kafka
- We use StatefulSets to run a few stateful PaaSTA services
- We autotune the resources needed by each service by monitoring usage (similar to VPA)
Design Goals
- Declarative, rather than imperative, control
- Fault tolerance
- Service isolation
- Efficient use of resources
- No single points of failure
- Pleasant interface
Getting Started
See the getting started documentation for how to deploy PaaSTA. This reference is intended to help understand how PaaSTA works but we don't advise that you use PaaSTA in production.
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.
Top Related Projects
Define and run multi-container applications with Docker
Production-Grade Container Scheduling and Management
Apache Mesos
Nomad is an easy-to-use, flexible, and performant workload orchestrator that can deploy a mix of microservice, batch, containerized, and non-containerized applications. Nomad is easy to operate and scale and has native Consul and Vault integrations.
Deploy and manage containers (including Docker) on top of Apache Mesos at scale.
Conformance test suite for OpenShift
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot