tasks on your mesos cluster • detects failing services and restarts them • deploying as easy as sending a POST request • scaling as easy as sending a PUT request
find services • Bamboo uses Marathon API to listen for state changes • rewrites HAProxy config from template and triggers reload when services are created, scaled, etc. (no API :sadface:)
call two APIs • plenty of options aka room for failure • plenty of power aka room for fucking up • error reporting of API is less than optimal • solution: hide complexity and limit options
environment variables • some custom guidelines, e.g. allow app to respond to a given PATH_PREFIX environment variable • build docker image and push to internal registry Missing piece: services to deploy ;)
teams • workshops to help teams migrate their services to fit into the new architecture • test cluster open for experimentation by all teams from day one • dogfooding small services
lots of services, it’s probably way too complex • haproxy can’t be reconfigured without reload -> need to restart / problematic with keep-alive connections • It’s awesome when it works, but hard to debug (mesos does a very bad job at reporting errors back to marathon, especially regarding docker foo) • deployments are not super fast (marathon bug / docker registry performance) There’s always a but…