SlideShare a Scribd company logo
Building stable applications
with PHP and 3rd
party services
What does a stable application look like?
Behaviour is in line with expectations:
Mainly unaffected by application environment
Mainly unaffected by infrastructure changes
Service quality is acceptable
What promotes application instability?
Application instability is promoted when code is:
Tightly coupled and overly complex / simple
Dependent on 3rd
party code / services
Uncoupled but fails to solve problems
How can we promote application stability?
We can promote application stability by:
Understanding the problems we're solving
Learning from and adapting to failure
Testing against expected outcomes
Applications evolve....
In the beginning, quickly add new features
It started as a blog and now....
Frankencode!
_
q[-_-]p
| | “ | |
|| ||
# #
A challenge for all of us
Balancing pragmatism and perfectionism
Over time we can expect:
Existing bugs found and new bugs introduced
New requirements / enhanced functionality
People will join and leave project teams
New requirements and enhancements....
We can promote application stability by:
Understanding the problems we're solving
Learning from and adapting to failure
Testing against expected outcomes
High level requirement analysis
Who is using this application / feature?
What is the impact of using /not using it?
When it comes to the “how to”....
We have to consider our approach:
Develop custom features from the ground up?
Leverage an existing library or service?
A mixture of the above?
Additional factors should affect the choice....
Consider:
Cost of implementation / maintenance
Cost of failing to implement / maintain
Specific business rules
Available budget
Timeline
Not enough information to make a choice
How can we fill gaps in our understanding?
Rapid prototyping
We can promote application stability by:
Understanding the problems we're solving
Learning from and adapting to failure
Testing against expected outcomes
Make a smaller MVP....
Prove a concept:
Fail fast, review and adapt
Understand challenges
Quick implementation
Remember to stop
Remembering to stop
What are we trying to achieve?
What should the specific outcomes be?
Have we met / Can we meet the outcomes?
We can promote application stability by:
Understanding the problems we're solving
Learning from and adapting to failure
Testing against expected outcomes
Start by writing your test definitions
Live coding demo
When we know the implications we can
make better estimates....
Choosing to leverage a 3rd
party service?
Think carefully and ask questions
Will the application break if the service fails?
What is the impact if the application breaks?
What is the impact if it doesn't break?
Good questions, we need to go deeper....
3rd
party service risk questions
What happens if the service provider:
goes out of business?
deprecates the API we're using?
changes arrangements for API access?
Don't rush in, design expecting failure....
Real world lessons:
Design based on expecting services to fail
Netflix infrastructure on AWS
"The best way to avoid failure is to fail constantly"
Source: http://techblog.netflix.com/2010/12/5-lessons-weve-learned-using-aws.html
Netflix contributing to the community
"we are now proud to announce that the source code for
the founding member of the Simian Army, Chaos
Monkey, is available to the community."
Source: http://techblog.netflix.com/2012/07/chaos-monkey-released-into-wild.html
Netflix Simian Army
"The Simian Army is a suite of tools for keeping your cloud
operating in top form. Chaos Monkey, the first member, is a
resiliency tool that helps ensure that your applications can
tolerate random instance failures"
https://github.com/Netflix/SimianArmy
Closing thoughts and questions
/ Thanks
_ /
q[-_-]p
| | “ | |
|| ||
# #

More Related Content

What's hot

Background thread
Background threadBackground thread
Background thread
msarangam
 
Initail Skills Analysis
Initail Skills AnalysisInitail Skills Analysis
Initail Skills Analysis
alyblue98
 
Initial skills analysis
Initial skills analysisInitial skills analysis
Initial skills analysis
BenS18
 
Initial+skills+analysis+ (1)
Initial+skills+analysis+ (1)Initial+skills+analysis+ (1)
Initial+skills+analysis+ (1)
GGGLzhang
 
Initialskillsanalysis
InitialskillsanalysisInitialskillsanalysis
Initialskillsanalysis
Eleanor Round
 
