Convert Figma logo to code with AI

Yelp logopaasta

An open, distributed platform as a service

1,686
240
1,686
93

Top Related Projects

33,537

Define and run multi-container applications with Docker

109,710

Production-Grade Container Scheduling and Management

5,233

Apache Mesos

14,765

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.

8,467

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:

  1. Set up your infrastructure (Mesos, Marathon, Docker, etc.)
  2. Install PaaSTA:
pip install paasta-tools
  1. Configure your services in service.yaml files:
---
service_name: my_service
instance_type: marathon
instances: 3
cpus: 1
mem: 1024
  1. 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

33,537

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
109,710

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.

5,233

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.

14,765

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 documentation and community support
  • Supports multiple container runtimes (Docker, Mesos, etc.)

Cons of Marathon

  • Less integrated with specific cloud providers
  • Requires more setup and configuration
  • May be overkill for smaller deployments

Code Comparison

Marathon configuration example:

{
  "id": "/my-app",
  "cmd": "python3 -m http.server 8080",
  "cpus": 0.5,
  "mem": 32,
  "instances": 2
}

PaaSTA configuration example:

---
instance_type: marathon
mem: 32
cpus: 0.5
instances: 2
cmd: 'python3 -m http.server 8080'

Key Differences

  • PaaSTA is more focused on Yelp's specific infrastructure and workflows
  • Marathon offers more flexibility for different environments
  • PaaSTA provides additional features like service discovery and monitoring out of the box
  • Marathon has a steeper learning curve but offers more fine-grained control

Use Cases

  • Choose Marathon for larger, more complex distributed systems
  • Opt for PaaSTA if you have similar infrastructure to Yelp or want a more opinionated platform
8,467

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 Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Build Status Documentation Status

PaaSTA - Build, Deploy, Connect, and Monitor Services

PaaSTA Logo

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

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.