SlideShare a Scribd company logo
1 of 61
Distributed
Architecture
Introduction to
What is Architecture?
A software architecture
is an abstract view of a
software system
distinct from the details
of implementation,
algorithms, and data
representation.
SEI @ Carnegie Mellon
Why Architecture Matters
Accidental Architecture
Every… system has an
architecture. While
some of these
architectures are
intentional, most
appear to be accidentalGrady Booch
Requirements
Analysis
Design
Code and Test
Integration
System Test
Waterfall Process
Requirements
Analysis
Design
Code and Test
Integration
System Test
Waterfall Process
Analysis
Paralysis
Massive
Integration
Design divorced
from reality
Manifesto for Agile Software Development
We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to value:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on
the right, we value the items on the left more.
Scrum: An agile Process
Architect Code
Techies crave Extremes
Functional requirements
What the system should do.
• Use cases, User stories, acceptance criteria
• Defines passing QA
• Day to day you focus on this
Nonfunctional requirements
What the system should be.
• Extremely expensive or impossible to “fix”
later on
• Defined passing Production
• Assumed by your customers and users
Nonfunctional Requirements
• Availability
• Stability
• Efficiency
• Reliability
• Maintainability
• Extensibility
• Fault Tolerance
• Security
• Capacity
• Latency
• Flexibility
• Scalability
Functional:
Passed QA
Beautiful site (in my opinion)
Easy to use
Nonfunctional:
Failed Production
Availability
Stability
Latency
Capacity
Throughput
ArchitectureThere is no best architecture
Pacemakers and Guided Missiles
The Flying Buttress
Patterns
Example: Layered Architecture
Three Tier Architecture
The classic 3 tier architecture
N-Tier Architecture
Because three tiers wasn’t enough!
N-Tier Architecture
SHAREPOINT
BIZTALK
SQL SERVER
Windows Server 2008
SMS
License
managementIIS
Questions about Architecture?
Distributed Architecture
Designs appropriate for
small brochureware
websites fail outrageously
when applied to thousand-
user, transactional,
distributed systems...
Michael T. Nygard
Key Constraints on Distributed Systems
• Stability
• Reliability and fault tolerance
• Consistency
• Capacity and Scalability
• Security
Scenario: Stability
You are the lead developer on a national health
care site that will register millions of users a week.
You are responsible for the signup process.
Your team must verify the identity of users with a
third party API. You call the service and the third
party system will return a boolean true if the
identity is valid or false otherwise.
private string Register(RegistrationInfo registrationInfo)
{
try
{
bool validIdentity = identityService.verifyIdentity(registrationInfo);
if (validIdentity)
{
database.save(registrationInfo);
return “register_success.htm";
}
return “register_failure.htm";
}
catch (Exception)
{
return "errorpage.htm";
}
}
6. Registered
Identity
Verification
Database
2. Verify
3. Verified
Site Server
Stability
4. Save User5. User Saved
1. Register
6. Registered
Identity
Verification
Database
2. Verify
3. Verified
Site Server
Unbalanced Capacities
4. Save User5. User Saved
1. Register
Identity
Verification
Blocked Threads
Site Server
Verify sally
Verify bob
joe verified
Verify joe
Verify sally
Verify joe
Verify bob
Verify bob
Verify bob
Verify bob
Verify bob
joe verified
Cascading Failures
Site Server
Site
Server
Site
Server
Site
Server
private string Register(RegistrationInfo registrationInfo)
{
try
{
identityService.Timeout = 10000;
bool validIdentity = identityService.verifyIdentity(registrationInfo);
if (verified)
{
db.save(registrationInfo);
return “register_success.htm";
}
return “register_failure.htm";
}
catch (Exception)
{
return "errorpage.htm";
}
}
Pattern 1: Timeouts
Identity
Verification
Pattern 1: Timeouts
Site Server
private void BeginRegister(RegistrationInfo registrationInfo, Function<string> callback)
{
try
{
identityService.EndIdentity += identityService_EndIdentity(callback)
identityService.BeginIdentity(registrationInfo);
}
catch (Exception)
{
callback("errorpage");
}
}
private void identityService_EndIdentity(bool success, Function<string> callback)
{
if (success)
{
callback("register_success.htm");
}
callback("register_failure.htm");
}
Pattern 2: Non-blocking I/O
Pattern 2: Non-blocking I/O
Identity
Verification
Site Server
For Users…
==
The site is stable. We’re still failing.
What’s the president recommending?
What might be happening
Thank you. We’ll email
you when you are
verified.
What might be happening
Identity
Verification
“The” Registration Process
When two principles
are pushing in opposite
directions, some
underlying assumption
is wrong. Often the
word the is the culpritUdi Dahan
Read this again
You are the lead developer on a national health
care site that will register millions of users a week.
You are responsible for the signup process.
Your team must verify the identity of users with a
third party API. You call the service and the third
party system will return a boolean true if the
identity is valid or false otherwise.
Pattern 3: Decoupling
Site Server
Thank you. We’ll email
you when you are
verified
Pending
Registration
Database
Pattern 3: Decoupling
Pending
Registration
Database
Verification
Application
Identity
Verification
Scenario 2: Reliability
You are the lead developer on a hospital’s
prescription filling service. Your RX wholesaler has
provided you with an HTTPS endpoint to integrate
with.
It is critical a prescription is not accidently
prescribed twice and that prescriptions are not
lost.
5. Success
RX Service
2. Fill RX
3. RX ID
Site Server
Reliability
1. Prescribe
Database
4. RX ID and Fill Info5. Record Updated
Invoking the Serviceprivate string Prescribe(PrescriptionInfo prescriptionInfo)
{
try
{
RxService rxService = new RxService();
int rxID = rxService.Prescribe(prescriptionInfo);
database.Save(rxId, prescriptionInfo);
return "success.htm";
}
catch (Exception)
{
return "errorpage.htm";
}
}
404 Timeout
RX Service
2. Prescribe
Site Server
What if the network goes down?
1. Prescribe
Invoking the Serviceprivate string Prescribe(PrescriptionInfo prescriptionInfo)
{
try
{
RxService rxService = new RxService();
int rxID = rxService.Prescribe(prescriptionInfo);
database.Save(rxId, prescriptionInfo);
return "success.htm";
}
catch (Exception)
{
return "errorpage.htm";
}
}
RX ServiceSite Server
Can I retry?
Prescribe
RX Service
Site Server
Prescribe
Got it, but I couldn’t get Back to you.
404 Timeout
RX ServiceSite Server
Pattern 1: Idempotency
Prescribe
RX Service
Site Server
Prescribe
Got it, but I couldn’t get Back to you.
404 Timeout
Sheesh… I already got it!
5. Success
RX Service
2. Fill RX
3. RX ID
Site Server
What if the database is down?
1. Prescribe
Database
4. Update Patient Record
Invoking the Serviceprivate string Prescribe(PrescriptionInfo prescriptionInfo)
{
try
{
RxService rxService = new RxService();
int rxID = rxService.Prescribe(prescriptionInfo);
database.Save(rxId, prescriptionInfo);
return "success.htm";
}
catch (Exception)
{
return "errorpage.htm";
}
}
Can We Guarantee this code?private string Prescribe(PrescriptionInfo prescriptionInfo)
{
try
{
RxService rxService = new RxService();
int rxID = rxService.Prescribe(prescriptionInfo);
database.Save(rxId, prescriptionInfo);
return "success.htm";
}
catch (Exception)
{
return "errorpage.htm";
}
}
Pattern 2: Transactional Queues
3. Pending
Site Server
Transactional Queue
1. Prescribe
Fill RX Message
Queue
Inserting into a Queue
private string Prescribe(PrescriptionInfo prescriptionInfo)
{
try
{
Queue.save(new RXPrescribeMessage(prescriptionInfo));
return "rxPending.htm";
}
catch (Exception)
{
return "errorpage.htm";
}
}
Transactional Queue
Queue
rxPrescribeMessage
RX Service
Fill rx
rx ID
Handler
rxDBUpdateMessage
Transactional Queue
Queue
rxDBUpdateMessage Save rx
Handler Database
Message Handlers
public void HandleRXPrescribeMessage(RXPrescribeMessage message)
{
var prescriptionInfo = message.prescriptionInfo;
RxService rxService = new RxService();
int rxID = rxService.Prescribe(prescriptionInfo);
Queue.save(new RXDBUpdateMessage(rxID, prescriptionInfo));
}
public void HandleDBUpdateMessage(RXDBUpdateMessage message)
{
var rxId = message.rxID;
var prescriptionInfo = message.prescriptionInfo
database.Update(message.rxID, message.prescriptionInfo)
}
Nygard, Michael T.
Cynical software expects bad
things to happen and is never
surprised when they do.
Cynical software doesn’t even
trust itself.. It refuses to get
too intimate with other
systems, because it could get
hurt.