Initial skills analysis
Initial skills analysisInitial skills analysis
Initial skills analysis
roydaboy
 
Initial skills analysis
Initial skills analysisInitial skills analysis
Initial skills analysis
DavidKelly_
 
initial skills analysis
initial skills analysisinitial skills analysis
initial skills analysis
tylersalisbury97
 
Skills-Media
Skills-MediaSkills-Media
Skills-Media
CraigBryden
 
Initial Skills Analysis. Scott Appleyard
Initial Skills Analysis. Scott AppleyardInitial Skills Analysis. Scott Appleyard
Initial Skills Analysis. Scott Appleyard
ScottAppleyard
 
Skills Analysis Sheet
Skills Analysis SheetSkills Analysis Sheet
Skills Analysis Sheet
EmilyMoorby
 
Initial skills analysis
Initial skills analysisInitial skills analysis
Initial skills analysis
glennmurphy97
 
Initial Skills Analysis
Initial Skills AnalysisInitial Skills Analysis
Initial Skills Analysis
LaurenJiggins
 
Initial skills analysis
Initial skills analysisInitial skills analysis
Initial skills analysis
Conor13
 
initial skills analysis
initial skills analysisinitial skills analysis
initial skills analysis
georgia morrell
 
Initial skills analysis
Initial skills analysis Initial skills analysis
Initial skills analysis
Sally Pickford
 
Initialskillsanalysis
InitialskillsanalysisInitialskillsanalysis
Initialskillsanalysis
JasonBrown321
 
Initial skills analysis Adam Gofton
Initial skills analysis Adam GoftonInitial skills analysis Adam Gofton
Initial skills analysis Adam Gofton
adamgofton
 

What's hot (18)

Background thread
Background threadBackground thread
Background thread
 
Initail Skills Analysis
Initail Skills AnalysisInitail Skills Analysis
Initail Skills Analysis
 
Initial skills analysis
Initial skills analysisInitial skills analysis
Initial skills analysis
 
Initial+skills+analysis+ (1)
Initial+skills+analysis+ (1)Initial+skills+analysis+ (1)
Initial+skills+analysis+ (1)
 
Initialskillsanalysis
InitialskillsanalysisInitialskillsanalysis
Initialskillsanalysis
 
Initial skills analysis
Initial skills analysisInitial skills analysis
Initial skills analysis
 
Initial skills analysis
Initial skills analysisInitial skills analysis
Initial skills analysis
 
initial skills analysis
initial skills analysisinitial skills analysis
initial skills analysis
 
Skills-Media
Skills-MediaSkills-Media
Skills-Media
 
Initial Skills Analysis. Scott Appleyard
Initial Skills Analysis. Scott AppleyardInitial Skills Analysis. Scott Appleyard
Initial Skills Analysis. Scott Appleyard
 
Skills Analysis Sheet
Skills Analysis SheetSkills Analysis Sheet
Skills Analysis Sheet
 
Initial skills analysis
Initial skills analysisInitial skills analysis
Initial skills analysis
 
Initial Skills Analysis
Initial Skills AnalysisInitial Skills Analysis
Initial Skills Analysis
 
Initial skills analysis
Initial skills analysisInitial skills analysis
Initial skills analysis
 
initial skills analysis
initial skills analysisinitial skills analysis
initial skills analysis
 
Initial skills analysis
Initial skills analysis Initial skills analysis
Initial skills analysis
 
Initialskillsanalysis
InitialskillsanalysisInitialskillsanalysis
Initialskillsanalysis
 
Initial skills analysis Adam Gofton
Initial skills analysis Adam GoftonInitial skills analysis Adam Gofton
Initial skills analysis Adam Gofton
 

Similar to Building stable applications with PHP and 3rd party services

Manualtestinginterviewquestionbyinfotech 100901071035-phpapp01
Manualtestinginterviewquestionbyinfotech 100901071035-phpapp01Manualtestinginterviewquestionbyinfotech 100901071035-phpapp01
Manualtestinginterviewquestionbyinfotech 100901071035-phpapp01
Anshuman Rai
 
