Lanyrd's Inside Architecture Andrew Godwin Web Engineer, Lanyrd - - PowerPoint PPT Presentation

lanyrd s
SMART_READER_LITE
LIVE PREVIEW

Lanyrd's Inside Architecture Andrew Godwin Web Engineer, Lanyrd - - PowerPoint PPT Presentation

Lanyrd's Inside Architecture Andrew Godwin Web Engineer, Lanyrd @andrewgodwin WHO AM I? Andrew Godwin Web developer Systems administrator Technical architect Django core developer LANYRD: THE EARLY YEARS The Origin Story LANYRD: THE


slide-1
SLIDE 1

Inside Architecture

Lanyrd's

Andrew Godwin

Web Engineer, Lanyrd @andrewgodwin

slide-2
SLIDE 2

WHO AM I?

Andrew Godwin

Web developer Systems administrator Technical architect Django core developer

slide-3
SLIDE 3
slide-4
SLIDE 4

LANYRD: THE EARLY YEARS

The Origin Story

slide-5
SLIDE 5

LANYRD: THE EARLY YEARS 2010 2011 2012 2013 June 2010

slide-6
SLIDE 6

LANYRD: THE EARLY YEARS 2010 2011 2012 2013 August 2010

Good music on, an orange juice and some CSS fun in front of me, we have an apartment in Casablanca! (for a week or two anyway :)

” ”

@natbat

7:19 pm, 18 August 2010

slide-7
SLIDE 7

LANYRD: THE EARLY YEARS 2010 2011 2012 2013 August 2010

We launched lanyrd.com/ ! Go easy on it, the log files are going a bit nuts, who knew Twitter was viral?

” ”

@simonw

10:52 am, 31 August 2010

slide-8
SLIDE 8

LANYRD: THE EARLY YEARS 2010 2011 2012 2013 August 2010

Right... this clearly isn't sustainable. Going to have to switch the site in to read only mode for a few hours, sorry everyone!

” ”

@simonw

11:35 am, 31 August 2010

slide-9
SLIDE 9

LANYRD: THE EARLY YEARS 2010 2011 2012 2013 January 2011

Natalie and Simon start three months of YCombinator, in California.

slide-10
SLIDE 10

LANYRD: THE EARLY YEARS 2010 2011 2012 2013 September 2011

Lanyrd closes a $1.4 million seed funding round, moves back to London.

slide-11
SLIDE 11

LANYRD TODAY 2010 2011 2012 2013 March 2013

∙ Conferences ∙ Profile pages ∙ Emails ∙ Coverage ∙ Topics ∙ Guides ∙ Mobile app ∙ Dashboard

slide-12
SLIDE 12

LANYRD TODAY 2010 2011 2012 2013 March 2013

slide-13
SLIDE 13

LANYRD TODAY 2010 2011 2012 2013 March 2013

slide-14
SLIDE 14

LANYRD TODAY 2010 2011 2012 2013 March 2013

slide-15
SLIDE 15

LANYRD TODAY 2010 2011 2012 2013 March 2013

slide-16
SLIDE 16

LANYRD TODAY 2010 2011 2012 2013 March 2013

slide-17
SLIDE 17

LANYRD TODAY 2010 2011 2012 2013 March 2013

Key dynamic parts:

Users tracking/attending events Users tracking each other Users tracking topics and guides

slide-18
SLIDE 18

THE STACK TODAY

What we run on

slide-19
SLIDE 19

THE STACK TODAY

Browser Nginx HAProxy Varnish Gunicorn

Main site runtime

Amazon S3 Celery

Task workers

Redis PostgreSQL Solr

SSL Termination Web Cache Load balancer Static files & uploads Tasks, Set calcs Search and faceting Main data store

Memcached

Fragment caching

slide-20
SLIDE 20

THE STACK TODAY

Lanyrd is almost entirely Django (Python) Background tasks use Celery, a Django task queue Management tasks/cron jobs also run inside the framework The Django application is served by Gunicorn containers

slide-21
SLIDE 21

THE STACK TODAY

Main data store for everything except uploads We run a master and a replicated slave Around 80GB of data in five databases Each server runs on a RAID 1 disk array

PostgreSQL

slide-22
SLIDE 22

THE STACK TODAY

Task queue transport for Celery and tweet listeners Contains user sets for every conference, user and topic Used for efficient narrowing of queries before Solr is hit

Redis

slide-23
SLIDE 23

THE STACK TODAY

Stores conferences, users, sessions and more Very rich metadata on each item Heavy use of sharding thoroughout the site

Solr

We run a master and a replicated slave

slide-24
SLIDE 24

THE STACK TODAY

First point of call for all requests Caches most anonymous requests Enforces read-only mode if enabled

Varnish

One used and one hot spare at all times

slide-25
SLIDE 25

THE STACK TODAY

Sits behind Varnish Distributes load amongst frontend servers Re-routes requests during deploys

