+ All Categories
Home > Software > Building stable applications with PHP and 3rd party services

Building stable applications with PHP and 3rd party services

Date post: 15-Jul-2015
Category:
Upload: dave-clark
View: 69 times
Download: 1 times
Share this document with a friend
Popular Tags:
36
Building stable applications with PHP and 3 rd party services
Transcript

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 environmentMainly unaffected by infrastructure changesService quality is acceptable

What promotes application instability?

Application instability is promoted when code is:Tightly coupled and overly complex / simpleDependent on 3rd party code / servicesUncoupled but fails to solve problems

How can we promote application stability?

We can promote application stability by:Understanding the problems we're solvingLearning from and adapting to failureTesting 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 usBalancing pragmatism and perfectionism

Over time we can expect:Existing bugs found and new bugs introducedNew requirements / enhanced functionalityPeople will join and leave project teams

New requirements and enhancements....

We can promote application stability by:Understanding the problems we're solvingLearning from and adapting to failureTesting against expected outcomes

High level requirement analysisWho 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 / maintenanceCost of failing to implement / maintainSpecific business rulesAvailable budgetTimeline

Not enough information to make a choiceHow can we fill gaps in our understanding?

Rapid prototyping

We can promote application stability by:Understanding the problems we're solvingLearning from and adapting to failureTesting against expected outcomes

Make a smaller MVP....

Prove a concept:Fail fast, review and adaptUnderstand challengesQuick implementationRemember to stop

Remembering to stopWhat 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 solvingLearning from and adapting to failureTesting 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 questionsWill 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| | “ | |

|| ||# #


Recommended