Choosing the best application hosting strategy is a function of considering multiple overlapping factors.
- Managed / Unmanaged – Who will monitor, maintain, and patch the host operating system. Managed service providers cost more but argue that their costs are less than hiring a dedicated IT administrator, incurring the cost associated with downtime, or the value of an entrepreneur or software developer’s time.
- Physical / Virtual hardware – Virtual machines are more flexible but typically do not perform as well as physical machines.
- Owned / leased equipment – Business consideration if physical hardware is selected.
- Shared / dedicated environment – Whether a given business / application is the only application running on a given platform.
- Direct interaction with OS / hardware– Whether non-traditional technologies need to be installed or if there are unique requirements (security, networking, custom hardware).
Shared service provider
Shared service provider is an ideal solution for a publically accessible development sandbox. Individual developer wishes to showcase a piece of work to colleagues, customers, or friends.
Characteristics: Ability to host application code written in a variety of different languages (C#, PHP, Java, Perl, etc.), leveraging common frameworks (Rails, .Net, Django, etc.), and connecting to a traditional SQL database (MySQL, SQLServer, etc.).
Pros: Cost, ease of use.
Cons: Limited capability, can be sluggish, cannot install tools, limited to common technologies, minimal monitoring, limited up-time guarantees.
Costs: $5-$10/month.
Sample Providers (*): Dreamhost, 1&1, Godaddy. See lifehacker review.
Platform-as-a-Service Providers (PaaS)
A PaaS solution would be appropriate for small purpose-built application with modest CPU, bandwidth, and CPU requirements. PaaS solutions are ideal for applications that might experience explosive growth such as a commercial iPhone/Android application that exchanges data with the cloud. PaaS solutions typically would not be appropriate if there is no monetization strategy as the costs would become prohibitive as usage takes off. Note that although Salesforce.com’s solution can be used as a more generic solution it is optimized for applications that integrate with data on their platform.
Characteristics: Similar to shared service provider, however, more robust platform for hosting applications. Many times are technology specific. See much more detailed discussion of PaaS on Wikipedia.
Pros: Scalable, robust, allows developers to focus on code vs. IT, solutions optimized for development.
Cons: Cost, control limited to application code and supported technologies.
Costs: Typically tied to usage. Often free for development.
Sample Providers (*): Heroku (Rails), AppEngine (Python, Java), Azure (.Net), VMForce (Java), Salesforce.com (Apex).
Virtualized server
A virtualized server makes sense for situations where a developer needs the ability to interact directly with the operating system, where there is minimal concern about scalability, and the amount of data being exchanged is not significant. An ideal application of a virtualized server would be for a PCI complaint shopping cart.
Characteristics: Windows or Linux computing platform implemented on a larger computer using a back-end virtualization solution. May or may not be managed solution. Features and, functionality vary greatly between providers.
Pros: Provides the ability to have OS-level control. Ability to install non-traditional apps (i.e., Cassandra).
Cons: Less performance and scalability than physical hardware. Need to be concerned about OS-level issues.
Costs: Pricing in variable depending on usage and configuration. Range $20 – $200 / month based on selected options.
Sample Providers (*): Amazon EC2, Mosso (aka Rackspacecloud), HostGator, 4Domains.
Physical server
Physical servers make sense when significant amounts of data are to be transferred, finite control of the system is required, or application performance needs to be maximized. Most technology companies purchase “cage space” or enter into a managed service provider agreement.
Characteristics: Windows or Linux computing platform implemented physical hardware. May or may not be managed solution. Equipment may be owned or leased.
Pros: Same as virtual server plus ability to scale. Predictable cost structure.
Cons: Longer-term contracts typically required.
Costs: Variable depending on configuration.
Sample Providers (*): Rackspace, Navisite, Datapipe.
(*)I’ve used most of the “sample” providers and by and large have been happy with their services.