More Related Content

What's hot

MongoDB World 2018: Evolving your Data Access with MongoDB Stitch
MongoDB World 2018: Evolving your Data Access with MongoDB StitchMongoDB World 2018: Evolving your Data Access with MongoDB Stitch
MongoDB World 2018: Evolving your Data Access with MongoDB StitchMongoDB
 
Autodiscover flow in an office 365 environment part 3#3 part 31#36
Autodiscover flow in an office 365 environment  part 3#3  part 31#36Autodiscover flow in an office 365 environment  part 3#3  part 31#36
Autodiscover flow in an office 365 environment part 3#3 part 31#36Eyal Doron
 
Foreman Single Sign-On Made Easy with Keycloak
Foreman Single Sign-On Made Easy with KeycloakForeman Single Sign-On Made Easy with Keycloak
Foreman Single Sign-On Made Easy with KeycloakNikhil Kathole
 
OReilly SACON2018 - Events on the outside, on the inside, and at the core
OReilly SACON2018 - Events on the outside, on the inside, and at the coreOReilly SACON2018 - Events on the outside, on the inside, and at the core
OReilly SACON2018 - Events on the outside, on the inside, and at the coreChris Richardson
 
Securing your APIs with OAuth, OpenID, and OpenID Connect
Securing your APIs with OAuth, OpenID, and OpenID ConnectSecuring your APIs with OAuth, OpenID, and OpenID Connect
Securing your APIs with OAuth, OpenID, and OpenID ConnectManish Pandit
 

