PHP Startup Prototypes
        By @emgiezet
Who am I?
 ●   In PHP since 2003
 ●   In Symfony since 1.2.14
 ●   Master @ wmid.amu.edu.pl
 ●   Tech Lead @ RedExperts
 ●   self-employed
 ●   Blogger & Geek
new Agenda();

$presentation[0] = 'Who am I?';
$presentation[1] = 'I got an idea but have no money!';
$presentation[2] = 'PAAS';
$presentation[3] = 'PAAS – Providers';
$presentation[4] = 'Costs?';
$presentation[5] = 'Application';
$presentation[6] = 'Silex';
$presentation[7] = 'Laravel4';
$presentation[8] = 'Our cloud is under siege!';
$presentation[9] = 'Charts and other crap';
$presentation[10] = 'Q&A';
$presentation[11] = 'Tank You!';
PaaS == Platform As A Service
●   Focused on application
●   No additional infrastructure required
●   Deploy and Forget
●   Load Balancer? Who needs the load balancer?
●   No admin support needed anymore! Sorry guys.
PHP friendly PaaS - Providers
appfog
   ●   Evolves from PHPFog
   ●   After Deployment Scripts
   ●   Easy to deploy
   ●   Additional Services Config available via get_env();
   ●   Gem application to deploy your app
   ●   2GB of RAM for your apps for free!
   ●   Up to 10 Services for your apps free!
   ●   Time to time throws 500 on appfog panel.
   ●   Cannot write to disk of instance for ex. file uploads
       or file cache.
   ●   No auto scaling
Engine Yard - Orchestra
            ●   Deploys straight from
                repository(Git and SVN)
            ●   Production database need to be
                hosted on AWS - $$$
            ●   Only orchestra sub-domain
            ●   Only free add ons at free plan
            ●   1 concurrent connection – our
                siege tests are ruined!
            ●   No auto scaling
heroku
   ●   Cloud level: “Asians”
   ●   Based on ngnix
   ●   Dev DB up to 10k rows is free
   ●   Production DB starts from $9 /
       mo.
   ●   Only 1 instance is free
   ●   Needs special a “buildpack”
OPENSHIFT
     ●   RedHat based must be awesome!
     ●   Build on Zend Server
     ●   3 small “gears” 512 MB RAM for free!
     ●   Each “gear” can have MySQL, MongoDB,
         PostgreSQL, phpMyAdmin etc.
     ●   Free application can have auto-scale feature
         and fill all the 3 gears available on the traffic
         peak.
Costs?!
PAAS – Providers Free Plans
Feature                       Orchestra      Heroku           OpenShift
RAM               2GB             ?            ?           512MB / inst.
Storage       1 GB / inst.    2$ / mo.       Dev s3         1GB / inst.
MySQL                         Shared DB     10k rows        1 / instance
MongoDB         Up to 10      ?$ / mo.       496 MB         1 / instance
Redis                             X          100 MB              X
Memcached          X              X         1x 25 MB             X
Location     US,Europe,Asia    US West    Cannot select     Cannot select
Instances       Up to 16          2             1         Salable up to 3
Deploy         by gem af      from git    by toolbelt     by gem rhc or by
                                                               jenkins
My Grade:          4+             2            3                 4
Application
●   Routing and ORM based.
●   Cloud friendly – easy to scale horizontally,
●   Database filled with 10k of random records
●   One controller displays the data from the DB
●   Composer based installation ( I wish be there )
●   Big frameworks aren't supported (mostly) ;(
●   So let's go with micro-frameworks!
Cloud friendly Application? WAT?
●   Can use Master/Slave DB Connection.
●   Gives ability to store session in DB/Memcache/Redis
    because sticky session sux hard by keeping user only at
    single instance/node while session is valid.
●   Can use external storage for uploads (ex. Amazon S3
    bucket)
●
Micro-frameworks
Silex
   ●   Build on symfony2
       components!
   ●   Uses TWIG
   ●   Has lot's of extensions
   ●   Easy to use for symfony2
       developers
   ●   Cloud friendly!
Laravel 4
     ●   Also uses symfony2
         components,
     ●   Well documented,
     ●   Light weight,
     ●   Popular
     ●   DBAL – not so great
Let's build the APPs!
           ●   One controller with one action
           ●   Display the data
           ●   Add a memcached if available
           ●   Create a fixtures or dump to fill
               the database!
           ●   Deploy the apps in to the cloud!
