SlideShare a Scribd company logo
Building the perfect PHP app for the enterprise
Episode 2 : Developing apps
faster
Maurice Kherlakian
Twitter: @mkherlakian
Email: maurice.kherlakian@roguewave.com
2
Series overview
Now: Developing apps faster
September 28: Resolving problems and high availability
Your reputation as a miracle worker is secure when using these principles to
isolate faults, optimize scale, and synchronize sessions across clusters.
October 12: Optimizing performance
Keep users on your site by learning how to use background jobs and caching,
measure performance, and make data-driven decisions.
Maurice Kherlakian
Director of professional services
Rogue Wave Software
4
Enterprise PHP is mission-critical
• Built securely
• Delivers optimal performance + scale
• Always on
• Meets release timelines
• Modernizes legacy business logic
• Clear support path (production + LTS)
5
What does deployment automation look
like?
• Amazon – 1 deployments/second
- Werner Vogels. CTO Amazon
• Etsy – 40 – 50 deployments/day
• Netflix – highly automated deployments
and testing (Simian Army)
techblog.netflix.com/2016/03/how-we-build-code-at-netflix.html
techblog.netflix.com/2013/08/deploying-netflix-api.html
quora.com/How-fast-is-Netflixs-development-cycle-in-practice
Poll #1:
At what frequency do
you deploy?
• Multiple times a day
• Once a day
• Once a week
• Once a quarter
• Once a year
7
Faster
deployment
cycles
Faster
application
development
=
8
Faster deployment cycles benefits
• Faster feedback from your
end users
• Faster development
• More iterations
• Better product overall
Faster
deployment
cycles
Faster
application
development
=
9
The traditional approach
Requirements
Design
Implementation
Verification
Maintenance
10
WaterGile anyone?
• Teams within an organization subscribing to Agile methodology
• Teams often isolated – entire company didn’t buy into Agile methodologies
• Still gather requirements, but break the down into user stories
Poll #2:
What development
practice do you follow?
• Waterfall principles
• A combination f waterfall and Agile
(WaterGile – AgileFall)
• Mainly Agile principles
12
You are always behind!
• Technical debt keeps
increasing
13
Faster
deployment
cycles
Faster
application
development
=
Feedback loop and
monitoring
15
You’ve just released a feature
Add a map display of all
available cars to rent in a
10 km radius
Released to everyone
Impact?
Overload – servers down, root
cause unknown
PANIC!
16
You’ve just released a feature to some
users
Add a map display of all
available cars to rent in a
10 km radius
Released to 20% of users
Impact – compare with other
80% through app monitoring
system
Change in CPU consumption
profiles for same amount of
users
Fix or turn feature off
17
Tools that can help
• Instrument your code
– PHP feature toggle (qandidate-toggle - ) – release to a subset of users
• Zend Server Monitoring – a complete solution to monitor the behavior of
your application – so you will catch the 20% spike in CPU usage
18
It’s working… ramp it up!
Add a map display of all
available cars to rent in a
10 km radius
Released to 50% of users
10% more rentals per visitor on
version with map
Little to no change in
performance
Release to everyone
Release automation
20
It worked fine on dev!
• Environment consistency
21
Git
Developer’s code for
map feature
C
h
e
c
k
i
n
Package
Packaged app
(parametrized)
Staging
TEST
Prod
Rollback
Packaging for release
22
Tools that can help
• VMs and consistency
– Vagrant
– Docker
• Deployment
– Zend Server (deployment)
– AWS code deploy
Continuous
integration
24
What is a CI server?
• CI automates the various tasks of building, packaging,
testing and deploying
• If build breaks, up to developer that broke it to fix it
• If build passes, it CAN go all the way to production
25
A typical CI pipeline
Git clone
Composer
install
Unit test Package
Deploy to test Functional test
Deploy to
Staging
Deploy to prod
Add a map display of all
available cars to rent in a
10 km radius
26
Failure!
Git clone
Composer
install
Unit test
FAIL
Build 783 failed
Add a map display of all
available cars to rent in a
10 km radius
27
Tools that can help
Poll #3:
Do you use a CI
server?
• Yes
• No
Demo
Testing automation
31
Testing at different stages
• Unit testing
• Functional testing
• Integration testing
• Load testing
Reference: techblog.netflix.com/search/label/Integration%20Testing
32
Cost of bug fixing
Stefan Priebsch – Advanced OOP and design patterns
Credit: Stefan Priebsch
33
Test early, test often!
34
Add a map display of all
available cars to rent in a
10 km radius
Simulate a browser request and ensure that a map loads,
and that the map has the number of vehicles available for
rent
Functional
getCars($criteria, $radius)
$map->plotCoordinates($cars)
$modelView->assign(‘map’, $map)
Unit
Load 1,000 concurrent search requests
for cars from 1000 different locations Load
Poll #4:
Do you unit test?
• Yes
• No
36
Tools that can help
• ab, Jmeter, LoadRunner
• PHPUnit
• Behat – Mink
• PHPspec
Frameworks/libraries
Poll #5:
Do you use a
framework?
• Yes
• No
39
Evolution of frameworks
• Component frameworks
• MVC out, middleware in
• Microservices architecture
40
Tools that can help
So many…
• Zend Framework: ZF3, Expressive, Apigility
• Laravel, Symfony, Yii, and many more
Writing code and left
shifting
42
Catch bugs early
• Remember how a bug in prod can cost as much as 15X times the cost of a
bug in development?
43
How do you catch bugs early?
• Test early, test often – when
developing, test locally before
committing
• Peer reviews
• Code instrumentation tools
What about hardware
and infrastructure?
46
Infrastructure should also be
automated
• Automate server provisioning
• Source control your environment configurations
• The goal is to fully rebuild an environment automatically
in case of failure
47
Another example – dealnews.com
• In the past 2 weeks
– Deployed web application 64 times – average 6.5 times a day
– Deployed configuration management changes 12 times
– Deployed MySQL schema changes 13 times
- Courtesy of Brian Moon
Q&A
49
Learn more
• Watch this webinar on demand
• Read the recap blog to see the results of
the polls and Q&A session
50
Stay tuned
September 28: Resolving problems and high availability
Your reputation as a miracle worker is secure when using these principles to
isolate faults, optimize scale, and synchronize sessions across clusters.
October 12: Optimizing performance
Keep users on your site by learning how to use background jobs and caching,
measure performance, and make data-driven decisions.
Building the perfect PHP app for the enterprise
Episode 2 : Developing apps
faster
Maurice Kherlakian
September 14, 2016

