SlideShare a Scribd company logo
ZingMe Practice
For Building Scalable PHP Website




                  By Chau Nguyen Nhat Thanh
                    ZingMe Technical Manager
                         Web Technical - VNG
Agenda

●
    About ZingMe
●
    Scaling PHP application
    ●
        Scalability definition
    ●
        Scaling up vs scaling out
    ●
        Load balancing
    ●
        Problem with PHP when using load balancer
    ●
        User session management
    ●
        Problem with code deployment
                                                    2
Agenda(cont.)
●   ZingMe practice in building scalable PHP
    applications
    ●   Choosing scale out
    ●   Load balancing model
    ●   User session management system
    ●   Code deployment system
●   ZingMe more
    ●   Open social API
About ZingMe
●   A social network
About ZingMe
●   25M registered accounts
●   1.7M daily active users
●   5M monthly active users
●   > 300 servers (1.2 K cores)
    ●   50 DB servers, >40 Memcached servers
    ●   ~ 100 Web servers
    ●   40 servers for Hadoop farm
    ●   Others (storage, ...)
About ZingMe
●   Load balancing: HA proxy, LVS, hardware (?)
●   Web server: Nginx, lighttpd, apache, hardware (?)
●   Web caching: squid, varnish, hardware (?)
●   Caching: Redis, memcached
●   Programming language: PHP, C++,Java, python,
    bash script
●   Searching: Solr, lucene
●   DB: MySQL , NOSQL
●   Log system: Scriber + Hadoop
Scaling PHP application
●   Scalability definition
●   Scaling up vs scaling out
●   Load balancing
●   User session management
●   Code deployment
Scalability definition
“Scalability is a desirable property of a system,
a network, or a process, which indicates its
ability to either handle growing amounts of work
in a graceful manner or to be enlarged” from
Wikipedia
”A web application is scalable when is able to
manage a growing traffic with additional
resources (CPU, RAM) without software
changes” by Jan Burkl, Enrico Zimuel (Zend
Technologies)
Scaling up vs scaling out
●   Scaling up (vertically)
    ●   Add more resources to single node in a
        system
    ●   Resources can be software or hardware
    ●   Make system more powerful by increase node
        powerful
    ●   Has an upper limit
    ●   Hard to implement HA solution
    ●   Cost: expensive
Scaling up vs scaling out
●   Scaling out (horizontally)
    ●   Add more nodes to a system
    ●   Make system more powerful by increase
        number of nodes in the system
    ●   Maybe has no upper limit
    ●   Easy to implement HA solution
    ●   Cost: cheap
Scaling up vs scaling out




          •
            From slide ”How to scale PHP application”
     •
       by Jan Burkl, Enrico Zimuel (Zend Technologies)
Load balancing
●   The need of a load balancer
    ●   Most of big web site choose scale out
    ●   Need a component for distribute load among
        the nodes
    ●   Such component called load balancer
Load balancing




   •
      from ”Server load balancing architectures”
   •
     by Gregor Roth, JavaWorld.com, 10/21/08
Load balancing
●   How load balancer work?
    ●   Has 2 interfaces: Back-end, Front-end
    ●   Front-end receive the request from client
    ●   Back-end forward request to internal node
    ●   Back-end receive the response from node
    ●   Front-end response to client
    ●   Status monitor for monitoring the back-end
        interface
Load balancing
●   Web application load balancer
    ●   Work in layer 7
    ●   Can filter HTTP header and body in both
        request and response
    ●   Can be hardware or software
    ●   F5 BIG-IP, Citrix Netscale, Cisco
    ●   HA Proxy, Nginx, lighttpd
Problem with PHP when using
           load balancer
●   PHP stores session info into local disk by
    default
●   How to scale session to 2 nodes ?
●   Can be scaled if:
    ●   Load balancer has a method for routing the
        same user requests into the same nodes (1)
    ●   Override the default PHP mechanism for
        storing session of all nodes in the same
        storage (2)
