Busy Architect's Guide to Architecting for the Cloud

ted@tedneward.com | Blog: http://blogs.tedneward.com | Twitter: tedneward | Github: tedneward | LinkedIn: tedneward

Overview

"Cloud! Cloud! Cloud!"

"But building Cloud apps is just like building any other Java/.NET/etc app, right?"

Five-Minute Rule

What this talk is not:

What this talk is:

Cloud

What is this thing, cloud?

Cloud

Cloud Computing

Cloud

Cloud Computing: The idea

Cloud

Cloud Computing: The benefits

Cloud Glossary

What terms do we agree on?

Cloud: Glossary

Let's come to agreement on a few terms

Cloud: Glossary

Important foundataional terms

Cloud: Glossary

Cloud "models"

Cloud: Glossary

Cloud "models"

Cloud: Glossary

Cloud "models"

Cloud: Glossary

Cloud "services"

Cloud: Glossary

Cloud "platform services"

Fallacies

What are these again?

Fallacies

Fallacies are...

Fallacies

To put it in Deutsch's own words...

"Essentially everyone, ... makes the following assumptions.

"All turn out to be false in the long run and all cause big trouble and painful learning experiences."

Fallacies

In theory...

In practice...

Cloud Considerations

Things to think about|on a cloudy day

Definitions

What is the Cloud to you?

Considerations

Cloud doesn't eliminate the Fallacies of Distributed Computing, just changes the concerns a bit

Considerations

Cloud doesn't eliminate the Fallacies of Distributed Computing, just changes the concerns a bit

Tenancy and instancing

Fundamental models of Cloud apps:

Resource elasticity

"Resource elasticity"

But be careful how easy servers spin up

Geo-distribution

Geo-distribution is the ability to regionalize servers

Customer relationships

Your customers are not Cloud customers

Be very clear about these two relationships

Recoverability and fault-tolerance

When you own the server, recoverability is your problem... and under your control

When you build a Cloud app, take that into account

Cost structure

Cloud apps cost differently than self- or commercially-hosted ones

Data storage and retrieval

BLOBs vs Tables: Who's right?

Testing

You were planning on unit-testing this thing, right?

Upgrades and deployments

Deploying new versions to the Cloud is a little different than your own server

Keep an eye on the effects of new code on:

Flexibility

"[CouchDB/MongoDB/XMPP/whatever] is hot! We need it!"

Cloud providers are interested in creating instances they can support

Debugging

Debugging a cloud app isn't quite like debugging a Production app

Consider:

Summary

Cloud programming is similar to plain ol' enterprise development

Remember, cloud requires developers to think about considerations (costs) that traditionally we've been able to ignore

Resources

Books

Credentials

Who is this guy?