SlideShare uma empresa Scribd logo
1 de 17
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

Mais conteúdo relacionado

Semelhante a 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 - 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
 
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
 
Silk4net Tcm6 174178
Silk4net Tcm6 174178Silk4net Tcm6 174178
Silk4net Tcm6 174178
titita13
 
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
 
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
 

Semelhante a 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 - 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
 
Travelling light for the long haul
Travelling light for the long haulTravelling light for the long haul
Travelling light for the long haul
 
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
 

Mais de 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
 
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
 
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
 

Mais de 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
 

Último

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 

Último (20)

🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 

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

Notas do Editor

  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