A Case Study by EPAM Cloud Competency Center
Contact EPAM Cloud Competency Center at OrgCompetencyCloudConsulting@epam.com
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 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
- Classic web-hosting;
- Dedicated servers;
- Windows Azure Virtual Machines;
- 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.
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.
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.
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