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: 211
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