Cloud computing revolutionized application design, and changed the way people think about infrastructure. The rise of cloud computing coincided with a new generation of applications and services that required scale. New architecture and design had to take into account low latency network connectivity, geographic distribution, large real-time data stores, the ability to meet demand (while not knowing exactly how much demand to handle), and so much more. We refer to this as Internet Scale.
Yet most discussion of scale and cloud revolves around compute as virtualized instances, which have defined configurations and constrained options. Delivering on the promise of Internet Scale involves substantial upfront design, and a comprehensive understanding of the entire architecture - from the underlying hardware, to the operating system, the application stack, services, and deployment. And, it involves choice - choices you should make based on your requirements. Join us for a discussion on the many facets of Internet Scale, and how it can apply to your applications and services.
6. Enterprise apps
Defined user base Relative predictability Cost
Internet scale apps
Global potential Relative chaos Revenue
7. Defining
Cloud Computing
Marketing term
Reference Architecture
Operations Model
Capacity on demand
Consumption-based pricing
Self-service provisioning
Accessible via API
8. On-demand, elastic resources with
Internet 24×7 reliability.
Scale? Scale is resource availability and
capacity.
Scale does not directly correlate to
“faster” performance.
Scale can help provide predictable
performance.
9. 51 million blogs
57 million daily posts
21 billion blog posts
17. Design + Architecture
Why is scalability so hard? It can’t be an after-thought. It requires applications
and platforms designed with scaling in mind.
Is achieving good scalability possible? Absolutely, but only if we architect and
engineer our systems to take scalability into account.
Simply throwing additional CPU cycles or storage at an application is not going to
deliver linear scalability unless the application was designed to scale in such a
manner.
18. Simplicity Over Complexity
Think simple. If it is a complex problem, reduce to a simpler form. Iterate.
Simple is actually hard. You have to work to simplify.
Eliminate multi-step processes. Reduce each step of every process to its
atoms. They perform their work in complete isolation, and communicate
among one another with messages.
“A system can be so simple that there are obviously no bugs,
or it can be so complex that there are no obvious bugs.”
19. Design + Architecture
Choose tools that can grow. The cloud makes it easy to add nodes. Does your
software?
Choose tools that can shrink. The cloud makes it easy to remove nodes. Most
software does not.
Leverage the best available to meet your requirements.
20. Design + Architecture
Stateless and async. One of the guiding principles for linear scalability is to have
lightweight, independent, stateless operations that can be executed anywhere and
run on newly deployed threads/processes/cores/machines transparently as
needed in order to service an increasing number of requests. Share nothing.
Testing async code can be non-trivial. Test coverage should be pursued early (as in
at the start). Test early, test often.
21. Bottlenecks
Eliminate choke points. Everything that has to be coordinated by a single
machine, or even a single cluster, is a failure waiting to happen.
I/O
- Network
- Storage
Architecture, design, and/or implementation flaws. Try to find them
intentionally, not accidentally.
22. Design + Architecture
Expect failure. Hosting infrastructure and the cloud are comprised of a lot of
moving parts, each of which are prone to fail in their own way. Understand the
potential failure points and architect your mission critical resources to survive.
37. Better living through programming
Increase agility
Reduce human error
Enable application autoscaling
Evaluate on scope, documentation, support & community
Control
38. Global deployments ! No capital expenditure ! Significant scale
Consumptive billing ! Complete control
40. Zones!
One Management node supports one or more zones
Private VLAN! VLAN ! Private VLAN!
Spanning
Management Server!
ZONE 1! MULTIPLE OTHER ZONES!
DATA CENTER 1! MULTIPLE DATA CENTERS!
41. Clusters & Hosts!
One or more clusters per zone, one or more hosts per cluster
Cluster defined by storage
Local storage == single-server cluster
Cluster Cluster
Guest VMs! Guest VMs! Guest VMs!
Physical Host! Physical Host! Physical Host!
Management Server!
ZONE 1!
DATA CENTER 1!