Slides of the talk I did at Zendcon 09. It tells PHP developers what they need to know about the cloud and gives exampes of how to interact with cloud services and applications.
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
donderdag 22 oktober 2009
9. NIST: Five Characteristics
Things that are considered cloud:
On-demand, self-service
Broad network access
Resource pooling
Rapid elasticity
Measured service
9
donderdag 22 oktober 2009
10. NIST: Three Service Models
Cloud applications are:
Software as a Service
Platform as a Service
Infrastructure as a Service
10
donderdag 22 oktober 2009
11. NIST: Four Deployment Models
Private cloud
Community cloud
Public cloud
Hybrid cloud
11
donderdag 22 oktober 2009
14. Infrastructure as a Service
Parts of the infrastructure offered as service to your app:
14
Network
Hardware
Operating System
Storage
System Software
Application
donderdag 22 oktober 2009
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
donderdag 22 oktober 2009
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
donderdag 22 oktober 2009
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
donderdag 22 oktober 2009
21. Clouds for Development
Private Cloud:
• Flexible development environments
• Easy to simulate large scale environments
• Easy to set up multiple clusters
21
donderdag 22 oktober 2009
25. Horizontal Scalability
If you run your app on multiple servers today, would it work?
Typical problem areas:
• Sessions
• Files
25
donderdag 22 oktober 2009
26. Horizontal Scalability
Danga - http://www.danga.com/
• People behind LiveJournal / SixApart
• Creators of tools to help make software horizontally scalable
• Memcache - distributed caching, session clustering
‣ http://github.com/andreiz/php-memcached
• MogileFS - distributed file storage
‣ http://projects.usrportage.de/index.fcgi/php-mogilefs
• Gearman - distributed parallel job processing / message queue
‣ http://pecl.php.net/package/gearman/
26
donderdag 22 oktober 2009
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
donderdag 22 oktober 2009
33. Characteristics Of Your App
Service oriented
Stateless
Low coupling
Modularity
Interoperability
33
donderdag 22 oktober 2009
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
donderdag 22 oktober 2009
36. Platform as a Service
Complete platform offered as a service:
36
Network
Hardware
Operating System
Storage
System Software
Application
donderdag 22 oktober 2009
37. Platform as a Service
Platform scales up and down as necessary
Same pitfalls and advantages as IaaS, plus:
• Don’t worry about scalability
37
donderdag 22 oktober 2009
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
donderdag 22 oktober 2009
41. Rackspace’s TrueHybrid
Platform selects the best operating system for your site
Magically blends Windows and Linux, ASP.NET and PHP
41
donderdag 22 oktober 2009
42. Other Platforms for PHP
NING
• http://ning.com
• Social Network PaaS
Force.com
• Salesforce cloud platform
• Business applications
Overall no serious enough candidate yet
• Somebody should create an AppEngine for PHP
42
donderdag 22 oktober 2009
44. Software as a Service
Everything in the cloud:
44
Network
Hardware
Operating System
Storage
System Software
Application
donderdag 22 oktober 2009
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
donderdag 22 oktober 2009
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
donderdag 22 oktober 2009
49. Example: Google Apps
Many features available through Zend_Gdata_* in ZF
• Information retrieval
• Document storage
• Calendering
• Account Configuration
49
donderdag 22 oktober 2009
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
donderdag 22 oktober 2009
52. The ‘Warcraft Effect’
Clouds are living entities that change when you’re not looking
52
donderdag 22 oktober 2009
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
donderdag 22 oktober 2009
63. Summary
What is the Cloud?
• The cloud = IaaS + PaaS + SaaS
If you have trouble remembering:
• Cloud = Platform, Infrastructure & Software as a Service
63
donderdag 22 oktober 2009
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
donderdag 22 oktober 2009
65. Food for Thought
Let’s leave you with something to think about
65
donderdag 22 oktober 2009
66. Food for Thought
Are you worried about this?
66
Cloud
Where’s my
data?!
Cloud
Provider
donderdag 22 oktober 2009
67. Food for Thought
Then what about this?
67
Financial System
Where’s my
money?!
Bank
Our money has been in the cloud since the 18th century!
donderdag 22 oktober 2009