What's hot (6)

MongoDB World 2018: Evolving your Data Access with MongoDB Stitch
MongoDB World 2018: Evolving your Data Access with MongoDB StitchMongoDB World 2018: Evolving your Data Access with MongoDB Stitch
MongoDB World 2018: Evolving your Data Access with MongoDB Stitch
 
Autodiscover flow in an office 365 environment part 3#3 part 31#36
Autodiscover flow in an office 365 environment  part 3#3  part 31#36Autodiscover flow in an office 365 environment  part 3#3  part 31#36
Autodiscover flow in an office 365 environment part 3#3 part 31#36
 
Foreman Single Sign-On Made Easy with Keycloak
Foreman Single Sign-On Made Easy with KeycloakForeman Single Sign-On Made Easy with Keycloak
Foreman Single Sign-On Made Easy with Keycloak
 
OReilly SACON2018 - Events on the outside, on the inside, and at the core
OReilly SACON2018 - Events on the outside, on the inside, and at the coreOReilly SACON2018 - Events on the outside, on the inside, and at the core
OReilly SACON2018 - Events on the outside, on the inside, and at the core
 
Securing your APIs with OAuth, OpenID, and OpenID Connect
Securing your APIs with OAuth, OpenID, and OpenID ConnectSecuring your APIs with OAuth, OpenID, and OpenID Connect
Securing your APIs with OAuth, OpenID, and OpenID Connect
 
OpenID Connect Federation
OpenID Connect FederationOpenID Connect Federation
OpenID Connect Federation
 

Viewers also liked

Unit 1 architecture of distributed systems
Unit 1 architecture of distributed systemsUnit 1 architecture of distributed systems
Unit 1 architecture of distributed systemskaran2190
 