HAProxy

Two in use at all times, identically configured

slide-26
SLIDE 26

THE STACK TODAY

Stores all uploaded files from users Upload forms post directly to S3 Serves all static assets for the site (images, CSS, JS)

S3

Static assets are versioned with hash to help cache break

slide-27
SLIDE 27

THE STACK TODAY

Browser Nginx HAProxy Varnish Gunicorn

Main site runtime

Amazon S3 Celery

Task workers

Redis PostgreSQL Solr

SSL Termination Web Cache Load balancer Static files & uploads Tasks, Set calcs Search and faceting Main data store

Memcached

Fragment caching

slide-28
SLIDE 28

THE STACK BEFORE

What we've eliminated

slide-29
SLIDE 29

THE STACK BEFORE

Stored analytics, logs and some other data Lack of schema meant some bad data persisted Poor complex query performance

MongoDB

Useful for quick prototyping

slide-30
SLIDE 30

THE STACK BEFORE

Primary data store for things not in MongoDB Very poor complex query performance No advanced field types

MySQL

Full database locks during schema changes

slide-31
SLIDE 31

A TALE OF TWO DBS

The Great Move of 2012

slide-32
SLIDE 32

A TALE OF TWO DBS

Amazon EC2 MySQL Softlayer PostgreSQL

slide-33
SLIDE 33

A TALE OF TWO DBS

Why?

Predictable loading means EC2 unnecessary Better I/O throughput Both moves required database downtime

slide-34
SLIDE 34

A TALE OF TWO DBS

How?

Replicate Solr and Redis across to new servers Enter read-only mode Dump MySQL data Convert MySQL dump into PostgreSQL dump Load PostgreSQL dump Re-point DNS, proxy requests from old servers Exit read-only mode

slide-35
SLIDE 35

A TALE OF TWO DBS

Time in read-only mode: 1 ½ hours Downtime: 0 hours

slide-36
SLIDE 36

CONTENT IS KING

The Advantages of Content

slide-37
SLIDE 37

CONTENT IS KING

Read-only mode is entirely viable

An hour or two at most Everyone logged out Varnish blocks POSTs, caches everything aggressively

slide-38
SLIDE 38

CONTENT IS KING

Indexing delay is acceptable

Most site views are driven by Solr 1 or 2 minute indexing delay Some views add in recent changes directly

slide-39
SLIDE 39

FEATURE FLAGS

Always be deploying

slide-40
SLIDE 40

FEATURE FLAGS

Continuous Deployment

We deploy at least 5 times a day, if not 20 Nearly all code goes into master or short-lived branches Anything unreleased is feature flagged

slide-41
SLIDE 41

FEATURE FLAGS

Feature flags

Simple named boolean toggles Settable by user, user tag, or conference Can change templates, view code, URLs, etc.

slide-42
SLIDE 42

FEATURE FLAGS

Flag management User tag management

slide-43
SLIDE 43

WHO WROTE THAT? OH, ME

Legacy code & decisions

slide-44
SLIDE 44

WHO WROTE THAT? OH, ME

Technical Debt

It's fine to have some - it can speed things up A good chunk of ours is gone, some remains Big schema changes get harder and harder

slide-45
SLIDE 45

SMALL AND NIMBLE

The power of small teams

slide-46
SLIDE 46

SMALL AND NIMBLE

Six people

slide-47
SLIDE 47

SMALL AND NIMBLE

Six people

2.5

Back-end developers

1.75

Front-end developers

1.5

Designers

0.75

System administrators

0.75

Business

  • perations

0.5

Mobile developers

slide-48
SLIDE 48

SMALL AND NIMBLE

Awareness

Everyone knows everything that's happening Daily stand-ups Weekly show-and-tell sessions

slide-49
SLIDE 49

SMALL AND NIMBLE

Always deployable

Master branch always shippable Large development behind feature flags Code review for nastier changes

slide-50
SLIDE 50

LESSONS LEARNED

What's important here?

slide-51
SLIDE 51

LESSONS LEARNED

Small and nimble

Continuous deployment and development style allows easy project changing No long approval processes Less than ½ hour from report to shipped fix

slide-52
SLIDE 52

LESSONS LEARNED

Content is great

Read-only mode allows less painful downtimes Heavy caching smooths out our load Learnable load patterns

slide-53
SLIDE 53

LESSONS LEARNED

Fix it while you can

The bigger you get, the harder a fix We moved to PostgreSQL just in time Big schema changes now take days of coding

slide-54
SLIDE 54

LESSONS LEARNED

Six amazing people

You don't need a big team to write a complex product Communication is absolutely key Using Open Source well is also crucial

slide-55
SLIDE 55

Thank you.

Andrew Godwin

Sponsor or promote your company using events?

Get in touch:

@andrewgodwin

http://aeracode.org

info@lanyrd.com