Windows Azure provides many services that are very appealing for PHP developers, especially if you need to get started quickly.
In this talk I give my motivation to try out Windows Azure cloud solutions, and discuss the main features like web sites, virtual machines and cloud services. Combining these features with blob storage, table storage, queues, WinCache, CDN and SSL you can build robust, scalable and very performant web applications and deploy them in just a few minutes.
4. Why
Windows
Azure?
‣ PHP
Developer
‣ Write
web
applicaFons
‣ Want
to
deploy
fast
and
safe
‣ Prototyping
‣ Not
a
sysadmin
‣ Don’t
have
Fme
to
worry
about
plaIorms
‣ Don’t
want
to
worry
about
scalability
in 2 it
5. Azure
for
PHP
devs
‣ Supports
most
common
PHP
frameworks
‣ Symfony,
Zend
Framework,
Silex,
Slim,
…
‣ Building
robust
web
applicaFons
‣ storage
and
CDN
‣ easy
separaFon
of
responsibiliFes
in 2 it
7. Or
more
complex
Centric Architecture
Application 3
2
Database
at
ic
Application 1
Database
Log
L
Storage
A
Cache
Worker
Y
Storage
E
Cache
R
Log
Mail
Cache
Queue
Application 5
Proxy
Service Layer
4
Web
Application
E
R
V
Database
I
C
Queue
Queue
E
n
Ap
pl
S
Web Application
io
Proxy
at
ic
Web
Application
Log
pl
io
n
Proxy
API
Ap
Proxy
Storage
Mail
Mail
in 2 it
9. Azure
SDK
for
PHP
‣ Contents
‣ PHP
client
libraries
for
Windows
Azure
‣ Command
line
tools
for
Mac
&
Linux
‣ Windows
Azure
powershell
for
Windows
‣ Windows
Azure
Emulators
for
Windows
in 2 it
10. SDK
for
PHP
‣ WindowsAzure
‣ Blob
‣ Common
‣ Queue
‣ ServiceBus
‣ ServiceManagement
‣ ServiceRunFme
‣ Table
in 2 it
11. SDK
installaFon
Composer
PEAR
GIT
$
svn
export
h:ps://github.com/WindowsAzure/azure-‐sdk-‐for-‐
php/trunk/WindowsAzure
library/WindowsAzure
!
Subversion
Hp
in 2 it
16. Requirements
‣ A
PHP
project
‣ A
version
control
system
‣ local
(GIT,
Subversion,
TFS,
WebDeploy)
‣ on
line
(GitHub,
Bitbucket,
DropBox)
‣ AlternaFve
tools
‣ FTP
deploy
‣ Using
VisualStudio
or
WebMatrix
to
deploy
‣ About
15
minutes
in 2 it
17. One
important
thing!
‣ DocumentRoot
in
project
subdir
‣ e.g.
public/index.php
‣ Requirement
for
web.config
<rule name="GoPub" patternSyntax="Wildcard">
<match url="*" />
<action type="Rewrite" url="public/index.php" />
</rule>
in 2 it
21. Usages
‣ Run
arbitrary
processes
‣ e.g.
cron
processes
‣ Provide
uFlity
services
‣ e.g.
forward
proxy
‣ Cloud
OS
‣ Windows,
SQL
Server
or
Linux
in
the
cloud
in 2 it
25. Background
‣ Coming
from
a
UNIX/Linux
environment
‣ Worked
as
system
administrator
‣ Wrote
tools
in
Perl
(yeah,
I
know)
‣ Used
to
Cron,
Shell,
CGI
and
Daemons
‣ Worked
with
Windows
IIS
‣ Never
had
to
set
things
up
‣ Used
FTP
to
deploy
on
the
system
‣
Never
knew
the
fact
it
was
a
web
role
in
IIS
in 2 it
26. Figuring
it
out
‣ Web
Role
‣ A
web
site
or
service
running
on
the
internet
‣ Can
use
all
Windows
Azure
services
‣ Worker
Role
‣ Runs
processes
in
the
background
‣ Can
use
all
Windows
Azure
services
in 2 it
27. Why
Cloud
Services?
‣ All
the
power
of
Web
Sites
‣ With
smart
scaling
capabiliFes
‣ Memcache
like
caching
layer
per
instance
‣ Staging/ProducFon
environments
‣ With
smart
swapping
‣ Allows
controlled
automated
deployments
in 2 it
31. Web
Role
for
PHP
Local
‣ Start
Azure
Emulator
‣ PS
C:devmyProject>
Start-‐AzureEmulator
Creating local package...
Starting Emulator...
Role is running at http://127.0.0.1:81
Started
in 2 it
39. Blob
storage
‣ Storage
for
binary
large
objects
(BLOB)
‣ Block
blobs
(200GB)
‣ Page
blobs
(1TB)
‣ Unlimited
storage
capacity
‣ Content
delivery
network
(CDN)
‣ HTTP
and
HTTPS
support
‣ CNAME
support
‣ To
integrate
within
your
own
domain
(e.g.
blob.mycompany.com)
‣ Data
replicaFon
in 2 it
42. Table
storage
‣ Storage
of
structured
data
‣ Oken
referred
to
as
NoSQL
‣ Implements
tree-‐like
data
storage
and
‣
‣
retrieval
Scalable
and
replicated
Supports
OData
protocol
in 2 it
43. Table
Storage
overview
name
=
…
email
=
…
customer
name
=
…
email
=
…
Company
product
code
=
…
price
=
…
in 2 it
44. Accessing
Table
Store
data
‣ Using
REST
directly
‣ GET
h;p://mycompany.table.core.windows.net/
customer
‣ Using
SDK
‣ h;ps://github.com/WindowsAzure/azure-‐sdk-‐
for-‐php
in 2 it
45. Queue
Storage
‣ FIFO
type
storage
‣ Processing
one
item
a
Fme
‣ Messages
in
any
format
of
64KB
‣ Useful
for
deferred
acFons
‣ Resize
of
images
‣ Sending
out
mails
‣…
in 2 it
47. Accessing
Queue
Messages
‣ Directly
with
REST
‣ GET
h;ps://
mycompany.queue.core.windows.net/
mailToSend
‣ Indirectly
using
SDK
‣ h;ps://github.com/WindowsAzure/azure-‐sdk-‐
for-‐php
in 2 it
48. A
lot
more…
Infrastructure
Big Data
Web
Mobile
Dev & Test
Media
Storage,
Backup &
Recovery
Identity &
Access
Management
in 2 it
52. Conclusion
‣ PHP
for
web
applicaFon
development
‣ WAWS
for
rapid
prototyping
‣ WACS
for
scaling
web
apps
and
workers
‣ WAVM
for
proxy,
tooling
and
scheduling
in 2 it
53. PHP
checklist
‣ Get
your
prototypes
online
quickly
‣ Ensure
your
apps
stay
online
all
the
Fme
‣ Distribute
responsibiliFes
‣ Integrate
3rd-‐party
soluFons
easily
in 2 it