Monday, January 21, 2013

Classic Hosting Models vs Windows Azure



A Case Study by EPAM Cloud Competency Center

Contact EPAM Cloud Competency Center at OrgCompetencyCloudConsulting@epam.com 

We are happy to share our knowledge and expertise on topics, related to hosting solutions by our professionals at EPAM Cloud Competency Center.
The goal of this study is comparing classic hosting models with Windows Azure, revealing their respective benefits and drawbacks as per defined functional and non-functional requirements. We compare the maximum number of options by both providers that fits the assumed architecture.
The study is based on real-life research project by EPAM.

Functional Requirements

  • Central server services with real-time logic and logging
  • Bi-directional communication with central services over UDP and possibly Data Sync (HTTP)
  • Client-side application able to receive updates from the central server and send back commands/requests real-time
  • Reporting service providing customizable log reports
  • Data storage can be divided into the following categories:
    • Reference Data (small volumes of rarely changeable or read-only configuration data)
    • Operational Data (real-time monitoring sessions)
    • Historical Data (Up to 1 year of Events/Parameters/Snapshots received from embedded devices)
  • Ability to generate maintenance Reports/BI Analytics from history is a mandatory requirement
  •  Customizable Reports (similar to SQL Server Reporting Services). Reports can be split into three categories:
    • Current shift/day – several times a minute
    • Current month – several times an hour
    • Current year – several times a day
  • OLAP cubes or Data Mining models must be easily built for history data upon demand

Non-functional Requirements

  • Data capacity: one year’s worth of data in DB (up to 200 – 300 GB for large customers):
    • Reference and Operational Data can occupy approximately 20 GB per cluster
    • Historical Data can require up to 300 GB per cluster (for large customers) or even more
  • Performance
    • Latency below 3 seconds for clients and embedded systems
    • Report generation – not more than 30 seconds
  • Reliability
    • Central service: 1 week of continuous operation under heavy load
    • Data backup and recovery is a mandatory requirement
    • No critical data (events, configurations, settings) loss during communication
    • No data loss in database
  • High availability
    • The Application is a real-time system, available 24/7 (downtime up to 15 min/week is acceptable);
    • Load balancing and horizontal scalability of central services are mandatory requirements
  • Scalability
    • Easy scale-in and scale-out of storage, computing power, and number of load balanced nodes, enabling dynamic resource scaling
  • Cost
    • Including cost of hardware/resources, licenses, software support, traffic etc.
  • Security
    • Integration with Active Directory and generic user account management
    • Authentication and authorization
    • No logging or encryption
  • Infrastructure
    • Easy installation, upgrades, health monitoring, error logging and notifications about critical system failures

Considered Solutions 

  1. Classic web-hosting;
  2. Dedicated servers;
  3. Windows Azure Virtual Machines;
  4. Windows Azure Cloud Services

Solution Analysis

As a first step, let us simply compare the prices for solutions in scope of this paper.


Item
Classic web-hosting
Dedicated servers
Windows Azure Virtual Machines
Windows Azure Cloud Services
Database:
Included
$ 260/month
$ 225.80/month
 for 1x150 GB DB
$225.80/month
 for 1x150 GB DB
SQL Server license:
Included
Included
$ 898
Not needed
Reporting services:
Built-in
Built-in
Built-in
Built-in;
$ 0.88/hour for SQL Azure
Statistics:
-
Built-in
Built-in
Built-in;
Not supported by SQL Azure
Backup:
Built-in
$ 50/month
Built-in
Built-in
Storage space:
Unlimited
Unlimited
$ 55.80/month for 600 GB
$ 55.8/month for 600 GB
Bandwidth:
Unlimited
Unlimited
$ 122.80 $/month for 1 TB
$ 122.80 $/month for 1 TB
Active Directory:
-
Free
$ 19.90/ 1 million transactions
$ 19.90/ 1 million transactions
Basic monthly cost:
$ 13
$ 170
$ 115.2
$ 172.8

Deployment scenarios

Classic web hosting


An SQL Server-hosting instance is co-located with the main Application, eliminating latency between database requests. In addition, there are no restrictions on number of databases for the Application. Web hosting provides unlimited storage space and bandwidth. Configuration and OS updates are automated. There is no need to buy an SQL Server license
However, there are some restrictions and concerns about using classic web-hosting capabilities:
  • Database volume is limited to 200 MB. This can be a problem requiring architecture adjustments.
  • Server to client notifications require installation of 3rd party software (for example RabbitMQ.) A scenario where implementing such notifications is technically impossible is also there.
  • Since a standard SQL Server is used as a database, it is possible to employ built-in Reporting Service capabilities. However, it takes turning to a provider’s support team to enable Analytical Services.
  • CPU and RAM resources are shared between many clients, which can influence performance of the Application.
  • Active Directory features are built-in Windows Server 2008, yet there is no way to control the system remotely. In order to configure Active Directory services contacting the support team is also needed.
Total Cost
Using just the standard hosting plan will cost around $ 13/month. Total cost for 6 months of usage will make $ 78 respectively (we use approximate prices, however very close to real-life offers.)

