SlideShare une entreprise Scribd logo
1  sur  32
Télécharger pour lire hors ligne
Software
Architecture and
Decision Making
Srinath Perera
Chief Architect, WSO2
About me, in last 20 years
Goal of Software Architecture?
As practicing software architects:
● We know about many techniques
○ Abstractions
○ Arch styles, pros and cons
○ Patterns pros and cons
○ Where to use which one
○ How to compose them
○ Pitfalls, negative examples
● However, a lot of errors are not
made there
Causes of Mistakes
● Techniques conflict with each other. (e.g., Security vs.
Usability or Flexibility vs. Simplicity)
● Going overbroad with some technique. (e.g., cloud
portability)
● Given a project, we only partially understand the needs;
we learn more as we go on.
● There is a background of the project - like a deadline,
when can we rewrite, and the skills of the team
● Problems and techniques available evolve over time.
● There are techniques to handle uncertainty, but they
have costs, too.
I see Leadership Challenges, not
technical Challenges!!
Leader is a dealer in Hope
● To me, leadership is about
○ managing uncertainty
○ bringing order to the chaos.
○ providing a hope of a better future and making
progress.
● People follow whoever offers to handle
uncertainty
● It is a choice “A leader is a dealer in hope.”
--Napoleon Bonaparte
Software Architecture is about Managing
Uncertainty and Abstractions
Each area has good
Books!!
What if you are not in Charge?
● Good architects start to play the role years
before they are given the title.
● The more knowledgeable you are, the better
chance you’ll have if you do choose to lead.
● Take the initiative; help your leader and
deliver. You will find you own more and
more. Titles will follow.
● If you believe someone can do it better, by all
means, follow and learn from them!!
Book will draw
examples from
many technical
leaders that made
seemingly
impossible
Systems possible
Great Tech Leaders: Wright Brothers
Great Tech Leaders: Kelly Johnson
● Seven Principles
P1: Drive Everything from User Journey
P2: Use a Iterative Thin Slice Strategy
P3: Support more users while doing as less as
possible on each Iteration
P4: Leader must make Decisions and absorb the
Risks
P5: Design Deeply things hard to change and but
implement them Slowly
P6: Eliminate Unknowns and learn from Evidence
P7: Consistency in the Architecture is a Tradeoff
We will discuss, Five Questions to Ask and Seven Principles
● Five Questions
Q1: When can we rewrite the system?
Q2: Performance sensitivity?
Q3: Skill Level of the team
Q4: Time to Market
Q5: What are the hard problems?
Questions to
tackle
Uncertainty
Q1: When can We rewrite the
system?
● You can rewrite it sooner than you
think.
○ If yes, We can be lean, simple, worry less
● Also, with the new IDEs, it is
comparatively easy to refactor and
align code to the new architecture.
● Let us plan to rewrite (partially) beyond
key milestones.
○ Having accepted that we will rewrite, we
can push non-essentials to the next
rewrite.
Q2: Performance Sensitivity?
Q3: Skill Level of the Team
“You go to war with the army you have, not the
army you might want or wish to have at a later
time.” ― Donald Rumsfeld
● Given the top 1% of programmers, not much leadership
is needed; leadership is needed when we work with
less-than-perfect teams.
● Have a hard, realistic look at your team.
● You must pick an architecture your team can manage.
○ For this reason, do not pick EDA CQRS without experience.
○ High costs in understandability and debugging
challenges.
Q4: Time to Market
● Time to market is everything; ask
the business.
● Our design must incorporate the
realities of time to market.
● We may rewrite it later
● Although deadlines are often not
negotiable, features in the
release are usually negotiable.
● Use UX-based design and, build
an MVP, and negotiate features
as needed.
Q5: What are the hard
problems?
Principles to
Make Decisions
P1: Drive Everything from
User Journey
Quote ??
P2: Use a Iterative Thin Slice Strategy
“Premature optimization is the
root of all evil” -Donald Knuth.
P3: On each Iteration, try to add most
value for least effort
● Deeply understand the user journey
● Do less
○ Embrace Minimal Viable Product (MVP)
○ When in doubt( when the team disagrees significantly with each other), leave it out.
○ Wait until enough X three people ask for the feature ( X decided by the leader)
○ Say No if features do not match the user journey. Saying yes to one means saying no to
others! (if we take a book store, the user journey is what people do when they come,
and it is never fully defined - e.g., someone wants to search by the number of pages in
the book, you need to gauge if that is useful for enough users?)
○ Do not over engineer/ Look out for Google Envy. (see You are not Google)
○ Whenever possible, build on top of middleware tools or cloud services. (E.g. IAM)
● Interfaces and other abstractions are techniques for creating options and
delaying decisions. But Mind the cost (. e.g., One often seen mistake
("anti-pattern") in using abstractions is an extensive use of layering (with
really terrible performance impact).
P4: Leader must make Decisions
and absorb the Risks
● Any project faces many uncertainties.
○ E.g., the capacity of the MVP's first version.
○ A leader must collect the required data and perform
required experiments, but that is often not enough.
● While designing the moon rover, nobody knew the
moon's surface.
○ Phyllis Buwalda wrote a specification of the moon's
surface, just elevating parameters from the harshest
desert on the earth. He absorbed the risks.
● Leaders must remove ambiguity, create solvable
targets, and absorb the risks. If they do, little time
would be wasted on indecision.
● Make it your goal not to slow down anyone!! Nicholas Mutton / A fork in the road / CC BY-SA 2.0
P5: Design Deeply things hard to
change and but implement them Slowly
P6: Eliminate Unknowns and learn from
Evidence
P7: The proper Granularity of the
Architecture is a Tradeoff
Produce Delivery Design:
Questions
● When can I rewrite the system?
○ Sales goals will tell you, OK, to rewrite in a year or so
○ Build on top of a single cloud
● How performance-sensitive is my system?
○ Depends on sales forecasts? Likely No.
● How skilled is my team?
○ Find out
● Time to market?
○ Likely, we need this pretty fast?
● What are hard problems?
○ How to handle perishability in the system?
○ Low-latency WAN networks
○ Security
Produce Delivery Design:
Principles
● Do less and as late as possible
○ MVP is built around key experiences, learns from users
● Make decisions and bind the scope
○ Set down performance targets
● Design deeply, implement slowly
○ Define APIs, understand future scenarios, implement the MVP
● Use iterative thin-slice strategy
○ Stage it, then use Growth Hacking to iterate
● Eliminate unknowns and learn from evidence
○ Build enough traceability
○ Test the thin slice to ensure performance
○ Verify third-party tools, APIs
○ Can simple DB handle it?
○ Growth Hack the Product
Book Outline
● Part II
○ Background: Performance, UX
● Part III
○ MacroArchitecture
■ Chapter 5: Introduction
■ Chapter 6: Coordination
■ Chapter 7: Preserving Consistency of
State Chapter 8: Handling Security
■ Chapter 9: Handling HA and Scale
Chapter 10: Microservices
Considerations
○ How to write a service
○ How to Build Stable systems
● Part III
○ Putting everything together
Conclusion
● Building Great Software Designs is about handling uncertainty
● We need to use a fluid approach rather than rigid principles, such as
maximizing options
● Five Questions gives you a framework to understand
● Six Principles gives you a framework to make decisions
● It is not a formula but requires careful consideration, and great designs
can’t come from formulas. You must think!!
Uncertainty is leaders responsibility
Book: Software Architecture and Decision-Making

Contenu connexe

Similaire à Book: Software Architecture and Decision-Making

Similaire à Book: Software Architecture and Decision-Making (20)

Tenants for Going at DevSecOps Speed - LASCON 2023
Tenants for Going at DevSecOps Speed - LASCON 2023Tenants for Going at DevSecOps Speed - LASCON 2023
Tenants for Going at DevSecOps Speed - LASCON 2023
 
A friendly guide to requirements management
A friendly guide to requirements managementA friendly guide to requirements management
A friendly guide to requirements management
 
Design of everyday things fundamental principles of interaction - V2
Design of everyday things   fundamental principles of interaction - V2Design of everyday things   fundamental principles of interaction - V2
Design of everyday things fundamental principles of interaction - V2
 
Indix Engineering Culture Code (2015)
Indix Engineering Culture Code (2015)Indix Engineering Culture Code (2015)
Indix Engineering Culture Code (2015)
 
The secrets of building a team that can do everything
The secrets of building a team that can do everythingThe secrets of building a team that can do everything
The secrets of building a team that can do everything
 
Restless developer
Restless developerRestless developer
Restless developer
 
Software Methodologies & Frameworks
Software Methodologies & FrameworksSoftware Methodologies & Frameworks
Software Methodologies & Frameworks
 
Software Engineering Primer
Software Engineering PrimerSoftware Engineering Primer
Software Engineering Primer
 
Engineer - Mastering the Art of Software
Engineer - Mastering the Art of SoftwareEngineer - Mastering the Art of Software
Engineer - Mastering the Art of Software
 
Why Agile? Back to Basics.
Why Agile? Back to Basics.Why Agile? Back to Basics.
Why Agile? Back to Basics.
 
Agile.pptx
Agile.pptxAgile.pptx
Agile.pptx
 
The future of CMS @T3UNI 2013 Annecy France
The future of CMS @T3UNI 2013 Annecy FranceThe future of CMS @T3UNI 2013 Annecy France
The future of CMS @T3UNI 2013 Annecy France
 
Post agile confessions
Post agile confessionsPost agile confessions
Post agile confessions
 
Agile applied to project management
Agile applied to project managementAgile applied to project management
Agile applied to project management
 
How to run a design sprint - LearnDay@Xoxzo #9
How to run a design sprint - LearnDay@Xoxzo #9How to run a design sprint - LearnDay@Xoxzo #9
How to run a design sprint - LearnDay@Xoxzo #9
 
It's XP, Stupid
It's XP, StupidIt's XP, Stupid
It's XP, Stupid
 
Managing software projects & teams effectively
Managing software projects & teams effectivelyManaging software projects & teams effectively
Managing software projects & teams effectively
 
How to become Industry ready engineers.pdf
How to become  Industry ready engineers.pdfHow to become  Industry ready engineers.pdf
How to become Industry ready engineers.pdf
 
Enterprise Frameworks: Java & .NET
Enterprise Frameworks: Java & .NETEnterprise Frameworks: Java & .NET
Enterprise Frameworks: Java & .NET
 
How to be a 10x Engineer
How to be a 10x EngineerHow to be a 10x Engineer
How to be a 10x Engineer
 

Plus de Srinath Perera

Plus de Srinath Perera (20)

Data science Applications in the Enterprise
Data science Applications in the EnterpriseData science Applications in the Enterprise
Data science Applications in the Enterprise
 
An Introduction to APIs
An Introduction to APIs An Introduction to APIs
An Introduction to APIs
 
An Introduction to Blockchain for Finance Professionals
An Introduction to Blockchain for Finance ProfessionalsAn Introduction to Blockchain for Finance Professionals
An Introduction to Blockchain for Finance Professionals
 
AI in the Real World: Challenges, and Risks and how to handle them?
AI in the Real World: Challenges, and Risks and how to handle them?AI in the Real World: Challenges, and Risks and how to handle them?
AI in the Real World: Challenges, and Risks and how to handle them?
 
Healthcare + AI: Use cases & Challenges
Healthcare + AI: Use cases & ChallengesHealthcare + AI: Use cases & Challenges
Healthcare + AI: Use cases & Challenges
 
How would AI shape Future Integrations?
How would AI shape Future Integrations?How would AI shape Future Integrations?
How would AI shape Future Integrations?
 
The Role of Blockchain in Future Integrations
The Role of Blockchain in Future IntegrationsThe Role of Blockchain in Future Integrations
The Role of Blockchain in Future Integrations
 
Future of Serverless
Future of ServerlessFuture of Serverless
Future of Serverless
 
Blockchain: Where are we? Where are we going?
Blockchain: Where are we? Where are we going? Blockchain: Where are we? Where are we going?
Blockchain: Where are we? Where are we going?
 
Few thoughts about Future of Blockchain
Few thoughts about Future of BlockchainFew thoughts about Future of Blockchain
Few thoughts about Future of Blockchain
 
A Visual Canvas for Judging New Technologies
A Visual Canvas for Judging New TechnologiesA Visual Canvas for Judging New Technologies
A Visual Canvas for Judging New Technologies
 
Privacy in Bigdata Era
Privacy in Bigdata  EraPrivacy in Bigdata  Era
Privacy in Bigdata Era
 
Blockchain, Impact, Challenges, and Risks
Blockchain, Impact, Challenges, and RisksBlockchain, Impact, Challenges, and Risks
Blockchain, Impact, Challenges, and Risks
 
Today's Technology and Emerging Technology Landscape
Today's Technology and Emerging Technology LandscapeToday's Technology and Emerging Technology Landscape
Today's Technology and Emerging Technology Landscape
 
An Emerging Technologies Timeline
An Emerging Technologies TimelineAn Emerging Technologies Timeline
An Emerging Technologies Timeline
 
The Rise of Streaming SQL and Evolution of Streaming Applications
The Rise of Streaming SQL and Evolution of Streaming ApplicationsThe Rise of Streaming SQL and Evolution of Streaming Applications
The Rise of Streaming SQL and Evolution of Streaming Applications
 
Analytics and AI: The Good, the Bad and the Ugly
Analytics and AI: The Good, the Bad and the UglyAnalytics and AI: The Good, the Bad and the Ugly
Analytics and AI: The Good, the Bad and the Ugly
 
Transforming a Business Through Analytics
Transforming a Business Through AnalyticsTransforming a Business Through Analytics
Transforming a Business Through Analytics
 
SoC Keynote:The State of the Art in Integration Technology
SoC Keynote:The State of the Art in Integration TechnologySoC Keynote:The State of the Art in Integration Technology
SoC Keynote:The State of the Art in Integration Technology
 
Role of Analytics in Digital Business
Role of Analytics in Digital BusinessRole of Analytics in Digital Business
Role of Analytics in Digital Business
 

Dernier

TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 

Dernier (20)

call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
ManageIQ - Sprint 236 Review - Slide Deck
ManageIQ - Sprint 236 Review - Slide DeckManageIQ - Sprint 236 Review - Slide Deck
ManageIQ - Sprint 236 Review - Slide Deck
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 

Book: Software Architecture and Decision-Making

  • 2. About me, in last 20 years
  • 3. Goal of Software Architecture?
  • 4. As practicing software architects: ● We know about many techniques ○ Abstractions ○ Arch styles, pros and cons ○ Patterns pros and cons ○ Where to use which one ○ How to compose them ○ Pitfalls, negative examples ● However, a lot of errors are not made there
  • 5. Causes of Mistakes ● Techniques conflict with each other. (e.g., Security vs. Usability or Flexibility vs. Simplicity) ● Going overbroad with some technique. (e.g., cloud portability) ● Given a project, we only partially understand the needs; we learn more as we go on. ● There is a background of the project - like a deadline, when can we rewrite, and the skills of the team ● Problems and techniques available evolve over time. ● There are techniques to handle uncertainty, but they have costs, too. I see Leadership Challenges, not technical Challenges!!
  • 6. Leader is a dealer in Hope ● To me, leadership is about ○ managing uncertainty ○ bringing order to the chaos. ○ providing a hope of a better future and making progress. ● People follow whoever offers to handle uncertainty ● It is a choice “A leader is a dealer in hope.” --Napoleon Bonaparte
  • 7. Software Architecture is about Managing Uncertainty and Abstractions
  • 8. Each area has good Books!!
  • 9. What if you are not in Charge? ● Good architects start to play the role years before they are given the title. ● The more knowledgeable you are, the better chance you’ll have if you do choose to lead. ● Take the initiative; help your leader and deliver. You will find you own more and more. Titles will follow. ● If you believe someone can do it better, by all means, follow and learn from them!!
  • 10. Book will draw examples from many technical leaders that made seemingly impossible Systems possible
  • 11. Great Tech Leaders: Wright Brothers
  • 12. Great Tech Leaders: Kelly Johnson
  • 13. ● Seven Principles P1: Drive Everything from User Journey P2: Use a Iterative Thin Slice Strategy P3: Support more users while doing as less as possible on each Iteration P4: Leader must make Decisions and absorb the Risks P5: Design Deeply things hard to change and but implement them Slowly P6: Eliminate Unknowns and learn from Evidence P7: Consistency in the Architecture is a Tradeoff We will discuss, Five Questions to Ask and Seven Principles ● Five Questions Q1: When can we rewrite the system? Q2: Performance sensitivity? Q3: Skill Level of the team Q4: Time to Market Q5: What are the hard problems?
  • 15. Q1: When can We rewrite the system? ● You can rewrite it sooner than you think. ○ If yes, We can be lean, simple, worry less ● Also, with the new IDEs, it is comparatively easy to refactor and align code to the new architecture. ● Let us plan to rewrite (partially) beyond key milestones. ○ Having accepted that we will rewrite, we can push non-essentials to the next rewrite.
  • 17. Q3: Skill Level of the Team “You go to war with the army you have, not the army you might want or wish to have at a later time.” ― Donald Rumsfeld ● Given the top 1% of programmers, not much leadership is needed; leadership is needed when we work with less-than-perfect teams. ● Have a hard, realistic look at your team. ● You must pick an architecture your team can manage. ○ For this reason, do not pick EDA CQRS without experience. ○ High costs in understandability and debugging challenges.
  • 18. Q4: Time to Market ● Time to market is everything; ask the business. ● Our design must incorporate the realities of time to market. ● We may rewrite it later ● Although deadlines are often not negotiable, features in the release are usually negotiable. ● Use UX-based design and, build an MVP, and negotiate features as needed.
  • 19. Q5: What are the hard problems?
  • 21. P1: Drive Everything from User Journey Quote ??
  • 22. P2: Use a Iterative Thin Slice Strategy “Premature optimization is the root of all evil” -Donald Knuth.
  • 23. P3: On each Iteration, try to add most value for least effort ● Deeply understand the user journey ● Do less ○ Embrace Minimal Viable Product (MVP) ○ When in doubt( when the team disagrees significantly with each other), leave it out. ○ Wait until enough X three people ask for the feature ( X decided by the leader) ○ Say No if features do not match the user journey. Saying yes to one means saying no to others! (if we take a book store, the user journey is what people do when they come, and it is never fully defined - e.g., someone wants to search by the number of pages in the book, you need to gauge if that is useful for enough users?) ○ Do not over engineer/ Look out for Google Envy. (see You are not Google) ○ Whenever possible, build on top of middleware tools or cloud services. (E.g. IAM) ● Interfaces and other abstractions are techniques for creating options and delaying decisions. But Mind the cost (. e.g., One often seen mistake ("anti-pattern") in using abstractions is an extensive use of layering (with really terrible performance impact).
  • 24. P4: Leader must make Decisions and absorb the Risks ● Any project faces many uncertainties. ○ E.g., the capacity of the MVP's first version. ○ A leader must collect the required data and perform required experiments, but that is often not enough. ● While designing the moon rover, nobody knew the moon's surface. ○ Phyllis Buwalda wrote a specification of the moon's surface, just elevating parameters from the harshest desert on the earth. He absorbed the risks. ● Leaders must remove ambiguity, create solvable targets, and absorb the risks. If they do, little time would be wasted on indecision. ● Make it your goal not to slow down anyone!! Nicholas Mutton / A fork in the road / CC BY-SA 2.0
  • 25. P5: Design Deeply things hard to change and but implement them Slowly
  • 26. P6: Eliminate Unknowns and learn from Evidence
  • 27. P7: The proper Granularity of the Architecture is a Tradeoff
  • 28. Produce Delivery Design: Questions ● When can I rewrite the system? ○ Sales goals will tell you, OK, to rewrite in a year or so ○ Build on top of a single cloud ● How performance-sensitive is my system? ○ Depends on sales forecasts? Likely No. ● How skilled is my team? ○ Find out ● Time to market? ○ Likely, we need this pretty fast? ● What are hard problems? ○ How to handle perishability in the system? ○ Low-latency WAN networks ○ Security
  • 29. Produce Delivery Design: Principles ● Do less and as late as possible ○ MVP is built around key experiences, learns from users ● Make decisions and bind the scope ○ Set down performance targets ● Design deeply, implement slowly ○ Define APIs, understand future scenarios, implement the MVP ● Use iterative thin-slice strategy ○ Stage it, then use Growth Hacking to iterate ● Eliminate unknowns and learn from evidence ○ Build enough traceability ○ Test the thin slice to ensure performance ○ Verify third-party tools, APIs ○ Can simple DB handle it? ○ Growth Hack the Product
  • 30. Book Outline ● Part II ○ Background: Performance, UX ● Part III ○ MacroArchitecture ■ Chapter 5: Introduction ■ Chapter 6: Coordination ■ Chapter 7: Preserving Consistency of State Chapter 8: Handling Security ■ Chapter 9: Handling HA and Scale Chapter 10: Microservices Considerations ○ How to write a service ○ How to Build Stable systems ● Part III ○ Putting everything together
  • 31. Conclusion ● Building Great Software Designs is about handling uncertainty ● We need to use a fluid approach rather than rigid principles, such as maximizing options ● Five Questions gives you a framework to understand ● Six Principles gives you a framework to make decisions ● It is not a formula but requires careful consideration, and great designs can’t come from formulas. You must think!! Uncertainty is leaders responsibility