SlideShare ist ein Scribd-Unternehmen logo
1 von 121
Downloaden Sie, um offline zu lesen
1
SOFTWARE
and the Taste of Mayo

      Marco Tabini
         php|architect

       marcot@tabini.ca




                          1
Marco Tabini




               1
Marco Tabini




               1
Marco Tabini




               1
Marco Tabini




               1
Marco Tabini




               1
Marco Tabini




               1
Marco Tabini




               1
Marco Tabini




               1
2
What is Mayo?




                2
3
3
4
4
4
5
5
5
5
WTF????




          5
6
6
Where did they get this guy?



                               7
What does this have to do with
       SOFTWARE???



                                 8
9
CODE




       9
CODE


 +
DATA




       9
CODE


   +
  DATA


   +
INTERFACE




            9
CODE


   +
  DATA


   +
INTERFACE


   =
   APP


            9
CODE




       10
CODE




       10
CODE




       HARDWARE




                  10
CODE




       FIRMWARE
       HARDWARE




                  10
CODE




          O/S
       FIRMWARE
       HARDWARE




                  10
CODE




       WEB O/S
           SERVER
        FIRMWARE
        HARDWARE




                    10
CODE




           PHP
       WEB O/S
            SERVER
        FIRMWARE
        HARDWARE




                     10
CODE




       FRAMEWORK
        WEBPHP
            SERVER
           O/S
        FIRMWARE
        HARDWARE




                     10
CODE




       YOUR CODE
       FRAMEWORK
           PHP
        WEB SERVER
           O/S
        FIRMWARE
         HARDWARE




                     10
11
Hello, World!


                11
Hello, World!




                11
Hello, World!

                  Language      System Calls
                       C             46
                 Shell (TCSH)        37
                   PHP (CLI)        362
                PHP (Apache)        881

                                               11
Hello, World!

                  Language      System Calls
                       C             46
                 Shell (TCSH)        37
                   PHP (CLI)        362
                PHP (Apache)        881

                                               11
Hello, World!

                  Language      System Calls
                       C             46
                 Shell (TCSH)        37
                   PHP (CLI)        362
                PHP (Apache)        881

                                               11
Hello, World!

                  Language      System Calls
                       C             46
                 Shell (TCSH)        37
                   PHP (CLI)        362
                PHP (Apache)        881

                                               11
Hello, World!

                  Language      System Calls
                       C             46
                 Shell (TCSH)        37
                   PHP (CLI)        362
                PHP (Apache)        881

                                               11
Hello, World!

                                 Language      System Calls
          Once
                                      C             47
  Language
       C
                System Calls
                     46         Shell (TCSH)       146
 Shell (TCSH)        37
   PHP (CLI)        362           PHP (CLI)        368
PHP (Apache)        881
                               PHP (Apache)        887

                                                              11
Hello, World!

                                 Language      System Calls
          Once
                                      C             47
  Language
       C
                System Calls
                     46         Shell (TCSH)       146
 Shell (TCSH)        37
   PHP (CLI)        362           PHP (CLI)        368
PHP (Apache)        881
                               PHP (Apache)        887

                                                              11
Hello, World!

                                 Language      System Calls
          Once
                                      C             47
  Language
       C
                System Calls
                     46         Shell (TCSH)       146
 Shell (TCSH)        37
   PHP (CLI)        362           PHP (CLI)        368
PHP (Apache)        881
                               PHP (Apache)        887

                                                              11
Hello, World!

                                 Language      System Calls
          Once
                                      C             47
  Language
       C
                System Calls
                     46         Shell (TCSH)       146
 Shell (TCSH)        37
   PHP (CLI)        362           PHP (CLI)        368
PHP (Apache)        881
                               PHP (Apache)        887

                                                              11
Hello, World!

                                 Language      System Calls
          Once
                                      C             47
  Language
       C
                System Calls
                     46         Shell (TCSH)       146
 Shell (TCSH)        37
   PHP (CLI)        362           PHP (CLI)        368
PHP (Apache)        881
                               PHP (Apache)        887

                                                              11
Hello, World!

          Once                           Twice

  Language      System Calls     Language      System Calls
       C             46               C             47
 Shell (TCSH)        37         Shell (TCSH)       146
   PHP (CLI)        362           PHP (CLI)        368
PHP (Apache)        881        PHP (Apache)        887




                                                              11
12
Language     Time
     C       2.5hrs
  Erlang     1.8hrs
 PHP (CLI)   N/A*


                      12
Language     Time
     C       2.5hrs
  Erlang     1.8hrs
 PHP (CLI)   N/A*


                      12
Language     Time
     C       2.5hrs
  Erlang     1.8hrs
 PHP (CLI)   N/A*


                      12
Language                              Time
          C                                2.5hrs
       Erlang                              1.8hrs
      PHP (CLI)                            N/A*
* Sorry, had to catch flight to Amsterdam




                                                    12
Ease of use   Performance




                            13
Ease of use   Performance




ASM           C     PHP           Rails




                                          13
Ease of use   Performance




ASM           C     PHP           Rails




                                          13
Ease of use   Performance




ASM           C     PHP           Rails




                                          13
Ease of use   Performance




ASM           C     PHP           Rails




                                          13
Ease of use   Performance




ASM           C     PHP           Rails




                                          13
Single or double quotes?




                           14
Single or double quotes?

              vs.



