{"id":13501999,"url":"https://github.com/Yelp/paasta","last_synced_at":"2025-03-29T10:32:40.908Z","repository":{"id":37617907,"uuid":"44998824","full_name":"Yelp/paasta","owner":"Yelp","description":"An open, distributed platform as a service","archived":false,"fork":false,"pushed_at":"2025-03-12T17:21:38.000Z","size":93842,"stargazers_count":1703,"open_issues_count":91,"forks_count":242,"subscribers_count":91,"default_branch":"master","last_synced_at":"2025-03-12T22:35:46.030Z","etag":null,"topics":["docker","infrastructure","k8s","kubernetes","paas","paasta","yelp"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Yelp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-10-26T21:35:53.000Z","updated_at":"2025-03-09T21:05:20.000Z","dependencies_parsed_at":"2022-07-10T15:00:25.232Z","dependency_job_id":"384a8a72-bbc8-4494-9bcb-2bb2143e9c26","html_url":"https://github.com/Yelp/paasta","commit_stats":{"total_commits":10500,"total_committers":274,"mean_commits":38.32116788321168,"dds":0.8883809523809524,"last_synced_commit":"a0e932bba990f8ef3e6980b1af36a60dc1f28cd4"},"previous_names":[],"tags_count":2816,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yelp%2Fpaasta","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yelp%2Fpaasta/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yelp%2Fpaasta/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yelp%2Fpaasta/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Yelp","download_url":"https://codeload.github.com/Yelp/paasta/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245823302,"owners_count":20678173,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","infrastructure","k8s","kubernetes","paas","paasta","yelp"],"created_at":"2024-07-31T22:01:57.917Z","updated_at":"2025-03-29T10:32:40.885Z","avatar_url":"https://github.com/Yelp.png","language":"Python","funding_links":[],"categories":["Python","Platform","sensu","kubernetes","Platforms and microservice architectures"],"sub_categories":["Networking"],"readme":"[![Build Status](https://github.com/Yelp/paasta/actions/workflows/ci.yml/badge.svg?query=branch%3Amaster)](https://github.com/Yelp/paasta/actions/workflows/ci.yml)\n[![Documentation Status](https://readthedocs.org/projects/paasta/badge/?version=latest)](https://paasta.readthedocs.io/en/latest/?badge=latest)\n\n# PaaSTA - Build, Deploy, Connect, and Monitor Services\n![PaaSTA Logo](http://engineeringblog.yelp.com/images/previews/paasta_preview.png)\n\nPaaSTA is a highly-available, distributed system for building, deploying, and\nrunning services using containers and Kubernetes.\n\nPaaSTA has been running production services at Yelp since 2016. It was\noriginally designed to run on top of Apache Mesos but has subsequently been\nupdated to use Kubernetes. Over time the features and functionality that\nPaaSTA provides have increased but the principal design remains the same.\n\nPaaSTA aims to take a declarative description of the services that teams need\nto run and then ensures that those services are deployed safely, efficiently,\nand in a manner that is easy for the teams to maintain. Rather than managing\nKubernetes YAML files, PaaSTA provides a simplified schema to describe your service\nand in addition to configuring Kubernetes it can also configure other infrastructure\ntools to provide monitoring, logging, cost management etc.\n\nWant to know more about the opinions behind what makes PaaSTA special? Check\nout the [PaaSTA Principles](http://paasta.readthedocs.io/en/latest/about/paasta_principles.html).\n\n## Components\n\n*Note*: PaaSTA is an opinionated platform that uses a few un-opinionated\ntools. It requires a non-trivial amount of infrastructure to be in place\nbefore it works completely:\n\n * [Docker](http://www.docker.com/) for code delivery and containment\n * [Kubernetes](https://kubernetes.io/) for code execution and scheduling (runs Docker containers)\n * [Tron](https://tron.readthedocs.io/en/latest/) for running things on a timer (nightly batches)\n * [SmartStack](http://nerds.airbnb.com/smartstack-service-discovery-cloud/) and [Envoy](https://www.envoyproxy.io/) for service registration and discovery\n * [Sensu](https://sensu.io/) for monitoring/alerting\n * [Jenkins](https://jenkins-ci.org/) (optionally) for continuous deployment\n * [Prometheus](https://prometheus.io/) and [HPA](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) for autoscaling services\n\nOne advantage to having a PaaS composed of components like these is you\nget to reuse them for other purposes. For example, at Yelp Sensu is not just for\nPaaSTA, it can be used to monitor all sorts of things. We also use Kubernetes to run\nother more complex workloads like [Jolt](https://dcos.io/events/2017/jolt-distributed-fault-tolerant-tests-at-scale-on-mesos/) and [Cassandra](https://engineeringblog.yelp.com/2020/11/orchestrating-cassandra-on-kubernetes-with-operators.html). Our service mesh, which\nis a heavily customised version of SmartStack and Envoy, allows many systems at Yelp\nto communicate with PaaSTA services and each other.\n\nOn the other hand, requiring lots of components, means lots of infrastructure to\nsetup before PaaSTA can work effectively! Realistacally, running PaaSTA outside of Yelp\nwould not be sensible, because in addition to the integrations mentioned above we also\nhave strong opinions encoded in other tooling that you would need to replicate. Nevertheless,\nwe code PaaSTA in the open because we think it is useful to share our approach and hope that\nthe code can at least help others understand or solve similar problems.\n\n## Integrations and Features\n\nIn addition to the direct integrations above PaaSTA also relies on other components\nto provide PaaSTA users with other features and to manage compute capacity at Yelp.\n\n* We use [Karpenter](https://karpenter.sh/) to autoscale pools of EC2 instances to run PaaSTA. Formerly we used our own autoscaler [Clusterman](https://engineeringblog.yelp.com/2019/11/open-source-clusterman.html)\n* We bake AMIs using [Packer](https://www.packer.io/)\n* We collect logs from services and send them via [Monk](https://engineeringblog.yelp.com/2020/01/streams-and-monk-how-yelp-approaches-kafka-in-2020.html) to [Kafka](https://kafka.apache.org/)\n* We use [StatefulSets](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/) to run a few stateful PaaSTA services\n* We autotune the resources needed by each service by monitoring usage (similar to [VPA](https://github.com/kubernetes/autoscaler/tree/master/vertical-pod-autoscaler))\n\n## Design Goals\n\n * Declarative, rather than imperative, control\n * Fault tolerance\n * Service isolation\n * Efficient use of resources\n * No single points of failure\n * Pleasant interface\n\n## Getting Started\n\nSee the [getting started](http://paasta.readthedocs.io/en/latest/installation/getting_started.html)\ndocumentation for how to deploy PaaSTA. This reference is intended to help understand how PaaSTA\nworks but we don't advise that you use PaaSTA in production.\n\n## Debugging PaaSTA (in VS Code)\n\nTo debug PaaSTA in VS Code, please refer to the internal PaaSTA wiki page \"[Debugging PaaSTA (in VS Code)](https://y.yelpcorp.com/paasta-vscode)\".\n\n## Documentation\n\nRead the documentation at [Read the Docs](http://paasta.readthedocs.io/en/latest/).\n\n## Yelp-internal Documentation/Links\n* [HPA](http://y/hpa)\n* [Service Deployment](http://y/service-deploys)\n\n## Videos / Talks About PaaSTA\n\n* [EvanKrall](https://github.com/EvanKrall) speaks at [QCon NYC 2015](http://www.infoq.com/presentations/paasta-yelp) (Oct 2015)\n* [EvanKrall](https://github.com/EvanKrall), [solarkennedy](https://github.com/solarkennedy), and [jnb](https://github.com/jnb) give a [behind the scenes tour of PaaSTA at Yelp](https://vimeo.com/141231345) (Oct 2015)\n* [Rob-Johnson](https://github.com/Rob-Johnson) talks about PaaSTA at [MesosCon 2015](https://www.youtube.com/watch?v=fxYfmzWctRc) (Nov 2015)\n* [solarkennedy](https://github.com/solarkennedy) presents at Box to give a [Theory of PaaSes](https://youtu.be/YFDwdRVTg4g?t=33m11s) (Jan 2016)\n* [nhandler](https://github.com/nhandler) speaks at OSCON about Running Applications at Yelp ([Slides](http://www.slideshare.net/NathanHandler/paasta-running-applications-at-yelp) / [Video](https://youtu.be/vISUXKeoqXM)) (May 2016)\n\n## License\n\nPaaSTA is licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0\n\n## Contributing\n\nEveryone is encouraged to contribute to PaaSTA by forking the\n[Github repository](http://github.com/Yelp/PaaSTA) and making a pull request or\nopening an issue.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FYelp%2Fpaasta","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FYelp%2Fpaasta","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FYelp%2Fpaasta/lists"}