Migrate from database file system to asm
Migrate from database file system to asmMigrate from database file system to asm
Migrate from database file system to asmSurender Martha
 
A Distributed Architecture System for Recognizing Textual Entailment
A Distributed Architecture System for Recognizing Textual EntailmentA Distributed Architecture System for Recognizing Textual Entailment
A Distributed Architecture System for Recognizing Textual EntailmentFaculty of Computer Science
 
Database File System
Database File SystemDatabase File System
Database File SystemAnas R.
 
Scalable Distributed System Architecture
Scalable Distributed System ArchitectureScalable Distributed System Architecture
Scalable Distributed System ArchitectureNicholas van de Walle
 
Distributed Database Management System(DDMS)
Distributed Database Management System(DDMS)Distributed Database Management System(DDMS)
Distributed Database Management System(DDMS)mobeen.laws
 
Multimedia database
Multimedia databaseMultimedia database
Multimedia databaseRashmi Agale
 
Lecture 11 - distributed database
Lecture 11 - distributed databaseLecture 11 - distributed database
Lecture 11 - distributed databaseHoneySah
 
Lecture 3 multimedia databases
Lecture 3   multimedia databasesLecture 3   multimedia databases
Lecture 3 multimedia databasesRanjana N Jinde
 
MultiMedia dbms
MultiMedia dbmsMultiMedia dbms
MultiMedia dbmsTech_MX
 
Distributed database management systems
Distributed database management systemsDistributed database management systems
Distributed database management systemsDhani Ahmad
 
Multimedia Database
Multimedia Database Multimedia Database
Multimedia Database Avnish Patel
 
Lecture 10 distributed database management system
Lecture 10   distributed database management systemLecture 10   distributed database management system
Lecture 10 distributed database management systememailharmeet
 
Distributed Database System
Distributed Database SystemDistributed Database System
Distributed Database SystemSulemang
 
Presentation on Database management system
Presentation on Database management systemPresentation on Database management system
Presentation on Database management systemPrerana Bhattarai
 

Viewers also liked (18)

Unit 1 architecture of distributed systems
Unit 1 architecture of distributed systemsUnit 1 architecture of distributed systems
Unit 1 architecture of distributed systems
 
Migrate from database file system to asm
Migrate from database file system to asmMigrate from database file system to asm
Migrate from database file system to asm
 
A Distributed Architecture System for Recognizing Textual Entailment
A Distributed Architecture System for Recognizing Textual EntailmentA Distributed Architecture System for Recognizing Textual Entailment
A Distributed Architecture System for Recognizing Textual Entailment
 
Database File System
Database File SystemDatabase File System
Database File System
 
Scalable Distributed System Architecture
Scalable Distributed System ArchitectureScalable Distributed System Architecture
Scalable Distributed System Architecture
 
Multimedia db system
Multimedia db systemMultimedia db system
Multimedia db system
 
Distributed Database Management System(DDMS)
Distributed Database Management System(DDMS)Distributed Database Management System(DDMS)
Distributed Database Management System(DDMS)
 
Multimedia database
Multimedia databaseMultimedia database
Multimedia database
 
Multimedia Database
Multimedia DatabaseMultimedia Database
Multimedia Database
 
Multimedia database
Multimedia databaseMultimedia database
Multimedia database
 
Lecture 11 - distributed database
Lecture 11 - distributed databaseLecture 11 - distributed database
Lecture 11 - distributed database
 
Lecture 3 multimedia databases
Lecture 3   multimedia databasesLecture 3   multimedia databases
Lecture 3 multimedia databases
 
MultiMedia dbms
MultiMedia dbmsMultiMedia dbms
MultiMedia dbms
 
Distributed database management systems
Distributed database management systemsDistributed database management systems
Distributed database management systems
 
Multimedia Database
Multimedia Database Multimedia Database
Multimedia Database
 
Lecture 10 distributed database management system
Lecture 10   distributed database management systemLecture 10   distributed database management system
Lecture 10 distributed database management system
 
Distributed Database System
Distributed Database SystemDistributed Database System
Distributed Database System
 
