What follows is a brief description of what comprises a general stateless service platform. It assumed that all stateful services live elsewhere (Heroku Postgres, AWS, etc).
This document aims to show you that a service platform can be built from a few simple ideas without need of anything highly complex or a lot of moving parts.
- produces valid cloudformation templates and other data based on inputs
- theset outputs are made available to downstream tooling that builds / manages the rest of the platform
- convergence of cloudformation templates
- basic system image containing core libs necessary to execute artifacts (see below)
- configured via userdata script upon boot
- note that userdata script is produced by compiler and therefore is very flexible
- tarballs containing executables, produced by your build system
- should be built on same runtime that will execute it
- autoscaler for runtimes
- handles replacing sick runtimes, ensuring distribution across AZ's
- optional (not all apps require HTTP load balancers), serves associated asg
- all downstream platform services (monitoring / build / visibility / etc) should be constructed of these same building blocks
- if needed, they should be able to access ideal state via published compiler outputs and actual state by accessing AWS
- question anything that has to break these rules
- consider outsourcing to reliable / proven third parties as often as possible