Conclusion
We do not recommend using classic web-hosting capabilities for the given Application. This deployment scenario will inevitably depend on agility of the provider’s support team. Resource sharing makes it hard to predict future performance of the Application. Installing Active Directory, Analytical Services, and Push Notification Services is potentially complicated, if possible at all.

Dedicated servers

This scenario is less affordable, than the aforementioned one but has numerous benefits over it. The Application requires a Server-to-Client Notification System and this solution allows installing any related software on a dedicated server (ZeroMQ, RabbitMQ, etc.) SQL Server instance is also co-located with the main Application, providing zero latency between database requests. Reporting and Analytical services are available out of the box. Database volume is limited by storage space only. Since the Application runs on a dedicated server, there is no expected lack of performance due to resource sharing. Finally, Active Directory transactions and Server-to-Client notifications are free and included in the common server-to-client traffic with 1 TB covered by the monthly plan.

Nevertheless, the following problems can arise:
  • Windows updates are not automated. All software updates and/or bug fixes must be applied manually.
  • Backups cost additional $ 50/month.
  • Optional database features require another $ 260/month.
  • SQL Server hosting instance is co-located with the Application. This may complex running heavy database requests and influence the Application performance. Separating the Application from the database will probably require signing an additional contract with the provider.
  • There is no easy way to scale up the Application performance. Even if technically possible, this would require another agreement and, therefore, additional costs.



Total Cost
General cost of this solution for 6 months, including a standard hosting plan, DB, and backups will make approximately $ 2900 for six months of use.

Conclusion
This is a plausible Application hosting solution. All required software can be easily installed on a dedicated server. SQL Server features are available out-of-the-box. It is very difficult, however, to automate application maintenance, as well as the system performance in general. Using SQL Server on separate machine may require additional expenses. 
Configuration and infrastructure maintenance require additional people resources, comparable to on-premise solution.

Windows Azure Virtual Machines

Windows Azure Virtual Machines is a good way to deploy the Application due to its built-in scalability features. Scaling can be automated or performed manually in a matter of seconds. Server-to-client notifications can be enabled without any 3rd party components using Service Bus. SQL Server can be hosted on a dedicated machine to improve general Application performance or share the same machine with the Application to reduce total costs. Also available are two data storage solutions: REST storage account and Virtual Machine storage space. Backup capabilities are built-in. We can use the Authentication service provided by Windows Server Active Directory. The huge benefit is we can migrate the whole system to another cloud solution at any time. 
However, several concerns should be taken into account:
  •  SQL Server Standard license is NOT included in the offer. It requires a one-time purchase after 6 months of trial usage and costs $ 898.
  • Operation System and SQL Server configuration and updating are not automated.
  • Most of the features are billed separately: bandwidth, storage space, AD FS etc.
Total Costs
The ‘Virtual Machine + SQL Server’ offer, including 600 GB of storage, 1 TB of traffic, integration with Active Directory, backups, and a 6-months license for SQL Server will make $ 2862.58 
The same solution, albeit using SQL Azure will cost $ 3233.88

Conclusion

Easy application scalability and on-demand 3rd party services make this a good way of deploying the Application. The main issue of this offer is the high cost of ownership with one-off SQL Server license accounting for most of it. 
Configuration and infrastructure maintenance require additional people resources, however lower than on-premises version.

Windows Azure Cloud Services


This offer is nearly identical to the previous one. The main difference between them lies in their maintenance scenarios. There is no need to install any Windows or SQL Server updates here. Active Directory Federation Services can be used for authentication but it is a good idea to configure Active Directory on a separate machine, hosting SQL Server. This way we can have all the capabilities of SQL Server and Active Directory combined. Configuration is fully automated enabling developers to deploy the application directly from Visual Studio, effectively eliminating the need to prepare any VM images. 
At the same time, this scenario brings up the following concerns:

  • Same one-time purchase of SQL Server license for $ 898 if Windows Azure capabilities are not enough
  • Most of features are billed separately: bandwidth, storage space, AD FS etc.
Total Costs
The ‘Cloud Service + SQL Server’ offer, including 600 GB of storage, 1 TB of traffic, integration with Active Directory, backups, and a 6-months license for SQL Server will make $ 3579.48. Configuration and infrastructure maintenance needs are the lowest in this option.

Conclusion
We recommend using this solution for the Application deployment even in spite of its high price, as this offer provides an easy way to scale the Application performance with 3rd party services available on demand. A separate virtual machine should host SQL Server.

Summary

Windows Azure Cloud Service + SQL Server has proven to be the best solution for the Application deployment. Push notifications can be implemented using wither 3rd party offers e.g. RabbitMQ, ZeroMQ etc., or Microsoft Service Bus. SQL Server license increases the initial payment only, because it is a one-time purchase, while database volume is limited by the size of the storage account only. A dedicated SQL Server provides full benefits of Reporting Services and Analytical Services. However, configuration and infrastructure maintenance can increase the payroll.

No comments:

Post a Comment