Minimum Viable Architecture For Web Apps

Post on 23-Aug-2014

327 views 3 download

Tags:

description

A guest lecture I gave at the RMIT Systems Architecture course. A bit of a grab bag of things I thought I wish I knew back when I was at uni with regards to architecting web apps.

Transcript of Minimum Viable Architecture For Web Apps

99designsMinimum Viable Architecture for Web Apps

Hi, I'm @johnbarton, Director of Engineering at 99designs

Why You Should Listen To Me™

How I think About Architecture. Based on Actual Architecture

How Do I Architect? Specifically in Smaller, Fast Growing Companies

Apologies for undercookedness, I am still jetlaggedA Lightly Structured Series of Rants

Your Web Application Should Look Like This

Security #protips Recommended Reading (Do Kids Still Read Today?)

There are reasonsWhy You Should Listen To Me™

Because I am an "industry speaker", clearly.

MyCareer: ASP.NET + MSSQL Envato: Ruby on Rails + MySQL

Goodfilms: Ruby on Rails + PostgreSQL 99designs: PHP, Ruby on Rails, Go + MySQL

+ lots of random consulting

Based on Actual ArchitectureHow I think About Architecture.

"organisations which design systems ... are constrained to produce designs which are copies of the communication

structures of these organisations" - M. Conway

Specifically in Smaller, Fast Growing CompaniesHow Do I Architect?

Typically the systems I see are either woefully over or under architected.

The balance is hard to get right, and harder to keep right.

YAGNI and Responding to Change

“If you want to build a ship, don’t drum up the men to gather wood, divide the work, and give orders. Instead,

teach them to yearn for the vast and endless sea.” - Antoine de Saint-Exupéry

No Exceptions.Your Web Application Should Look Like This

Put these things into "the cloud" and put your code in there 1 x Load Balancer

2 x Web Server 1 x Database Master + 1 x Read Replica

1 x Async Queue Processor Firewall the lot at the outside, and iptables each box too

Share nothing except database (and maybe session store)

The Single Responsibility Principle +

Zero, one, and many.

Inflection Point: ~15 Developers or ~100M Weekly Page Impressions

Upgrade to SOA at the same time you split teams Have clear lines of ownership from teams to systems

Do not create a service without a dedicated team or n > 1 clients

Security #protips

Don't build a bitcoin exchange or wallet

"Outsource" the security design: use a secure by default framework

AUDIT TRAIL AUDIT TRAIL AUDIT TRAIL

You are more likely to get audited than get hacked unless you are dumbSecurity Protips

Apply the Mickens "Mossad/Not Mossad" Threat Model

Keep your mouth shut around 4chan and other angry intelligent people

For The Love of God Don't Leave a Laptop on a Train or in the Pub

Here are some books I like. Also, some things that are not books.Recommended Reading

"hominem unius libri timeo"

http://highscalability.com/ http://www.kitchensoap.com/ http://yowconference.com.au/ http://martinfowler.com/bliki/

I have no idea why our company slide-theme has one with clouds on itThanks for listening!

http://99designs.com