Application To Platform

.footnote[[How we used Python to scale Yola](https://github.com/michaeljoseph/application-to-platform)]

.large[ avatar

michaeljoseph @github @twitter yola ]

this talk is about

.large[ ![transformation](https://raw.github.com/michaeljoseph/application-to-platform/gh-pages/images/transformers.png) ]

follow along at home

https://github.com/michaeljoseph/application-to-platform

.left-column[

Other talks

] .right-column[

  • yodeploy and yoconfigurator

  • yola’s hosting platform

  • release automation and continuous deployment

]

.left-column[

overview

] .right-column[

before and after

lessons

deployment / rollout patterns

roadmap ]

History

image

architecture goals

Simplicity is preferable to complexity

Existing solutions are preferable to entirely new ones

Open Source solutions are preferable to proprietary ones

Avoid single points of failure

architecture changelog

SynthaSite v2 beta — November 2007: The SynthaSite v2 beta went live.

SynthaSite Platform 2.0 — June 2008: gh-pages step in creating a more scalable and reliable platform, introducing load balancing and failover databases and filesystems to the Site Building cluster

SynthaSite Platform 2.1 — July 2008: Adds a dedicated hosting file system and database server, with drbd failover.

SynthaSite Platform 2.2 — September 2008: Adds horizontal scalability to the Site Builder database tier, allowing additional Site Builder database servers to be added to improve capacity.

architecture changelog

SynthaSite Platform 2.3 — October 2008: Adds the domain service and the payment service, allowing for the gh-pages company revenue stream.

SynthaSite Platform 2.4 — November 2008: Adds hosting web server load balancing, allowing horizontal scaling as well as high availability.

SynthaSite Platform 2.5 — December 2008: Adds the ability to have multiple hosting file servers, allowing horizontal scaling of hosting storage and I/O.

architecture changelog

Yola Platform 2.6 — May 2009: Adds the ability to have multiple Site Building file servers, allowing horizontal scaling of Site Building storage and I/O.

Yola Platform 2.7 — May 2009: Adds the Resource Store, which facilitates scalable and highly-available storage of site resources.

Yola Platform 2.8 — June 2009: Adds the Checkout Service, which facilitates the provision of purchase flows in a secure fashion (it, over SSL).

Yola Platform 2.9 — August 2009: Adds Resource Store instances to the publishing environment.

Before And After

platform-2.9

lessons

release early and often

keep the changes small and pointy

lowers the cognitive overhead of review

increases confidence in pushing out new code

small surface area of introduced bugs to inspect

bugs are shallow anyway because we have many eyeballs

standardise

applications and installables

applications

installables

.left-column[ deployment / rollout patterns ]

new services first

switch client applications using standard demands based service clients

cleanup

works for hardware too

evolving services with service-clients

yosites-source)

generated docs

yosites)

engineering workflow

hiring

meritocracy

BDFL

pull requests

eyeballs

yola open source

https://github.com/yola

https://github.com/yola/demands

https://github.com/yola/property-caching

https://github.com/yola/auth_tkt

https://github.com/yola/hashcache

roadmap

  • database succession

  • feature flags

  • modernise all the things

.left-column[

roadmap: Monitoring

] .large[ graphite

munin

sentry ]

roadmap: what was hard

  • slow

  • boring

  • singularity imminent

summary

Slideshow created using remark.

questions