I need more servers! what do I do? (Scaling a php application)

Maurice Kherlakian (18.Sep.2008 at 11:00)
Talk at Zend/PHP Conference & Expo 2008 (English - US)

Rating: 0 of 5

1. Introduction: Help! I need more servers! What do I do?
Building a scalable PHP application can be a challenging task: When we mention scalability, we usually refer to two factors: performance and high availability. This presentation covers both.
When it comes to scaling, it is extremely important to mention that there is no right or wrong technique. All the various scaling techniques and practices have advantages and disadvantages, and should be chosen based on one’s particular needs and situation.
I have built and ran for over a year a successful file hosting website (230 Alexa rank) that is programmed in PHP. This website experiences 300,000 visitors per day, and at peak times, has a throughput of 3Gbps. (that is 27 Tb of data transferred daily). Engineering this system required thinking outside of the box, and we applied several original scaling techniques to reduce operaqting and hardware cost.

2. High throughput vs high availability

* Discuss the difference between high throughput (supporting lots of traffic, performance) vs high availability (application being fault tolerant)

3. Load balancers: How do they work?

* Hardware vs software load balancers (Ultramonkey solution)
* Session persistence across servers; sticky sessions, Zend platform, Sharedance server…

4. Application database infrastructure

* Short presentation of different MySQL scalability options: Replication, Circular replication, DRBD, MySQL cluster
* How does MySQL scalability affect your code: (Replication: splitting reads and writes, Circular replication: avoiding collisions and data inconsistency…)
* Shards

What are the advantages of shards, and how does it affect the development process? Shards are a database architecture technique consisting in splitting data across database servers hosting the same table structure. It usually implies the implementation of hashing algorithms that determine which servers the data is created on and retrieved from.

5. PHP Code design considerations

* Zend framework: How can it help in scaling
* How is the application split? Is each part of the application hosted on one (or a cluster) of servers, or is the application one monolithic block stored on one cluster?
* Modular design, how to code your application to make it easy to distribute the load of your application across different clusters. The idea behind this kind of segmentation is that different parts of your application may require different kinds of resources. Some parts may need high amounts of RAM, while others may require high I/O. If the segmentation of the application is done correctly, it could end up saving hardware costs on the long run.
* The use of shared storage, web services and different communication protocols to allow different parts of your application to communicate with one another

6. Best practices when building an application for scalability

* Plan, plan and plan
* Study different components, make sure they can interact wit hone another

7. Conclusion

Who are you?

Claim talk

By clicking this button you are declaring that you are the speaker responsible for it and a claim request will be sent to the administrator of the event.

If the claim is approved you will be able to edit the information for this talk.

Are you sure?

 
Comments closed.
 
No comments yet.
Cloud server hosting by Combell Combell      © Joind.in 2012