SlideShare a Scribd company logo
Developing Easily Deployable PHP Applications John Mertic SugarCRM @2010 SugarCRM Inc. All rights reserved.
Why deployable apps still matter 7/22/2010 @2010 SugarCRM Inc. All rights reserved. 2
What I’ll cover Code portability Performance Configuration and Customization Testing/QA @2010 SugarCRM Inc. All rights reserved. 7/22/2010 3
Code Portability 7/22/2010 @2010 SugarCRM Inc. All rights reserved. 4 Source: http://www.flickr.com/photos/25339258@N05/2389910825/
What we do Limit support to the most common configurations As of SugarCRM 6.0 we officially support: Operating System Windows XP, 2003, 2008, Vista Red Hat 4.x, 5.x Oracle Enterprise Linux 5.1 CentOS 4.x, 5.x Web Server Apache 1.3, 2.0, 2.2 IIS 6/7 using FastCGI Database MySQL 5.0, 5.1 SQL Server 2005, 2008 Oracle 9i, 10g 7/22/2010 @2010 SugarCRM Inc. All rights reserved. 5
What we do (cont) PHP Support Matrix 5.2.1 - 5.2.6, 5.2.8 - 5.2.13, 5.3.0 - 5.3.2 Support most common configurations options mbstring.func_overload = 7 error_reporting = E_ALL Require only the most mainline extensions, plus Mbstrings ( for i18n support ) Imap ( if using mail support ) Specific database extension ( mysql, mysqli, oci8, mssql, sqlsrv ) 7/22/2010 @2010 SugarCRM Inc. All rights reserved. 6
Build and Deploy We build all 3 editions of SugarCRM from 1 codebase We add code tags around sections specific to a certain version. To test under each different edition, developers can run the build locally Removes code not belonging to the given edition Add appropriate license headers Each check-in triggers a lint check and unit test run against each edition across different platforms. We run nightly builds to run functional tests and to send to QA for manual testing. SODA / SodaMachine – tool to easily write functional tests that run under Watir. 7/22/2010 @2010 SugarCRM Inc. All rights reserved. 7
Performance 7/22/2010 @2010 SugarCRM Inc. All rights reserved. 8 Source: http://www.flickr.com/photos/tech1987/501427718/
What we do to help performance Caching, and lots of it Smarty template caching Data caching Combine, minify, and version JS / CSS / images Keep SQL queries as simple as possible Provide configuration options to turn off heavy features Enable the application to take advantage of it’s environment Examples: Use APC, memcache, Zend_Cache, wincache with little to no configuration Leverage a slave database for heavy queries Detect Full Text Indexing on SQL Server Detect for certain PHP extensions being enabled. 7/22/2010 @2010 SugarCRM Inc. All rights reserved. 9
How we gauge performance Formal testing Use Jmeter (http://jakarta.apache.org/jmeter/) on a load test cluster to test raw response speed. MeterMaid / SugarMMM – open source tool we created to make writing tests easier TidBit – open source tool we created to make huge datasets Instance analysis Monitor web server logs to look for non-cached items Track slow queries Ad-hoc testing Profile PHP execution with XDebug Use Firebug to measure CSS / JS / image payload 7/22/2010 @2010 SugarCRM Inc. All rights reserved. 10
Configuration and Customization 7/22/2010 @2010 SugarCRM Inc. All rights reserved. 11 Source: http://www.flickr.com/photos/miskypig/400004362/
Making it simple yet powerful for end users Expose configuration options thru multiple channels Remember, not everyone has source access Allow users to customize their UI interface easily Make what should be simple, simple 7/22/2010 @2010 SugarCRM Inc. All rights reserved. 12
Making it simple yet powerful for developers Create a safe place to make customizations Avoid painful upgrades Create an easy to use API Well defined and supported. Don’t break it! Create easy to use hooks for modifying existing / adding new functionality Examples from SugarCRM include: Metadata driven views Logic Hooks 7/22/2010 @2010 SugarCRM Inc. All rights reserved. 13
Testing/QA 7/22/2010 @2010 SugarCRM Inc. All rights reserved. 14 Source: http://www.flickr.com/photos/cglock/386033158/
Testing different configurations Impossible for us to test every single permutation. We use VM stacks; for SugarCRM 6, we use Windows Vista IIS-7 (FastCGI)PHP 5.2.8 MSSQL-2005 (PHPmssql driver) Windows Server 2003 IIS-6 (FastCGI)PHP 5.2.11 MSSQL-2005 (PHPmssql driver) CentOS5 Apache-2.2.11PHP 5.2.9 MySQL-5.1.33 Windows Server 2008 IIS-7 (FastCGI)PHP 5.3.1 MSSQL-2008 (Microsoft sqlsrv driver 1.1) Windows XP Apache-1.3.41PHP 5.2.13 MySQL-5.0.83 Oracle Enterprise Linux 5.1 Apache-2.0.63PHP 5.3.2 ORCL-10g We test both new installations and upgrade scenarios Even customer instances! 7/22/2010 @2010 SugarCRM Inc. All rights reserved. 15
About me and my company	 John Mertic http://jmertic.wordpress.com Twitter: @jmertic jmertic@sugarcrm.com ( Work ) jmertic@php.net ( PHP ) Slides available on slidesharehttp://bit.ly/a7NOR1 SugarCRM http://www.sugarcrm.com We’re hiring! Learn more about SugarCRM’sopen source tools at http://developers.sugarcrm.com/opensource 7/22/2010 @2010 SugarCRM Inc. All rights reserved. 16 Buy my book!
Questions? Thanks for coming! 7/22/2010 @2010 SugarCRM Inc. All rights reserved. 17

More Related Content

Similar to Developing Easily Deployable PHP Applications ( OSCON 2010 )

Silk4j Tcm6 174177
Silk4j Tcm6 174177Silk4j Tcm6 174177
Silk4j Tcm6 174177
titita13
 
Travelling light for the long haul
Travelling light for the long haulTravelling light for the long haul
Travelling light for the long haul
Ian Robinson
 
Travelling Light for the Long Haul - Ian Robinson
Travelling Light for the Long Haul -  Ian RobinsonTravelling Light for the Long Haul -  Ian Robinson
Travelling Light for the Long Haul - Ian Robinson
mfrancis
 
Mobile Test Automation using one API and one infrastructure
Mobile Test Automation using one API and one infrastructureMobile Test Automation using one API and one infrastructure
Mobile Test Automation using one API and one infrastructure
Michael Palotas
 
Silk4net Tcm6 174178
Silk4net Tcm6 174178Silk4net Tcm6 174178
Silk4net Tcm6 174178
titita13
 
Mule soft step up session
Mule soft step up sessionMule soft step up session
Mule soft step up session
Amit Behere
 
Cloud-Based Dev/Test Environments for SharePoint using CloudShare
Cloud-Based Dev/Test Environments for SharePoint using CloudShareCloud-Based Dev/Test Environments for SharePoint using CloudShare
Cloud-Based Dev/Test Environments for SharePoint using CloudShare
John Calvert
 
Windows 7 Feature Overview It Academic Day 2009
Windows 7 Feature Overview   It Academic Day 2009Windows 7 Feature Overview   It Academic Day 2009
Windows 7 Feature Overview It Academic Day 2009
Tobias Koprowski
 
Good practices for debugging Selenium and Appium tests
Good practices for debugging Selenium and Appium testsGood practices for debugging Selenium and Appium tests
Good practices for debugging Selenium and Appium tests
Abhijeet Vaikar
 
jDriver Presentation
jDriver PresentationjDriver Presentation
jDriver Presentation
freelancer_testautomation
 
AA5 - I1 EITM and the Use Case Factory
AA5 - I1 EITM and the Use Case FactoryAA5 - I1 EITM and the Use Case Factory
AA5 - I1 EITM and the Use Case Factory
David Messineo
 
Programming Server side with Sevlet
 Programming Server side with Sevlet  Programming Server side with Sevlet
Programming Server side with Sevlet
backdoor
 
Sudheendra
SudheendraSudheendra
Sudheendra
Sudheendra P
 
Windows 7 Feature Overview
Windows 7 Feature OverviewWindows 7 Feature Overview
Windows 7 Feature Overview
Microsoft TechNet
 
Joomla! Performance on Steroids
Joomla! Performance on SteroidsJoomla! Performance on Steroids
Joomla! Performance on Steroids
SiteGround.com
 
2009 Ontario GNU Linux Fest - Build your business on SugarCRM
2009 Ontario GNU Linux Fest - Build your business on SugarCRM2009 Ontario GNU Linux Fest - Build your business on SugarCRM
2009 Ontario GNU Linux Fest - Build your business on SugarCRM
John Mertic
 
Meet Magento Spain 2019 - Our Experience with Magento Cloud
Meet Magento Spain 2019 - Our Experience with Magento CloudMeet Magento Spain 2019 - Our Experience with Magento Cloud
Meet Magento Spain 2019 - Our Experience with Magento Cloud
Lyzun Oleksandr
 
Flexing Sugar Platform: Session 8: Change the World Using the Sugar Platform
Flexing Sugar Platform: Session 8: Change the World Using the Sugar Platform Flexing Sugar Platform: Session 8: Change the World Using the Sugar Platform
Flexing Sugar Platform: Session 8: Change the World Using the Sugar Platform
SugarCRM
 
Advanced Strategies for Testing Responsive Web
Advanced Strategies for Testing Responsive WebAdvanced Strategies for Testing Responsive Web
Advanced Strategies for Testing Responsive Web
Perfecto by Perforce
 
Cloud-based performance testing
Cloud-based performance testingCloud-based performance testing
Cloud-based performance testing
abhinavm
 

Similar to Developing Easily Deployable PHP Applications ( OSCON 2010 ) (20)

Silk4j Tcm6 174177
Silk4j Tcm6 174177Silk4j Tcm6 174177
Silk4j Tcm6 174177
 
Travelling light for the long haul
Travelling light for the long haulTravelling light for the long haul
Travelling light for the long haul
 
Travelling Light for the Long Haul - Ian Robinson
Travelling Light for the Long Haul -  Ian RobinsonTravelling Light for the Long Haul -  Ian Robinson
Travelling Light for the Long Haul - Ian Robinson
 
Mobile Test Automation using one API and one infrastructure
Mobile Test Automation using one API and one infrastructureMobile Test Automation using one API and one infrastructure
Mobile Test Automation using one API and one infrastructure
 
Silk4net Tcm6 174178
Silk4net Tcm6 174178Silk4net Tcm6 174178
Silk4net Tcm6 174178
 
Mule soft step up session
Mule soft step up sessionMule soft step up session
Mule soft step up session
 
Cloud-Based Dev/Test Environments for SharePoint using CloudShare
Cloud-Based Dev/Test Environments for SharePoint using CloudShareCloud-Based Dev/Test Environments for SharePoint using CloudShare
Cloud-Based Dev/Test Environments for SharePoint using CloudShare
 
Windows 7 Feature Overview It Academic Day 2009
Windows 7 Feature Overview   It Academic Day 2009Windows 7 Feature Overview   It Academic Day 2009
Windows 7 Feature Overview It Academic Day 2009
 
Good practices for debugging Selenium and Appium tests
Good practices for debugging Selenium and Appium testsGood practices for debugging Selenium and Appium tests
Good practices for debugging Selenium and Appium tests
 
jDriver Presentation
jDriver PresentationjDriver Presentation
jDriver Presentation
 
AA5 - I1 EITM and the Use Case Factory
AA5 - I1 EITM and the Use Case FactoryAA5 - I1 EITM and the Use Case Factory
AA5 - I1 EITM and the Use Case Factory
 
Programming Server side with Sevlet
 Programming Server side with Sevlet  Programming Server side with Sevlet
Programming Server side with Sevlet
 
Sudheendra
SudheendraSudheendra
Sudheendra
 
Windows 7 Feature Overview
Windows 7 Feature OverviewWindows 7 Feature Overview
Windows 7 Feature Overview
 
Joomla! Performance on Steroids
Joomla! Performance on SteroidsJoomla! Performance on Steroids
Joomla! Performance on Steroids
 
2009 Ontario GNU Linux Fest - Build your business on SugarCRM
2009 Ontario GNU Linux Fest - Build your business on SugarCRM2009 Ontario GNU Linux Fest - Build your business on SugarCRM
2009 Ontario GNU Linux Fest - Build your business on SugarCRM
 
Meet Magento Spain 2019 - Our Experience with Magento Cloud
Meet Magento Spain 2019 - Our Experience with Magento CloudMeet Magento Spain 2019 - Our Experience with Magento Cloud
Meet Magento Spain 2019 - Our Experience with Magento Cloud
 
Flexing Sugar Platform: Session 8: Change the World Using the Sugar Platform
Flexing Sugar Platform: Session 8: Change the World Using the Sugar Platform Flexing Sugar Platform: Session 8: Change the World Using the Sugar Platform
Flexing Sugar Platform: Session 8: Change the World Using the Sugar Platform
 
Advanced Strategies for Testing Responsive Web
Advanced Strategies for Testing Responsive WebAdvanced Strategies for Testing Responsive Web
Advanced Strategies for Testing Responsive Web
 
Cloud-based performance testing
Cloud-based performance testingCloud-based performance testing
Cloud-based performance testing
 

More from John Mertic

The Virtual Git Summit - Subversion to Git - A Sugar Story
The Virtual Git Summit - Subversion to Git - A Sugar StoryThe Virtual Git Summit - Subversion to Git - A Sugar Story
The Virtual Git Summit - Subversion to Git - A Sugar Story
John Mertic
 
PHPBenelux 2012 - Working successfully outside the cube
PHPBenelux 2012 - Working successfully outside the cubePHPBenelux 2012 - Working successfully outside the cube
PHPBenelux 2012 - Working successfully outside the cube
John Mertic
 
LinuxCon Brazil 2011 - Hack your team, your Department, and Your Organization...
LinuxCon Brazil 2011 - Hack your team, your Department, and Your Organization...LinuxCon Brazil 2011 - Hack your team, your Department, and Your Organization...
LinuxCon Brazil 2011 - Hack your team, your Department, and Your Organization...
John Mertic
 
Astricon 2011 - Connecting SugarCRM with your PBX
Astricon 2011 - Connecting SugarCRM with your PBXAstricon 2011 - Connecting SugarCRM with your PBX
Astricon 2011 - Connecting SugarCRM with your PBX
John Mertic
 
OSCON 2011 - Building An Application On The SugarCRM Platform
OSCON 2011 - Building An Application On The SugarCRM PlatformOSCON 2011 - Building An Application On The SugarCRM Platform
OSCON 2011 - Building An Application On The SugarCRM Platform
John Mertic
 
OSCON 2011 - Making Your PHP Application Easy to Customize
OSCON 2011 - Making Your PHP Application Easy to CustomizeOSCON 2011 - Making Your PHP Application Easy to Customize
OSCON 2011 - Making Your PHP Application Easy to Customize
John Mertic
 
LinuxTag 2011 - Using SugarCRM when you aren't doing CRM Examples of SugarCRM...
LinuxTag 2011 - Using SugarCRM when you aren't doing CRM Examples of SugarCRM...LinuxTag 2011 - Using SugarCRM when you aren't doing CRM Examples of SugarCRM...
LinuxTag 2011 - Using SugarCRM when you aren't doing CRM Examples of SugarCRM...
John Mertic
 
Making Software Management tools work for you - 2011 PHPBenelux Conference
Making Software Management tools work for you - 2011 PHPBenelux ConferenceMaking Software Management tools work for you - 2011 PHPBenelux Conference
Making Software Management tools work for you - 2011 PHPBenelux Conference
John Mertic
 
SugarCON 2009 - Theme Development in Sugar 5.5
SugarCON 2009 - Theme Development in Sugar 5.5SugarCON 2009 - Theme Development in Sugar 5.5
SugarCON 2009 - Theme Development in Sugar 5.5
John Mertic
 
SugarCon 2010 - Sugar as a Business Application Framework
SugarCon 2010 - Sugar as a Business Application Framework SugarCon 2010 - Sugar as a Business Application Framework
SugarCon 2010 - Sugar as a Business Application Framework
John Mertic
 
SugarCon 2010 - Best Practices for Creating Custom Apps in Sugar
SugarCon 2010 - Best Practices for Creating Custom Apps in SugarSugarCon 2010 - Best Practices for Creating Custom Apps in Sugar
SugarCon 2010 - Best Practices for Creating Custom Apps in Sugar
John Mertic
 

More from John Mertic (11)

The Virtual Git Summit - Subversion to Git - A Sugar Story
The Virtual Git Summit - Subversion to Git - A Sugar StoryThe Virtual Git Summit - Subversion to Git - A Sugar Story
The Virtual Git Summit - Subversion to Git - A Sugar Story
 
PHPBenelux 2012 - Working successfully outside the cube
PHPBenelux 2012 - Working successfully outside the cubePHPBenelux 2012 - Working successfully outside the cube
PHPBenelux 2012 - Working successfully outside the cube
 
LinuxCon Brazil 2011 - Hack your team, your Department, and Your Organization...
LinuxCon Brazil 2011 - Hack your team, your Department, and Your Organization...LinuxCon Brazil 2011 - Hack your team, your Department, and Your Organization...
LinuxCon Brazil 2011 - Hack your team, your Department, and Your Organization...
 
Astricon 2011 - Connecting SugarCRM with your PBX
Astricon 2011 - Connecting SugarCRM with your PBXAstricon 2011 - Connecting SugarCRM with your PBX
Astricon 2011 - Connecting SugarCRM with your PBX
 
OSCON 2011 - Building An Application On The SugarCRM Platform
OSCON 2011 - Building An Application On The SugarCRM PlatformOSCON 2011 - Building An Application On The SugarCRM Platform
OSCON 2011 - Building An Application On The SugarCRM Platform
 
OSCON 2011 - Making Your PHP Application Easy to Customize
OSCON 2011 - Making Your PHP Application Easy to CustomizeOSCON 2011 - Making Your PHP Application Easy to Customize
OSCON 2011 - Making Your PHP Application Easy to Customize
 
LinuxTag 2011 - Using SugarCRM when you aren't doing CRM Examples of SugarCRM...
LinuxTag 2011 - Using SugarCRM when you aren't doing CRM Examples of SugarCRM...LinuxTag 2011 - Using SugarCRM when you aren't doing CRM Examples of SugarCRM...
LinuxTag 2011 - Using SugarCRM when you aren't doing CRM Examples of SugarCRM...
 
Making Software Management tools work for you - 2011 PHPBenelux Conference
Making Software Management tools work for you - 2011 PHPBenelux ConferenceMaking Software Management tools work for you - 2011 PHPBenelux Conference
Making Software Management tools work for you - 2011 PHPBenelux Conference
 
SugarCON 2009 - Theme Development in Sugar 5.5
SugarCON 2009 - Theme Development in Sugar 5.5SugarCON 2009 - Theme Development in Sugar 5.5
SugarCON 2009 - Theme Development in Sugar 5.5
 
SugarCon 2010 - Sugar as a Business Application Framework
SugarCon 2010 - Sugar as a Business Application Framework SugarCon 2010 - Sugar as a Business Application Framework
SugarCon 2010 - Sugar as a Business Application Framework
 
SugarCon 2010 - Best Practices for Creating Custom Apps in Sugar
SugarCon 2010 - Best Practices for Creating Custom Apps in SugarSugarCon 2010 - Best Practices for Creating Custom Apps in Sugar
SugarCon 2010 - Best Practices for Creating Custom Apps in Sugar
 

Recently uploaded

Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
SOFTTECHHUB
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
IndexBug
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
Mariano Tinti
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
tolgahangng
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 

Recently uploaded (20)

Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 

Developing Easily Deployable PHP Applications ( OSCON 2010 )

  • 1. Developing Easily Deployable PHP Applications John Mertic SugarCRM @2010 SugarCRM Inc. All rights reserved.
  • 2. Why deployable apps still matter 7/22/2010 @2010 SugarCRM Inc. All rights reserved. 2
  • 3. What I’ll cover Code portability Performance Configuration and Customization Testing/QA @2010 SugarCRM Inc. All rights reserved. 7/22/2010 3
  • 4. Code Portability 7/22/2010 @2010 SugarCRM Inc. All rights reserved. 4 Source: http://www.flickr.com/photos/25339258@N05/2389910825/
  • 5. What we do Limit support to the most common configurations As of SugarCRM 6.0 we officially support: Operating System Windows XP, 2003, 2008, Vista Red Hat 4.x, 5.x Oracle Enterprise Linux 5.1 CentOS 4.x, 5.x Web Server Apache 1.3, 2.0, 2.2 IIS 6/7 using FastCGI Database MySQL 5.0, 5.1 SQL Server 2005, 2008 Oracle 9i, 10g 7/22/2010 @2010 SugarCRM Inc. All rights reserved. 5
  • 6. What we do (cont) PHP Support Matrix 5.2.1 - 5.2.6, 5.2.8 - 5.2.13, 5.3.0 - 5.3.2 Support most common configurations options mbstring.func_overload = 7 error_reporting = E_ALL Require only the most mainline extensions, plus Mbstrings ( for i18n support ) Imap ( if using mail support ) Specific database extension ( mysql, mysqli, oci8, mssql, sqlsrv ) 7/22/2010 @2010 SugarCRM Inc. All rights reserved. 6
  • 7. Build and Deploy We build all 3 editions of SugarCRM from 1 codebase We add code tags around sections specific to a certain version. To test under each different edition, developers can run the build locally Removes code not belonging to the given edition Add appropriate license headers Each check-in triggers a lint check and unit test run against each edition across different platforms. We run nightly builds to run functional tests and to send to QA for manual testing. SODA / SodaMachine – tool to easily write functional tests that run under Watir. 7/22/2010 @2010 SugarCRM Inc. All rights reserved. 7
  • 8. Performance 7/22/2010 @2010 SugarCRM Inc. All rights reserved. 8 Source: http://www.flickr.com/photos/tech1987/501427718/
  • 9. What we do to help performance Caching, and lots of it Smarty template caching Data caching Combine, minify, and version JS / CSS / images Keep SQL queries as simple as possible Provide configuration options to turn off heavy features Enable the application to take advantage of it’s environment Examples: Use APC, memcache, Zend_Cache, wincache with little to no configuration Leverage a slave database for heavy queries Detect Full Text Indexing on SQL Server Detect for certain PHP extensions being enabled. 7/22/2010 @2010 SugarCRM Inc. All rights reserved. 9
  • 10. How we gauge performance Formal testing Use Jmeter (http://jakarta.apache.org/jmeter/) on a load test cluster to test raw response speed. MeterMaid / SugarMMM – open source tool we created to make writing tests easier TidBit – open source tool we created to make huge datasets Instance analysis Monitor web server logs to look for non-cached items Track slow queries Ad-hoc testing Profile PHP execution with XDebug Use Firebug to measure CSS / JS / image payload 7/22/2010 @2010 SugarCRM Inc. All rights reserved. 10
  • 11. Configuration and Customization 7/22/2010 @2010 SugarCRM Inc. All rights reserved. 11 Source: http://www.flickr.com/photos/miskypig/400004362/
  • 12. Making it simple yet powerful for end users Expose configuration options thru multiple channels Remember, not everyone has source access Allow users to customize their UI interface easily Make what should be simple, simple 7/22/2010 @2010 SugarCRM Inc. All rights reserved. 12
  • 13. Making it simple yet powerful for developers Create a safe place to make customizations Avoid painful upgrades Create an easy to use API Well defined and supported. Don’t break it! Create easy to use hooks for modifying existing / adding new functionality Examples from SugarCRM include: Metadata driven views Logic Hooks 7/22/2010 @2010 SugarCRM Inc. All rights reserved. 13
  • 14. Testing/QA 7/22/2010 @2010 SugarCRM Inc. All rights reserved. 14 Source: http://www.flickr.com/photos/cglock/386033158/
  • 15. Testing different configurations Impossible for us to test every single permutation. We use VM stacks; for SugarCRM 6, we use Windows Vista IIS-7 (FastCGI)PHP 5.2.8 MSSQL-2005 (PHPmssql driver) Windows Server 2003 IIS-6 (FastCGI)PHP 5.2.11 MSSQL-2005 (PHPmssql driver) CentOS5 Apache-2.2.11PHP 5.2.9 MySQL-5.1.33 Windows Server 2008 IIS-7 (FastCGI)PHP 5.3.1 MSSQL-2008 (Microsoft sqlsrv driver 1.1) Windows XP Apache-1.3.41PHP 5.2.13 MySQL-5.0.83 Oracle Enterprise Linux 5.1 Apache-2.0.63PHP 5.3.2 ORCL-10g We test both new installations and upgrade scenarios Even customer instances! 7/22/2010 @2010 SugarCRM Inc. All rights reserved. 15
  • 16. About me and my company John Mertic http://jmertic.wordpress.com Twitter: @jmertic jmertic@sugarcrm.com ( Work ) jmertic@php.net ( PHP ) Slides available on slidesharehttp://bit.ly/a7NOR1 SugarCRM http://www.sugarcrm.com We’re hiring! Learn more about SugarCRM’sopen source tools at http://developers.sugarcrm.com/opensource 7/22/2010 @2010 SugarCRM Inc. All rights reserved. 16 Buy my book!
  • 17. Questions? Thanks for coming! 7/22/2010 @2010 SugarCRM Inc. All rights reserved. 17

Editor's Notes

  1. People fear the cloudPeople can’t use the cloudPeople want to use different cloudsOur customer base reflects this ( 1/3 sugar cloud, 1/3 on site, 1/3 on other clouds )
  2. User base is diverse, likes different offerings, and will move between them.Lots of choices ( Web Servers / OSes / Databases / PHP versions ) as well as config possibilitiesHave to cover lots of platforms; can rely on particular hardware or software being available.
  3. PHP matrix covers most of the recent linuxdistros, and updates are easily available if your stack doesn’t match up
  4. Performance story about GNs; very particular to make go fastNeed to balance performance and configurability; make the performance choices that make the most difference, and enable ways for those working with your software to make more.
  5. Try to avoid subqueries as much as possible.
  6. Relate in picture, mention about balance for needed control and simplicity.Talk about how we made this a big deal in Sugar 6
  7. Types of testing we useTesting is hard