More Related Content

PPTX
Advanced Strategies for Testing Responsive Web
PPTX
Top 5 Automation Challenges Webinar
PPTX
10 Emerging Test Frameworks for Cross Browser Testing
PDF
Leading the Transformation: Applying DevOps and Agile Principles at Scale
PDF
Deeper Root Cause Analysis to App Performance Bottlenecks with Appvance APM I...
PDF
Use Jenkins For Continuous Load Testing And Mobile Test Automation
PDF
STARWest: Use Jenkins For Continuous 
Load Testing And Mobile Test Automation
PDF
Continuous Integration, Deploy, Test From Beginning To End 2014
Advanced Strategies for Testing Responsive Web
Top 5 Automation Challenges Webinar
10 Emerging Test Frameworks for Cross Browser Testing
Leading the Transformation: Applying DevOps and Agile Principles at Scale
Deeper Root Cause Analysis to App Performance Bottlenecks with Appvance APM I...
Use Jenkins For Continuous Load Testing And Mobile Test Automation
STARWest: Use Jenkins For Continuous 
Load Testing And Mobile Test Automation
Continuous Integration, Deploy, Test From Beginning To End 2014

What's hot (20)

PDF
Testing in a continuous delivery environment
PDF
Running JMeter Tests In Appvance PerformanceCloud
PDF
Orchestrate Your End-to-end Mainframe Application Release Pipeline
PPTX
State of mobile Continuous Delivery at Spotify
PDF
Preparing the Gap Inc. Ecommerce Platform for Traffic Surge During the Holida...
PPTX
CI/CD for mobile at HERE
PPTX
Optimize your delivery and quality with the right release methodology and too...
PDF
Merge hells - Feature Toggles to the rescue
PPTX
Neotys PAC - Ian Molyneaux
PPTX
Neotys PAC - Stijn Schepers
PDF
Testing Ajax, Mobile Apps the Agile Way
PDF
Continuous Testing Odyssey: Learn Best Practices for End-to-End Web App Testing
PDF
Automated Browser Testing
PPT
Continuous Delivery Agiles 2014 Medellin
PDF
CloudBees Continuous Integration and Test with Appvance PerformanceCloud
PPTX
Coimbatore meetup error handling 24apr2021
PDF
Introduction to Enterprise-Release Engineering on the Salesforce Platform
ODP
API Testing With Katalon Studio
PPTX
Trunk based development and Canary deployment
PPTX
Four Keys to Efficient DevOps
Testing in a continuous delivery environment
Running JMeter Tests In Appvance PerformanceCloud
Orchestrate Your End-to-end Mainframe Application Release Pipeline
State of mobile Continuous Delivery at Spotify
Preparing the Gap Inc. Ecommerce Platform for Traffic Surge During the Holida...
CI/CD for mobile at HERE
Optimize your delivery and quality with the right release methodology and too...
Merge hells - Feature Toggles to the rescue
Neotys PAC - Ian Molyneaux
Neotys PAC - Stijn Schepers
Testing Ajax, Mobile Apps the Agile Way
Continuous Testing Odyssey: Learn Best Practices for End-to-End Web App Testing
Automated Browser Testing
Continuous Delivery Agiles 2014 Medellin
CloudBees Continuous Integration and Test with Appvance PerformanceCloud
Coimbatore meetup error handling 24apr2021
Introduction to Enterprise-Release Engineering on the Salesforce Platform
API Testing With Katalon Studio
Trunk based development and Canary deployment
Four Keys to Efficient DevOps
Ad