Manual testing interview questions by infotech
Manual testing interview questions by infotech Manual testing interview questions by infotech
Manual testing interview questions by infotech
suhasreddy1
 
Manual testing interview question by INFOTECH
Manual testing interview question by INFOTECHManual testing interview question by INFOTECH
Manual testing interview question by INFOTECH
Pravinsinh
 
UIS staff seminar 28 1-2014
UIS staff seminar 28 1-2014UIS staff seminar 28 1-2014
UIS staff seminar 28 1-2014
Nick Mattin
 
Bcc exceed ste_cert
Bcc exceed ste_certBcc exceed ste_cert
Bcc exceed ste_cert
Susan L.
 
5 Tips to Go for Performance Testing Tools.pdf
5 Tips to Go for Performance Testing Tools.pdf5 Tips to Go for Performance Testing Tools.pdf
5 Tips to Go for Performance Testing Tools.pdf
RohitBhandari66
 
Software testing
Software testingSoftware testing
Software testing
anushatadkal
 
Mi0033 software engineering
Mi0033  software engineeringMi0033  software engineering
Mi0033 software engineering
smumbahelp
 
Slides from "Taking an Holistic Approach to Product Quality"
Slides from "Taking an Holistic Approach to Product Quality"Slides from "Taking an Holistic Approach to Product Quality"
Slides from "Taking an Holistic Approach to Product Quality"
Peter Marshall
 
The Agile Readiness Assessment Tool Essay
The Agile Readiness Assessment Tool EssayThe Agile Readiness Assessment Tool Essay
The Agile Readiness Assessment Tool Essay
Heidi Owens
 
Software QA Testing Company India Presentation - AAPNA Infotech
Software QA Testing Company India Presentation - AAPNA InfotechSoftware QA Testing Company India Presentation - AAPNA Infotech
Software QA Testing Company India Presentation - AAPNA Infotech
Aapna Infotech
 
Everything you need to know about cost effective web applications development
Everything you need to know about cost effective web applications developmentEverything you need to know about cost effective web applications development
Everything you need to know about cost effective web applications development
Seasia Infotech
 
Incident_Change_Resource_Detailed_Resume
Incident_Change_Resource_Detailed_ResumeIncident_Change_Resource_Detailed_Resume
Incident_Change_Resource_Detailed_Resume
K V Sarath Chandra Mouli
 
Irina Shimko, "Как эффективно говорить про проектные риски."
Irina Shimko, "Как эффективно говорить про проектные риски."Irina Shimko, "Как эффективно говорить про проектные риски."
Irina Shimko, "Как эффективно говорить про проектные риски."
Sigma Software
 
Insider's Guide to the AppExchange Security Review (Dreamforce 2015)
Insider's Guide to the AppExchange Security Review (Dreamforce 2015)Insider's Guide to the AppExchange Security Review (Dreamforce 2015)
Insider's Guide to the AppExchange Security Review (Dreamforce 2015)
Salesforce Partners
 
Info manual testing questions
Info manual testing questionsInfo manual testing questions
Info manual testing questions
Sandeep
 
Portal Deployment Best Practices | IBM Portal Excellence Conference 2009
Portal Deployment Best Practices | IBM Portal Excellence Conference 2009Portal Deployment Best Practices | IBM Portal Excellence Conference 2009
Portal Deployment Best Practices | IBM Portal Excellence Conference 2009
Perficient, Inc.
 
Istqb intro with question answer for exam preparation
Istqb intro with question answer for exam preparationIstqb intro with question answer for exam preparation
Istqb intro with question answer for exam preparation
Kevalkumar Shah
 
Business Proposal for Project
Business Proposal for ProjectBusiness Proposal for Project
Business Proposal for Project
Aftab Mirza
 
Microsoft Student Partners
Microsoft Student PartnersMicrosoft Student Partners
Microsoft Student Partners
Shuvrajyoti Roy
 

