OK, let’s talk servers – those big computers that run and “serve” Web applications to the world.
Microsoft’s server is called Internet Information Services (IIS) and at version 7.0, it is a stable and reliable Web server. It can run all the common server programming languages and has advanced, built-in features, including caching and compression. However, it does come with the licensing requirements of Microsoft software. This means that you’ll have to pay for the latest version of Windows Server every few years. That licensing fee does include a level of support and assistance from Microsoft, so, in some cases, the expense might be worth it. If you’re developing a Web application in .Net, C# or VB.Net, IIS is most likely going to be your server. Most hosting companies are going to charge more to run IIS to cover the Microsoft license.
The second option is Apache. Linux is usually the operating system for Apache. Thanks to the Mono Project, Apache also can run all the major programming languages. Linux is open-source and doesn’t include any licensing fees. It also doesn’t include any support – although many companies provide Linux support for a fee. Linux hosting is almost always cheaper than Windows. Linux is a good option regardless of your programming choice, but if you’re using PHP, Python, Ruby or Java, then Linux is likely your best option.
Many Web applications will need to store data in a database. These days, there are many database options and hosted options to consider. There are a lot of databases to explore, too, but we’re simply going to explain them in three broad categories: relational enterprise, relational and No SQL.
Relational enterprise databases are the larger and more expensive options, such as Oracle and Microsoft SQL Server – both of which have licensing expenses with some level of included support. They typically will scale up very well and support huge numbers of transactions. Many companies provide Microsoft SQL Server shared hosting options. Microsoft’s SQL Server has to be hosted on Window Server, while many of the other options will run on both Windows and Linux.
Relational databases are considered MySql and Postgresql. These are similar in functionality to relational enterprise databases, but they are open-source. As a result, they don’t have any licensing requirements (or fees!) and are perfectly capable for most Web applications and even many enterprise applications. Many hosting companies include MySql shared databases, and an array of well known Web applications use MySql as their default database, including WordPress and Drupal.
No Sql options are gaining popularity because of their use by Facebook and other large social networking sites. No Sql is a misnomer, but for the sake of this, they can just be considered non-relational databases. They usually have specific use cases and allow for very high data storage and retrieval. Most Web applications will not need to use No Sql options. However, there are some hosted No Sql options that are beginning to rise in popularity and availability. Amazon’s Simple DB and Google’s Big Table are two of the most popular examples. Web applications built to be hosted on these solutions might want to take advantage of those options.
Selecting your server and database architecture can be largely decided by your programming choices or your programming team. However, if there are some extreme aspects of your Web application, it’s important to understand what those are, how they would and wouldn’t work within your chosen structure, and what it’s going to cost to construct and maintain what you develop. As a rule of thumb, “scale-out” solutions (meaning that you’re adding capacity by adding more cheap servers) will be better served by license-free options and potentially by the No Sql options. And “scale-up” solutions (meaning that you’re getting bigger servers and relying on Moore’s Law, to add capacity) usually will be better served by the enterprise databases and, depending on the language, Windows servers.
Contact Red27 for help determining the servers, databases and technology configurations that are best for your company and specific projects.