Skip to content

Instantly share code, notes, and snippets.

@gorsuch
Last active August 29, 2015 14:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gorsuch/5ee1997aa33dd6651377 to your computer and use it in GitHub Desktop.
Save gorsuch/5ee1997aa33dd6651377 to your computer and use it in GitHub Desktop.
Service Platform Components

Service Platform Components

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.

compiler

see platform compiler

  • 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

materializer

  • convergence of cloudformation templates

runtime

  • 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

artifacts

  • tarballs containing executables, produced by your build system
  • should be built on same runtime that will execute it

asg

  • autoscaler for runtimes
  • handles replacing sick runtimes, ensuring distribution across AZ's

elb

  • optional (not all apps require HTTP load balancers), serves associated asg

downstream services

  • 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment