Skip to content

Aether: A minimalist PaaS for effortless web application deployments. Built with NextJS, NodeJS, Golang, and AWS services.

License

Notifications You must be signed in to change notification settings

ramchaik/aether

Repository files navigation

Aether πŸš€

Aether is a minimalist PaaS (Platform as a Service) offering, inspired by Vercel and Netlify. It allows you to deploy your npm projects effortlessly by simply providing a public repository URL.

Demo πŸŽ₯

DEMO

Features ✨

  • One-click deployments from Git repositories πŸ–±οΈ
  • Automatic build and deployment pipeline πŸ”„
  • Real-time log streaming for easy debugging πŸ“Š
  • Scalable infrastructure that grows with your needs πŸ“ˆ
  • Comprehensive monitoring and analytics πŸ”
  • Zero-configuration required for most projects βš™οΈ

Tech Stack πŸ› οΈ

  • Frontend: NextJS 14, TypeScript, NextUI, Clerk (auth), Tailwind CSS, Zustand, React Query, Framer Motion
  • Backend: Node.js, Go, Fastify, Chi
  • Database: PostgreSQL
  • ORM: Drizzle
  • Message Queue: AWS SQS
  • Streaming: AWS Kinesis
  • Storage: AWS S3
  • Container Orchestration: Kubernetes (AWS EKS)
  • CI/CD: GitHub Actions, ArgoCD
  • Infrastructure as Code: Terraform
  • Cloud Provider: AWS
  • Inter-service Communication: gRPC, Protocol Buffers
  • Auto-scaling: Horizontal Pod Autoscaler (HPA), KEDA
  • Monitoring: Prometheus, Grafana

Microservices 🌐

  1. Frontstage: Public-facing NextJS app for the user interface
  2. Launchpad: Fastify app for project CRUD operations, uses gRPC for communication with other services
  3. Forge: Go app for building and deploying projects, uses gRPC for communication with other services
  4. Logify: Go app for log streaming and aggregation, uses gRPC for communication with other services
  5. Proxy: Go app serving as a reverse proxy for deployed projects

Architecture Diagram

Aether architecture

Project Structure πŸ“

β”œβ”€β”€ src
β”‚   β”œβ”€β”€ frontstage
β”‚   β”œβ”€β”€ launchpad
β”‚   β”œβ”€β”€ forge
β”‚   β”œβ”€β”€ logify
β”‚   └── proxy
β”œβ”€β”€ tf
β”œβ”€β”€ k8s
β”œβ”€β”€ scripts
└── protobuf

Deployment 🚒

Aether uses GitHub Actions for CI/CD, building and pushing Docker images to DockerHub. ArgoCD is used for GitOps, linking the GitHub repository to the EKS cluster.

Infrastructure πŸ—οΈ

All infrastructure is provisioned using Terraform. Configuration files can be found in the tf folder.

Kubernetes 🎑

Kubernetes manifests for deploying to AWS EKS are located in the k8s folder.

Inter-service Communication πŸ”€

Aether utilizes gRPC with Protocol Buffers for efficient and type-safe communication between microservices. This ensures high performance and maintainability across the system.

Auto-scaling βš–οΈ

Aether implements intelligent auto-scaling to ensure optimal resource utilization and responsiveness:

  • Horizontal Pod Autoscaler (HPA): Most pods use CPU metrics for scaling, ensuring efficient resource usage across the cluster.
  • KEDA (Kubernetes Event-driven Autoscaling): The Forge service utilizes KEDA with AWS SQS triggers, allowing it to scale based on the number of messages in the queue. This ensures rapid processing of build requests during high-demand periods.

This combination of HPA and KEDA allows Aether to dynamically adjust to varying workloads, maintaining performance while optimizing resource consumption.

Monitoring πŸ”

Aether uses Prometheus for collecting and storing metrics, and Grafana for visualizing and analyzing the collected metrics.

Contributing 🀝

Contributions are welcome! Please feel free to submit a Pull Request.

License πŸ“„

This project is licensed under the MIT License.