20 December 2012

Python Web Hosting

Python hosting has come along way with the inception of the cloud. In past, most hosting providers only supported PHP based applications. However, the demand for hosting and the flexibility for more options has increased significantly. There are more and more growing options available now either shared, virtual private or a dedicated. Depending on ones application requirements each one can be workable. However, shared hosting is possibly the most minimalist option there is. Python is also emerging into a stronger contender to PHP and Ruby web frameworks and is able to support larger websites with fluid ease. Developing in Python is not only faster but it is also more maintainable. Arguably, Python is easy to learn and a lot faster then Ruby. Although, Ruby appears to be a more trendy way of developing websites, it is also a quite slow and one would require a stronger architectural dependency on caches to scale up a large application. Similarly, with PHP having a large application being cacheable is a key to the performance as well the limitations of a lifecycle of a request/response. PHP in all fairness although workable can be quite cumbersome to maintain in a multithreaded, high availability, low latency, and security conscious application. PHP in my view is really aptly suited to small scale applications or ones that have a significant infrastructure backbone of cacheability  with such layers of memcache or redis. Furthermore, the use of PHP web frameworks is a bit like over engineering with a half baked language. And, even then, the major drawbacks of PHP are lack of consistency, lack of backward compatibility, quality of open source libraries, object orientation, as well as the major one that being security vulnerabilities. However, one of the core Python drawbacks is also the lack of compatibility between 2.x and 3.x which can boil down to how much one requires access to various libraries compared to a closed and isolated web application. Some of the Python web frameworks that I particularly like are: Django, Tornado, Bottle, and Flask. Python is an amazingly good multitasking and integration language. It also does a really good job for data processing and in distributed systems environments which depend on services with no single point of failure. If you know Groovy you can pretty much pick up Python and therefore the ramp up time for a Java/Groovy Developer towards picking up Python is also faster then in trying to learn up Ruby. If one is facing a deciding factor between CGI and an alternative then one must be aware that in most shared hosting they use FastCGI whether it be Ruby, Python, or PHP. However, using the passenger module does help to get  WSGI support but there is no full support for it in Python. Python, in my opinion is an even better swiss army knief compared to Perl especially for Natural Language Processing and Machine Learning. I have listed below a few Python hosting options most of the PaaS options can be fairly expensive but offer a more flexible and larger scope for development. However, as all things go on the Cloud if one's PaaS provider is dependent on Amazon as an IaaS and if that goes down then your hosting provider would naturally also be effected. 
As well as, several others....check out djangofriendlyhosting

If one requires standard website with a small scale load then one can use PHP or Python eg like a company or promotion website
If the load is relatively high with a lot of distributed data processing then go for Python e.g like a newspaper site, games site, or a search site
If the level of work is enterprise requiring more control more heavy processing, and a heavy use of JVM then go for Java, Groovy, or Scala.

Java/Groovy and Python make a good composition for most back-end lifting work where as front-end interface masking can better be handled by core HTML/CSS/JavaScript libraries and frameworks. PHP can also be used behind the scenes, like with data loads or job controls with gearman, but as much away from security and heavy lifting as possible.