Similar to Building stable applications with PHP and 3rd party services (20)

Manualtestinginterviewquestionbyinfotech 100901071035-phpapp01
Manualtestinginterviewquestionbyinfotech 100901071035-phpapp01Manualtestinginterviewquestionbyinfotech 100901071035-phpapp01
Manualtestinginterviewquestionbyinfotech 100901071035-phpapp01
 
Manual testing interview questions by infotech
Manual testing interview questions by infotech Manual testing interview questions by infotech
Manual testing interview questions by infotech
 
Manual testing interview question by INFOTECH
Manual testing interview question by INFOTECHManual testing interview question by INFOTECH
Manual testing interview question by INFOTECH
 
UIS staff seminar 28 1-2014
UIS staff seminar 28 1-2014UIS staff seminar 28 1-2014
UIS staff seminar 28 1-2014
 
Bcc exceed ste_cert
Bcc exceed ste_certBcc exceed ste_cert
Bcc exceed ste_cert
 
5 Tips to Go for Performance Testing Tools.pdf
5 Tips to Go for Performance Testing Tools.pdf5 Tips to Go for Performance Testing Tools.pdf
5 Tips to Go for Performance Testing Tools.pdf
 
Software testing
Software testingSoftware testing
Software testing
 
Mi0033 software engineering
Mi0033  software engineeringMi0033  software engineering
Mi0033 software engineering
 
Slides from "Taking an Holistic Approach to Product Quality"
Slides from "Taking an Holistic Approach to Product Quality"Slides from "Taking an Holistic Approach to Product Quality"
Slides from "Taking an Holistic Approach to Product Quality"
 
The Agile Readiness Assessment Tool Essay
The Agile Readiness Assessment Tool EssayThe Agile Readiness Assessment Tool Essay
The Agile Readiness Assessment Tool Essay
 
Software QA Testing Company India Presentation - AAPNA Infotech
Software QA Testing Company India Presentation - AAPNA InfotechSoftware QA Testing Company India Presentation - AAPNA Infotech
Software QA Testing Company India Presentation - AAPNA Infotech
 
Everything you need to know about cost effective web applications development
Everything you need to know about cost effective web applications developmentEverything you need to know about cost effective web applications development
Everything you need to know about cost effective web applications development
 
Incident_Change_Resource_Detailed_Resume
Incident_Change_Resource_Detailed_ResumeIncident_Change_Resource_Detailed_Resume
Incident_Change_Resource_Detailed_Resume
 
Irina Shimko, "Как эффективно говорить про проектные риски."
Irina Shimko, "Как эффективно говорить про проектные риски."Irina Shimko, "Как эффективно говорить про проектные риски."
Irina Shimko, "Как эффективно говорить про проектные риски."
 
Insider's Guide to the AppExchange Security Review (Dreamforce 2015)
Insider's Guide to the AppExchange Security Review (Dreamforce 2015)Insider's Guide to the AppExchange Security Review (Dreamforce 2015)
Insider's Guide to the AppExchange Security Review (Dreamforce 2015)
 
Info manual testing questions
Info manual testing questionsInfo manual testing questions
Info manual testing questions
 
Portal Deployment Best Practices | IBM Portal Excellence Conference 2009
Portal Deployment Best Practices | IBM Portal Excellence Conference 2009Portal Deployment Best Practices | IBM Portal Excellence Conference 2009
Portal Deployment Best Practices | IBM Portal Excellence Conference 2009
 
Istqb intro with question answer for exam preparation
Istqb intro with question answer for exam preparationIstqb intro with question answer for exam preparation
Istqb intro with question answer for exam preparation
 
Business Proposal for Project
Business Proposal for ProjectBusiness Proposal for Project
Business Proposal for Project
 
Microsoft Student Partners
Microsoft Student PartnersMicrosoft Student Partners
Microsoft Student Partners
 

Recently uploaded

AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
Google
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
Sven Peters
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
Aftab Hussain
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
Shane Coughlan
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
Green Software Development
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
Hornet Dynamics
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
Philip Schwarz
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
Ayan Halder
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
ICS
 
Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)
Julian Hyde
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke
 
Oracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptxOracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptx
Remote DBA Services
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Łukasz Chruściel
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
mz5nrf0n
 
Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
brainerhub1
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Crescat
 
Using Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query PerformanceUsing Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query Performance
Grant Fritchey
 
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemUI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
Peter Muessig
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
Hornet Dynamics
 

Recently uploaded (20)

AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
 
Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
 
Oracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptxOracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptx
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
 
Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
 
Using Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query PerformanceUsing Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query Performance
 
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemUI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
 

Building stable applications with PHP and 3rd party services

  • 1. Building stable applications with PHP and 3rd party services
  • 2. What does a stable application look like?
  • 3. Behaviour is in line with expectations: Mainly unaffected by application environment Mainly unaffected by infrastructure changes Service quality is acceptable
  • 5. Application instability is promoted when code is: Tightly coupled and overly complex / simple Dependent on 3rd party code / services Uncoupled but fails to solve problems
  • 6. How can we promote application stability?
  • 7. We can promote application stability by: Understanding the problems we're solving Learning from and adapting to failure Testing against expected outcomes
  • 9. In the beginning, quickly add new features
  • 10. It started as a blog and now....
  • 12. A challenge for all of us Balancing pragmatism and perfectionism
  • 13. Over time we can expect: Existing bugs found and new bugs introduced New requirements / enhanced functionality People will join and leave project teams
  • 14. New requirements and enhancements....
  • 15. We can promote application stability by: Understanding the problems we're solving Learning from and adapting to failure Testing against expected outcomes
  • 16. High level requirement analysis Who is using this application / feature? What is the impact of using /not using it?
  • 17. When it comes to the “how to”.... We have to consider our approach: Develop custom features from the ground up? Leverage an existing library or service? A mixture of the above?
  • 18. Additional factors should affect the choice.... Consider: Cost of implementation / maintenance Cost of failing to implement / maintain Specific business rules Available budget Timeline
  • 19. Not enough information to make a choice How can we fill gaps in our understanding?
  • 21. We can promote application stability by: Understanding the problems we're solving Learning from and adapting to failure Testing against expected outcomes
  • 22. Make a smaller MVP.... Prove a concept: Fail fast, review and adapt Understand challenges Quick implementation Remember to stop
  • 23. Remembering to stop What are we trying to achieve? What should the specific outcomes be? Have we met / Can we meet the outcomes?
  • 24. We can promote application stability by: Understanding the problems we're solving Learning from and adapting to failure Testing against expected outcomes
  • 25. Start by writing your test definitions Live coding demo
  • 26. When we know the implications we can make better estimates....
  • 27. Choosing to leverage a 3rd party service?
  • 28. Think carefully and ask questions Will the application break if the service fails? What is the impact if the application breaks? What is the impact if it doesn't break?
  • 29. Good questions, we need to go deeper....
  • 30. 3rd party service risk questions What happens if the service provider: goes out of business? deprecates the API we're using? changes arrangements for API access?
  • 31. Don't rush in, design expecting failure....
  • 32. Real world lessons: Design based on expecting services to fail
  • 33. Netflix infrastructure on AWS "The best way to avoid failure is to fail constantly" Source: http://techblog.netflix.com/2010/12/5-lessons-weve-learned-using-aws.html
  • 34. Netflix contributing to the community "we are now proud to announce that the source code for the founding member of the Simian Army, Chaos Monkey, is available to the community." Source: http://techblog.netflix.com/2012/07/chaos-monkey-released-into-wild.html
  • 35. Netflix Simian Army "The Simian Army is a suite of tools for keeping your cloud operating in top form. Chaos Monkey, the first member, is a resiliency tool that helps ensure that your applications can tolerate random instance failures" https://github.com/Netflix/SimianArmy
  • 36. Closing thoughts and questions / Thanks _ / q[-_-]p | | “ | | || || # #