Choosing the right infrastructure technology for your application
Your infrastructure is the backbone of your application; knowing what works best for the application you’re running is the first step towards an efficient application and costs which fit your budget. With an ever-growing number of new infrastructure options, it can be hard to choose the best option for your application, and it often requires a mix of several different solutions.
Choosing the right components depends on your performance and availability demands, in-house tech experience, and often budget. While “the cloud” receives the most attention within the IT world, today, there is a broad spectrum of options available. Each of these present different capabilities which could be a good fit for your needs.
To contextualize this further, here are the various infrastructure options with a few of the pros and cons of each:
At the most labor-intensive end of the spectrum, colocation provides secured space in a data center with power, cooling, and options for network connectivity. Servers, networking equipment, and cabling will need to be purchased, deployed, and managed by your team.
- Offers competitive bandwidth pricing
- Economical over the long haul due to consistent, predictable compute power
- Requires up-front commitment for the colocation space and hardware costs
- Significant operational experience is needed to deploy, configure, and manage
Bare-Metal Dedicated Servers
Typically obtained through traditional hosting companies, bare-metal servers offer complete physical machines dedicated to your applications that are delivered powered on and connected to the network. You will need to manage the servers and any OS layers you decide to run, including virtualization, but you are not on the hook for replacing failed hardware components.
- Bandwidth pricing is often competitive with colocation and compute costs often quite a bit lower than the public cloud providers
- Newer vendors like Packet and Bigstep support fully-automated deployment in minutes and hourly billing models
- Need to deploy a virtualization layer to subdivide resources if required by the application
- Minimum deployment size can be higher than you need at the start
Public Cloud Virtual Machines
Virtual servers, sized and scaled to your needs, will be provided, while you will need to manage the operating system and applications. The major cloud providers also typically have options for backups, networking, and security available if you need them.
- Easy to get started, both from a technical skill and cost standpoint
- Can scale up or down in minutes and is priced based on usage
- Compute costs can be higher for applications which have consistent resource requirements
- Bandwidth costs are significantly more expensive than bare metal or colocation
Container Platforms (i.e., Kubernetes)
Containers offer a very lightweight mechanism for packaging and deploying applications, with more consistency than virtual machines. With the rise of Kubernetes and other container platforms, you can now get off-the-shelf environments for running containerized applications, including automatic deployments, upgrades, and scaling. Your team will need to build and manage containers and deployments using the tools provided, which requires some DevOps knowledge.
- Efficient utilization of compute resources, especially with dynamic resource demands
- Deploys in a variety of environments, from private bare metal to public clouds
- Porting an existing application to containers often requires re-architecting, and effective deployment and management require recent DevOps skills and tools
- Short container lifespan can make debugging and troubleshooting difficult
Serverless/Function as a Service (FaaS)
At the opposite end of the spectrum from colocation, serverless solutions such as Amazon’s Lambda allow you to deploy just the core business logic of an application for highly specific and/or short term needs. With severless, you will not need to worry about any of the supporting infrastructure that typically requires system and network administration expertise.
- An economical choice for low-volume or extremely bursty applications
- Simple to get started, even for users with little operational experience
- Makes handling long-running operations more complicated
- Pricing is often difficult to predict
How to choose the best infrastructure technology for your application
Making the final decision for the application that you’re building and operating requires weighing the pros and cons of each option to see how they fit your needs. There are also some basic guiding questions to ask yourself, such as: What is the expected volume and pattern of work to be done? What are your bandwidth needs? Are you starting from scratch, or do you have an existing application?
It is essential to keep in mind that your choice doesn’t need to be a single selection—it often makes sense to mix and match different options for different pieces of your infrastructure. For example, if you are launching a dynamic content website that’s expecting a lot of traffic, you might opt for a combination of colocation or bare metal servers to leverage their significantly cheaper bandwidth, while also using serverless functionality for supporting backend activities that are burstier such as transcoding uploaded videos.
To break all of this down into an easier to follow guide
Know your Budget & Timing
Figure out your budget ahead of time, and use it as a guidepost for making final decisions. It might be wise to have separate budgets for the actual infrastructure, any hardware if it’s applicable, and additional services you might need.
Timing also plays a significant role; you wouldn’t want to spend the money to buy powerful servers for an application that you plan to run for three months or when you need something live as soon as possible. However, if you are planning to maintain the application for years, it could be more cost-effective to buy hardware upfront.
Unfortunately, cost modeling can be somewhat tricky, especially with newer cloud-based offerings that often have per-request, per-transaction, or per-event pricing components, which can be hard to predict. As much as possible, model out your expected usage and push back on vendors for clarity when their pricing is too opaque.
Questions to ask
What is your budget? How quickly do you need to have everything set up? Are you planning for a short-term project which you plan to start and complete in a few months? Or, are you planning a long-term endeavor that you want to run for years?
Determine the needs of your application
Bursty applications that have erratic request volumes have very different needs than applications that have consistent volumes, and different kinds of infrastructure are more cost-effective for each. With that in mind, request volume, pattern, and bandwidth requirements are all items to consider when choosing infrastructure.
To give an example, for an application with a low request volume, you might want to consider a serverless deployment. Serverless/FaaS easily scales if there is ever a sudden increase in volume and doesn’t require you to pay for infrastructure you aren’t using, making it more economical.
However, you still need to consider those occasional spikes in request volume, because a serverless deployment can quickly become costly if you have a period of increased request volume. If the request volume rarely spikes, it should never be an issue, but if you have occasional periods of high request volumes, you might want to consider another option like containers.
Questions to ask
What is the expected request volume and pattern? Constant? Daily/Weekly? Erratic? Some constant, and some random patterns? What are your bandwidth needs? Are you starting from scratch, or do you have an existing application? If existing, what infrastructure assumptions does it need?
What level of operations expertise does your team have?
As you work your way up the spectrum of offerings, you’re largely shifting management responsibilities from your team to a vendor. For some applications, more hands-on management can have a significant financial benefit, but that is only achievable if your team has the technical skills to manage things themselves. Review the various components you’ll need and compare with the skills your team has to determine what level of management you can take on if it makes financial sense.
Questions to ask
What operating systems and applications will your deployment require? What automation tools and frameworks would be best suited to manage the deployment? Have your team members worked with these before? And do they have the capacity to manage them going forward?
Will you need additional services?
Beyond basic compute/network/storage, vendors now offer a wide range of managed services such as managed databases, queuing, monitoring and alerting, stream processing, machine learning, and security services. These could be powerful additions to your infrastructure, and further lower the amount of management you’ll need to perform.
Again, it’s necessary to consider the provider’s pricing model for these services and compare it with a roll-your-own approach; however, the time and expertise benefits might outweigh those costs. Also note that some providers charge using a package model, in which case you might have to spend more to get the additional services you need, or you could even get stuck paying for extras you don’t use.
Questions to ask
Are there other infrastructure components your application depends on that can be offloaded to a vendor? If so, are there benefits to using the same vendor as your core provider(s), or can you leverage third-parties? Are these systems you need to include from your initial deployment? Or are there any you can add later to lower your upfront costs? How will the providers charge for additional services?
Explore all of your options
Flexibility is key to finding the right and most cost-effective infrastructure for your application. Do your best to consider both the bleeding edge, as well as options that are not as flashy, but work well for your application and budget.
Even though we’re well past the age of “no one gets fired for choosing IBM,” the big three cloud providers get the bulk of attention these days. Despite that, there are lots of other options available that might better fit for your needs, offer better pricing terms or be able to provide additional support for your team. Be sure to evaluate their offerings carefully and see if they are a better solution to your needs.
Compare your options and break down the pricing
It might be hard if the providers you’re looking at don’t make their pricing available but put together a reference sheet with the total cost for each solution type. It would also be a good idea to gather that information from different providers as well.
Once you have gathered all of your information, you can make a more informed decision. Your budget might be a significant driver of the solution you chose, but keep in mind that running parts of your application on ineffective infrastructure can create troubles later in building or operation.
This guide is just the start of finding the right infrastructure for your application, but we think it’s a solid foundation. If you’re interested in reading more about infrastructure technology, monitoring, and other related articles, check out the Panopta Blog for more. If you have questions about choosing infrastructure for your application, feel free to tweet @Panopta for an answer.
Panopta offers a premium network and server monitoring platform that offers effective management for complex, multi-tiered web presences. Covering on-premise environments, cloud infrastructure, and, perhaps most importantly, providing a comprehensive, single-pane-of-glass-view makes Panopta ideal for the tremendous number of hybrid environments in IT today. While negotiating the ongoing evolution towards cloud and cloud-native infrastructure, Panopta also includes timely alerts, excellent tools, and automated remediation, allowing teams to efficiently collaborate and solve problems. – Learn more.
About the Author
Jason Abate is founder and CEO of Panopta. Prior to founding Panopta, he designed core software infrastructure and technical operations for Hostway that drove the company’s growth from an early-stage startup to a global web hosting provider.