While working together with Microsoft on the Windows Azure SDK for PHP, we found that we needed an popular example application hosted on Microsoft’s Windows Azure. Wordpress was an obvious choice, but not an obvious task. Learn more about Windows Azure, the PHP SDK that we developed, SQL Azure and about the problems we faced porting an existing PHP application to Windows Azure.
2. While working together with Microsoft on the Windows Azure SDK for PHP, we found that we needed an popular example application hosted on Microsoft's Windows Azure. Wordpress was an obvious choice, but not an obvious task. Learn more about Windows Azure, the PHP SDK that we developed, SQL Azure and about the problems we faced porting an existing PHP application to Windows Azure. Just another wordpress weblog, but more cloudy
3. Maarten Balliauw Maarten Balliauw is a technical consultant in web technologies at RealDolmen, one of Belgium's biggest ICT companies. His interests are ASP.NET (MVC), PHP and Windows Azure. He's a Microsoft Most Valueable Professional (MVP) ASP.NET and has published many articles in both PHP and .NET literature such as MSDN magazine Belgium and PHP architect. Maarten is a frequent speaker at various national and international events. His blog can be found at http://blog.maartenballiauw.be.
4. Start with the title slide Keep the two hidden slides(#2) for speaker and session description Use the “Demo” Layout for Demos if using Powerpoint 2010, please use sections There’s a “black” and a “white” layouts if necessary End with the Q&A, “thank you”, “fill the forms” and the “Microsoft Potential + Passion” slide Quick guide
5. Who am I? Maarten Balliauw Antwerp, Belgium www.realdolmen.com Focus on web ASP.NET, ASP.NET MVC, PHP, Azure, VSTS, … MVP ASP.NET Interested in interoperability PHPExcel, PHPLinq, Windows Azure SDK for PHP, ... http://blog.maartenballiauw.be http://twitter.com/maartenballiauw
6.
7. Agenda Cloud computing? Windows Azure? Application architecture Using PHP with Windows Azure Wordpress Resources Q&A
9. What is Cloud Computing ? What is cloud computing ? Offering infrastructure, platform and software as a service over the internet to a global market. Move on-premises management of non functional IT assets to a provider. Difference from traditional hostings Sold on demand “pay as you grow” Elastic scalability Service is fully managed by the provider End user centric (IW or developer) Strong focus on integration (cloud-cloud or cloud-on-premises)
10. Definition of cloud (NIST) On-demand self service Standardized access Location independant resource pooling Rapid elasticity Pay per use
11. IT as a Service You manage Private (On-Premise) Infrastructure (as a Service) Platform (as a Service) You manage Applications Applications Applications Runtimes Runtimes Runtimes Security & Integration Security & Integration Security & Integration You manage Managed by vendor Databases Databases Databases Servers Servers Servers Managed by vendor Virtualization Virtualization Virtualization Server HW Server HW Server HW Storage Storage Storage Networking Networking Networking
13. The Windows Azure Platform Windows Azure SQL Azure Windows Azure platform AppFabric Microsoft Codename “Dallas” Microsoft Codename “Sydney”
14. Windows Azure Flexible application hosting Lights-out service management Provide code & service model, hit ENTER Storage at massive scale Blobs, tables, queues Compute Storage Management There’s an SDK for this: http://phpazure.codeplex.com
17. Storage options Blobs, tables, queues Windows Azure Drive (a.k.a. XDrive) Virtual NTFS volume that can be mounted .vhd format Use existing NTFS API’s Easier migration Stored on blob storage provides quick mount/unmount in other VM
18. SQL Azure Relational database as a service Highly available, automatically maintained Extension of the SQL Server Data Platform Reporting Data Sync Business Analytics Database There’s a driver for this: http://sqlsrvphp.codeplex.com
19. SQL Azure Relational database, provided as a service Highly symmetrical development and tooling experience (use TDS protocol and T-SQL) Highly scaled out, on commodity hardware Built on the SQL Server technology foundation High availability, DB provisioning, and DB management are provided by the service
20. Windows Azure AppFabric Secure connections between services Across organizational boundaries Claims-based access control ServiceBus AccessControl There’s an SDK for this: http://dotnetservicesphp.codeplex.com/
22. Windows Azure AppFabric - Service Bus Securely connect applications Over the internet Across any network topology (= across firewalls!) Across organizational boundaries Primary application patterns Eventing: Notify applications and/or devices Service Remoting: Securely project on-premises services out to the cloud Tunneling: App-to-app communication with NAT/Firewall traversal
24. Microsoft Codename “Dallas” Content brokerage and discovery platform Available as a CTP Microsoft Codename “Dallas”Information Services
25. Microsoft Codename “Sydney” - Connectivity WINDOWS AZURE PLATFORM ENTERPRISE Data Service Service Bus Access Control Service Code Name “Project Sydney”
26.
27.
28. Developer tools Development Use your favourite editor Local debugging Windows with IIS 7.x Visual Studio Windows Azure tools for Eclipse Packaging Windows Azure SDK Deployment Any browser
30. Typical Architecture on Azure Service Unavailable VIP Worker Role Web Role Windows Azure Storage (Blob, Table, Queue)
31. Web + Worker Role Service Model Worker Role Service Still Available Worker Role Web Role VIP Worker Role Web Role Worker Role Worker Role Windows Azure Storage (Blob, Table, Queue)
33. It’s all about… Running PHP Code in Windows Azure Eclipse Tooling Build, Test, Deploy PHP Projects Create New or Use Existing PHP Projects Scaling PHP Apps Using Cloud Storage from PHP Using Windows Azure Storage Using SQL Azure Using PHP with Windows Azure
34. Running PHP in Windows Azure How to Do It Host in Web role (like .NET) Supply PHP runtime Point to runtime via FastCGIconfiguration in Web.config Web.roleConfig Eclipse Tooling athttp://windowsazure4e.org does the above for you PHP Web Role Instance 1 VIP Load Balancer PHP Web Role Instance 2
35. PHP + Cloud Storage Windows Azure Storage VIP On-Premise Load Balancer PHP Web Role PHP App SQL Azure Windows Azure Platform
36. PHP with Windows Azure Storage Windows Azure SDK for PHP at http://phpazure.codeplex.com PHP programming model for Windows Azure Storage Features PHP classes for Blobs, Tables & Queues Store PHP sessions in Table Storage File system wrapper for Blob Storage
37. PHP with SQL Azure SQL Server Driver for PHP at http://sqlsrvphp.codeplex.com/ Supports PHP access to SQL Azure Features Choose between SQL Server and SQL Azure by changing connection string Use from on-premise apps or in Windows Azure
38. PHP with AppFabric AppFabric SDK for PHP developers athttp://dotnetservicesphp.codeplex.com/ Supports PHP on service bus and access control Features Expose on-premise apps on an external endpoint without opening firewall Pub/sub scenario’s …
40. Blogging engine Widely used Easy installation Gazillion plugins Huge community around it Free and open-source Wordpress
41. Runs on top of MySQL Has no database abstraction layer So: only runs on MySQL Windows Azure has Table Storage and SQL Azure I feel lots of work coming… But...
42.
43. Easy way out Wordpress on Windows Azure MySQL on-premise / at other hoster Medium way out Wordpress on Windows Azure MySQL as well Hard way out Wordpress on Windows Azure MySQL out, SQL Azure in There are ways around!
44. The easy way out Windows Azure Storage VIP Load Balancer PHP Web Role MySQL Windows Azure Platform On-Premise / hosted
45. The easy way out Fresh Windows Azure project in Eclipse Fresh Wordpress.org download Point wp-config.php to some MySQL server Package & deploy
46. The medium way out Windows Azure Storage VIP Load Balancer PHP Web Role WorkerRole runningMySQL Windows Azure Platform On-Premise / hosted
47. Fresh Windows Azure project in Eclipse Fresh Wordpress.org download “Windows Azure MySQL PHP Solution Accelerator” http://code.msdn.microsoft.com/winazuremysqlphp Some configuration Some anger Some configuration Point wp-config.php to the above MySQL server Package & deploy The medium way out
48. BUT! Instance count! Pricing! (5 x 240 EUR / month adds up...) Easier migration, but at a cost... The medium way out
49. Yes, you can run MySQL on Windows Azure! More “solution accelerators”: MySQL http://code.msdn.microsoft.com/winazuremysqlphp Memcached http://code.msdn.microsoft.com/winazurememcached MediaWiki http://code.msdn.microsoft.com/winazuremediawiki Tomcat http://code.msdn.microsoft.com/winazuretomcat So...
50. The hard way out Windows Azure Storage VIP Load Balancer PHP Web Role SQL Azure Windows Azure Platform On-Premise / hosted
51. Fresh Windows Azure project in Eclipse Fresh Wordpress.org download Point wp-config.php to SQL Azure Package & deploy Fail! There’s no SQL Server / SQL Azure support in Wordpress, remember? The hard way out
52. MySQL queries all over the place! “Data layer” (wp-db.php) = very thin Raw MySQL queries passed from app to db Logging Some other stuff That’s nowhere near a database abstraction... Have you ever looked at Wordpress?
53. Required: Re-build wp-db.php using SQL Server Driver for PHP http://www.microsoft.com/sqlserver/2005/en/us/PHP-Driver.aspx Options... Re-write every single query in Wordpress Future proof? Insane! Build a query translation tool, rewriting queries on-the-fly Future proof! Insane! Strategic options
54. Hooks in Wordpress Wp-contents/db.php Wp-includes/wp-db.php Strategy Create wp-db.php class on top of SQL Server Driver for PHP http://www.microsoft.com/sqlserver/2005/en/us/PHP-Driver.aspx Create custom DB schema, compatible with SQL Server Build a query translation tool, rewriting queries on-the-fly Someone at Microsoft had this laying around Here’s what we did...
55. Resources Images, other file uploads, ... Normally stored on server disk But this may not survive on Windows Azure... Solution Plugin using Windows Azure SDK for PHP Storing everything on Blob Storage Serving everything from Blob Storage There’s a CDN available! But there’s also... resources
59. Resources Windows Azurehttp://www.azure.com Windows Azure SDK for PHPhttp://phpazure.codeplex.com SQL Server Driver for PHPhttp://sqlsrvphp.codeplex.com AppFabric SDK for PHP developershttp://dotnetservicesphp.codeplex.com PDChttp://microsoftpdc.com PHP Architect December 2009 issuehttp://www.phparch.com Steve Marxhttp://blog.smarx.com/ Clemens Vastershttp://vasters.com/clemensv/ Simon Guesthttp://simonguest.com/blogs/smguest My bloghttp://blog.maartenballiauw.be/category/Azure.aspx RealDolmen blogs is running on Azure!http://www.realdolmenblogs.com
60. Windows Azure is Operating system (computing & storage) SQL Azure AppFabric Codename projects Your application and skills Hybrid applications It’s not that hard to do Conclusion
61. Is the source code available? No, not at this time. Do I need Visual Studio / Eclipse? Only for local debugging. Do I need Windows & the Windows Azure SDK? Only for local debugging. Before skipping to Q&A...