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

Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website
Pixlogix Infotech
 
Data structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdfData structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdf
TIPNGVN2
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
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
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
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
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Speck&Tech
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
Claudio Di Ciccio
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...
Zilliz
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
Daiki Mogmet Ito
 

Recently uploaded (20)

Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website
 
Data structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdfData structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdf
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
 
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
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
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
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
 

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