Scalability 101: How can I design a scalable web application using PHP?

Posted by Legend on Stack Overflow See other posts from Stack Overflow or by Legend
Published on 2011-02-20T07:19:45Z Indexed on 2011/02/20 7:25 UTC
Read the original article Hit count: 206

I am building a web-application and have a couple of quick questions. From what I learnt, one should not worry about scalability when initially building the app and should only start worrying when the traffic increases. However, this being my first web-application, I am not quite sure if I should take an approach where I design things in an ad-hoc manner and later "fix" them. I have been reading stories about how people start off with an app that gets millions of users in a week or two. Not that I will face the same situation but I can't help but wonder, how do these people do it?

Currently, I bought a shared hosting account on Lunarpages and that got me started in building and testing the application. However, I am interested in learning how to build the same application in a scalable-manner using the cloud, for instance, Amazon's EC2. From my understanding, I can see a couple of components:

  • There is a load balancer that first receives requests and then decides where to route each request
  • This request is then handled by a server replica that then processes the request and updates (if required) the database and sends back the response to the client
  • If a similar request comes in, then a caching mechanism like memcached kicks into picture and returns objects from the cache
  • A blackbox that handles database replication

Specifically, I am trying to do the following:

  • Setting up a load balancer (my homework revealed that HAProxy is one such load balancer)
  • Setting up replication so that databases can be synchronized
  • Using memcached
  • Configuring Apache to work with multiple web servers
  • Partitioning application to use Amazon EC2 and Amazon S3 (my application is something that will need great deal of storage)
  • Finally, how can I avoid burning myself when using Amazon services? Because this is just a learning phase, I can probably do with 2-3 servers with a simple load balancer and replication but until I want to avoid paying loads of money accidentally.

I am able to find resources on individual topics but am unable to find something that starts off from the big picture. Can someone please help me get started?

© Stack Overflow or respective owner

Related posts about php

Related posts about web-development