Back to all articles

The choice of infrastructure

Artem Rudenko

Artem Rudenko

Software engineer, founder of ottofeller.com

In the past few years, the demand for various internet-based services has increased tremendously. As a result, IT departments have to invest a lot of efforts in keeping their systems up and running. The applications themselves are also evolving, becoming more complex and more demanding to non-business domain layers. In such circumstances, choosing the right infrastructure solution becomes crucial.

Fortunately, today's market has plenty of options, from fully managed solutions to private cloud services. Each has its pros and cons, which we are going to explore to let you figure out what suits your project best.

Going all-managed

One of the most popular offerings is a so-called fully-managed solution. In these, the vendor hosts client's applications and takes care of managing underlying cloud resources and infrastructure. It also performs configuration, optimization, maintenance, and security management. In other words, the vendor is in charge of the cloud, allowing customers to focus on developing and using their software. Let's look at it closer.

Optimized for resource usage

Fully-managed solutions allow you to choose the best set of services for your workloads and select the most cost-effective pricing model. You can quickly and automatically scale up and down your infrastructure to meet your needs. Many vendors also offer suggestions to improve your existing configurations.

Transparent pricing and predictable cost

Fully-managed cloud solution providers usually use some sort of tiered subscription-based model. This gives you more flexibility for your budget and ensures that you only pay a fixed and expected amount each month. More importantly, some MCSPs allow you to use a pay-for-service credit system. With this kind of flexible cost management, you only pay for what you use.

No DevOps budgets

Just like explained above the “fully-managed solution” implies that you no longer need a team of infrastructure engineers.The service provider will spin up servers on its own, scale them up, and update software when necessary. It will also manage your DB cluster, which to be honest a ton of work for a high level specialist.

Disaster recovery with no efforts

Disaster Recovery as a Service is another significant selling point of fully-managed solutions. It is a great way to protect against large-scale incidents since the provider essentially keeps a working duplicate of the existing environment. DRaaS is ideal for companies with complex infrastructures or situations where downtime cannot be tolerated.

Still can be costly

While costs can be predictable, switching to fully-managed systems sometimes may not be cost-effective compared to less managed cloud solutions. Even though you don't have a DevOps team budget anymore, bills for consumed resources can run high, depending on your systems’ design and complexity. This research demonstrates how much the difference in the cost can be when comparing AWS cloud hosting to Heroku fully-managed solution. At the end of the day you get a lower bill from AWS.

AWS vs Heroku costs
AWS vs Heroku costs

Managed cloud

Managed cloud solutions are a smart choice for medium-sized businesses and for projects large enough to justify tweaking the infrastructure to meet particular needs and provide serious savings. They greatly vary in the number of solutions offered and their complexity.

Below are some advantages of managed cloud solutions versus fully-managed ones:

  • The ability to fine-tune the infrastructure to fit your needs.
  • Transparency and a higher level of control.
  • Affordability (lower costs).
  • Performance at peaks.

As for the disadvantages, the main is that the use of managed cloud tools requires a higher level of knowledge or a dedicated specialist. Let's look at the most popular managed cloud providers.

AWS

AWS is a behemoth in the world of cloud computing — in terms of revenue, it is well ahead of all competitors, with a market share of 41%. Amazon cloud solutions are well-suited for the majority of projects. The only exceptions are probably small full-stack projects (AWS can be too complex for them) and ultra-scale enterprise clouds (AWS can be too expensive and not enough controllable).

A miriad of AWS services and entities
A miriad of AWS services and entities

AWS tools, entities, and primitives allow you to build almost any type of infrastructure — computational clusters, autoscaling solutions, certificate managers, etc. Being a market champion, it provides customers with the latest innovations. With modern AWS-native tooling it's even possible to build all-managed solutions on top of the cloud, not dealing with resource delegation, autoscaling and other properties of infrastructure.

DigitalOcean

DigitalOcean is a great choice for small full-stack projects. The company focuses on attractive pricing, performance, and simplicity. Its primary audience are developers and small businesses, while its clean user interface and low-complexity approach allow small, understaffed development teams to manage their infrastructure easily. DigitalOcean's machines boast SSD disk drives, 1Gbps networking, and short droplet startup times. The setup process is user-friendly and uncomplicated. Among other things, DigitalOcean offers Managed Kubernetes and fully-managed databases . VPC networks are also available to secure your infrastructure; however, they are somewhat less capable than their AWS counterparts.

DigitalOcean has a very nice UI
DigitalOcean has a very nice UI

While DigitalOcean cannot compete with Amazon in terms of breadth of features, it beats the latter in cost and ease of use. For example, a 1GB RAM droplet with 25 GB SSD disk capacity will cost you $5 per month versus $7.48 for a comparable AWS EC2 t3.micro instance that we used above when comparing AWS EB to Heroku. This general trend extends to other AWS and DO offerings; the latter tend to cost less despite comparable cloud computing power.

Takeaways

Choosing between DigitalOcean and AWS should be easy if you recognize their target users. DigitalOcean, for example, is perfectly capable of handling the infrastructure of a large enterprise, but that enterprise won't be their ideal customer. The same is true for AWS: small startups looking for a straightforward solution are likely to be uncomfortable with Amazon's cumbersome ecosystem, geared to meet huge enterprises’ cloud needs. However it's worth noting a huge investment that AWS team did into the tooling aimed to simplify the work with the cloud. Modern AWS orchestration instruments have a potential of making large cloud provider attractive even to small companies.

Autopilot Off

In the case of giant enterprises (with thousands of nodes, hundreds of services), managed solutions are not sufficient. In such cases a company itself becomes some sort of a cloud provider, with the level of system complexity which makes it hard to outsource to someone for management. Usually, such enterprises have budgets to run their own experienced teams to manage the infrastructure. But then there is the question of how to do it efficiently.

That's where Kubernetes comes into play. K8s allows you to bring all these services and nodes into one coherent system, under the full cover of your own team. It has a ton of features, allows you to automate workflows, develop operators with complex logic, and offers endless possibilities for tweaks and optimizations.

Wrapping up

Choose a solution you feel comfortable using. Explore the options, as Heroku, AWS, DigitalOcean and Kubernetes are not the only players in the field. Don't be guided by rave reviews, popularity or abundance of features (in most cases you won't need them). When it comes to infrastructure the easiest way is the best one, because infrastructure is not a part of domain logic of a product, and it doesn't bring explicit value.


Other articles

Gradual rollouts with AWS Lambda

Learn how to mitigate deployment risks using AWS Lambda's gradual rollout feature, enabling safer, incremental updates to your product's backend.

Using Tailwind to fill in the gaps in your team's CSS knowledge

Many engineering teams are favoring Tailwind CSS over plain CSS for its ease of styling web frontends with utility classes, addressing scalability issues encountered with traditional CSS as project size grows.