But before we deploy them...
              ●   We need to create our
                  apps in the PAAS Cloud!
              ●   Configure the build,
              ●   Add a resources(RAM,
                  additional services),
              ●   Load Balancing? Forget.
                  PAAS has LB build in!
Our Cloud is under siege!
Siege Config
●   15 concurrent users
●   1 minute of siege
Siege Results
Results                   appfog          Engine Yard            heroku            openshift
Framework           Silex     Laravel4   Silex   Laravel4   Silex    Laravel4   Silex   Laravel4

Transactions        1050           863    N         S        ?            ?
Availability        97.31      96.42      A         E        ?            ?
Data transferred   7.44 MB    8.48 MB     T         L        ?            ?

Response time      0.31 s     0.51 s      U         E        ?            ?

Transaction rate    17.77      14.59      R         C        ?            ?

Concurrency         5.44           7.5    A         T        ?            ?
Successful           58            67     L         I        ?            ?
transactions

Failed               29            32     -         O        ?            ?
transactions:

Longest             4.95       8.23       -         N        ?            ?
transaction:
Charts!
AppFog
                                                                                                                                                  Laravel4
                                                                                                                                                  Silex
120



100



80



60



40



20



 0
                      Data transferred:             Response time:             Concurrency:            Failed transactions:        Shortest transaction:
      Availability:                  Transaction rate:             Throughput:         Successful transactions       Longest transaction:
Conclusion
●   Orchestra - free plan is not enough even for startup-fest. It
    will lag on final pitches.
●   AppFog -
●   Heroku -
●   Openshift
●   Silex – Fastest! For Symfony2 developers the best choice!
●   Laravel4 – Weirdo DBAL. Fast but silex kicks his ass.
Conclusion
●   Orchestra - free plan is not enough even for startup-fest. It
    will lag on final pitches.
●   AppFog – Easiest!
●   Silex – Fastest! For Symfony2 developers the best choice!
●   Laravel4 – Weirdo DBAL. Fast but silex kicks his ass.
Engine Yard - Orchestra
           Plus:
            ●   Well documented


           Minus:
            ●   Free plan is not enough
                even for startup-fest. It will
                lag on final pitches.
Heroku
   Plus:
   ●   Super rich add-ons market!
   ●   Most of the add-ons have free plan!
   ●   Easy to configure
   ●

   Minus:
   ●   Only one node for free
   ●   Deployment Massacre
Q&A
●   Dare to ask!
meetPHP#8 - PHP startups prototypes

