LaunchPad

LaunchPad is closed source, so this is a write-up rather than a code link.
Overview
LaunchPad was a highly extendable GUI portal that let developer and infrastructure teams provision, monitor, and manage line-of-business application environments and other managed IT services. Built and hosted on Azure, it was a deliberate effort to grow web-development skills alongside my infrastructure-automation and cloud toolboxes — and to deliver value across the whole organization.
What it does
LaunchPad defined external services (disaster recovery, training, development environments, and so on), their properties, and their actions as API calls to arbitrary endpoints — Azure Functions, Automation Runbooks, Ansible Tower, the Azure DevOps API. These disparate services were exposed through a single documented API that the frontend, or other teams' applications, could consume. A Vue front-end presented self-service features to users authenticated by Azure AD group, and sent requests to deploy, modify, delete, or check the status of a service instance.
Monitoring
Prometheus and Grafana scraped and displayed time-series metrics from both LaunchPad's own instrumentation and the Kubernetes API, for full-stack monitoring across teams. Elasticsearch and Kibana centralized application logs and APM for tracing and troubleshooting.
Stack
- Vue + Bootstrap frontend
- Flask API backend
- Redis-backed job processing (pub/sub task queue with workers)
- PostgreSQL with SQLAlchemy
- Azure Active Directory SSO
- Python and Go microservices
Delivery
- Azure DevOps build-and-deploy pipelines triggered by git commits
- Built for and deployed to Kubernetes (AKS), with Rancher to ease teams into Kubernetes
- ARM templates to describe and rebuild the AKS, storage, and PostgreSQL resources