Presentation on Database management system
Presentation on Database management systemPresentation on Database management system
Presentation on Database management system
 

Similar to Introduction to Distributed Architecture

MongoDB World 2019: Securing Application Data from Day One
MongoDB World 2019: Securing Application Data from Day OneMongoDB World 2019: Securing Application Data from Day One
MongoDB World 2019: Securing Application Data from Day OneMongoDB
 
[2019.1] 하이퍼레저 패브릭 v1.3, v1.4 새로운 기능
[2019.1] 하이퍼레저 패브릭 v1.3, v1.4 새로운 기능[2019.1] 하이퍼레저 패브릭 v1.3, v1.4 새로운 기능
[2019.1] 하이퍼레저 패브릭 v1.3, v1.4 새로운 기능Hyperledger Korea User Group
 
Sviluppare Applicazioni Real Time con AppSync Deck.pptx
Sviluppare Applicazioni Real Time con AppSync Deck.pptxSviluppare Applicazioni Real Time con AppSync Deck.pptx
Sviluppare Applicazioni Real Time con AppSync Deck.pptxAmazon Web Services
 
Code your Own: Authentication Provider for Blackboard Learn
Code your Own: Authentication Provider for Blackboard LearnCode your Own: Authentication Provider for Blackboard Learn
Code your Own: Authentication Provider for Blackboard LearnDan Rinzel
 
Web Services Testing
Web Services TestingWeb Services Testing
Web Services TestingDataArt
 
Application Security Workshop
Application Security Workshop Application Security Workshop
Application Security Workshop Priyanka Aash
 
Integrating Force.com with Heroku
Integrating Force.com with HerokuIntegrating Force.com with Heroku
Integrating Force.com with HerokuPat Patterson
 
Paul Lammertsma: Account manager & sync
Paul Lammertsma: Account manager & syncPaul Lammertsma: Account manager & sync
Paul Lammertsma: Account manager & syncmdevtalk
 
Salesforce1 Platform for programmers
Salesforce1 Platform for programmersSalesforce1 Platform for programmers
Salesforce1 Platform for programmersSalesforce Developers
 
Event-Based API Patterns and Practices
Event-Based API Patterns and PracticesEvent-Based API Patterns and Practices
Event-Based API Patterns and PracticesLaunchAny
 
Microservices in Node.js: Patterns and techniques
Microservices in Node.js: Patterns and techniquesMicroservices in Node.js: Patterns and techniques
Microservices in Node.js: Patterns and techniquesThe Software House
 
CQRS and Event Sourcing
CQRS and Event Sourcing CQRS and Event Sourcing
CQRS and Event Sourcing Inho Kang
 
[Hands-on] CQRS(Command Query Responsibility Segregation) 와 Event Sourcing 패턴 실습
[Hands-on] CQRS(Command Query Responsibility Segregation) 와 Event Sourcing 패턴 실습[Hands-on] CQRS(Command Query Responsibility Segregation) 와 Event Sourcing 패턴 실습
[Hands-on] CQRS(Command Query Responsibility Segregation) 와 Event Sourcing 패턴 실습Oracle Korea
 
Recipes for a successful production cloudfoundry deployment - CF Summit 2014
Recipes for a successful production cloudfoundry deployment - CF Summit 2014Recipes for a successful production cloudfoundry deployment - CF Summit 2014
Recipes for a successful production cloudfoundry deployment - CF Summit 2014Vinícius Carvalho
 
Cloud Foundry Cookbook: Recipes for a Successful Cloud Foundry Deployment in ...
Cloud Foundry Cookbook: Recipes for a Successful Cloud Foundry Deployment in ...Cloud Foundry Cookbook: Recipes for a Successful Cloud Foundry Deployment in ...
Cloud Foundry Cookbook: Recipes for a Successful Cloud Foundry Deployment in ...VMware Tanzu
 

Similar to Introduction to Distributed Architecture (20)

MongoDB World 2019: Securing Application Data from Day One
MongoDB World 2019: Securing Application Data from Day OneMongoDB World 2019: Securing Application Data from Day One
MongoDB World 2019: Securing Application Data from Day One
 