meetPHP#8 - PHP startups prototypes

  • 1.
  • 2.
    Who am I? ● In PHP since 2003 ● In Symfony since 1.2.14 ● Master @ wmid.amu.edu.pl ● Tech Lead @ RedExperts ● self-employed ● Blogger & Geek
  • 3.
    new Agenda(); $presentation[0] ='Who am I?'; $presentation[1] = 'I got an idea but have no money!'; $presentation[2] = 'PAAS'; $presentation[3] = 'PAAS – Providers'; $presentation[4] = 'Costs?'; $presentation[5] = 'Application'; $presentation[6] = 'Silex'; $presentation[7] = 'Laravel4'; $presentation[8] = 'Our cloud is under siege!'; $presentation[9] = 'Charts and other crap'; $presentation[10] = 'Q&A'; $presentation[11] = 'Tank You!';
  • 4.
    PaaS == PlatformAs A Service ● Focused on application ● No additional infrastructure required ● Deploy and Forget ● Load Balancer? Who needs the load balancer? ● No admin support needed anymore! Sorry guys.
  • 5.
    PHP friendly PaaS- Providers
  • 7.
    appfog ● Evolves from PHPFog ● After Deployment Scripts ● Easy to deploy ● Additional Services Config available via get_env(); ● Gem application to deploy your app ● 2GB of RAM for your apps for free! ● Up to 10 Services for your apps free! ● Time to time throws 500 on appfog panel. ● Cannot write to disk of instance for ex. file uploads or file cache. ● No auto scaling
  • 8.
    Engine Yard -Orchestra ● Deploys straight from repository(Git and SVN) ● Production database need to be hosted on AWS - $$$ ● Only orchestra sub-domain ● Only free add ons at free plan ● 1 concurrent connection – our siege tests are ruined! ● No auto scaling
  • 9.
    heroku ● Cloud level: “Asians” ● Based on ngnix ● Dev DB up to 10k rows is free ● Production DB starts from $9 / mo. ● Only 1 instance is free ● Needs special a “buildpack”
  • 10.
    OPENSHIFT ● RedHat based must be awesome! ● Build on Zend Server ● 3 small “gears” 512 MB RAM for free! ● Each “gear” can have MySQL, MongoDB, PostgreSQL, phpMyAdmin etc. ● Free application can have auto-scale feature and fill all the 3 gears available on the traffic peak.
  • 11.
  • 12.
    PAAS – ProvidersFree Plans Feature Orchestra Heroku OpenShift RAM 2GB ? ? 512MB / inst. Storage 1 GB / inst. 2$ / mo. Dev s3 1GB / inst. MySQL Shared DB 10k rows 1 / instance MongoDB Up to 10 ?$ / mo. 496 MB 1 / instance Redis X 100 MB X Memcached X X 1x 25 MB X Location US,Europe,Asia US West Cannot select Cannot select Instances Up to 16 2 1 Salable up to 3 Deploy by gem af from git by toolbelt by gem rhc or by jenkins My Grade: 4+ 2 3 4
  • 13.
    Application ● Routing and ORM based. ● Cloud friendly – easy to scale horizontally, ● Database filled with 10k of random records ● One controller displays the data from the DB ● Composer based installation ( I wish be there ) ● Big frameworks aren't supported (mostly) ;( ● So let's go with micro-frameworks!
  • 14.
    Cloud friendly Application?WAT? ● Can use Master/Slave DB Connection. ● Gives ability to store session in DB/Memcache/Redis because sticky session sux hard by keeping user only at single instance/node while session is valid. ● Can use external storage for uploads (ex. Amazon S3 bucket) ●
  • 15.
  • 16.
    Silex ● Build on symfony2 components! ● Uses TWIG ● Has lot's of extensions ● Easy to use for symfony2 developers ● Cloud friendly!
  • 17.
    Laravel 4 ● Also uses symfony2 components, ● Well documented, ● Light weight, ● Popular ● DBAL – not so great
  • 18.
    Let's build theAPPs! ● One controller with one action ● Display the data ● Add a memcached if available ● Create a fixtures or dump to fill the database! ● Deploy the apps in to the cloud!
  • 19.
    But before wedeploy them... ● We need to create our apps in the PAAS Cloud! ● Configure the build, ● Add a resources(RAM, additional services), ● Load Balancing? Forget. PAAS has LB build in!
  • 20.
    Our Cloud isunder siege!
  • 21.
    Siege Config ● 15 concurrent users ● 1 minute of siege
  • 22.
    Siege Results Results appfog Engine Yard heroku openshift Framework Silex Laravel4 Silex Laravel4 Silex Laravel4 Silex Laravel4 Transactions 1050 863 N S ? ? Availability 97.31 96.42 A E ? ? Data transferred 7.44 MB 8.48 MB T L ? ? Response time 0.31 s 0.51 s U E ? ? Transaction rate 17.77 14.59 R C ? ? Concurrency 5.44 7.5 A T ? ? Successful 58 67 L I ? ? transactions Failed 29 32 - O ? ? transactions: Longest 4.95 8.23 - N ? ? transaction:
  • 23.
  • 24.
    AppFog Laravel4 Silex 120 100 80 60 40 20 0 Data transferred: Response time: Concurrency: Failed transactions: Shortest transaction: Availability: Transaction rate: Throughput: Successful transactions Longest transaction:
  • 25.
    Conclusion ● Orchestra - free plan is not enough even for startup-fest. It will lag on final pitches. ● AppFog - ● Heroku - ● Openshift ● Silex – Fastest! For Symfony2 developers the best choice! ● Laravel4 – Weirdo DBAL. Fast but silex kicks his ass.
  • 26.
    Conclusion ● Orchestra - free plan is not enough even for startup-fest. It will lag on final pitches. ● AppFog – Easiest! ● Silex – Fastest! For Symfony2 developers the best choice! ● Laravel4 – Weirdo DBAL. Fast but silex kicks his ass.
  • 27.
    Engine Yard -Orchestra Plus: ● Well documented Minus: ● Free plan is not enough even for startup-fest. It will lag on final pitches.
  • 28.
    Heroku Plus: ● Super rich add-ons market! ● Most of the add-ons have free plan! ● Easy to configure ● Minus: ● Only one node for free ● Deployment Massacre
  • 29.
    Q&A ● Dare to ask!