file_get_contents(‘3gb_file.txt’)

                                  14
for? foreach? while?




                       15
for? foreach? while?
                   vs.

select * from
gigantic_unindexed_table
inner join
world_population_database
inner join
i_should_be_growing_plants_instead_of_coding


                                               15
CODE
SCALABILITY

              16
INFRA        CODE           DATA
STRUCTURE   SCALABILITY    SCALABILITY



  COST
               SOURCE          IT
   OF
            PERFORMANCE   ORGANIZATION
OWNERSHIP




                                         16
Profit Density
                                     (Profit / Pages)




Revenue Density   Page Impressions
                                                       17
Profit Density
                                     (Profit / Pages)




Revenue Density   Page Impressions
                                                       17
Profit Density
                                     (Profit / Pages)




Revenue Density   Page Impressions
                                                       17
Profit Density
                                     (Profit / Pages)




Revenue Density   Page Impressions
                                                       17
Profit Density
                                     (Profit / Pages)




Revenue Density   Page Impressions
                                                       17
Profit Density
                                     (Profit / Pages)




Revenue Density   Page Impressions
                                                       17
Cost Density
  (Cost / Pages)




                   18
Cost Density
  (Cost / Pages)




                   18
Cost Density
  (Cost / Pages)




                   18
Cost Density
  (Cost / Pages)




                   18
Cost Density
  (Cost / Pages)




                   18
Cost Density
  (Cost / Pages)




                   18
Cost Density
  (Cost / Pages)




                   19
Cost Density
  (Cost / Pages)




                   19
Cost Density
  (Cost / Pages)




                   19
Cost Density
  (Cost / Pages)




                   19
Cost Density
          (Cost / Pages)
FAIL!




                           19
Cost Density
  (Cost / Pages)

                   Bad   Good




                                20
Cost Density
  (Cost / Pages)

                   Bad   Good




                                20
Cost Density Problems


            •   Wrong scalability strategy

 Database   •   Wrong database type


            •   Wrong database use




                                             21
Cost Density Problems


            •   Architecture not scalable


            •   No use of parallelization


            •   No use of queuing




                                            22
Solving your infrastructure
         problems

     (let someone else deal with them)


                                         23
Example: AWS

•   300,000 page impressions / mo.

•   Avg. 100kiB / page (== 30 GB / mo), 30GB Data

•   20 queries per page, 20msec / query

•   30 objects per page ( == 9,000,000 GET reqs/month)

•   100 reqs/server/sec ( == 259,000,000 reqs/server/month)

•   2 servers

                                                              24
Example: AWS




               25
Example: AWS
    Item         Service   Cost/mo
   Storage          S3       4.5
Data Transfer       S3        30
Data Requests       S3        1
 DB Storage     SimpleDB      45
DB CPU Usage    SimpleDB      55
Server Usage       EC2       144
                 TOTALS     279.5
                                     25
Example: AWS
    Item         Service   Cost/mo
   Storage          S3       4.5
Data Transfer       S3        30
Data Requests       S3        1
 DB Storage     SimpleDB      45
DB CPU Usage    SimpleDB      55
Server Usage       EC2       144
                 TOTALS     279.5
                                     25
Example: AWS
    Item         Service   Cost/mo
   Storage          S3       4.5
Data Transfer       S3        30
Data Requests       S3        1
 DB Storage     SimpleDB      45
DB CPU Usage    SimpleDB      55
Server Usage       EC2       144
                 TOTALS     279.5
                                     25
Example: AWS
    Item         Service   Cost/mo
   Storage          S3       4.5
Data Transfer       S3        30
Data Requests       S3        1
 DB Storage     SimpleDB      45
DB CPU Usage    SimpleDB      55
Server Usage       EC2       144
                 TOTALS     279.5
                                     25
Example: AWS
    Item         Service   Cost/mo
   Storage          S3       4.5
Data Transfer       S3        30
Data Requests       S3        1
 DB Storage     SimpleDB      45
DB CPU Usage    SimpleDB      55
Server Usage       EC2       144
                 TOTALS     279.5
                                     25
Example: AWS
    Item         Service   Cost/mo
   Storage          S3       4.5
Data Transfer       S3        30
Data Requests       S3        1
 DB Storage     SimpleDB      45
DB CPU Usage    SimpleDB      55
Server Usage       EC2       144
                 TOTALS     279.5
                                     25
Example: AWS
    Item         Service   Cost/mo
   Storage          S3       4.5
Data Transfer       S3        30
Data Requests       S3        1
 DB Storage     SimpleDB      45
DB CPU Usage    SimpleDB      55
Server Usage       EC2       144
                 TOTALS     279.5
                                     25
Example: AWS
    Item         Service   Cost/mo
   Storage          S3       4.5
Data Transfer       S3        30
Data Requests       S3        1
 DB Storage     SimpleDB      45
DB CPU Usage    SimpleDB      55
Server Usage       EC2       144
                 TOTALS     279.5
                                     25
$280 / month
                          = $0.09 CPM
3,000,000 pages / month    (0.9% @ $10 RPM)




                                              26
Example: AWS

•   300,000,000 page impressions

•   Avg. 100kiB / page (== 30 TB / mo), 1TB Data

•   20 queries per page, 20msec / query

•   30 objects per page ( == 9,000,000,000 GET reqs/month)

•   100 reqs/server/sec ( == 259,000,000 reqs/server/month)

