The Wayback Machine - https://web.archive.org/web/20151023185322/http://www.slideshare.net/combell/hybrid-cloud-phpuk2012
Develop	  &	  deploy	  using	  hybrid	  cloud	  strategiesThijs	  FerynEvangelist+32	  (0)9	  218	  79	  06thijs@combellgr...
Very	  excited	  to	  be	  here	  !
THIJS
TAZE
Evangelist
@ThijsFeryn
Please	     rate	  my	  talk	  on	         Joind.inhttps://joind.in/4951
What	  is	  Cloud?
“That’s	  where	  rain	  comes	  from”               Andrei	  Zmievski
Cloud    =Internet
DefiniIon  A	  model	  for	  consumpIon	  &	   delivery	  on	  the	  internet	  where	   flexibility	  is	  essenIal	  &	  c...
Internet	  as	  a	  uIlity
Translated	  to	  what	  we	  know	  &	  need
Always	  available
Fast	  (enough)
Scalability        Up	  &	  down	  vs	  out	  &	  in
Focus	  on	  using,	  do	  what	  you’re	  good	  at
Leave	  the	  rest	  to	  others
Higher	  up	  the	  stack
Economic	  advantages
Less	  money Less	  effort  Less	  riskLess	  worries
Hybrid	  let’s	  you	  do	  that
Hybrid	  is	  just	  a	  fancy	  way	  of	  saying
Pick	  the	  pieces	  of	  the	  puzzle	  yourself
Amazon	  web	  services ✓CompuIng ✓Database  –EC2       –RDS  –ELB       –DynamoDB  –Auto	    –SimpleDB   scaling   –ElasI...
Windows	  Azure               ✓CompuIng               ✓Storage                –Blog	  storage                –Table	  stor...
Orchestra            ✓CompuLng            ✓Database              –Memcached              –MySQL	  &	  RDS              –Co...
CloudFlare             ✓CDN             ✓DNS             ✓DDOS	  security             ✓Traffic	  analyIcs             Protec...
CombellFully	  customized	  &	  managed	  soluIons
Easy	  peasy,	  right?
Single	  point	  of	  failure
Shared	  nothing
Nothing	  is	  local
Distributed	  systems
Easy	  to	  deploy	  &	  manage?
How	  do	  you	    deal	  with$_SESSIONS?
ReplicaIonR/W	  splibng
“Cloud	  is	  for	  green	  field	  projects”                Maarten	  Balliauw
Let’s	  do	  it	  !
Infrastructure ✓Basics  –Webservers  –MySQL	  servers  –File	  servers ✓AddiIonal	  servers  –Caching	  servers  –Reverse	...
Single	  server	  setup
Single	  server	  setup ✓Developer  –Everything	  is	  local   •Files   •Databases ✓Sysadmin  –Sits	  back,	  drinks	  som...
Single	  server	  setup                                                      What	  ✓Amazon                               ...
Separate	   MySQL
Separate	  MySQL ✓Developer  –Change	  connecIonstring(s) ✓Sysadmin  –Sets	  up	  separate	  server  –Tunes	  for	  MySQL
Separate	  MySQL                                             What	  ✓Amazon                                    about	  the...
MulIple	  MySQL’s
MulIple	  MySQL’s✓Developer –Read	  write	  spliUng	  in	  code –Connect	  to	  loadbalanced	  hostname✓Sysadmin –Setup	  ...
MulIple	     Use	  mysqlnd_ms	  for	  R/W	  splibng	  in	  case	  of	  crappy	  codeMySQL’s{	  	  	  	  "myapp":	  {	  	  ...
mysqlnd_ms.enable=1mysqlnd_ms.ini_file=/path/to/mysqlnd_ms_plugin.ini                                              php.ini...
MulIple	  MySQL’s                                                         What	  ✓Amazon                                  ...
MulIple	   web	  servers
MulIple	  web	  servers✓Developer –MulLple	  places	  to	  deploy –Where	  are	  my	  staLc	  assets? –Sessions?✓Sysadmin ...
Memcached	  session	  handlersession.save_handler	  =	  memcachedsession.save_path=	  “mc1.myapp.ext:11211,mc2.myapp.ext:1...
MulIple	  Web	  servers                                                   What	  ✓Amazon                                  ...
Offload	   staIc	    files
Offload	  staIc	  files✓Developer –Sync	  current	  assets –Store	  new	  files	  on	  external	  servers –Use	  external	  ho...
Offload	  staIc	  files                                                     What	  ✓Amazon                                   ...
When	       the	  pressure	         is	        on
Auto	  scaling	  &	  load	  balancing
CDN	  &	  asset	  offloading
Reverse	  (caching)	  proxy
Memcached
Adapt yourcode
Storage
require_once	  Zend/Service/WindowsAzure/Storage/Blob.php;	  $storageClient	  =	  new	  Zend_Service_WindowsAzure_Storage_...
<?php$storage = Zend_Cloud_StorageService_Factory::getAdapter(array(    Zend_Cloud_StorageService_Factory::STORAGE_ADAPTER...
<?php$storage = Zend_Cloud_StorageService_Factory::getAdapter(array(    Zend_Cloud_StorageService_Factory::STORAGE_ADAPTER...
Design	       pajerns                                  Modular	      e.g.                 AbstracIon	      designDependenc...
+	  W3	  Total	   Cache
W3	  Total	  Cache✓Page	  caching	   -­‐ Memcached	  (loadbalanced) -­‐ Varnish	  (loadbalanced)✓Database	  &	  object	  c...
Deploy	  your	  code
Deploy	  your	  code✓General	  deployment	  methods  –Capistrano  –Phing  –Puppet	  (config	  is	  code	  too)  –Version	  ...
About	  Azure	  deployment
About	  Azure	  deploymentscaffolder	  run	  -­‐out="c:tempHelloAzureProject"package	  create	  -­‐in="C:tempHelloAzurePro...
About	  Azure	  deployment                           Sebngs.iniCertificate=XXXXXXXXSubscriptionId=XXXXXPassphrase=XXXXXXXX...
About	  Azure	  deploymentdeployment.php	  CreateFromLocal	  -­‐-­‐ConfigFile="settings.ini"	  -­‐-­‐Name="mysubdomain"	  ...
About	  Azure	  deploymentdeployment.php	  Swap	  -­‐-­‐ConfigFile="settings.ini"	  -­‐-­‐Name="mysubdomain"	  -­‐-­‐WaitF...
Mix	  &	  match
Management	  models	  (oAen	  forgoBen)
Management	  models	  (oAen	  forgoBen)      Managed	  Cloud	  is	  the	        new	  dedicated	  server      Unmanaged	  ...
Management	  models	  (oAen	  forgoBen)   Custom	  soluIon	  at	  hoster	         under	  heavy	  SLA Burst	  model	  at	 ...
When	  to	  choose	  what?
Hybrid Cloud PHPUK2012
Hybrid Cloud PHPUK2012
Hybrid Cloud PHPUK2012
Hybrid Cloud PHPUK2012
Hybrid Cloud PHPUK2012
Hybrid Cloud PHPUK2012
Hybrid Cloud PHPUK2012
Hybrid Cloud PHPUK2012
Hybrid Cloud PHPUK2012
Hybrid Cloud PHPUK2012
Hybrid Cloud PHPUK2012
Hybrid Cloud PHPUK2012
Hybrid Cloud PHPUK2012
Upcoming SlideShare
Loading in...5
×

Hybrid Cloud PHPUK2012

1,603

Published on

Slides for my Hybrid Cloud talk at PHPUK 2012 in London

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,603
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
17
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Hybrid Cloud PHPUK2012

  1. 1. Develop  &  deploy  using  hybrid  cloud  strategiesThijs  FerynEvangelist+32  (0)9  218  79  06thijs@combellgroup.com
  2. 2. Very  excited  to  be  here  !
  3. 3. THIJS
  4. 4. TAZE
  5. 5. Evangelist
  6. 6. @ThijsFeryn
  7. 7. Please   rate  my  talk  on   Joind.inhttps://joind.in/4951
  8. 8. What  is  Cloud?
  9. 9. “That’s  where  rain  comes  from” Andrei  Zmievski
  10. 10. Cloud =Internet
  11. 11. DefiniIon A  model  for  consumpIon  &   delivery  on  the  internet  where   flexibility  is  essenIal  &  can  be   guaranteed  through   abstracIon
  12. 12. Internet  as  a  uIlity
  13. 13. Translated  to  what  we  know  &  need
  14. 14. Always  available
  15. 15. Fast  (enough)
  16. 16. Scalability Up  &  down  vs  out  &  in
  17. 17. Focus  on  using,  do  what  you’re  good  at
  18. 18. Leave  the  rest  to  others
  19. 19. Higher  up  the  stack
  20. 20. Economic  advantages
  21. 21. Less  money Less  effort Less  riskLess  worries
  22. 22. Hybrid  let’s  you  do  that
  23. 23. Hybrid  is  just  a  fancy  way  of  saying
  24. 24. Pick  the  pieces  of  the  puzzle  yourself
  25. 25. Amazon  web  services ✓CompuIng ✓Database –EC2 –RDS –ELB –DynamoDB –Auto   –SimpleDB scaling –ElasIcache ✓Storage –SQS –S3 ✓CDN –EBS –CloudFront Self-­‐service  Iaas
  26. 26. Windows  Azure ✓CompuIng ✓Storage –Blog  storage –Table  storage ✓CDN ✓SQL  Azure ✓Data  sync ✓Service  Bus Self-­‐service  Paas
  27. 27. Orchestra ✓CompuLng ✓Database –Memcached –MySQL  &  RDS –CouchDB –MongoDB –Redis PHP  Paas  on  top  of  AWS
  28. 28. CloudFlare ✓CDN ✓DNS ✓DDOS  security ✓Traffic  analyIcs ProtecIon  SaaS
  29. 29. CombellFully  customized  &  managed  soluIons
  30. 30. Easy  peasy,  right?
  31. 31. Single  point  of  failure
  32. 32. Shared  nothing
  33. 33. Nothing  is  local
  34. 34. Distributed  systems
  35. 35. Easy  to  deploy  &  manage?
  36. 36. How  do  you   deal  with$_SESSIONS?
  37. 37. ReplicaIonR/W  splibng
  38. 38. “Cloud  is  for  green  field  projects” Maarten  Balliauw
  39. 39. Let’s  do  it  !
  40. 40. Infrastructure ✓Basics –Webservers –MySQL  servers –File  servers ✓AddiIonal  servers –Caching  servers –Reverse  proxy  servers ✓External  CDN
  41. 41. Single  server  setup
  42. 42. Single  server  setup ✓Developer –Everything  is  local •Files •Databases ✓Sysadmin –Sits  back,  drinks  some  coffee
  43. 43. Single  server  setup What  ✓Amazon about  the   –1  EC2  instance Cloud? –Local  MySQL  or  RDS  (as  a  service) –Local  files✓Azure –Single  App  deployment –Include  PHP  &  MySQL  in  package  script✓Orchestra –Single  App  deployment –Request  MySQL  database  or  RDS
  44. 44. Separate   MySQL
  45. 45. Separate  MySQL ✓Developer –Change  connecIonstring(s) ✓Sysadmin –Sets  up  separate  server –Tunes  for  MySQL
  46. 46. Separate  MySQL What  ✓Amazon about  the   –Extra  EC2  instance  for  MySQL Cloud? –RDS✓Azure –MySQL  deployment  with  worker  role –Doesn’t  scale  well –Use  SQL  Azure  instead✓Orchestra –By  default  separate –Create  separate  MySQL  database –RDS
  47. 47. MulIple  MySQL’s
  48. 48. MulIple  MySQL’s✓Developer –Read  write  spliUng  in  code –Connect  to  loadbalanced  hostname✓Sysadmin –Setup  servers –Configure  replicaLon •Master/master •Master/slave –Add  to  loadbalancing
  49. 49. MulIple   Use  mysqlnd_ms  for  R/W  splibng  in  case  of  crappy  codeMySQL’s{        "myapp":  {                "master":  {                        "write_group":  {                                "host":  "master.db.myapp.ext",                                "port":  "3306"                        } mysqlnd_ms_plugin.ini                },                "slave":  {                        "read_group":  {                                "host":  "slave.db.myapp.ext",                                "port":  "3306"                        }                }        }}
  50. 50. mysqlnd_ms.enable=1mysqlnd_ms.ini_file=/path/to/mysqlnd_ms_plugin.ini php.ini<?php$mysqli = new mysqli("myapp", "username", "password", "database");$pdo = new PDO(mysql:host=myapp;dbname=database, username, password);$mysql = mysql_connect("myapp", "username", "password"); ConnecIon   string
  51. 51. MulIple  MySQL’s What  ✓Amazon about  the   –MulLple  EC2  instances   Cloud? with  replicaLon  and  loadbalancing –RDS  with  read  replica✓Azure –Include  PHP  &  MySQL  in  package  script –Doesn’t  scale –Use  SQL  Azure✓Orchestra –RDS –Xeround
  52. 52. MulIple   web  servers
  53. 53. MulIple  web  servers✓Developer –MulLple  places  to  deploy –Where  are  my  staLc  assets? –Sessions?✓Sysadmin –MulLple  servers  behind  loadbalancer –$_SESSION  clustering  via  Memcached  or   sLcky  sessions –Shared  storage
  54. 54. Memcached  session  handlersession.save_handler  =  memcachedsession.save_path=  “mc1.myapp.ext:11211,mc2.myapp.ext:11211” php.ini
  55. 55. MulIple  Web  servers What  ✓Amazon about  the   –MulLple  EC2  instances   Cloud? –Use  ELB  for  loadbalancing –AMI  for  easy  setup –Config  management  (puppet,  chef,  ...)✓Azure –Out  of  the  box –Tuning  possible✓Orchestra –Out  of  the  box
  56. 56. Offload   staIc   files
  57. 57. Offload  staIc  files✓Developer –Sync  current  assets –Store  new  files  on  external  servers –Use  external  hostname  when  referencing   files✓Sysadmin –Tune  external  servers  for  staLc  content –CDN,  perhaps?
  58. 58. Offload  staIc  files What  ✓Amazon about  the   –EC2  instances  for  storage  with   Cloud? clustered  file  system –S3  buckets✓Azure –Blog  storage
  59. 59. When   the  pressure   is   on
  60. 60. Auto  scaling  &  load  balancing
  61. 61. CDN  &  asset  offloading
  62. 62. Reverse  (caching)  proxy
  63. 63. Memcached
  64. 64. Adapt yourcode
  65. 65. Storage
  66. 66. require_once  Zend/Service/WindowsAzure/Storage/Blob.php;  $storageClient  =  new  Zend_Service_WindowsAzure_Storage_Blob();$result  =  $storageClient-­‐>putBlob(testcontainer,  example.txt,  /example.txt);  echo  Blob  name  is:    .  $result-­‐>Name; Azure   Blog  storagerequire_once  Zend/Service/Amazon/S3.php;  $s3  =  new  Zend_Service_Amazon_S3($my_aws_key,  $my_aws_secret_key);  $s3-­‐>createBucket("my-­‐own-­‐bucket");  $s3-­‐>putObject("my-­‐own-­‐bucket/myobject",  "somedata");echo  $s3-­‐>getObject("my-­‐own-­‐bucket/myobject"); Amazon   S3
  67. 67. <?php$storage = Zend_Cloud_StorageService_Factory::getAdapter(array(    Zend_Cloud_StorageService_Factory::STORAGE_ADAPTER_KEY => Zend_Cloud_StorageService_Adapter_S3,    Zend_Cloud_StorageService_Adapter_S3::AWS_ACCESS_KEY   => $amazonKey,    Zend_Cloud_StorageService_Adapter_S3::AWS_SECRET_KEY   => $amazonSecret,));$data = file_get_contents(/my/local/dir/picture.jpg);$returnedData = $storage->storeItem(/my/remote/path/picture.jpg, $data); Supports   Azure  &  AWS
  68. 68. <?php$storage = Zend_Cloud_StorageService_Factory::getAdapter(array(    Zend_Cloud_StorageService_Factory::STORAGE_ADAPTER_KEY => Zend_Cloud_StorageService_Adapter_FileSystem,    Zend_Cloud_StorageService_Adapter_FileSystem::LOCAL_DIRECTORY   => $localDirectory,));$data = file_get_contents(/my/local/dir/picture.jpg);$returnedData = $storage->storeItem(/my/remote/path/picture.jpg, $data); Even   Put   supports  local   opIons  in   file  system config  file
  69. 69. Design   pajerns Modular   e.g. AbstracIon   designDependency   injecLon layers
  70. 70. +  W3  Total   Cache
  71. 71. W3  Total  Cache✓Page  caching   -­‐ Memcached  (loadbalanced) -­‐ Varnish  (loadbalanced)✓Database  &  object  cache -­‐ Memcached  (loadbalanced)✓CDN -­‐ Push  to  S3  or  Azure  Blog  storage  buckets -­‐ Pull  from  CDN  (CloudFront  or  Azure) -­‐ Custom  hostnames✓Scale  across  EC2  nodes  with  ELB
  72. 72. Deploy  your  code
  73. 73. Deploy  your  code✓General  deployment  methods –Capistrano –Phing –Puppet  (config  is  code  too) –Version  control  tools✓Amazon  specific –AMI’s✓Azure  specific –Scaffolding  &  packaging    command  line  tool –Upload  packages  in  control  panel✓Orchestra  specific –Git
  74. 74. About  Azure  deployment
  75. 75. About  Azure  deploymentscaffolder  run  -­‐out="c:tempHelloAzureProject"package  create  -­‐in="C:tempHelloAzureProject"  -­‐out="C:tempHelloAzureDeployDev"  -­‐dev=true package   package   for  deployment and  run  on   emulatorpackage  create  -­‐in="C:tempHelloAzureProject"  -­‐out="C:tempHelloAzureDeployProduction"  -­‐dev=false
  76. 76. About  Azure  deployment Sebngs.iniCertificate=XXXXXXXXSubscriptionId=XXXXXPassphrase=XXXXXXXXXStorageAccount=XXXXXPackageLocation=_filesPhpOnAzure.cspkgServiceConfigLocation=_filesServiceConfiguration.cscfg
  77. 77. About  Azure  deploymentdeployment.php  CreateFromLocal  -­‐-­‐ConfigFile="settings.ini"  -­‐-­‐Name="mysubdomain"  -­‐-­‐DeploymentName="testdeploy"  -­‐-­‐Label="testdeploy"  -­‐-­‐BySlot="staging"  -­‐-­‐StartImmediately  -­‐-­‐WaitFor Deploy   to  staging
  78. 78. About  Azure  deploymentdeployment.php  Swap  -­‐-­‐ConfigFile="settings.ini"  -­‐-­‐Name="mysubdomain"  -­‐-­‐WaitFor Scale   Swap   out to  producLondeployment.php  EditInstanceNumber  -­‐-­‐ConfigFile="settings.ini"  -­‐-­‐Name="subdomain"  -­‐-­‐ByName="testdeploy"  -­‐-­‐RoleName="PhpOnAzure.Web"  -­‐-­‐NewInstanceNumber=2
  79. 79. Mix  &  match
  80. 80. Management  models  (oAen  forgoBen)
  81. 81. Management  models  (oAen  forgoBen) Managed  Cloud  is  the   new  dedicated  server Unmanaged  Cloud  is   virtual  colocaIon
  82. 82. Management  models  (oAen  forgoBen) Custom  soluIon  at  hoster   under  heavy  SLA Burst  model  at  unmanaged   vendor
  83. 83. When  to  choose  what?
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×