global windows azure bootcamp : cedric derue playing with php on azure. (sponsor annuel du mug-lyon:...

Post on 29-Nov-2014

162 Views

Category:

Internet

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Global Windows Azure Bootcamp : Cedric Derue playing with php on azure Sponsor Annuel: Viseo

TRANSCRIPT

Playing with PHP on Azure

A Zend experience

Cédric Derue – GWAB 2014

Web Architect @ Altran

Skills: • Zend Framework 2

• ASP.NET MVC

• JavaScript

• NoSQL

Twitter: @cderue

Cédric Derue

You love PHP,

You love scripting,

You love pachyderms,

You know Windows?

Who this session is for?

Cloud Computing definition

Windows Azure introduction

Zend Framework 2 use case

Azure Web Sites

Azure Storage

Agenda

Cloud Computing origin

Arpanet

Amazon

Google

HP

Microsoft

Windows Azure solution

Choose your ressources

App

A simple equation to summary Windows Azure

Blocs de

construction

applicatif

Compute Application blocks

Infra for building and deploying apps

Evolutive and scalable

Fault tolerance

On demand

Pay for what you use

Windows Azure benefits

Azure free trial

Windows Azure Portal

Windows Azure execution models

Cloud Services

Mobile Services

Virtual Machines

Web Sites

Virtual Machines

Highly

configurable

Windows Server

or Linux

IaaS

Scalable

Web Sites

.NET, PHP,

Python, Node.js,

Java

IIS

PaaS

Scalable

Mobile Services

Android

iOS

HTML

Hybrid

Storage

Authentication

Push

Monitoring

MBaaS

Scalable

Cloud Services

Highly

configurable

IIS

PaaS (Web &

Worker Roles)

Scalable

How to choose the right(s) model(s)?

Create a new Azure Web Site

Start a new ZF2 app on Azure

Add ZF2 modules

Work with relational data on Azure

Work with non relational data on Azure

Install Windows Azure SDK for PHP

Demonstrate reversibility

PHP Azure Web Site demo

Create a new Web Site on Azure

Configuring source control

Explore Azure Web Site(s)

Managing configuration

Modular

Extensible

High performing

Secure

Enterprise ready

Community

Why Zend Framework 2?

> composer create-project

--repository-url=

"https://packages.zendframework.com"

-s dev

zendframework/skeleton-application

<path/to/install>

> composer update

> php -S localhost:8080 -t public/ public/index.php

Initialize a new ZF2 app

<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="MyFixIt" stopProcessing="true"> <match url="^(.*)$" ignoreCase="false" /> <conditions> <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" /> </conditions> <action type="Rewrite" url="index.php" /> </rule> </rules> </rewrite> </system.webServer> </configuration>

Web.config

> git remote add origin

https://cderue@zf2.scm.azurewebsites.net:443/zf2.git

> git remote -v

> git push origin master

Publishing with Git

First sign of life

http://zf2.azurewebsites.net

Understanding ZF2 app structure

Discovering ZF2 modules

http://modules.zendframework.com

{ "name": "cderue/zf2-myfixit", "description": "MyFixIt Application for ZF2", "license": "Apache License, Version 2.0", "keywords": [ "framework", "zf2", "azure" ], "homepage": "http://github.com/cderue", "minimum-stability": "alpha", "require": { "php": ">=5.3.3", "zendframework/zendframework": "2.2.*", } }

Composer

ZfcUser Authentication

MyFixIt Task Management

Which modules for our demo?

Authentication is to verify that a person or

entity is what it claims to be.

Authentication is not authorization.

Authentication

Zend\Authentication principle

Storage

Zend\Authentication\AuthenticationService

Adapter

Db LDAP … Db Session …

"require": {

"zf-commons/zfc-user": "dev-master" }

Install ZfcUser module

<?php return array( 'modules' => array('ZfcBase','ZfcUser') );

Post installation

Installation

The MyFixIt module

Domain Driven Design

Dependency injection

Table Storage

Blob storage

Environment specific configuration

Reversibility

Exploring the FixIt module

With Azure, data can be stored in different

systems like SQL or/and NoSQL databases,

blobs, drives, etc.

Azure provides data management services

for reporting or Big Data computing.

Working with data

Azure SQL Database

Azure Table Storage

Azure Blob Storage

Others…

Working with data on Azure

$adapter = new Zend\Db\Adapter\Adapter( array( 'driver' => 'pdo',

'dsn' => '<dsn>' 'database' => '<mysql_db>', 'username' => '<db_user>', 'password' => '<db_user_password>',

'hostname' => '<hostname>', ) );

Access to MySQL Azure with Zend\Db

Store and access data with:

Blob (large binary or text data)

Table (non relational data)

Queue (messages)

Azure Storage Services overview

Storage in the form of tables

Flexible schema

High performance

REST API

Azure Table Storage

Azure Blob Storage

Account Container Blob

cedric

pictures

movies Man of Steel.avi

Beyonce.jpg

Shakira.png

Explore Azure Storage

Windows Azure SDK for PHP

Zend Framework 2 components

Symfony 2 bundles

Working with PHP on Azure

Windows Azure SDK for PHP

Windows Azure SDK for PHP

PHP Client Librairies

Command Line Tools

Azure Emulators

Windows Azure

REST API

Compute Storage Manage

My PHP application

Install Windows Azure SDK

"require": {

"microsoft/windowsazure": "*" }, "repositories": [

{

"type": "pear",

"url": "http://pear.php.net" }

],

"minimum-stability": "dev"

}

Installation

When you deploy an application on the cloud,

the reversibility must be taken into account to

allow execution on premise if you decide to

leave the cloud.

Think reversibility!

Switch beetween two configuration files:

config/autoload/module.myfixit-

azure.local.php

config/autoload/module.myfixit-

onpremise.local.php

Switch with env specific config

"require": {

"doctrine/doctrine-mongo-odm-module": "dev-master"

}

Install Doctrine ODM module

<?php

return array( 'modules' => array(

'DoctrineModule', 'DoctrineMongoODMModule'

) );

Installation

Post installation

return array(

'doctrine' => array(

'connection' => array(

'server' => 'localhost',

'port' => '27017',

'user' => '<user_name>',

'password' => '<password>',

'dbname' => '<db_name>',

),

),

);

Connect to MongoDB with Doctrine

It’s time to demo

New Relic

Application Insights

Zend Server (PHP only)

Monitoring your cloud applications

Windows Azure makes all you want …

…except French Kiss!

Summary

Thank you!

top related