Similar to Developing apps faster (20)

PDF
Developing PHP Applications Faster
PPTX
Best Practices in PHP Application Delivery
PDF
Common blind spots on the journey to production vijay raghavan aravamudhan
PDF
From dev to ops and beyond - getting it done
PPT
Making the Agile Leap to Continuous Deployment
PPTX
Zend server presentation for osi days
PPT
Software Engineering in PHP
PDF
Fine-Tuning of Agile Development
PPTX
Road to Continuous Delivery - Wix.com
PPTX
PHP in Enterprise: Modernize Application Development to Bring Projects to …
PPTX
Software Engineering in Startups
PPT
Enterprise PHP (PHP London Conference 2008)
PDF
Shitlist-driven development and other tricks for working on large codebases
PDF
How to Introduce Continuous Delivery
PPTX
Wix Dev-Centric Culture And Continuous Delivery
PPTX
Optimizing performance
PPTX
Design Reviews for Operations - Velocity Europe 2014
PPTX
Northeast PHP - High Performance PHP
PPT
Continuous Deployment
PDF
DevOps: Automate all the things
Developing PHP Applications Faster
Best Practices in PHP Application Delivery
Common blind spots on the journey to production vijay raghavan aravamudhan
From dev to ops and beyond - getting it done
Making the Agile Leap to Continuous Deployment
Zend server presentation for osi days
Software Engineering in PHP
Fine-Tuning of Agile Development
Road to Continuous Delivery - Wix.com
PHP in Enterprise: Modernize Application Development to Bring Projects to …
Software Engineering in Startups
Enterprise PHP (PHP London Conference 2008)
Shitlist-driven development and other tricks for working on large codebases
How to Introduce Continuous Delivery
Wix Dev-Centric Culture And Continuous Delivery
Optimizing performance
Design Reviews for Operations - Velocity Europe 2014
Northeast PHP - High Performance PHP
Continuous Deployment
DevOps: Automate all the things
Ad

More from Zend by Rogue Wave Software (20)

PDF
Develop microservices in php
PPTX
Speed and security for your PHP application
PPTX
Building and managing applications fast for IBM i
PDF
Building web APIs in PHP with Zend Expressive
PPTX
To PHP 7 and beyond
PDF
Speed up web APIs with Expressive and Swoole (PHP Day 2018)
PDF
The Sodium crypto library of PHP 7.2 (PHP Day 2018)
PDF
Develop web APIs in PHP using middleware with Expressive (Code Europe)
PDF
Middleware web APIs in PHP 7.x
PPTX
Ongoing management of your PHP 7 application
PDF
Developing web APIs using middleware in PHP 7
PDF
The Docker development template for PHP
PDF
The most exciting features of PHP 7.1
PPTX
Unit testing for project managers
PDF
The new features of PHP 7
PPTX
Deploying PHP apps on the cloud
PPTX
Data is dead. Long live data!
PPTX
Resolving problems & high availability
PPTX
Keeping up with PHP
PPTX
Fundamentals of performance tuning PHP on IBM i
Develop microservices in php
Speed and security for your PHP application
Building and managing applications fast for IBM i
Building web APIs in PHP with Zend Expressive
To PHP 7 and beyond
Speed up web APIs with Expressive and Swoole (PHP Day 2018)
The Sodium crypto library of PHP 7.2 (PHP Day 2018)
Develop web APIs in PHP using middleware with Expressive (Code Europe)
Middleware web APIs in PHP 7.x
Ongoing management of your PHP 7 application
Developing web APIs using middleware in PHP 7
The Docker development template for PHP
The most exciting features of PHP 7.1
Unit testing for project managers
The new features of PHP 7
Deploying PHP apps on the cloud
Data is dead. Long live data!
Resolving problems & high availability
Keeping up with PHP
Fundamentals of performance tuning PHP on IBM i