Problem with PHP when using
           load balancer
●   Method (1)
    ●   Load balancer must keep state for connection
    ●   Overhead for routing request
    ●   Not balancing
●   Method (2)
    ●   Must change software
    ●   No overhead for routing request
    ●   More balancer than (1)
PHP session management
●   Choose method (2)
●   Centralize storage among web server
    ●   Storage can be NFS, DB, memcached...
    ●   All web servers access the same storage
●   Override the default behavior of PHP
    session functions
●   Bottleneck can be in storage
PHP session management
●   Call session_set_save_handler( callback
    $open , callback $close , callback $read ,
    callback $write , callback $destroy ,
    callback $gc ) to override default behavior
●   More infos:
    ●   http://php.net/manual/en/function.sessio
        n-set-save-handler.php
Problem with code deployment
●   Adding new server to system:
    ●   What kind of configuration must be changed?
    ●   Which code will be deployed ? In which
        server?
    ●   How can we monitor them?
Problem with PHP code
               deployment
●   What will we change in PHP code ?
    ●   Separate all configuration to configuration file
    ●   Do not hard code any configuration
    ●   Put the code in a central server like SVN
    ●   Use scripts to pull all code to production
        server
    ●   Build profiler system for monitor the code
ZingMe practice for building
         scalable web site
●   Choose Scale out
●   Use HA proxy for load balancing
●   Use Memcached for session storage
●   Simple code deployment system base on
    SVN and bash script
ZingMe practice for building
         scalable web site
●   Divide into small services
●   Use commodity hardwares
●   Use open source software
●   Server has the same environment
●   Add new server < 5mins
ZingMe load balancing model
ZingMe load balancing model
●   Use HA proxy
    ●   HTTP based proxy
    ●   High availability
    ●   Use epoll
●   Use content switching to divide the service
    into group
●   Define load balancing factors based on the
    power of the back-end server
ZingMe load balancing model
Normal traffic
ZingMe load balancing model
ZingMe traffic
ZingMe user session
              management
●   Use memcached for high performance
●   Override Zend_Session
●   3K hits/s
Why we choose memcache?
●   L1 cache reference                          0.5 ns
●   Branch mispredict                             5 ns
●   L2 cache reference                            7 ns
●   Mutex lock/unlock                            25 ns
●   Main memory reference                       100 ns
●   Compress 1K bytes with Zippy              3,000 ns
●   Send 2K bytes over 1 Gbps network        20,000 ns
●   Read 1 MB sequentially from memory      250,000 ns
●   Round trip within same datacenter       500,000 ns
●   Disk seek                              10,000,000 ns
●   Read 1 MB sequentially from disk     20,000,000 ns
●   Send packet CA->Netherlands->CA      150,000,000 ns

                                           From Jeff Dean - google.com
ZingMe code deployment
●   Developer upload code to SVN
●   SO runs scripts to deploy code to production server
●   Has staging server for real environment test
●   Dev cannot touch to production environment
●   Using environment parameter
    ●   Nginx: fastcgi_param
    ●   Apache: setenv
ZingMe more
●   Standard latency for server side code
    processing < 200ms
●   Live demos Profiler system
●   Open social API updated infos
    ●   Sandbox for developer
    ●   Will be open soon
ZingMe more
●   Optimize node before scale it up
    ●   Performance C++ > Java > PHP
    ●   Why PHP ?
        –   Easy to implement business
        –   Easy to deploy
    ●   Why C++?
        –   Performance
    ●   Can we mix PHP and C++?
        –   Next session will answer
Q&A




Contact info:
Chau Nguyen Nhat Thanh
thanhcnn@vinagame.com.vn
me.zing.vn/thanhcnn2000

More Related Content

What's hot (16)

PDF
Screaming Fast Wpmu
djcp
 
PPT
ZaloPay Merchant Platform on K8S on-premise
Chau Thanh
 