•   35 servers

                                                              27
Example: AWS




               28
Example: AWS
    Item         Service   Cost/mo
   Storage          S3        150
Data Transfer       S3       4,300
Data Requests       S3       9,000
 DB Storage     SimpleDB     1,500
DB CPU Usage    SimpleDB     3,800
Server Usage       EC2       2,500
                 TOTALS     21,250
                                     28
Example: AWS
    Item         Service   Cost/mo
   Storage          S3        150
Data Transfer       S3       4,300
Data Requests       S3       9,000
 DB Storage     SimpleDB     1,500
DB CPU Usage    SimpleDB     3,800
Server Usage       EC2       2,500
                 TOTALS     21,250
                                     28
Example: AWS
    Item         Service   Cost/mo
   Storage          S3        150
Data Transfer       S3       4,300
Data Requests       S3       9,000
 DB Storage     SimpleDB     1,500
DB CPU Usage    SimpleDB     3,800
Server Usage       EC2       2,500
                 TOTALS     21,250
                                     28
Example: AWS
    Item         Service   Cost/mo
   Storage          S3        150
Data Transfer       S3       4,300
Data Requests       S3       9,000
 DB Storage     SimpleDB     1,500
DB CPU Usage    SimpleDB     3,800
Server Usage       EC2       2,500
                 TOTALS     21,250
                                     28
Example: AWS
    Item         Service   Cost/mo
   Storage          S3        150
Data Transfer       S3       4,300
Data Requests       S3       9,000
 DB Storage     SimpleDB     1,500
DB CPU Usage    SimpleDB     3,800
Server Usage       EC2       2,500
                 TOTALS     21,250
                                     28
Example: AWS
    Item         Service   Cost/mo
   Storage          S3        150
Data Transfer       S3       4,300
Data Requests       S3       9,000
 DB Storage     SimpleDB     1,500
DB CPU Usage    SimpleDB     3,800
Server Usage       EC2       2,500
                 TOTALS     21,250
                                     28
Example: AWS
    Item         Service   Cost/mo
   Storage          S3        150
Data Transfer       S3       4,300
Data Requests       S3       9,000
 DB Storage     SimpleDB     1,500
DB CPU Usage    SimpleDB     3,800
Server Usage       EC2       2,500
                 TOTALS     21,250
                                     28
Example: AWS
    Item         Service   Cost/mo
   Storage          S3        150
Data Transfer       S3       4,300
Data Requests       S3       9,000
 DB Storage     SimpleDB     1,500
DB CPU Usage    SimpleDB     3,800
Server Usage       EC2       2,500
                 TOTALS     21,250
                                     28
$21,250 / month
                      = $0.08 CPM
300,000,000 / month    (0.8% @ $10 RPM)




                                          29
Them




You

       30
Design
Choose
 Scale
         31
Design THINK BIG—ITS CHEAP!
     Choose
        Scale
                              31
Design THINK BIG—ITS CHEAP!
Choose THE RIGHT TOOLS
        Scale
                              31
Design THINK BIG—ITS CHEAP!
Choose THE RIGHT TOOLS
Scale EVERYTHING, ALWAYS
                              31
Questions? Agree? Disagree? Want to rant?


                  marcot@tabini.ca
             http://mtabini.blogspot.com
              http://mtabini.com/twitter




                                            32

Weitere ähnliche Inhalte

Was ist angesagt?

为11.2.0.2 grid infrastructure添加节点
为11.2.0.2 grid infrastructure添加节点为11.2.0.2 grid infrastructure添加节点
为11.2.0.2 grid infrastructure添加节点
maclean liu
 
Overview: Building Open Source Cloud Computing Environments
Overview: Building Open Source Cloud Computing EnvironmentsOverview: Building Open Source Cloud Computing Environments
Overview: Building Open Source Cloud Computing Environments
Mark Hinkle
 

Was ist angesagt? (20)

[COSCUP 2021] LLVM Project: The Good, The Bad, and The Ugly
[COSCUP 2021] LLVM Project: The Good, The Bad, and The Ugly[COSCUP 2021] LLVM Project: The Good, The Bad, and The Ugly
[COSCUP 2021] LLVM Project: The Good, The Bad, and The Ugly
 
