I'm an experienced front-end web developer, while my back-end experience has occurred only within the context of Drupal. Basically, the deeper things go into the back end, the more inexperienced I am. At a certain point, I don't even know what it is I don't know.

I'm hoping to get a broad sense of all that's required on the back-end to run a high traffic website. I realize that certain things will depend on the whether you're using something like PHP vs Ruby, type of database, type of server, and the type of OS on that server. At the moment I'm planning on using Amazon EC2, but am not sure about PHP vs. Ruby.

As far as I can tell, here are the main categories:


  1. Main configurations
  2. Monitoring performance / issues
  3. Scalability in the long & short run (short run = ability to quickly increase capacity)


  1. Main configurations
  2. Monitoring performance / issues
  3. Scalability in the long run
  4. Caching (not sure if query cacheing is done at the DB level or PHP/Ruby level)

Back-end Language (PHP or Ruby)

  1. Main configurations
  2. Caching
  3. Cron jobs (or equivalent in Ruby, if called something else)

I fear that this question may get closed as not a real question because it's not specific enough. But it's my back-end inexperience that makes it difficult for me to eve know how to correctly pose a question like this. If the question should be revised, please leave a comment explaining in what way and I'll be sure to do so.

  • It's the same in a sense. If backend will be used by admins only, you don't have to fear about performance bottlenecks, since only a handful of employees will use the admin interface, if that's what you mean under backend. Which language... it's like religion.
    – Jauzsika
    Sep 29, 2011 at 14:51
  • I'm more concerned about performance bottlenecks resulting from the fact that tens of thousands of users are on the site every day. And I'm not looking for a recommendation on using PHP or Ruby -- I'll decide that on my own. Rather, I'm interested in understanding the main setup & maintenance issues that one should be aware of in regards to either of those two languages.
    – maxedison
    Sep 29, 2011 at 15:01
  • I've made this community wiki as there is no right answer.
    – John Conde
    Sep 29, 2011 at 18:25
  • I don't need every answer to be a full one...
    – maxedison
    Oct 5, 2011 at 16:20

1 Answer 1


How your server will be set up depends a lot on what language your using. You should decide between PHP and Ruby then ask about a good setup for whichever you choose.

Whichever one you choose, make sure you use good coding techniques. Having sloppy code can cause more issues than just performance. If you use PHP (which i would recommend), read up on OOP in PHP. Even though PHP isn't technically an Object Oriented Programming Language, it can not only improve performance but also productivity.

I would also recommend you to make use of comments in your code, especially for really complex logic. It not only helps other people figure out what your doing, it can also help you easily find something you coded months ago. Another programmer should be able to look at your code and figure out what it's doing relatively easily.

Having your databases setup properly can make a huge difference for a high traffic site. Read up on setting indexes and the correct field types to use as these are often overlooked but can give you a big performance boost if used properly. There are many other settings that you need to take notice of, a quick google search can get you plenty of information on this.

If your going to use PHP, you may want to take a look at HipHop for PHP. It converts all of your code to highly optimized C++ and then converts it to machine code. It was created by Facebook and released as an open source project. Take a look at https://github.com/facebook/hiphop-php

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.