Recently uploaded (20)

PDF
top salesforce developer skills in 2025.pdf
PPT
Introduction Database Management System for Course Database
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PDF
PTS Company Brochure 2025 (1).pdf.......
PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PPTX
L1 - Introduction to python Backend.pptx
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PPTX
Odoo POS Development Services by CandidRoot Solutions
PDF
Softaken Excel to vCard Converter Software.pdf
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PDF
How to Migrate SBCGlobal Email to Yahoo Easily
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PPTX
history of c programming in notes for students .pptx
PDF
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
PDF
AI in Product Development-omnex systems
PPTX
Introduction to Artificial Intelligence
PPTX
ISO 45001 Occupational Health and Safety Management System
top salesforce developer skills in 2025.pdf
Introduction Database Management System for Course Database
Which alternative to Crystal Reports is best for small or large businesses.pdf
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
How to Choose the Right IT Partner for Your Business in Malaysia
PTS Company Brochure 2025 (1).pdf.......
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
L1 - Introduction to python Backend.pptx
Internet Downloader Manager (IDM) Crack 6.42 Build 41
Design an Analysis of Algorithms II-SECS-1021-03
Odoo POS Development Services by CandidRoot Solutions
Softaken Excel to vCard Converter Software.pdf
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
How to Migrate SBCGlobal Email to Yahoo Easily
Adobe Illustrator 28.6 Crack My Vision of Vector Design
history of c programming in notes for students .pptx
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
AI in Product Development-omnex systems
Introduction to Artificial Intelligence
ISO 45001 Occupational Health and Safety Management System