Howto createOpenFlow Switchusing FPGA (at FPGAX#6)
Howto createOpenFlow Switchusing FPGA (at FPGAX#6)Howto createOpenFlow Switchusing FPGA (at FPGAX#6)
Howto createOpenFlow Switchusing FPGA (at FPGAX#6)
 
Docker 2014
Docker 2014Docker 2014
Docker 2014
 
BKK16-409 VOSY Switch Port to ARMv8 Platforms and ODP Integration
BKK16-409 VOSY Switch Port to ARMv8 Platforms and ODP IntegrationBKK16-409 VOSY Switch Port to ARMv8 Platforms and ODP Integration
BKK16-409 VOSY Switch Port to ARMv8 Platforms and ODP Integration
 
Open Source Toolchains to Manage Cloud Infrastructure
Open Source Toolchains to Manage Cloud InfrastructureOpen Source Toolchains to Manage Cloud Infrastructure
Open Source Toolchains to Manage Cloud Infrastructure
 
DEF CON 27 - workshop - ISAAC EVANS - discover exploit and eradicate entire v...
DEF CON 27 - workshop - ISAAC EVANS - discover exploit and eradicate entire v...DEF CON 27 - workshop - ISAAC EVANS - discover exploit and eradicate entire v...
DEF CON 27 - workshop - ISAAC EVANS - discover exploit and eradicate entire v...
 
Brno Perl Mongers 28.5.2015 - Perl family by mj41
Brno Perl Mongers 28.5.2015 - Perl family by mj41Brno Perl Mongers 28.5.2015 - Perl family by mj41
Brno Perl Mongers 28.5.2015 - Perl family by mj41
 
Transferring Changes Between Perforce Servers
Transferring Changes Between Perforce ServersTransferring Changes Between Perforce Servers
Transferring Changes Between Perforce Servers
 
How to implement a simple dalvik virtual machine
How to implement a simple dalvik virtual machineHow to implement a simple dalvik virtual machine
How to implement a simple dalvik virtual machine
 
Dayta AI Seminar - Kubernetes, Docker and AI on Cloud
Dayta AI Seminar - Kubernetes, Docker and AI on CloudDayta AI Seminar - Kubernetes, Docker and AI on Cloud
Dayta AI Seminar - Kubernetes, Docker and AI on Cloud
 
为11.2.0.2 grid infrastructure添加节点
为11.2.0.2 grid infrastructure添加节点为11.2.0.2 grid infrastructure添加节点
为11.2.0.2 grid infrastructure添加节点
 
Going FaaSter, Functions as a Service at Netflix
Going FaaSter, Functions as a Service at NetflixGoing FaaSter, Functions as a Service at Netflix
Going FaaSter, Functions as a Service at Netflix
 
Architecting The Future - WeRise Women in Technology
Architecting The Future - WeRise Women in TechnologyArchitecting The Future - WeRise Women in Technology
Architecting The Future - WeRise Women in Technology
 
Kamaelia - Networking Using Generators
Kamaelia - Networking Using GeneratorsKamaelia - Networking Using Generators
Kamaelia - Networking Using Generators
 
Overview: Building Open Source Cloud Computing Environments
Overview: Building Open Source Cloud Computing EnvironmentsOverview: Building Open Source Cloud Computing Environments
Overview: Building Open Source Cloud Computing Environments
 
Upgrade ipa to rhel 7
Upgrade ipa to rhel 7Upgrade ipa to rhel 7
Upgrade ipa to rhel 7
 
sed.pdf
sed.pdfsed.pdf
sed.pdf
 
Go 1.8 Release Party
Go 1.8 Release PartyGo 1.8 Release Party
Go 1.8 Release Party
 
H2O - making the Web faster
H2O - making the Web fasterH2O - making the Web faster
H2O - making the Web faster
 
LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...
LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...
LCE13: Test and Validation Mini-Summit: Review Current Linaro Engineering Pro...
 

Ähnlich wie Software And The Taste Of Mayo - Marco Tabini

PHP Performance with APC + Memcached
PHP Performance with APC + MemcachedPHP Performance with APC + Memcached
PHP Performance with APC + Memcached
Ford AntiTrust
 
PRoot improved kernel compatibility
PRoot improved kernel compatibilityPRoot improved kernel compatibility
PRoot improved kernel compatibility
cvinc02
 
Dutch php conference_2010_opm
Dutch php conference_2010_opmDutch php conference_2010_opm
Dutch php conference_2010_opm
isnull
 
[Webinar Slides] Programming the Network Dataplane in P4
[Webinar Slides] Programming the Network Dataplane in P4[Webinar Slides] Programming the Network Dataplane in P4
[Webinar Slides] Programming the Network Dataplane in P4
Open Networking Summits
 

Ähnlich wie Software And The Taste Of Mayo - Marco Tabini (20)

PHP Performance with APC + Memcached
PHP Performance with APC + MemcachedPHP Performance with APC + Memcached
PHP Performance with APC + Memcached
 
FortranCon2020: Highly Parallel Fortran and OpenACC Directives
FortranCon2020: Highly Parallel Fortran and OpenACC DirectivesFortranCon2020: Highly Parallel Fortran and OpenACC Directives
FortranCon2020: Highly Parallel Fortran and OpenACC Directives
 
Streaming 101: Hello World
Streaming 101:  Hello WorldStreaming 101:  Hello World
Streaming 101: Hello World
 
PRoot improved kernel compatibility
PRoot improved kernel compatibilityPRoot improved kernel compatibility
PRoot improved kernel compatibility
 
Pi Is For Python
Pi Is For PythonPi Is For Python
Pi Is For Python
 
Whyp97
Whyp97Whyp97
Whyp97
 
CLI, the other SAPI
CLI, the other SAPICLI, the other SAPI
CLI, the other SAPI
 
PHP 7 OPCache extension review
PHP 7 OPCache extension reviewPHP 7 OPCache extension review
PHP 7 OPCache extension review
 
Getting started with pic microcontrollers
Getting started with pic microcontrollersGetting started with pic microcontrollers
Getting started with pic microcontrollers
 
Dutch php conference_2010_opm
Dutch php conference_2010_opmDutch php conference_2010_opm
Dutch php conference_2010_opm
 
Baby Demuxed's First Assembly Language Function
Baby Demuxed's First Assembly Language FunctionBaby Demuxed's First Assembly Language Function
Baby Demuxed's First Assembly Language Function
 
PHP & Performance
PHP & PerformancePHP & Performance
PHP & Performance
 
Dive into exploit development
Dive into exploit developmentDive into exploit development
Dive into exploit development
 
Prepare for PHP Test Fest 2009
Prepare for PHP Test Fest 2009Prepare for PHP Test Fest 2009
Prepare for PHP Test Fest 2009
 
[Webinar Slides] Programming the Network Dataplane in P4
[Webinar Slides] Programming the Network Dataplane in P4[Webinar Slides] Programming the Network Dataplane in P4
[Webinar Slides] Programming the Network Dataplane in P4
 
Compiler Construction | Lecture 1 | What is a compiler?
Compiler Construction | Lecture 1 | What is a compiler?Compiler Construction | Lecture 1 | What is a compiler?
Compiler Construction | Lecture 1 | What is a compiler?
 
走向开源:提交CPAN模块Step by Step
走向开源:提交CPAN模块Step by Step走向开源:提交CPAN模块Step by Step
走向开源:提交CPAN模块Step by Step
 
php & performance
 php & performance php & performance
php & performance
 
What Can Reverse Engineering Do For You?
What Can Reverse Engineering Do For You?What Can Reverse Engineering Do For You?
What Can Reverse Engineering Do For You?
 
NativeBoost
NativeBoostNativeBoost
NativeBoost
 

Mehr von dpc

ezComponents - Derick Rethans
ezComponents - Derick RethansezComponents - Derick Rethans
ezComponents - Derick Rethans
dpc
 
Best Practices with Zend Framework - Matthew Weier O'Phinney
Best Practices with Zend Framework - Matthew Weier O'PhinneyBest Practices with Zend Framework - Matthew Weier O'Phinney
Best Practices with Zend Framework - Matthew Weier O'Phinney
dpc
 
State Of PHP - Zeev Suraski
State Of PHP - Zeev SuraskiState Of PHP - Zeev Suraski
State Of PHP - Zeev Suraski
dpc
 
Symfony 1.1 - Fabien Potencier
Symfony 1.1 - Fabien PotencierSymfony 1.1 - Fabien Potencier
Symfony 1.1 - Fabien Potencier
dpc
 
Advanced PHP: Design Patterns - Dennis-Jan Broerse
Advanced PHP: Design Patterns - Dennis-Jan BroerseAdvanced PHP: Design Patterns - Dennis-Jan Broerse
Advanced PHP: Design Patterns - Dennis-Jan Broerse
dpc
 
New Features PHPUnit 3.3 - Sebastian Bergmann
New Features PHPUnit 3.3 - Sebastian BergmannNew Features PHPUnit 3.3 - Sebastian Bergmann
New Features PHPUnit 3.3 - Sebastian Bergmann
dpc
 
PHP 5.3 and PHP 6; a look ahead - Stefan Priebsch
PHP 5.3 and PHP 6; a look ahead - Stefan PriebschPHP 5.3 and PHP 6; a look ahead - Stefan Priebsch
PHP 5.3 and PHP 6; a look ahead - Stefan Priebsch
dpc
 
Quality Assurance in PHP projects - Sebastian Bergmann
Quality Assurance in PHP projects - Sebastian BergmannQuality Assurance in PHP projects - Sebastian Bergmann
Quality Assurance in PHP projects - Sebastian Bergmann
dpc
 
An Infrastructure for Team Development - Gaylord Aulke
An Infrastructure for Team Development - Gaylord AulkeAn Infrastructure for Team Development - Gaylord Aulke
An Infrastructure for Team Development - Gaylord Aulke
dpc
 
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo JanschEnterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
dpc
 
DPC2008 Intro - Ivo Jansch
DPC2008 Intro - Ivo JanschDPC2008 Intro - Ivo Jansch
DPC2008 Intro - Ivo Jansch
dpc
 
DPC2007 Case Study Zoom & Webwereld (Sander vd Graaf)
DPC2007 Case Study Zoom & Webwereld (Sander vd Graaf)DPC2007 Case Study Zoom & Webwereld (Sander vd Graaf)
DPC2007 Case Study Zoom & Webwereld (Sander vd Graaf)
dpc
 

Mehr von dpc (20)

ezComponents - Derick Rethans
ezComponents - Derick RethansezComponents - Derick Rethans
ezComponents - Derick Rethans
 
Best Practices with Zend Framework - Matthew Weier O'Phinney
Best Practices with Zend Framework - Matthew Weier O'PhinneyBest Practices with Zend Framework - Matthew Weier O'Phinney
Best Practices with Zend Framework - Matthew Weier O'Phinney
 
State Of PHP - Zeev Suraski
State Of PHP - Zeev SuraskiState Of PHP - Zeev Suraski
State Of PHP - Zeev Suraski
 
Symfony 1.1 - Fabien Potencier
Symfony 1.1 - Fabien PotencierSymfony 1.1 - Fabien Potencier
Symfony 1.1 - Fabien Potencier
 
Advanced PHP: Design Patterns - Dennis-Jan Broerse
Advanced PHP: Design Patterns - Dennis-Jan BroerseAdvanced PHP: Design Patterns - Dennis-Jan Broerse
Advanced PHP: Design Patterns - Dennis-Jan Broerse
 
New Features PHPUnit 3.3 - Sebastian Bergmann
New Features PHPUnit 3.3 - Sebastian BergmannNew Features PHPUnit 3.3 - Sebastian Bergmann
New Features PHPUnit 3.3 - Sebastian Bergmann
 
PHP 5.3 and PHP 6; a look ahead - Stefan Priebsch
PHP 5.3 and PHP 6; a look ahead - Stefan PriebschPHP 5.3 and PHP 6; a look ahead - Stefan Priebsch
PHP 5.3 and PHP 6; a look ahead - Stefan Priebsch
 
Quality Assurance in PHP projects - Sebastian Bergmann
Quality Assurance in PHP projects - Sebastian BergmannQuality Assurance in PHP projects - Sebastian Bergmann
Quality Assurance in PHP projects - Sebastian Bergmann
 
An Infrastructure for Team Development - Gaylord Aulke
An Infrastructure for Team Development - Gaylord AulkeAn Infrastructure for Team Development - Gaylord Aulke
An Infrastructure for Team Development - Gaylord Aulke
 
Enterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo JanschEnterprise PHP Development - Ivo Jansch
Enterprise PHP Development - Ivo Jansch
 
DPC2008 Intro - Ivo Jansch
DPC2008 Intro - Ivo JanschDPC2008 Intro - Ivo Jansch
DPC2008 Intro - Ivo Jansch
 
DPC 2007 My First Mashup (Cal Evans)
DPC 2007 My First Mashup (Cal Evans)DPC 2007 My First Mashup (Cal Evans)
DPC 2007 My First Mashup (Cal Evans)
 
DPC2007 CodeGear, Delphi For PHP (Pawel Glowacki)
DPC2007 CodeGear, Delphi For PHP (Pawel Glowacki)DPC2007 CodeGear, Delphi For PHP (Pawel Glowacki)
DPC2007 CodeGear, Delphi For PHP (Pawel Glowacki)
 
DPC2007 Zend Framework (Gaylord Aulke)
DPC2007 Zend Framework (Gaylord Aulke)DPC2007 Zend Framework (Gaylord Aulke)
DPC2007 Zend Framework (Gaylord Aulke)
 
DPC2007 Objects Of Desire (Kevlin Henney)
DPC2007 Objects Of Desire (Kevlin Henney)DPC2007 Objects Of Desire (Kevlin Henney)
DPC2007 Objects Of Desire (Kevlin Henney)
 
DPC2007 Symfony (Stefan Koopmanschap)
DPC2007 Symfony (Stefan Koopmanschap)DPC2007 Symfony (Stefan Koopmanschap)
DPC2007 Symfony (Stefan Koopmanschap)
 
DPC2007 PHP And Oracle (Kuassi Mensah)
DPC2007 PHP And Oracle (Kuassi Mensah)DPC2007 PHP And Oracle (Kuassi Mensah)
DPC2007 PHP And Oracle (Kuassi Mensah)
 
DPC2007 Case Study Surfnet (Herman Van Dompseler)
DPC2007 Case Study Surfnet (Herman Van Dompseler)DPC2007 Case Study Surfnet (Herman Van Dompseler)
DPC2007 Case Study Surfnet (Herman Van Dompseler)
 
DPC2007 Case Study Zoom & Webwereld (Sander vd Graaf)
DPC2007 Case Study Zoom & Webwereld (Sander vd Graaf)DPC2007 Case Study Zoom & Webwereld (Sander vd Graaf)
DPC2007 Case Study Zoom & Webwereld (Sander vd Graaf)
 
DPC2007 PDO (Lukas Kahwe Smith)
DPC2007 PDO (Lukas Kahwe Smith)DPC2007 PDO (Lukas Kahwe Smith)
DPC2007 PDO (Lukas Kahwe Smith)
 

Kürzlich hochgeladen

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 

Kürzlich hochgeladen (20)

Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 

Software And The Taste Of Mayo - Marco Tabini

  • 1. 1
  • 2. SOFTWARE and the Taste of Mayo Marco Tabini php|architect marcot@tabini.ca 1
  • 11. 2
  • 13. 3
  • 14. 3
  • 15. 4
  • 16. 4
  • 17. 4
  • 18. 5
  • 19. 5
  • 20. 5
  • 21. 5
  • 23. 6
  • 24. 6
  • 25. Where did they get this guy? 7
  • 26. What does this have to do with SOFTWARE??? 8
  • 27. 9
  • 28. CODE 9
  • 30. CODE + DATA + INTERFACE 9
  • 31. CODE + DATA + INTERFACE = APP 9
  • 32. CODE 10
  • 33. CODE 10
  • 34. CODE HARDWARE 10
  • 35. CODE FIRMWARE HARDWARE 10
  • 36. CODE O/S FIRMWARE HARDWARE 10
  • 37. CODE WEB O/S SERVER FIRMWARE HARDWARE 10
  • 38. CODE PHP WEB O/S SERVER FIRMWARE HARDWARE 10
  • 39. CODE FRAMEWORK WEBPHP SERVER O/S FIRMWARE HARDWARE 10
  • 40. CODE YOUR CODE FRAMEWORK PHP WEB SERVER O/S FIRMWARE HARDWARE 10
  • 41. 11
  • 44. Hello, World! Language System Calls C 46 Shell (TCSH) 37 PHP (CLI) 362 PHP (Apache) 881 11
  • 45. Hello, World! Language System Calls C 46 Shell (TCSH) 37 PHP (CLI) 362 PHP (Apache) 881 11
  • 46. Hello, World! Language System Calls C 46 Shell (TCSH) 37 PHP (CLI) 362 PHP (Apache) 881 11
  • 47. Hello, World! Language System Calls C 46 Shell (TCSH) 37 PHP (CLI) 362 PHP (Apache) 881 11
  • 48. Hello, World! Language System Calls C 46 Shell (TCSH) 37 PHP (CLI) 362 PHP (Apache) 881 11
  • 49. Hello, World! Language System Calls Once C 47 Language C System Calls 46 Shell (TCSH) 146 Shell (TCSH) 37 PHP (CLI) 362 PHP (CLI) 368 PHP (Apache) 881 PHP (Apache) 887 11
  • 50. Hello, World! Language System Calls Once C 47 Language C System Calls 46 Shell (TCSH) 146 Shell (TCSH) 37 PHP (CLI) 362 PHP (CLI) 368 PHP (Apache) 881 PHP (Apache) 887 11
  • 51. Hello, World! Language System Calls Once C 47 Language C System Calls 46 Shell (TCSH) 146 Shell (TCSH) 37 PHP (CLI) 362 PHP (CLI) 368 PHP (Apache) 881 PHP (Apache) 887 11
  • 52. Hello, World! Language System Calls Once C 47 Language C System Calls 46 Shell (TCSH) 146 Shell (TCSH) 37 PHP (CLI) 362 PHP (CLI) 368 PHP (Apache) 881 PHP (Apache) 887 11
  • 53. Hello, World! Language System Calls Once C 47 Language C System Calls 46 Shell (TCSH) 146 Shell (TCSH) 37 PHP (CLI) 362 PHP (CLI) 368 PHP (Apache) 881 PHP (Apache) 887 11
  • 54. Hello, World! Once Twice Language System Calls Language System Calls C 46 C 47 Shell (TCSH) 37 Shell (TCSH) 146 PHP (CLI) 362 PHP (CLI) 368 PHP (Apache) 881 PHP (Apache) 887 11
  • 55. 12
  • 56. Language Time C 2.5hrs Erlang 1.8hrs PHP (CLI) N/A* 12
  • 57. Language Time C 2.5hrs Erlang 1.8hrs PHP (CLI) N/A* 12
  • 58. Language Time C 2.5hrs Erlang 1.8hrs PHP (CLI) N/A* 12
  • 59. Language Time C 2.5hrs Erlang 1.8hrs PHP (CLI) N/A* * Sorry, had to catch flight to Amsterdam 12
  • 60. Ease of use Performance 13
  • 61. Ease of use Performance ASM C PHP Rails 13
  • 62. Ease of use Performance ASM C PHP Rails 13
  • 63. Ease of use Performance ASM C PHP Rails 13
  • 64. Ease of use Performance ASM C PHP Rails 13
  • 65. Ease of use Performance ASM C PHP Rails 13
  • 66. Single or double quotes? 14
  • 67. Single or double quotes? vs. file_get_contents(‘3gb_file.txt’) 14
  • 69. for? foreach? while? vs. select * from gigantic_unindexed_table inner join world_population_database inner join i_should_be_growing_plants_instead_of_coding 15
  • 71. INFRA CODE DATA STRUCTURE SCALABILITY SCALABILITY COST SOURCE IT OF PERFORMANCE ORGANIZATION OWNERSHIP 16
  • 72. Profit Density (Profit / Pages) Revenue Density Page Impressions 17
  • 73. Profit Density (Profit / Pages) Revenue Density Page Impressions 17
  • 74. Profit Density (Profit / Pages) Revenue Density Page Impressions 17
  • 75. Profit Density (Profit / Pages) Revenue Density Page Impressions 17
  • 76. Profit Density (Profit / Pages) Revenue Density Page Impressions 17
  • 77. Profit Density (Profit / Pages) Revenue Density Page Impressions 17
  • 78. Cost Density (Cost / Pages) 18
  • 79. Cost Density (Cost / Pages) 18
  • 80. Cost Density (Cost / Pages) 18
  • 81. Cost Density (Cost / Pages) 18
  • 82. Cost Density (Cost / Pages) 18
  • 83. Cost Density (Cost / Pages) 18
  • 84. Cost Density (Cost / Pages) 19
  • 85. Cost Density (Cost / Pages) 19
  • 86. Cost Density (Cost / Pages) 19
  • 87. Cost Density (Cost / Pages) 19
  • 88. Cost Density (Cost / Pages) FAIL! 19
  • 89. Cost Density (Cost / Pages) Bad Good 20
  • 90. Cost Density (Cost / Pages) Bad Good 20
  • 91. Cost Density Problems • Wrong scalability strategy Database • Wrong database type • Wrong database use 21
  • 92. Cost Density Problems • Architecture not scalable • No use of parallelization • No use of queuing 22
  • 93. Solving your infrastructure problems (let someone else deal with them) 23
  • 94. Example: AWS • 300,000 page impressions / mo. • Avg. 100kiB / page (== 30 GB / mo), 30GB Data • 20 queries per page, 20msec / query • 30 objects per page ( == 9,000,000 GET reqs/month) • 100 reqs/server/sec ( == 259,000,000 reqs/server/month) • 2 servers 24
  • 96. Example: AWS Item Service Cost/mo Storage S3 4.5 Data Transfer S3 30 Data Requests S3 1 DB Storage SimpleDB 45 DB CPU Usage SimpleDB 55 Server Usage EC2 144 TOTALS 279.5 25
  • 97. Example: AWS Item Service Cost/mo Storage S3 4.5 Data Transfer S3 30 Data Requests S3 1 DB Storage SimpleDB 45 DB CPU Usage SimpleDB 55 Server Usage EC2 144 TOTALS 279.5 25
  • 98. Example: AWS Item Service Cost/mo Storage S3 4.5 Data Transfer S3 30 Data Requests S3 1 DB Storage SimpleDB 45 DB CPU Usage SimpleDB 55 Server Usage EC2 144 TOTALS 279.5 25
  • 99. Example: AWS Item Service Cost/mo Storage S3 4.5 Data Transfer S3 30 Data Requests S3 1 DB Storage SimpleDB 45 DB CPU Usage SimpleDB 55 Server Usage EC2 144 TOTALS 279.5 25
  • 100. Example: AWS Item Service Cost/mo Storage S3 4.5 Data Transfer S3 30 Data Requests S3 1 DB Storage SimpleDB 45 DB CPU Usage SimpleDB 55 Server Usage EC2 144 TOTALS 279.5 25
  • 101. Example: AWS Item Service Cost/mo Storage S3 4.5 Data Transfer S3 30 Data Requests S3 1 DB Storage SimpleDB 45 DB CPU Usage SimpleDB 55 Server Usage EC2 144 TOTALS 279.5 25
  • 102. Example: AWS Item Service Cost/mo Storage S3 4.5 Data Transfer S3 30 Data Requests S3 1 DB Storage SimpleDB 45 DB CPU Usage SimpleDB 55 Server Usage EC2 144 TOTALS 279.5 25
  • 103. Example: AWS Item Service Cost/mo Storage S3 4.5 Data Transfer S3 30 Data Requests S3 1 DB Storage SimpleDB 45 DB CPU Usage SimpleDB 55 Server Usage EC2 144 TOTALS 279.5 25
  • 104. $280 / month = $0.09 CPM 3,000,000 pages / month (0.9% @ $10 RPM) 26
  • 105. Example: AWS • 300,000,000 page impressions • Avg. 100kiB / page (== 30 TB / mo), 1TB Data • 20 queries per page, 20msec / query • 30 objects per page ( == 9,000,000,000 GET reqs/month) • 100 reqs/server/sec ( == 259,000,000 reqs/server/month) • 35 servers 27
  • 107. Example: AWS Item Service Cost/mo Storage S3 150 Data Transfer S3 4,300 Data Requests S3 9,000 DB Storage SimpleDB 1,500 DB CPU Usage SimpleDB 3,800 Server Usage EC2 2,500 TOTALS 21,250 28
  • 108. Example: AWS Item Service Cost/mo Storage S3 150 Data Transfer S3 4,300 Data Requests S3 9,000 DB Storage SimpleDB 1,500 DB CPU Usage SimpleDB 3,800 Server Usage EC2 2,500 TOTALS 21,250 28
  • 109. Example: AWS Item Service Cost/mo Storage S3 150 Data Transfer S3 4,300 Data Requests S3 9,000 DB Storage SimpleDB 1,500 DB CPU Usage SimpleDB 3,800 Server Usage EC2 2,500 TOTALS 21,250 28
  • 110. Example: AWS Item Service Cost/mo Storage S3 150 Data Transfer S3 4,300 Data Requests S3 9,000 DB Storage SimpleDB 1,500 DB CPU Usage SimpleDB 3,800 Server Usage EC2 2,500 TOTALS 21,250 28
  • 111. Example: AWS Item Service Cost/mo Storage S3 150 Data Transfer S3 4,300 Data Requests S3 9,000 DB Storage SimpleDB 1,500 DB CPU Usage SimpleDB 3,800 Server Usage EC2 2,500 TOTALS 21,250 28
  • 112. Example: AWS Item Service Cost/mo Storage S3 150 Data Transfer S3 4,300 Data Requests S3 9,000 DB Storage SimpleDB 1,500 DB CPU Usage SimpleDB 3,800 Server Usage EC2 2,500 TOTALS 21,250 28
  • 113. Example: AWS Item Service Cost/mo Storage S3 150 Data Transfer S3 4,300 Data Requests S3 9,000 DB Storage SimpleDB 1,500 DB CPU Usage SimpleDB 3,800 Server Usage EC2 2,500 TOTALS 21,250 28
  • 114. Example: AWS Item Service Cost/mo Storage S3 150 Data Transfer S3 4,300 Data Requests S3 9,000 DB Storage SimpleDB 1,500 DB CPU Usage SimpleDB 3,800 Server Usage EC2 2,500 TOTALS 21,250 28
  • 115. $21,250 / month = $0.08 CPM 300,000,000 / month (0.8% @ $10 RPM) 29
  • 116. Them You 30
  • 118. Design THINK BIG—ITS CHEAP! Choose Scale 31
  • 119. Design THINK BIG—ITS CHEAP! Choose THE RIGHT TOOLS Scale 31
  • 120. Design THINK BIG—ITS CHEAP! Choose THE RIGHT TOOLS Scale EVERYTHING, ALWAYS 31
  • 121. Questions? Agree? Disagree? Want to rant? marcot@tabini.ca http://mtabini.blogspot.com http://mtabini.com/twitter 32