Running PHP in the cloud Maarten Balliauw – RealDolmenE-mail: maarten.balliauw@realdolmen.comBlog: http://blog.maartenballiauw.beTwitter: @maartenballiauw
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
Agenda Windows Azure? Application architecture Using PHP with Windows Azure Demo time! Resources Q&A
What’s in the cloud? Windows Azure
Definition of cloud (NIST) On-demand self service Standardized access Location independant resource pooling Rapid elasticity Pay per use
IT as a Service Private (On-Premise) Infrastructure (as a Service) Platform (as a Service) You manage Applications Applications Applications You manage Runtimes Runtimes Runtimes Security & Integration Security & Integration Security & Integration Managed by vendor You manage Databases Databases Databases Servers Servers Servers Managed by vendor Virtualization Virtualization Virtualization Server HW Server HW Server HW Storage Storage Storage Networking Networking Networking
The Windows Azure Platform Windows Azure SQL Azure Windows Azure platform AppFabric Microsoft Codename “Dallas” Developer tools
Azure Service Platform Windows Azure is an Operating System as a Service for the Cloud.
Compute– auto-provisioning 64-bit application containers in Windows Server VMs; supports a wide range of application models
Storage– highly available distributed table, blob, queue, & cache
Programmability – Managed ADO.NET data access, native ODBC, support for PHP
Tools – SQLCMD and the SQL Azure Database account portal
AppFabric is the glue between on-premises and the cloud.
Service Bus – connectivity to on-premises applications; secure, federated fire-wall friendly Web services messaging intermediary; durable & discoverable queues
Identity Management – rules-driven federated identity; AD federation; claims-based authorization
Live Services is a building block within the Azure Services Platform.
Live Mesh
Live ID
Live Contacts
Live …
Live Services
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
Windows Azure
SQL Azure Relational database as a service Highly available, automatically maintained Extension of the SQL Server Data Platform Business Analytics Reporting Data Sync Database There’s a driver for this: http://sqlsrvphp.codeplex.com
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 Beyond “hosted database” High availability, DB provisioning, and DB management are provided by the service Pay for what you use
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/
Windows Azure AppFabric - Service Bus Securely connect applications Over the internet Across any network topology 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
Service Bus Overview
Microsoft Codename “Dallas” Content brokerage and discovery platform Available as a CTP at commercial launch Microsoft Codename “Dallas”Information Services
What’s in the cloud? Windows Azure Application Architecture What would a typical cloud application look like?
Typical Architecture on Azure Service Unavailable VIP Worker Role Web Role Windows Azure Storage (Blob, Table, Queue)
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)
What’s in the cloud? Using PHP with Windows Azure
Windows Azure Platform SOAP SOAP REST Your Cloud Application REST XML End Users Other Development Platforms Enabling Interoperability XML .NET SDKs PHP and Java SDKs for Windows Azure Your Software Application PHP, Java, Ruby SDKs for AppFabric Developers
Using PHP with Windows Azure 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
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
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 I’m whining for this one!
PHP + Cloud Storage Windows Azure Storage On-Premise VIP PHP Web Role Load Balancer PHP App SQL Azure Windows Azure Platform
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
Windows Azure SDK for PHP Overview Enables PHP developers to take advantage of the Microsoft Cloud Services Platform – Windows Azure. Open source project being contributed to Zend Framework (http://framework.zend.com) Features PHP classes for Windows Azure Blobs, Tables & Queues (for CRUD operations) Helper Classes for HTTP transport, AuhN/AuthZ, REST & Error Management Manageability, Instrumentation & Logging support Project site: http://phpazure.codeplex.com/ Logical architecture Your PHP application REST Compute Storage Manage Deployment scenarios PHP Runtime Any internet connected Server PHP Runtime REST REST
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
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 …
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
What’s in the cloud? DEMOS Finally!
Demos Eclipse Tools for Windows Azure Windows Azure SDK for PHP And a demo app!
ImageCloud Upload your images! Free, unlimited storage! Images stored in multiple formats! Delivered trough a high-speedcontent-delivery network! Repurposed adaptive functionality! Empowered best-of-breed methodology! Virtualized granular service! Integrated cloud-based deliverable! ImageCloud
ImageCloud Architecture WebRole Worker Role Computation Services End Users ImageCloud Table Storage Blob Storage Queue Service Storage Services
What’s in the cloud? Resources
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
Before skipping to Q&A... Do I need Visual Studio / Eclipse? Only for local debugging. Do I need Windows & the Windows Azure SDK? Only for packaging. I’ll keep whining to make this available on Linux.