Developing apps faster

  • 1. Building the perfect PHP app for the enterprise Episode 2 : Developing apps faster Maurice Kherlakian Twitter: @mkherlakian Email: maurice.kherlakian@roguewave.com
  • 2. 2 Series overview Now: Developing apps faster September 28: Resolving problems and high availability Your reputation as a miracle worker is secure when using these principles to isolate faults, optimize scale, and synchronize sessions across clusters. October 12: Optimizing performance Keep users on your site by learning how to use background jobs and caching, measure performance, and make data-driven decisions.
  • 3. Maurice Kherlakian Director of professional services Rogue Wave Software
  • 4. 4 Enterprise PHP is mission-critical • Built securely • Delivers optimal performance + scale • Always on • Meets release timelines • Modernizes legacy business logic • Clear support path (production + LTS)
  • 5. 5 What does deployment automation look like? • Amazon – 1 deployments/second - Werner Vogels. CTO Amazon • Etsy – 40 – 50 deployments/day • Netflix – highly automated deployments and testing (Simian Army) techblog.netflix.com/2016/03/how-we-build-code-at-netflix.html techblog.netflix.com/2013/08/deploying-netflix-api.html quora.com/How-fast-is-Netflixs-development-cycle-in-practice
  • 6. Poll #1: At what frequency do you deploy? • Multiple times a day • Once a day • Once a week • Once a quarter • Once a year
  • 8. 8 Faster deployment cycles benefits • Faster feedback from your end users • Faster development • More iterations • Better product overall Faster deployment cycles Faster application development =
  • 10. 10 WaterGile anyone? • Teams within an organization subscribing to Agile methodology • Teams often isolated – entire company didn’t buy into Agile methodologies • Still gather requirements, but break the down into user stories
  • 11. Poll #2: What development practice do you follow? • Waterfall principles • A combination f waterfall and Agile (WaterGile – AgileFall) • Mainly Agile principles
  • 12. 12 You are always behind! • Technical debt keeps increasing
  • 15. 15 You’ve just released a feature Add a map display of all available cars to rent in a 10 km radius Released to everyone Impact? Overload – servers down, root cause unknown PANIC!
  • 16. 16 You’ve just released a feature to some users Add a map display of all available cars to rent in a 10 km radius Released to 20% of users Impact – compare with other 80% through app monitoring system Change in CPU consumption profiles for same amount of users Fix or turn feature off
  • 17. 17 Tools that can help • Instrument your code – PHP feature toggle (qandidate-toggle - ) – release to a subset of users • Zend Server Monitoring – a complete solution to monitor the behavior of your application – so you will catch the 20% spike in CPU usage
  • 18. 18 It’s working… ramp it up! Add a map display of all available cars to rent in a 10 km radius Released to 50% of users 10% more rentals per visitor on version with map Little to no change in performance Release to everyone
  • 20. 20 It worked fine on dev! • Environment consistency
  • 21. 21 Git Developer’s code for map feature C h e c k i n Package Packaged app (parametrized) Staging TEST Prod Rollback Packaging for release
  • 22. 22 Tools that can help • VMs and consistency – Vagrant – Docker • Deployment – Zend Server (deployment) – AWS code deploy
  • 24. 24 What is a CI server? • CI automates the various tasks of building, packaging, testing and deploying • If build breaks, up to developer that broke it to fix it • If build passes, it CAN go all the way to production
  • 25. 25 A typical CI pipeline Git clone Composer install Unit test Package Deploy to test Functional test Deploy to Staging Deploy to prod Add a map display of all available cars to rent in a 10 km radius
  • 26. 26 Failure! Git clone Composer install Unit test FAIL Build 783 failed Add a map display of all available cars to rent in a 10 km radius
  • 28. Poll #3: Do you use a CI server? • Yes • No
  • 29. Demo
  • 31. 31 Testing at different stages • Unit testing • Functional testing • Integration testing • Load testing Reference: techblog.netflix.com/search/label/Integration%20Testing
  • 32. 32 Cost of bug fixing Stefan Priebsch – Advanced OOP and design patterns Credit: Stefan Priebsch
  • 34. 34 Add a map display of all available cars to rent in a 10 km radius Simulate a browser request and ensure that a map loads, and that the map has the number of vehicles available for rent Functional getCars($criteria, $radius) $map->plotCoordinates($cars) $modelView->assign(‘map’, $map) Unit Load 1,000 concurrent search requests for cars from 1000 different locations Load
  • 35. Poll #4: Do you unit test? • Yes • No
  • 36. 36 Tools that can help • ab, Jmeter, LoadRunner • PHPUnit • Behat – Mink • PHPspec
  • 38. Poll #5: Do you use a framework? • Yes • No
  • 39. 39 Evolution of frameworks • Component frameworks • MVC out, middleware in • Microservices architecture
  • 40. 40 Tools that can help So many… • Zend Framework: ZF3, Expressive, Apigility • Laravel, Symfony, Yii, and many more
  • 41. Writing code and left shifting
  • 42. 42 Catch bugs early • Remember how a bug in prod can cost as much as 15X times the cost of a bug in development?
  • 43. 43 How do you catch bugs early? • Test early, test often – when developing, test locally before committing • Peer reviews • Code instrumentation tools
  • 44. What about hardware and infrastructure?
  • 45. 46 Infrastructure should also be automated • Automate server provisioning • Source control your environment configurations • The goal is to fully rebuild an environment automatically in case of failure
  • 46. 47 Another example – dealnews.com • In the past 2 weeks – Deployed web application 64 times – average 6.5 times a day – Deployed configuration management changes 12 times – Deployed MySQL schema changes 13 times - Courtesy of Brian Moon
  • 47. Q&A
  • 48. 49 Learn more • Watch this webinar on demand • Read the recap blog to see the results of the polls and Q&A session
  • 49. 50 Stay tuned September 28: Resolving problems and high availability Your reputation as a miracle worker is secure when using these principles to isolate faults, optimize scale, and synchronize sessions across clusters. October 12: Optimizing performance Keep users on your site by learning how to use background jobs and caching, measure performance, and make data-driven decisions.
  • 50. Building the perfect PHP app for the enterprise Episode 2 : Developing apps faster Maurice Kherlakian September 14, 2016

Editor's Notes

  • #7: At what frequency do you deploy? Multiple times in a day Once a day Once a week Once a month Once a quarter Once a year