writing applications at cloud scale

27
Writing Applications at Cloud Scale by Matt Ryan Tuesday, May 7, 13

Upload: matt-ryan

Post on 17-May-2015

244 views

Category:

Technology


4 download

DESCRIPTION

Presentation I gave at OpenWest 2013, uploaded for the benefit of those who attended and wanted to be able to download the slides.

TRANSCRIPT

Page 1: Writing Applications at Cloud Scale

Writing Applications at Cloud Scaleby Matt Ryan

Tuesday, May 7, 13

Page 2: Writing Applications at Cloud Scale

What is “Cloud Computing”?

Pooled computing resources available to any subscriber

Available over network

Elasticity of resources

Self-servicing / automated resource deployment

Metered billing

Source: The NIST Definition of Cloud Computing (http://csrc.nist.gov/publications/nistpubs/800-145/SP800-145.pdf)

Tuesday, May 7, 13

Page 3: Writing Applications at Cloud Scale

Cloud Implications - Elasticity

Your app needs to support any number of users

Your app needs to be able to run on any number of machines

Your app achieves scalability by adding machines

Your app needs to be built atop elastic resources and infrastructure

Tuesday, May 7, 13

Page 4: Writing Applications at Cloud Scale

Cloud Implications - Self-Service

Your users can scale their usage up or down automatically on their own

The resources your app uses can grow and shrink based on demand

Tuesday, May 7, 13

Page 5: Writing Applications at Cloud Scale

Cloud Implications

You have to assume your app is multi-machine and asynchronous

You have to rely on replacements for many operating system primitives

Programming language is not that important for scale

Tuesday, May 7, 13

Page 6: Writing Applications at Cloud Scale

#!/usr/bin/env python

from magic import magicianfrom voodoo import voodoo_foo

class uber_magic_foo(magician): def say_alakazam(self): voodoo_foo() self.impress_audience()

if __name__ == ‘__main__’: umf = uber_magic_foo() umf.say_alakazam()

+≠

Tuesday, May 7, 13

Page 7: Writing Applications at Cloud Scale

Tuesday, May 7, 13

Page 8: Writing Applications at Cloud Scale

Tuesday, May 7, 13

Page 9: Writing Applications at Cloud Scale

Tuesday, May 7, 13

Page 10: Writing Applications at Cloud Scale

Tuesday, May 7, 13

Page 11: Writing Applications at Cloud Scale

Tuesday, May 7, 13

Page 12: Writing Applications at Cloud Scale

Tuesday, May 7, 13

Page 13: Writing Applications at Cloud Scale

Your App

Tuesday, May 7, 13

Page 14: Writing Applications at Cloud Scale

Your App Your AppYour App

Your App Your AppYour App

Your App Your AppYour App

Tuesday, May 7, 13

Page 15: Writing Applications at Cloud Scale

Your App

Tuesday, May 7, 13

Page 16: Writing Applications at Cloud Scale

Your App

Compute

Storage

Messaging

Configuration

Security

Tuesday, May 7, 13

Page 17: Writing Applications at Cloud Scale

So why do I care?

Tuesday, May 7, 13

Page 18: Writing Applications at Cloud Scale

Tuesday, May 7, 13

Page 19: Writing Applications at Cloud Scale

Demo: AudioFile v.1

Tuesday, May 7, 13

Page 20: Writing Applications at Cloud Scale

Typical Approaches to Scalability

Use multithreading / multiple processes

Profile / look for hotspots

Batch file I/O / buffer / cache

Cluster RDBMS / split or shard DB

Rewrite in C / Assembly

Tuesday, May 7, 13

Page 21: Writing Applications at Cloud Scale

Demo: AudioFile v.2

Tuesday, May 7, 13

Page 22: Writing Applications at Cloud Scale

Preparing for the cloud

Segregate application from infrastructure

Isolate components that can be replaced by cloud-based services

File storage, thread execution, database access...

Simulate cloud computing metaphors

Producer/consumer, asynchronous processing...

Tuesday, May 7, 13

Page 23: Writing Applications at Cloud Scale

Demo: AudioFile v.3

Tuesday, May 7, 13

Page 24: Writing Applications at Cloud Scale

A Cloud-Scale AppSQLite database replaced with MongoDB

Other options: CouchDB, Cassandra, Redis...

Threadpool replaced with ActiveMQ + workers

Other options: RabbitMQ, 0MQ, Starling...

Other possibilities:

Use Storm to manage producers and consumers

Use Zookeeper to manage app configuration

Tuesday, May 7, 13

Page 25: Writing Applications at Cloud Scale

Takeaways

Cloud apps are not just “on the Internet” — they are apps that perform at cloud scale

Cloud scale apps have to be designed that way from the start

Cloud scale is the expectation for 21st century applications

Tuesday, May 7, 13

Page 26: Writing Applications at Cloud Scale

Matt Ryan@mattvryan

http://www.mvryan.orghttps://github.com/mattvryan

Tuesday, May 7, 13

Page 27: Writing Applications at Cloud Scale

LicensingSlide 7

Network cables: Source: http://www.freefoto.com, License: CC BY-NC-ND 3.0

Cloud: Public Domain

Slide 8 - Disc Drive: Source: Jeff Kubina, License: CC BY-SA 2.0

Slide 9 - Padlock and Key: Public Domain

Slide 10 - Wild Rabbits at Edinburgh Zoo: Source: Worm That Turned via Wikimedia Commons, License: CC BY-SA 3.0

Slide 11 - Gear: Public Domain

Slide 12 - Message in a Bottle: Source: copy-ninja-Alex, License: CC BY-NC-ND 3.0

Slide 13 - Stockholm Public Library: Source: Marcus Hansson via Wikimedia Commons, License: CC BY 2.0

Slide 19 - Garmin GPS: Source: Joe Gallagher, License: CC BY-NC-ND 2.0

All other content: Created by Matt Ryan CC BY-SA 3.0

Tuesday, May 7, 13