An overview of cloud computing for PHP developers.
This is a slightly updated version of my earlier 'PHP and the Cloud' slides, mostly to reflect my new company's layout.
8. Clouds According to NIST
“Cloud computing is a model for enabling convenient, on-demand
network access to a shared pool of configurable computing
resources that can be rapidly provisioned and released with
minimal management effort or service provider interaction.
This cloud model promotes availability and is composed of five
essential characteristics, three service models, and four
deployment models.”
National Institute of Standards and Technology
http://csrc.nist.gov/groups/SNS/cloud-computing/
8
9. NIST: Five Characteristics
Things that are considered cloud:
‣ On-demand, self-service
‣ Broad network access
‣ Resource pooling
‣ Rapid elasticity
‣ Measured service
9
10. NIST: Three Service Models
Cloud applications are:
‣ Software as a Service
‣ Platform as a Service
‣ Infrastructure as a Service
10
11. NIST: Four Deployment Models
‣ Private cloud
‣ Community cloud
‣ Public cloud
‣ Hybrid cloud
11
14. Infrastructure as a Service
Parts of the infrastructure offered as service to your app:
Application
System Software
Storage
Operating System
Hardware
Network
14
15. Infrastructure as a Service
‣ Pitfalls:
• Vendor lock-in
• Security
• Integrity of the service provider
‣ Advantages:
• Easily scalable
• Move from capital expense to operational expense
• Metered use
• Don’t worry about hardware...
15
17. The Hardware/OS Layer
‣ Typically offered as Virtual Machine images
‣ Gives ‘throw hardware at the problem’ a new dimension
‣ Elastic load balancing divides traffic over instances
17
18. Example: The Rackspace Cloud
‣ The RackspaceCloud is what used to be called Mosso
‣ Powerful API for managing your cloud
‣ Easy access in PHP through Aleksey Korzun’s PHP API:
• http://github.com/AlekseyKorzun/php-cloudservers
‣ Concepts
• Images (various operating systems)
• Flavors (configuration: mem, cpu, disk)
18
21. Clouds for Development
‣ Private Cloud:
• Flexible development environments
• Easy to simulate large scale environments
• Easy to set up multiple clusters
21
31. Abstraction
‣ Con:
• Common denominator functionality
• Adds some overhead
‣ Pro:
• Reduce vendor lock-in
• Increase flexibility
• Save development time
• No need to learn different APIs
• Promotes competition between providers
31
33. Characteristics Of Your Application
‣ Service oriented
‣ Stateless
‣ Low coupling
‣ Modularity
‣ Interoperability
33
34. Infra as a Service = SLA Hell?
‣ Find out service levels of infrastructure components
‣ Get proper support
‣ Create “What if...” scenarios
• What if Amazon is down?
• What if SupaDupaCloudStore goes bankrupt?
‣ Who owns the data?
‣ Pay attention to license agreements
34
39. Google AppEngine
‣ http://code.google.com/appengine/
‣ Python and Java
‣ Able to run PHP via Quercus (Java PHP interpreter)
• http://www.webdigi.co.uk/blog/2009/run-php-on-the-google-app-engine/
• http://www.caucho.com/resin-3.0/quercus/
‣ Technology needs to prove itself
• Example sites running on Quercus:
‣ http://www.webmonkey.com/
‣ http://www.style.com/stylefile/
39
44. Software as a Service
Everything in the cloud:
Application
System Software
Storage
Operating System
Hardware
Network
44
45. Software as a Service
‣ Complete applications or application components
‣ Popular phrase: “We are moving our ... to the cloud”
‣ Examples:
• Gmail
• Google Apps (office apps, calendar, email)
• Salesforce for CRM
‣ Often built on IaaS
• Dropbox file sharing (makes use of Amazon S3 for storage)
• Jungledisk backups (same)
45
47. Example: Salesforce
‣ Gives access to all your data in Salesforce using SOAP
‣ PHP library available
‣ Documentation abundant
• http://developer.force.com/
‣ Salesforce was SaaS way before term ‘cloud’ was coined
‣ Most developer friendly SaaS
• Documentation
• Sandbox functionality (paid)
47
49. Example: Google Apps
‣ Many features available through Zend_Gdata_* in ZF
• Information retrieval
• Document storage
• Calendering
• Account Configuration
49
51. General SaaS suggestions
‣ Want to work with X from PHP?
• Google ‘X php api’ or ‘X php tutorial’
• You’re almost never the first to want to work with it
‣ Cloud apps are easier to work with than most desktop/
noncloud apps.
‣ Testing
• You don’t want to jeopardize your production data
• See if there is a sandbox feature (Salesforce has one)
• If not, create test accounts
51
52. The ‘Warcraft Effect’
Clouds are living entities that change when you’re not looking
52
54. Creating SaaS
‣ In 2 years Cloud Infrastructure will be a commodity
• It’ll be all about application development
‣ Building an application for multiple users/customers
‣ Things to pay attention to:
• Reliability (one customer getting in the way of another)
• Security (competitors seeing each other’s data)
• Deployment
• Maintenance
54
63. Summary
‣ What is the Cloud?
• The cloud = IaaS + PaaS + SaaS
‣ If you have trouble remembering:
• Cloud = Platform, Infrastructure & Software as a Service
63
64. Summary
‣ With your next PHP application:
• See if you can run it on a Cloud Platform
• See if you can run parts on Cloud Infrastructure
• See if you can use Software as a Service components
• See if you can offer it as a service
• Keep your architecture ‘cloud ready’
‣ Think about clouds!
• In a couple of years, we’ll all be doing it
64