ELEVATE Paris
ELEVATE ParisELEVATE Paris
ELEVATE Paris
 
[2019.1] 하이퍼레저 패브릭 v1.3, v1.4 새로운 기능
[2019.1] 하이퍼레저 패브릭 v1.3, v1.4 새로운 기능[2019.1] 하이퍼레저 패브릭 v1.3, v1.4 새로운 기능
[2019.1] 하이퍼레저 패브릭 v1.3, v1.4 새로운 기능
 
Sviluppare Applicazioni Real Time con AppSync Deck.pptx
Sviluppare Applicazioni Real Time con AppSync Deck.pptxSviluppare Applicazioni Real Time con AppSync Deck.pptx
Sviluppare Applicazioni Real Time con AppSync Deck.pptx
 
Salesforce and sap integration
Salesforce and sap integrationSalesforce and sap integration
Salesforce and sap integration
 
Code your Own: Authentication Provider for Blackboard Learn
Code your Own: Authentication Provider for Blackboard LearnCode your Own: Authentication Provider for Blackboard Learn
Code your Own: Authentication Provider for Blackboard Learn
 
Web Services Testing
Web Services TestingWeb Services Testing
Web Services Testing
 
Bh Win 03 Rileybollefer
Bh Win 03 RileybolleferBh Win 03 Rileybollefer
Bh Win 03 Rileybollefer
 
Application Security Workshop
Application Security Workshop Application Security Workshop
Application Security Workshop
 
Switch to Backend 2023
Switch to Backend 2023Switch to Backend 2023
Switch to Backend 2023
 
Integrating Force.com with Heroku
Integrating Force.com with HerokuIntegrating Force.com with Heroku
Integrating Force.com with Heroku
 
Paul Lammertsma: Account manager & sync
Paul Lammertsma: Account manager & syncPaul Lammertsma: Account manager & sync
Paul Lammertsma: Account manager & sync
 
Salesforce1 Platform for programmers
Salesforce1 Platform for programmersSalesforce1 Platform for programmers
Salesforce1 Platform for programmers
 
Event-Based API Patterns and Practices
Event-Based API Patterns and PracticesEvent-Based API Patterns and Practices
Event-Based API Patterns and Practices
 
ATD11_WebAPISecurity
ATD11_WebAPISecurityATD11_WebAPISecurity
ATD11_WebAPISecurity
 
Microservices in Node.js: Patterns and techniques
Microservices in Node.js: Patterns and techniquesMicroservices in Node.js: Patterns and techniques
Microservices in Node.js: Patterns and techniques
 
CQRS and Event Sourcing
CQRS and Event Sourcing CQRS and Event Sourcing
CQRS and Event Sourcing
 
[Hands-on] CQRS(Command Query Responsibility Segregation) 와 Event Sourcing 패턴 실습
[Hands-on] CQRS(Command Query Responsibility Segregation) 와 Event Sourcing 패턴 실습[Hands-on] CQRS(Command Query Responsibility Segregation) 와 Event Sourcing 패턴 실습
[Hands-on] CQRS(Command Query Responsibility Segregation) 와 Event Sourcing 패턴 실습
 
Recipes for a successful production cloudfoundry deployment - CF Summit 2014
Recipes for a successful production cloudfoundry deployment - CF Summit 2014Recipes for a successful production cloudfoundry deployment - CF Summit 2014
Recipes for a successful production cloudfoundry deployment - CF Summit 2014
 
Cloud Foundry Cookbook: Recipes for a Successful Cloud Foundry Deployment in ...
Cloud Foundry Cookbook: Recipes for a Successful Cloud Foundry Deployment in ...Cloud Foundry Cookbook: Recipes for a Successful Cloud Foundry Deployment in ...
Cloud Foundry Cookbook: Recipes for a Successful Cloud Foundry Deployment in ...
 

Recently uploaded

Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdfLinux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdfFIDO Alliance
 
PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsPLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsStefano
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxDavid Michel
 
Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutesconfluent
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?Mark Billinghurst
 
Connecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAKConnecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAKUXDXConf
 
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...CzechDreamin
 
Top 10 Symfony Development Companies 2024
Top 10 Symfony Development Companies 2024Top 10 Symfony Development Companies 2024
Top 10 Symfony Development Companies 2024TopCSSGallery
 
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptxWSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptxJennifer Lim
 
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...CzechDreamin
 
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...FIDO Alliance
 
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Patrick Viafore
 
AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101vincent683379
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераMark Opanasiuk
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaCzechDreamin
 
Syngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdfSyngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdfSyngulon
 
Designing for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at ComcastDesigning for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at ComcastUXDXConf
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoTAnalytics
 
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...FIDO Alliance
 
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...FIDO Alliance
 

Recently uploaded (20)

Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdfLinux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
 
PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsPLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. Startups
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
 
Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutes
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?
 
Connecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAKConnecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAK
 
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
 
Top 10 Symfony Development Companies 2024
Top 10 Symfony Development Companies 2024Top 10 Symfony Development Companies 2024
Top 10 Symfony Development Companies 2024
 
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptxWSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
 
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
 
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
 
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024
 
AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджера
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara Laskowska
 
Syngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdfSyngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdf
 
Designing for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at ComcastDesigning for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at Comcast
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024
 
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
 
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
 

Introduction to Distributed Architecture

Editor's Notes

  1. Correct but lacking. Why would I need a view distinct form the code? Is architecture just busy work?
  2. Of the things you will learn at this conference, I believe this will be the most important stuff for your long term career.
  3. What causes accidental architecture? - Misusing agile methods - Bad estimation. If you told your customer we’re not going to do architecture because we think you don’t want us estimating for it… - The expectation that a product will provide an architecture.
  4. Often called the “ilities” Your customers and users don’t know they need to tell you these things. Assumptions made by your customer: - The site is going to be performant. - The site can handle an infinite number of users. - The site will be secure - The site will maintain itself. We already paid for it – look the project is done. You don’t need to continue working on this thing do you? We spent millions! - The site will be stable. Why would the site ever need to be down? 5 9’s. - There shouldn’t be runtime errors. We went through the entire QA process! - Why would the number of users on a site even matter? Look at Google! It’s just a search box! Ultimately defined by physics (The twelve fallacies of distributed computing) - Bandwidth - Moore’s law - Speed of the light - spinning rust What about the cloud? - You too can spend an infinite amount of money in the cloud!
  5. The constraints and requirements very substantially for each system. Beware if someone approaches you in a back alley and says “pssst…” wanna buy an architecture
  6. I better choose a memory efficient architectures for the Pacemaker. Do I care if I have an efficient garbage collection if my computer is destroyed upon hitting its target?
  7. In physical architecture we see certain patterns such as the flying buttress here. Remediates lateral forces Allows us to build less massively and have stained glass windows
  8. Let’s think instead of architectural patterns.
  9. Each architectural pattern will have pros and cons Who can think of something good about this pattern? 1 Understand a single layer without understanding the whole 2 Substitute layers so long as their interfaces don’t change 3 Reduce coupling
  10. The classic three tier enterprise architecture is an example of a layered architecture.
  11. Too much of a good thing? And N-Tier architecture is also a layered architecture
  12. The enterprise is and always has been starved for good architecture. Beware vendors promoting architectures. They surely have some products to sell you.
  13. Therefore… When dealing with distributed systems we should choose patterns that mitigate constraints relevant to distributed systems.
  14. Unbalanced Capacity
  15. Your system is at the mercy of this third party system
  16. Their problems become our problems very quickly
  17. While not perfect, Timeouts are your first line of defense. Always use timeouts.
  18. What about Node.JS? With non blocking I/O where a response is required, we’ve really just kicked the can.
  19. RLY?
  20. Zen like patience required for this job.
  21. With non blocking I/O where a response is required, we’ve really just kicked the can.
  22. With non blocking I/O where a response is required, we’ve really just kicked the can.
  23. Unbalanced Capacity
  24. Unbalanced Capacity
  25. Unbalanced Capacity
  26. Unbalanced Capacity