On PHP and PERL

I'm likely using a system written on PHP right now.

PHP is one of those "operating system of the Internet" sort of things.  It's the fundamental programming language of every major piece of blogging software, CMS, Wiki and popular forum.  It's what powers drupal.  Facebook uses it as their primary tool -- although they have made a Frankenstein Monster called HipHop and as a distributed tool, FB gets a million bajillion hits/day.  Here's even a walkthrough on how to hook PHP up to Zookeeper to take advantage of Zookeeper-style queues.  To be any kind of web programmer you have to have at least passing knowledge and the ability to read PHP -- and it's not hard.  It's one of the simpler languages to grasp out there.

php and java.jpg

As a primary front end language PHP is fine.  It has tons of support, FB is giving back to the community, and Web Frameworks spring out of the grass like voles.  Zend is popular but not the fastest thing on Earth but it has tons of competition these days.  Distributed on php5-fpm and behind an nginx reverse proxy, with some tuning, PHP runs on a variety of AWS-sized instances flawlessly.    

PHP's biggest challenge is speed.  One of the most common distributed enterprise patterns is the PHP-Java one-two combination.  PHP is a solid front end language with great Javascript and REST client support but with weak back end processing support (unless you are Facebook, see above).  Java is a Ferrari as a back end language but has tragic front end support.  Combining the two provides the elegance on the front and the power on the back.  As a distributed enterprise pattern, this delivers lots of success.  We could build Project Butterfly exactly like this -- credit card and hotel reservations and all -- and it would work and it would be stable and it would deploy into AWS Elastic Beanstalk and seriously call it a day.  Or just deploy it to straight EC2 instances with a fabric script.  But that's not much of a learning or explaining tool. "Just deploy stuff to Elastic Beanstalk" is not much of a project even if it is a very valid solution.*

The long and short here is that this is it, it will work, but I'm wandering.

As for PERL, I do know people are still writing big web applications in PERL.  Somewhere along the way I fell off the PERL train -- probably around the time I first laid hands on Python.  I don't think there is really anything wrong with mod_perl but with so many new and interesting choices out there... PERL has tons of mature libraries that work and is battle tested but it feels like it's one of those web languages about to fall off.  

  • However, for those struggling to scale out Drupal, some of the AWS features provided with ELBs and autoscaling of instances in containers might help.  I know one of the main issues to scaling Drupal out is DB contention and locks on shared tables, though, and more traffic makes that problem worse.  Your mileage may vary -- scaling out Drupal in particular is a different, and relatively deep, topic.