Total Cost of Ownership: Choosing Between On-Premise vs. Hybrid / Pure Cloud
Inconsidering a deployment strategy a new development effort, two potential solutions should be evaluated:
- Deployment of software on client-controlled hardware residing on the corporate intranet
- A Cloud-based approach using Amazon Web Services
Both approaches have their pros and cons and I’ll outline those in this post, but let’s start with a real client example first:
Example of our Client’s System
Our clients came to us asking for our help with a new application. Users of the software run an application installed on their workstation. The application needs to interact with several remote domain services. These domain services each implement a specific domain concern – whether that be a means of accessing data, the details of a specification, design/analysis, etc. These services are deployed separately from the databases they serve for security, scalability, and maintainability reasons. We put a QA/staging server in place so that new versions of the deployed software can be safely installed in a near real-world environment and thoroughly tested without affecting the production system.
For each area deployed, the system must be reliable. Reliability can be defined in two forms:
- Redundancy: or the ability to continue using the system in the event that there is a point of failure somewhere in the service chain
- Backups: specifically, the means to be able to recover in the event of a catastrophic failure, or any loss of data integrity
In addition to the new deployments, we need to access the following existing software systems:
- Current Databases (named legacy in the diagram): these must be maintained while the new system is deployed in phases
- Corporate active directory: for user access and role management
Security systems and backup systems will need to be updated to support the new software when the new system is deployed within the corporate intranet or replaced if deployed in the cloud.
In this example, we were able to consult with our client on the best possible solution to meet their needs. When you’re faced with choosing between an on-premise or cloud deployment strategy here are some things you should consider.
Option 1: On-Premise Solution
There are certain costs associated with the deployment of services and databases on hardware installed locally.
- Security: the entire ecosystem would be contained locally within the clients intranet, therefore, additional security measures beyond what is currently in place are not needed.
- Direct access: to client active directory service and legacy databases for each site.
- Backups: existing data backup and backup storage mechanisms can be leveraged.
- Network speed: local instances/caching can greatly reduce performance problems, especially in remote locations.
- Client has existing and capable staff in place to manage the systems
In general, this option has a lower overall cost. The caveat to this is that the client will need to take ownership of full support for all of the infrastructure and this “hidden” cost may not ultimately make this option significantly less expensive than a cloud-based approach.
- Setup: need to set up and manage all of the hardware and software – including any clustering, network load balancing, etc.
- Scalability: as the system scales, this is not necessarily a linear increase. Additional hardware must be purchased, set up, and deployed.
- Performance: maintaining high availability is more challenging than a cloud-based approach as deployments at multiple sites are needed.
- Downtime: high availability targets are more difficult to achieve. If one site loses power or a catastrophic event occurs, everything at that site could potentially be unavailable until the site is restored.
Hardware Deployment Details
You’ll need hardware for three different server types: the domain services servers, the database cluster, and a QA/staging server. Each of these server types has different requirements.
Domain Services Servers
The domain services are fairly lightweight, which means they will not use significant memory, processing, storage capacity, or I/O on the host server. The design service will be processing heavy, but will not have much storage or I/O impact.
Given this, we estimate the need for two servers running Windows Standard Edition (16-core). This hardware configuration can be purchased for around $11,000 for each server.
Going with Docker containers in lieu of a more traditional VM removes the need for separate instances of an operating system to be deployed/executed while still maintaining a portable, fully operational system. In other words, fewer resources would be required for each application environment and the processors could spend more time handling application requests instead of operating system requests. This would add an additional $1,500 per year per node.
The database needs are such that Microsoft SQL Server Standard Edition on a server will be more than sufficient for the foreseeable future helping to alleviate cost. Any database that is deployed should be deployed in a cluster to keep the system available in the event that one of the servers fails.
The greatest expense for the database server is the license for Microsoft SQL Server.
A recommended starting point for individual nodes:
- A server with 1 Intel Xeon E5-2623 processor (4-core), 96G of RAM, and 8 400G SSD hard drives.
- One Windows Standard Edition license
- SQL Server Standard license that supports a 4-core processor for each server.
This configuration can be purchased through Dell or HP for around $8,500 for each server and $7,500 for each database instance.
If servers need to be clustered together, an external disk array is needed in lieu of internal storage. You’ll need:
- A server with 1 Intel Xeon E5-2623 processor, 96G of RAM, and 2 400G SSD hard drives. Estimated cost: $4,500
- A direct-attached storage system capable of being connected to multiple servers with 8 480G SDD hard drives and all the hardware necessary for connectivity. ***Estimated cost: ***$13,500
QA / Staging Server
The QA / staging server needs to host containers for the data services and design engine. In order to mimic the production environment, a VM would also run on this server with the database deployment. A recommended starting point for this is:
- A server with 1 Intel Xeon E5-2630 processor (10-core), 64G of RAM, and 2 1TB SATA hard drives.
- One Windows Standard Edition license.
This hardware configuration can be purchased through Dell or HP for around $3,100.
An ideal deployment would consist of the following:
- Three domain services servers – two located at the main data center and one located at a second facility. ***Estimated cost: ***$33,000 plus $1,500/year for Docker.
- Three database servers – two located at the main data center residing in a cluster and one located at a second facility getting synchronization with the other cluster through log shipping. ***Estimated cost: ***$53,500
- One QA / Staging Server located at the main data center. ***Estimated cost: ***$3,100
- An additional domain services server with a deployed database VM for a site with poor/unstable network connectivity. ***Estimated cost: ***$18,500
Given a typical 5 to 7 year hardware cycle time – the Estimated cost: over 5 years would be $115,600.
Option 2 – Cloud-Based Solution
- Unlike an on-prem solution, a cloud solution can easily be scaled to meet capacity needs. Hardware is expensive and has larger variable costs.
- No hardware management (reacting to hardware failures, typical hardware maintenance, etc.)
- High availability systems can easily be set up, as cloud services rely on infrastructure that already has redundancies in place.
- The flexibility and offloading of hardware management to AWS comes at an increased cost over purchasing hardware
- Bandwidth costs are incurred when entering and leaving the site (AWS Direct). It can be difficult to forecast the exact data usage and overages can be very costly.
- Additional security mechanisms should be added (firewalls, monitoring, intrusion detection, patch management, connection to Active Directory, etc.
- Additional backup strategies may be needed
- Facilities in remote regions could face very substantial barriers given their network challenges. This deployment would be isolated from other deployment sites and adding the ability to synchronize this site would increase the overall system complexity.
- Existing systems would need to bi-directionally interact with cloud deployment, which increases complexity and adds security concerns.
There are two cloud design strategies we considered:
1) A Hybrid cloud solution where some bandwidth constrained services remain on premises at the clients’ data center and the rest of the services reside in AWS.
2) A pure cloud design where all services reside in AWS.
A hybrid cloud solution has the higher bandwidth portion of the system (the database and data access portions) residing on site whereas the design analysis component and QA/staging server are deployed in AWS.
The QA/staging environments could also leverage cloud services thus removing the need to purchase hardware. hen a QA/staging deployment is needed, one can quickly be set up and maintained only for the duration of the QA or staging event.
This option could also provide high availability and disaster recovery solutions – the on-premises solution could be replicated in the cloud instead of having two deployments and only used in the event that the primary deployment is not available.
The pure cloud solution seeks to leverage the “already built” platform-level tools and services of AWS as much as possible (already-built database servers, application servers, etc.). These “Platform-as-a-Service” options often require more configuration than development. To address bandwidth concerns, a service likeAWS Direct Connect could be leveraged for a dedicated network connection between a network and an AWS Direct Connection Location.
The pure cloud approach offers many options for high availability and redundancy as AWS has a large scale global presence. This allows for failover options as well as close user proximity to the data – there are AWS data centers in Virginia, Ohio, and California.
The following sections highlight useful offerings from Amazon that could be considered:
The database instances would utilize Amazon RDS for SQL Server. There are two options supported for this:
- “License Included” – In this service model, you do not need separately purchased Microsoft SQL Server licenses. Pricing starts at $0.035 per hour and is inclusive of software, underlying hardware resources, and Amazon RDS management capabilities.
“License Mobility through Software Assurance (or Bring Your Own License – BYOL)”. In this service model, you purchase a database license from your vendor of choice and manage it yourself. There is also the option to purchase Reserved DB Instances under one or three-year reservation terms. With Reserved DB Instances, a one-time, upfront payment for each DB Instance can be made and then a significantly discounted hourly usage rate would be accrued.
For each instance similar to that specified in the hardware approach for the database server, it would cost around $10,920 per year.
Domain Services Servers
The domain services components utilize Amazon EC2 Container Service (ECS). This allows the software system to have a collection of Docker containers for each of the individual services and also makes it easy to scale those services that require it.
In addition, AWS Elastic Beanstalk could be used for deploying and scaling the domain services. It can automatically handle the various deployment concerns including capacity provisioning, load balancing, auto-scaling, and application health monitoring.
The domain services also makes use of Elastic Load Balancing. This service automatically distributes incoming application traffic across domain services servers and is the equivalent of the network load balancing feature discussed in the hardware solution.
Domain services deployments equivalent to those specified in the hardware section costs roughly $26,700 per year. It is important to note that this number might be significantly smaller given that provisioning to exactly meet capacity can be done rather than the more conservative planning necessary when purchasing hardware.
Identity and Access Management Integration
An additional component that would be necessary with a cloud approach is AWS Directory Service for Microsoft Active Directory (Enterprise Edition), also known as AWS Microsoft AD. This would allow integration with the client domain for user authentication/authorization activities.
This service costs $3,514/year.
QA / Staging Server (Developer Tools)
The QA / staging deployment in the cloud would be a much lower cost given that it can be deployed and turned off as needed. A setup equivalent to that specified in the hardware section would cost roughly $1/hour.
Backups can be completed and managed through Amazon Glacier. The cost for this service is $0.004/G of data plus $0.05 per 1000 requests (uploads of data, retrieval, etc). For retrievals, there is also an associated bandwidth cost.
Deploying a cloud solution similar to that of the hardware solution would cost the following:
- Two domain services deployments – one located in Virginia and one in the Ohio data center and one located at a second facility. ***Estimated cost: ***$54,900 / year
- Two database deployments – one located at each data center that has a domain services deployment. ***Estimated cost: ***$21,840 / year
- Identity management server ***Estimated cost: ***$3,514 / year
- QA / Staging service ***Estimated cost: ***less than $1,000 / year
- Backups ***Estimated cost: ***$3,000 / year
The cloud approach may not be suitable for remote office locations, in which case the physical hardware deployment discussed in the hardware section may still be necessary ($18,500).
The 5-year cost of the cloud solution would be around $400,000.
In conclusion, our calculated 5-year total cost of ownership for each of these options is:
- On-premise solution: $115,600
- Cloud solution: $440,500
It’s important to consider more than just cost when deciding between cloud and on-premise. Both options have pros and cons that might make one over the other a better fit for your specific needs. If you are interested in learning more about Total Cost of Ownership calculations, see this Business Professional online training course offered by AWS: https://www.aws.training/learningobject/curriculum?id=10743