In this article, I talk about the benefits you can get from optimizing your IT infrastructure, as well as how to avoid common difficulties in the process. We have repeatedly helped clients with infrastructure optimization, and all the examples given in the article are from our own experience.
For convenience, I have divided the text into three parts:
- why infrastructure optimization is needed;
- what are the main stages of optimization;
- what difficulties may arise in the process and how to cope with them.
What are the benefits of infrastructure optimization
Infrastructure optimization starts with system analysis. Depending on where the system is located: on your server (on-premise) or in the cloud, the benefits of infrastructure optimization differ.
There is also a combined approach (using both the server and the cloud), which I will discuss later.
One of the benefits of migrating infrastructure to the clouds is the concept of shared responsibility—some aspects are the responsibility of the cloud provider, while others are the responsibility of the customer. For example, clouds take over the operation, control and management of components. This covers everything from the level of virtualization and host operating system to the level of physical security of the objects where the service is running.
Using the cloud, the client does not have to worry about the support of physical servers, partial security support for this system, and much more. But, of course, it depends on the servers we use. As a result, fewer people are required to maintain the infrastructure, reduces costs for the client, and the free resource can be used for optimization experiments and business expansion.
For some companies, moving to the cloud is a great way to optimize costs. For example, one of our clients, an international streaming service, required a solution that was cheaper to maintain and could withstand a high load of 36,000,000 unique visitors and more than 10000000000 requests per week. We opted for optimization by creating a Kubernetes cluster in the AWS cloud. Our developers have created 30 microservices, the maintenance of which costs the client about 2000 USD per month.
For comparison, an unoptimized architecture consisting of EC2 OnDemand instances cost our client more than 38,000 USD per month.
Also, the team had such a case: client services worked in EC2 instances through the ECS service. However, after we analyzed service usage patterns, peak periods, and environment management costs, we suggested to the client that they replace their EC2 instances with Farate, a serverless solution that does not require management of the underlying server infrastructure. As a result, the solution helped the client save a lot.
Also, for example, implementing new applications in the cloud is often much faster and cheaper than on-premise. Developers create a prototype, test it in the cloud, and if the service does not live up to expectations, it can simply be turned off, thereby freeing up cloud resources and money for maintenance. In the case of on-premise, you would first have to invest in physical servers, which then might not be used.
Optimizing on-premise infrastructure is often about reducing the cost of reducing the number of machines or making machines cheaper. You need to take into account the fact that by reducing costs, you are inferior to something else. For example, due to the decrease in the number of machines in the data center, your site or application may not be able to withstand the peak load.
That is, before optimizing the infrastructure by reducing the number of machines in the data center, reducing the processor power or memory size, you need to clearly understand what this can affect. In other words, you need to conduct a detailed audit of current business processes.
Actually, the audit is the first stage of infrastructure optimization .
What are the key steps in infrastructure optimization?
IT infrastructure audit
This step helps you understand how appropriate it is to optimize the infrastructure in your case.
During this phase, DevOps experts analyze how the cloud is being used. Or administrators analyze how the server works. To do this, tools such as Amazon’s AWS Audit Manager are commonly used. This tool collects metrics that can then be analyzed. For example, if the analysis shows that the system never uses more than 6 GB of memory out of 16 available, then this is a reason to optimize by reducing the amount of memory.
Planning a New or Optimized Infrastructure
Since there are many approaches to infrastructure optimization, planning becomes a very important aspect. Among the main approaches to optimization are reducing the number of machines, reducing memory, combining services into clusters, and others.
In the case of a Kubernetes cluster / Doker container, for example, you can create a system of five machines and run 10 applications on them. This approach helps to reduce the cost of hosting and not have visual problems when the machine fails. So, if one of the machines fails, the system will automatically transfer services from it to the other machines. And vice versa, if the machine returns to the system, then the services also return to it.
You need to understand which approach will bring more benefits specifically to your project, and think carefully about how it should be implemented. If during the execution of the plan it becomes clear that something needs to be modernized or rewritten, then the development team should join the process.
There are many cases where it is not profitable to move from on-premise to the cloud, as it often does not reduce the cost of infrastructure. In addition, moving a system to the cloud without changes often means it will become more expensive. Therefore, I would advise going hybrid and combining on-premise and cloud infrastructure.
For example, in the system there is a business process that starts at the beginning of the month and runs for one day. On other days it is not used. In this case, it is not practical to store it on-premise and pay for it for the whole month. It’s better to store it in the cloud and only pay for a few days a month when it’s used.
After detailed analysis, planning, determination of the functional requirements of the system, study of the load on the system, you can proceed to the implementation stage.
Implementation of the optimization plan
Simply put, implementation is the transfer of applications from one machine to another. As I already wrote, optimizing on-premise infrastructure is mainly about reducing the number of machines.
According to the classification, there are 6 main migration options:
- Rehosting / Re-host (lift and shift).
- Replatforming / Re-platform (lift, tinker, and shift).
- Modernize / Modernize.
- Rewriting / Rewrite.
- Throw away and buy ready-made / Drop and shop.
- Leave as is / Retain.
To determine the best method for your specific project, you first need to conduct a thorough analysis of your application. It is necessary to evaluate whether it is possible to simply transfer the applications, or whether the program needs improvement before / after the migration. Sometimes it is not possible to transfer data without improving the program code.
For example, if the system does not support multi-threading, sessionality, or using the application in many instances, then we will hurt by running several instances of the system at the same time.
Rehosting is the simplest of the methods because it does not require code changes and therefore takes less time. However, in the long run, this method does not provide for rapid scaling and additional performance. Typically, this method does not result in infrastructure optimization, and possibly makes it more expensive.
The replatforming covers some further adjustments. For example, moving to fully managed services. This approach, if implemented correctly, can significantly reduce infrastructure costs.
One of the largest telecom companies in Europe, Lebara, migrated its data to the cloud with the help of replatforming. As a result, they were able to significantly improve scaling. In addition, the transition to the cloud has helped reduce infrastructure costs by 25-30%.
When upgrading, some program components are improved before or after migration. Therefore, this approach requires more time for code changes.
Rewriting is a complex process of transforming applications to adapt to the cloud infrastructure. Depending on the type of application, infrastructure costs can be significantly reduced.
Drop and shop – everything is simple here, if there are applications on the market that satisfy you, then it is better to buy them than create your own. This will usually also reduce the cost of the infrastructure.
Retain is a passive method because no migration is needed. You keep programs as they are, where they are.
What difficulties may arise in the optimization process
I also conditionally divide the complexity of optimization into the complexity of on-premise and cloud.
If we talk about optimization without transferring applications to the cloud, that is, on-premise, then a detailed analysis of the system is a difficult task. To do this, you need to clearly understand how its users act, when peak loads occur, how much power is needed to withstand these loads, and what is the product development strategy for the future.
In addition, complexity is the uniqueness of each infrastructure. This applies to both on-premise and cloud infrastructure.
For example, one client who previously worked with another software developer had a business process in the system that was created 10 years ago. This process sent emails to users of the system. Since the developers of the process had already left the project, the team did not know what the process optimization could affect. As a result of optimization, messages to users stopped coming. Accordingly, through optimization, part of the system stopped working. To prevent this from happening, it is important to pay attention to the preservation of knowledge on projects.
Saving knowledge on a project in IT outsourcing
So, in order to successfully optimize the infrastructure, you need to:
- Perform a detailed audit of the system.
- Find the optimization method that best suits the needs of your project.
- Implement it.
IT company for business provides services for audit, planning, optimization and implementation of IT infrastructure both in the cloud and on the ground, please contact [email protected]