ODP
Mailerqnewpresentation
Copernica BV
 
PDF
WordCamp RVA
codearachnid_test
 
PDF
ZaloPay Merchant Platform on K8S on-premise
Chau Thanh
 
PDF
SPDY @Zynga
Mike Belshe
 
PDF
04 web optimization
Nguyen Duc Phu
 
PDF
Moodle performance and stress testing
moorejon
 
PDF
Cache hcm-topdev
Thanh Chau
 
PPTX
MongoDB backup service overview Boston MUG
MongoDB
 
PDF
Webinar slides: Become a MongoDB DBA - What to Monitor (if you’re really a My...
Severalnines
 
PDF
High-performance high-availability Plone
Guido Stevens
 
PPTX
Warsaw MuleSoft Meetup #12 Effective Streaming
Patryk Bandurski
 
PDF
Welcome to NPM search 2.0
Dejan Toteff
 
PPTX
Managing and Scaling Puppet - PuppetConf 2014
Puppet
 
PPTX
FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ
Alexandre Brandão Lustosa
 
Screaming Fast Wpmu
djcp
 
ZaloPay Merchant Platform on K8S on-premise
Chau Thanh
 
Mailerqnewpresentation
Copernica BV
 
WordCamp RVA
codearachnid_test
 
ZaloPay Merchant Platform on K8S on-premise
Chau Thanh
 
SPDY @Zynga
Mike Belshe
 
04 web optimization
Nguyen Duc Phu
 
Moodle performance and stress testing
moorejon
 
Cache hcm-topdev
Thanh Chau
 
MongoDB backup service overview Boston MUG
MongoDB
 
Webinar slides: Become a MongoDB DBA - What to Monitor (if you’re really a My...
Severalnines
 
High-performance high-availability Plone
Guido Stevens
 
Warsaw MuleSoft Meetup #12 Effective Streaming
Patryk Bandurski
 
Welcome to NPM search 2.0
Dejan Toteff
 
Managing and Scaling Puppet - PuppetConf 2014
Puppet
 
FEUC Tec 2016 - Desacoplando WorkFlows com RabbitMQ
Alexandre Brandão Lustosa
 

Viewers also liked (20)

PDF
Design a scalable social network: Problems and solutions
Chau Thanh
 
PPTX
Inside Zalo: Developing a mobile messenger for the audience of millions - VN ...
Zalo_app
 
PPTX
Experience lessons from architecture of zalo real time system
Zalo_app
 
PPT
7 Stages of Scaling Web Applications
David Mitzenmacher
 
PDF
Design a scalable site: Problem and solutions
Chau Thanh
 
PDF
Architecture Patterns - Open Discussion
Nguyen Tung
 
PDF
facebook architecture for 600M users
Jongyoon Choi
 
PDF
Design a scalable social network: Problems and Solutions
Chau Thanh
 
PPTX
Zing Me Launch Meetup July 2011
Nguyen Trong
 
PPTX
Zing me build brand engagement with zing me aug 2011
Binny Ngo
 
PDF
Zing me overview
Ohay TV
 
PPT
Zing me credential
zingopen
 
PDF
Giving Your Presentations Zing!
Daniel J. Lewis
 
PPTX
Zing Me - Open Platform Introduction
khaivq
 
PPT
megastar - zing me social network story
zingopen
 
PPT
ZING: the Next Generation of Z39.50
horvadam
 
PDF
Buiding and Deploying SaaS with WSO2 as as-a-Service
WSO2
 
PPT
Zing Database – Distributed Key-Value Database
zingopen
 
PPTX
Eptica Webinar: Unlock Revenue with Proactive Web Chat
Eptica UK Ltd
 
PPTX
Machine translation
Yamagata Europe
 
Design a scalable social network: Problems and solutions
Chau Thanh
 
Inside Zalo: Developing a mobile messenger for the audience of millions - VN ...
Zalo_app
 
Experience lessons from architecture of zalo real time system
Zalo_app
 
7 Stages of Scaling Web Applications
David Mitzenmacher
 
Design a scalable site: Problem and solutions
Chau Thanh
 
Architecture Patterns - Open Discussion
Nguyen Tung
 
facebook architecture for 600M users
Jongyoon Choi
 
Design a scalable social network: Problems and Solutions
Chau Thanh
 
Zing Me Launch Meetup July 2011
Nguyen Trong
 
Zing me build brand engagement with zing me aug 2011
Binny Ngo
 
Zing me overview
Ohay TV
 
Zing me credential
zingopen
 
Giving Your Presentations Zing!
Daniel J. Lewis
 
Zing Me - Open Platform Introduction
khaivq
 
megastar - zing me social network story
zingopen
 
ZING: the Next Generation of Z39.50
horvadam
 
Buiding and Deploying SaaS with WSO2 as as-a-Service
WSO2
 
Zing Database – Distributed Key-Value Database
zingopen
 
Eptica Webinar: Unlock Revenue with Proactive Web Chat
Eptica UK Ltd
 
Machine translation
Yamagata Europe
 
Ad

Similar to Zingme practice for building scalable website with PHP (20)

PPTX
Maximizing PHP Performance with NGINX
NGINX, Inc.
 
PPTX
Подталкиваем PHP к пределу возможностей, Michael Armstrong (lite speed techno...
Ontico
 
PPTX
Silverstripe at scale - design & architecture for silverstripe applications
BrettTasker
 
PDF
USENIX LISA15: How TubeMogul Handles over One Trillion HTTP Requests a Month
Nicolas Brousse
 
PPTX
Beginners Node.js
Khaled Mosharraf
 
PPTX
High performance PHP: Scaling and getting the most out of your infrastructure
mkherlakian
 
ODP
Drupal Performance and Scaling
Gerald Villorente
 
PPTX
Optimizing performance
Zend by Rogue Wave Software
 
PPTX
Zendcon scaling magento
Mathew Beane
 
PDF
Nginx pres
James Fuller
 
PDF
PHP At 5000 Requests Per Second: Hootsuite’s Scaling Story
vanphp
 
PPTX
Scaling Magento
Copious
 
PDF
Node.js Presentation
Exist
 
PDF
(phpconftw2012) PHP as a Middleware in Embedded Systems
sosorry
 
PDF
Scalable Architecture 101
ConFoo
 
PPTX
Dynomite @ RedisConf 2017
Ioannis Papapanagiotou
 
PPTX
RedisConf17 - Dynomite - Making Non-distributed Databases Distributed
Redis Labs
 
ODP
Zero Downtime JEE Architectures
Alexander Penev
 
PDF
Daniel Sloof: Magento on HHVM
Meet Magento Poland
 
PPTX
Instruments to play microservice
Chandresh Pancholi
 
Maximizing PHP Performance with NGINX
NGINX, Inc.
 
Подталкиваем PHP к пределу возможностей, Michael Armstrong (lite speed techno...
Ontico
 
Silverstripe at scale - design & architecture for silverstripe applications
BrettTasker
 
USENIX LISA15: How TubeMogul Handles over One Trillion HTTP Requests a Month
Nicolas Brousse
 
Beginners Node.js
Khaled Mosharraf
 
High performance PHP: Scaling and getting the most out of your infrastructure
mkherlakian
 
Drupal Performance and Scaling
Gerald Villorente
 
Optimizing performance
Zend by Rogue Wave Software
 
Zendcon scaling magento
Mathew Beane
 
Nginx pres
James Fuller
 
PHP At 5000 Requests Per Second: Hootsuite’s Scaling Story
vanphp
 
Scaling Magento
Copious
 
Node.js Presentation
Exist
 
(phpconftw2012) PHP as a Middleware in Embedded Systems
sosorry
 
Scalable Architecture 101
ConFoo
 
Dynomite @ RedisConf 2017
Ioannis Papapanagiotou
 
RedisConf17 - Dynomite - Making Non-distributed Databases Distributed
Redis Labs
 
Zero Downtime JEE Architectures
Alexander Penev
 
Daniel Sloof: Magento on HHVM
Meet Magento Poland
 
Instruments to play microservice
Chandresh Pancholi
 
Ad

Recently uploaded (20)

PDF
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
PDF
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
PPTX
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
PDF
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
PDF
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
PDF
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
PPTX
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
PDF
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
PDF
Log-Based Anomaly Detection: Enhancing System Reliability with Machine Learning
Mohammed BEKKOUCHE
 
PDF
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PPTX
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
PPTX
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
PDF
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
PDF
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
PPTX
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PDF
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
PDF
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
Log-Based Anomaly Detection: Enhancing System Reliability with Machine Learning
Mohammed BEKKOUCHE
 
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 

Zingme practice for building scalable website with PHP

  • 1. ZingMe Practice For Building Scalable PHP Website By Chau Nguyen Nhat Thanh ZingMe Technical Manager Web Technical - VNG
  • 2. Agenda ● About ZingMe ● Scaling PHP application ● Scalability definition ● Scaling up vs scaling out ● Load balancing ● Problem with PHP when using load balancer ● User session management ● Problem with code deployment 2
  • 3. Agenda(cont.) ● ZingMe practice in building scalable PHP applications ● Choosing scale out ● Load balancing model ● User session management system ● Code deployment system ● ZingMe more ● Open social API
  • 4. About ZingMe ● A social network
  • 5. About ZingMe ● 25M registered accounts ● 1.7M daily active users ● 5M monthly active users ● > 300 servers (1.2 K cores) ● 50 DB servers, >40 Memcached servers ● ~ 100 Web servers ● 40 servers for Hadoop farm ● Others (storage, ...)
  • 6. About ZingMe ● Load balancing: HA proxy, LVS, hardware (?) ● Web server: Nginx, lighttpd, apache, hardware (?) ● Web caching: squid, varnish, hardware (?) ● Caching: Redis, memcached ● Programming language: PHP, C++,Java, python, bash script ● Searching: Solr, lucene ● DB: MySQL , NOSQL ● Log system: Scriber + Hadoop
  • 7. Scaling PHP application ● Scalability definition ● Scaling up vs scaling out ● Load balancing ● User session management ● Code deployment
  • 8. Scalability definition “Scalability is a desirable property of a system, a network, or a process, which indicates its ability to either handle growing amounts of work in a graceful manner or to be enlarged” from Wikipedia ”A web application is scalable when is able to manage a growing traffic with additional resources (CPU, RAM) without software changes” by Jan Burkl, Enrico Zimuel (Zend Technologies)
  • 9. Scaling up vs scaling out ● Scaling up (vertically) ● Add more resources to single node in a system ● Resources can be software or hardware ● Make system more powerful by increase node powerful ● Has an upper limit ● Hard to implement HA solution ● Cost: expensive
  • 10. Scaling up vs scaling out ● Scaling out (horizontally) ● Add more nodes to a system ● Make system more powerful by increase number of nodes in the system ● Maybe has no upper limit ● Easy to implement HA solution ● Cost: cheap
  • 11. Scaling up vs scaling out • From slide ”How to scale PHP application” • by Jan Burkl, Enrico Zimuel (Zend Technologies)
  • 12. Load balancing ● The need of a load balancer ● Most of big web site choose scale out ● Need a component for distribute load among the nodes ● Such component called load balancer
  • 13. Load balancing • from ”Server load balancing architectures” • by Gregor Roth, JavaWorld.com, 10/21/08
  • 14. Load balancing ● How load balancer work? ● Has 2 interfaces: Back-end, Front-end ● Front-end receive the request from client ● Back-end forward request to internal node ● Back-end receive the response from node ● Front-end response to client ● Status monitor for monitoring the back-end interface
  • 15. Load balancing ● Web application load balancer ● Work in layer 7 ● Can filter HTTP header and body in both request and response ● Can be hardware or software ● F5 BIG-IP, Citrix Netscale, Cisco ● HA Proxy, Nginx, lighttpd
  • 16. Problem with PHP when using load balancer ● PHP stores session info into local disk by default ● How to scale session to 2 nodes ? ● Can be scaled if: ● Load balancer has a method for routing the same user requests into the same nodes (1) ● Override the default PHP mechanism for storing session of all nodes in the same storage (2)
  • 17. Problem with PHP when using load balancer ● Method (1) ● Load balancer must keep state for connection ● Overhead for routing request ● Not balancing ● Method (2) ● Must change software ● No overhead for routing request ● More balancer than (1)
  • 18. PHP session management ● Choose method (2) ● Centralize storage among web server ● Storage can be NFS, DB, memcached... ● All web servers access the same storage ● Override the default behavior of PHP session functions ● Bottleneck can be in storage
  • 19. PHP session management ● Call session_set_save_handler( callback $open , callback $close , callback $read , callback $write , callback $destroy , callback $gc ) to override default behavior ● More infos: ● http://php.net/manual/en/function.sessio n-set-save-handler.php
  • 20. Problem with code deployment ● Adding new server to system: ● What kind of configuration must be changed? ● Which code will be deployed ? In which server? ● How can we monitor them?
  • 21. Problem with PHP code deployment ● What will we change in PHP code ? ● Separate all configuration to configuration file ● Do not hard code any configuration ● Put the code in a central server like SVN ● Use scripts to pull all code to production server ● Build profiler system for monitor the code
  • 22. ZingMe practice for building scalable web site ● Choose Scale out ● Use HA proxy for load balancing ● Use Memcached for session storage ● Simple code deployment system base on SVN and bash script
  • 23. ZingMe practice for building scalable web site ● Divide into small services ● Use commodity hardwares ● Use open source software ● Server has the same environment ● Add new server < 5mins
  • 25. ZingMe load balancing model ● Use HA proxy ● HTTP based proxy ● High availability ● Use epoll ● Use content switching to divide the service into group ● Define load balancing factors based on the power of the back-end server
  • 26. ZingMe load balancing model Normal traffic
  • 27. ZingMe load balancing model ZingMe traffic
  • 28. ZingMe user session management ● Use memcached for high performance ● Override Zend_Session ● 3K hits/s
  • 29. Why we choose memcache? ● L1 cache reference 0.5 ns ● Branch mispredict 5 ns ● L2 cache reference 7 ns ● Mutex lock/unlock 25 ns ● Main memory reference 100 ns ● Compress 1K bytes with Zippy 3,000 ns ● Send 2K bytes over 1 Gbps network 20,000 ns ● Read 1 MB sequentially from memory 250,000 ns ● Round trip within same datacenter 500,000 ns ● Disk seek 10,000,000 ns ● Read 1 MB sequentially from disk 20,000,000 ns ● Send packet CA->Netherlands->CA 150,000,000 ns From Jeff Dean - google.com
  • 30. ZingMe code deployment ● Developer upload code to SVN ● SO runs scripts to deploy code to production server ● Has staging server for real environment test ● Dev cannot touch to production environment ● Using environment parameter ● Nginx: fastcgi_param ● Apache: setenv
  • 31. ZingMe more ● Standard latency for server side code processing < 200ms ● Live demos Profiler system ● Open social API updated infos ● Sandbox for developer ● Will be open soon
  • 32. ZingMe more ● Optimize node before scale it up ● Performance C++ > Java > PHP ● Why PHP ? – Easy to implement business – Easy to deploy ● Why C++? – Performance ● Can we mix PHP and C++? – Next session will answer
  • 33. Q&A Contact info: Chau Nguyen Nhat Thanh [email protected] me.zing.vn/thanhcnn2000