Once you sign up in Innova Challenge 2014, organized by BBVA-Bancomer, you will have to start thinking about the type of application you want to develop. If it is a web application, or needs a web infrastructure to run, one of the first questions you will ask yourself is: where do I host my application? Fortunately, we are in 2014 and nowadays there are an immense variety of options. We will review the most popular options below
Traditional hosting
Web applications were hosted in shared or dedicated servers until virtualization-based technology and cloud environments became popular.
In the first case, the application is run on a single server, where it shares space and bandwidth with other applications that run on the same machine. The solution is normally inexpensive and a good choice for web applications that do not receive many visits and do not consume a lot of bandwidth. This last requirement involves the most restrictions: if the application starts to receive too many user visits and/or consume a large amount of bandwidth, the service provider will restrict access to the application and may even apply penalties. As a result, users will no longer receive the service.
In the second case, the machine running the application is not shared, rather it is used exclusively by the application. Both storage space and bandwidth are for the developer's exclusive use. In exchange for this advantage, the cost is significantly higher. And we should not forget that it is equally easy to exceed the bandwidth or storage limits, which requires having to pay more to continue providing the service.
Among the best known shared or dedicated hosting services are HostGator, Dreamhost and Linode
However, in the age we live in, with applications that handle enormous volumes of data and provide service to millions of users simultaneously, the intrinsic restrictions of traditional providers can pose a serious problem. This brings us to the crux of the matter: scalability. If the application undergoes sudden expansion, we must be capable of responding immediately to maintain the ideal conditions of the service we are offering. That is why using cloud platforms makes sense for deploying applications.
Moreover, now there are an infinite number of tools and services designed to cover the entire development and deployment cycle required by most of today's applications. The idea is not limited to simply developing a web application. We want it to be scalable. It must provide service to millions of potential users without becoming degraded. The tools we use to develop it must be perfectly connected to the environment where it will be deployed. And the price to pay must be adjusted to the needs of the application at all times.
Because of this, we present one of today's most popular choices for web application deployment: the PaaS platforms
PaaS Hosting
As mentioned above, the popularity of cloud computing platforms and virtualization systems has resulted in the proliferation of a large number of platforms oriented towards deploying application with scalability as their distinctive feature.
The services provided by a cloud platform can be summed up in three layers, as shown in the following image
Image source
The most interesting level for developers of applications with a web component is the middle layer: Platform as a Service. This way, we won't have to worry about managing virtual machines, storage systems or load balancing that occurs in the lower layer. In any case, if we want to manage these components manually at any time, we can always resort to platforms with these capabilities, such as Amazon Web Services, Windows Azure, Digital Ocean or RackSpace
As we mentioned, we are going to focus on providers that facilitate the Platform as a Service level. In other words, a complete application deployment platform that already includes an operating system, a running environment for the programming language of our choice, access to a database and a web server, without having to set up all those components manually. The ones most frequently used can be found below.
Heroku
The first and possible most famous one is Heroku.
The Heroku infrastructure is based on the Ubuntu operating system and PostgreSQL database manager. It contains running environments for Ruby, Java, Node.js, Scala, Clojure, Python, PHP and Perl. The last one, however, is not documented.
The company was purchased by Salesforce in 2010, and has plans free of charge. It has a direct connection with GIT and numerous add-ons, which makes it one of the most popular choices for web developers.
CloudFoundry
CloudFoundry is a platform used by a variety of cloud infrastructure providers.
The platform is based on open code software and was developed by VMWare. It is used by various cloud providers to offer PaaS. The main provider is Pivotal Software, which offers its services through run.pivotal.io, and supports Ruby, Java, Node.js, Grails, Go, Python, PHP, Erlang, Haskel and Clojure languages. It also allows connectivity with databases, such as MySQL, PostgreSQL, MongoDB and Redis.
As regards plans, these start at $2.70 a month, with a 60-day free trial.
Another PaaS provider based on CloudFoundry technology is IBM, through its Bluemix platform. This platform provides, literally, dozens of services for developers to deploy applications created in any of the best known languages: Java, Grails, Node.js, Ruby, Python or PHP It also connects to the most popular databases: MySQL, PostgreSQL, MongoDB, Redis, etc., and it even offers support for mobile platform developers, such as Android and iOS.
IBM is taking full advantage of the modular architecture of CloudFoundry, based on Open Source. If a language or platform is not supported, it can be added by the community or developed later by IBM or by any other partner. The official catalog of services offered by Bluemix can be found at this link.
The variety of prices is truly enormous. There is a chart of guidelines that can be used to calculate monthly cost, depending on what is going to be used. It offers a 30-day free trial.
Amazon Elastic Beanstalk
Previous mention was made of Amazon Web Services as an IaaS platform. However, Amazon also provides a PaaS service based on its infrastructure: Amazon Elastic Beanstalk.
The languages supported are Java, Ruby, PHP, Python and Node.js. It also supports deployment of applications written in .NET and the use of Docker containers.
The price policy is pay-per-use, as in the rest of the services provided by Amazon. Nonetheless, if you have never signed up for an account in Amazon Web Services, you are eligible for a one-year free trial with certain resource restrictions, but more than enough for most of the applications you may want to develop.
Google App Engine
As expected the giant Google is also immersed in the PaaS business. It provides an abbreviated form of its Google App Engine platform, or GAE, for this purpose.
The Google platform is somewhat more limited than its direct competitors. Although it allows the use of typical languages, such as Java, Ruby, Clojure, Scala, Python, Groovy and PHP, as well as Go, developed by Google, there are a series of restrictions that have to be taken into account. For example, if you need a relational database, you can use the datastore, a Google relational database implementation used to communicate via the Google Cloud SQL language (GCL, in short).
In exchange, the service is free of charge. This means that you will not pay anything, as well as not time restrictions as long as you do not exceed certain limits of resource consumption.
Microsoft Azure Websites
Like Google, Microsoft is also in the PaaS battle and not willing to yield any territory. That is why it provides Microsoft Azure Websites as a platform for web developers.
The languages officially supported by the platform are Java, Node.js, Python, PHP and, of course, .NET It also allows the use of MySQL and MongoDB, among other data storage solutions.
As regards prices, Microsoft also uses a layer-based model, with free use of resources up to a limit. It also has special offers for Startups, through its BizSpark program and for educational institutions.
Nodejitsu
Then there is the Nodejitsu platform for fanatics of Node.js and all its accompanying technology.
This only allows applications written exclusively in Node.js. However, in exchange it makes life easier for developers who use the language by providing an environment where nothing is missing.
Its price plan starts at $25 / month, but it also offers a special Node.js application hosting plan for free that only requires having an open code license.
Openshift
We end our review with OpenShift, the complete PaaS solution by RedHat, a well-known company in GNU/Linux environments
The languages supported are Javascript, Ruby, Python, PHP, Perl, Java Haskell and .NET. The available databases are MySQL, PostgreSQL, MongoDB and Microsoft SQL Server.
Its price plan is very competitive, starting at only $20 a month and a wide range of free configurations.
For more information about other PaaS solutions, go to this entry in Wikipedia
Conclusions
Nowadays, there are myriad solutions for the deployment of web applications. From the traditional shared or dedicated hosting, with more restrictions and fixed prices, to the modern cloud infrastructures that facilitate the developer's work by providing the Platform as a Service (PaaS) level.
The giants in the information technology and Internet world have made a commitment to the latter and provide solutions that cover anyone's wishes. From simple platforms with a relatively short learning curve, such as Nodejitsu or OpenShift, to enormous infrastructures that allow developers to do almost anything they want to, such as those offered by Microsoft (Azure), IBM (Bluemix) or Amazon (Web Services), as well as mid-sized architectures, such as Heroku.
Regardless of the application you want to develop, it is obvious that there is no lack of options to choose from. The only limit is your imagination! (and your wallet)