Software Architecting at Scale
a practical walkthrough
Sergio Fernández
Senior Software Development Engineer (Amazon)
Universidad Carlos III de Madrid, 25/11/2020
Ingeniería del Software, Grado en Ingeniería Informática
DISCLAIMER:
The content in this presentation was created for
academic purposes. All the opinions expressed here are
my own and do not necessarily represent those of my
current or past employers.
Sergio
Fernández Some background about myself:
● Asturian Software Engineer
● Graduated from University of Oviedo
● Currently based in Vancouver
● Senior Software Development Engineer at Amazon
● Advocate of open technologies
● Member of the Apache Software Foundation
4
Jan 2006: joined CTIC Foundation
Feb 2008: visited DERI (Ireland)
Aug 2017: joined Amazon (Canada)
May 2012: joined Salzburg Research (Austria)
Mar 2013: founded Redlink GmbH (Austria)
Dec 2006: graduated Bachelor Degree
Jul 2010: graduated Master Degree
Dec 2012: joined ASF
Feb 2015: lecturing at Fachhochschule
Salzburg (Austria)
Oct 2011: lecturing at ESNE
(University of Camilo José Cela)
May 2007: won 1st Free Software
University Spanish Contest
Outline for today
• Software Architecture overview
• Trends in software architectures
• Architecting software at scale
• Professional opportunities
• Q&A
5
Engineer
vs
Architect
Can anybody tell me what’s the difference?
Traditionally architecture is defined as
“the highest level concept of a system in its
environment. The architecture of a software
system (at a given point in time) is its
organization or structure of significant
components interacting through interfaces,
those components being composed of
successively smaller components and
interfaces.”
7
So… why does architecture matter?
https://www.flickr.com/photos/cuppini/48963256981
Martin Fowler defines it
“as a word we use when we
want to talk about design but
want to puff it up to make it
sound important.”
https://martinfowler.com/architecture/
Are Right, a Lot.
Desired
features of
any
software
architecture
● Feasibility
● Performance
● Reliability
● Testability
● Maintainability
● Extensibility
● Agility
The General Problem
https://xkcd.com/974/
Evolution of
Software
Architecture
https://twitter.com/richcampbell/stats/1078727465974067200
Scaling problem
Given a service with the following metrics on c5.2xlarge:
• concurrency=1, latency: p90=20ms, p99=100ms
• concurrency=10, latency: p90=120ms, p99=500ms
• concurrency=20, latency: p90=200ms, p99=700ms
• concurrency=50, latency: p90=800ms, p99=2s
• concurrency=100, latency: p90=1s, p99=3s
How would you scale it to 4,000 TPS (avg.) and 10,000
TPS (max.)?
14
15
Monolithic SOA Microservices
Single Unit Coarse-grained Fine-grained
16
The Rise of
Microservices
Architectura
l Patterns ● Client Server
● Layered
● Pipe and Filter
● Event Driven
● Microservices
● Peer-to-Peer
● ...
Handling increasing complexity
Distributed
overhead ● Continuous Delivery and
dependencies
● Integration testing
● New computation environments:
containers, serverless, etc.
● Data partitioning and consistency
● Messaging: queues, pubsub, etc.
● Logging and monitoring
● Networking: load balancing, service
discovery, etc.
Understanding the tradeoffs
20
“You build it, you run it!”
Werner Vogels, VP & CTO at Amazon.com
an architecture requires structure
Chaos Engineering
AWS Architecture Center: https://aws.amazon.com/architecture/
AWS Builders’ Library: https://aws.amazon.com/builders-library/
Amazon’s
Leadership
Principles
● Customer Obsession
● Ownership
● Invent and Simplify
● Are Right, A Lot
● Learn and Be
Curious
● Hire and Develop the
Best
● Insist on the Highest
Standards
● Think Big
● Bias for Action
● Frugality
● Earn Trust
● Dive Deep
● Have Backbone;
Disagree and
Commit
● Deliver Results
https://www.amazon.jobs/en/principles
www.amazon.jobs
26
Q&A
sergio@wikier.org
web
twitter
email

Software architecting at scale, a practical walkthrough

Editor's Notes

  • #8 There is no highest level concept of a system. Customers have a different concept than developers. Customers do not care at all about the structure of significant components. So, perhaps an architecture is the highest level concept that developers have of a system in its environment. Let’s forget the developers who just understand their little piece. Architecture is the highest level concept of the expert developers. What makes a component significant? It is significant because the expert developers say so.
  • #11 architectures in software require to be agile, because architectures need to continuously evolve and adapt
  • #13 Open-Close Principle
  • #14 The trend goes to small components to maximize the features described before: smaller is easier to test and scale. Labra will describe in detail the different architectures.
  • #22 “The traditional model is that you take your software to the wall that separates development and operations, and throw it over and then forget about it. Not at Amazon. You build it, you run it. This brings developers into contact with the day-to-day operation of their software. It also brings them into day-to-day contact with the customer. This customer feedback loop is essential for improving the quality of the service.” -- Werner Vogels in “A conversation with Werner Vogels” in ACM Queue, May 2006