Infrastructure as code (IaC) is a form of configuration management that codifies an organization’s infrastructure resources into text files. Infrastructure automation is required to accelerate DevOps processes.
- I would like to have a cloud scalable infrastructure
- I would like to select the cloud infrastructure configuration by performance-cost ratio
- Infrastructure configuration models development and testing
- Comparative analysis of the cost and performance of the infrastructure architecture options
- Testing new ideas, technologies, services using performance-cost metrics
Technical Audit approach
The audit is split into two parallel streams: Architectural analysis and Performance testing.
At the initial stage, Architectural analysis is used to design 2-3 infrastructure configuration options, which will subsequently be tested under load and for which cost estimation will be calculated. Differences in configuration may suggest:
- Use of a separate infrastructure for the various functions of the application.
- Use of several servers with balanced load.
- Use of components in different cloud availability zones.
- Use of different instances types.
After the configuration options are compiled, the application is deployed to each option in turn and Performance testing is carried out. During testing, not only performance metrics are taken, but also cost estimation in near-real-time using public cloud utilities (for example, AWS Price List API for AWS). One of the tasks of performance testing, in this case, is to scale the system at peak loads to estimate the cost.
Finally, the Technical Audit team provides a comparative analysis of the cost and performance of the infrastructure options.
Who will perform the Technical Audit
Cloud architect performs infrastructure setup review and analysis, scalability analysis and performance model development, attending the Performance test plan preparation, performance test results analysis.
Performance testing engineer performs Test plan preparation, scenarios preparation, test environment configuration, test data generation, test results analysis, test scenarios source code packaging, testing report
Cost optimization analysis Goals
- I want elastic infrastructure that scales out automatically based on resource consumption. I need this system to double its capacity so it can handle [1,000] visitors within one hour. The more resources users consume, the more infrastructure I’ll have to provision. On the other hand, if resources are not being consumed, I don’t want to pay for unused infrastructure.
- I want resource utilization to be at no more than [50%] of its full capacity, so my components can handle spikes in traffic or situations where capacity is temporarily reduced (i.e. an unhealthy server being replaced or a server being temporarily unavailable during deployments).
- Servers are distributed in at least 2 AWS Availability Zones. Therefore, if one Availability Zone is experiencing problems, I want the application to not suffer from it.
- I want to choose an infrastructure configuration from multiple options, each option must satisfy the conditions listed above with the best performance-cost ratio.
Benefits of cloud performance and cost estimation analysis
The moment you first plan the infrastructure for a future application, you have a limited number of options to choose from. But over time, new technologies and approaches become available that can improve the performance of your system while reducing its cost.
By designing your project architecture to experiment with load for multiple infrastructure configurations, you can optimize the cost of your cloud infrastructure at any time.
When trying new ideas or services, run performance tests to measure the impact that they have on the efficiency, performance of the workload, and on the cost of your infrastructure.