Every company that deals with software development sooner or later needs to make some choices about its IT infrastructure. Research shows that cloud infrastructure is becoming more and more popular on the market – as many as 72% of enterprises in the world used it 5 years ago, and in 2018, cloud systems were implemented in as many as 88% of companies in Great Britain. However, before introducing the selected solution to our organization, it’s worth knowing the advantages and disadvantages of hosting server tools on your servers or in the cloud. Thanks to this, we can be sure to choose the best solution for our company.
Advantages of CI/CD in the cloud
One of the main advantages of cloud solutions is the rapid achievement of high availability without having to create a server infrastructure from scratch. In addition, such a solution removes the need for independent server administration. We don’t have to worry about hardware and software maintenance or compatibility and updates – these services are provided by the cloud provider. Availability on demand allows constant access to the application, but also the option to quickly restore the data center after a failure.
The cloud also allows access from multiple locations, which can be both an advantage and a disadvantage. The benefit is the significantly shorter response time of pages than in the case of ones based on the on-premise solution. Cloud hosting offers a simple way to support global companies or local enterprises based on work carried out in distributed teams.
Costs under control
It’s impossible to clearly assess the issue of cloud infrastructure costs: it all depends on the individual case. When is cloud a profitable solution?
An undoubted advantage of the cloud is the low entry threshold associated with low initial costs. The company doesn’t have to worry about the financial contribution related to the development of physical infrastructure or investment in qualified employees who would take care of it. These items are bundled with the cloud service. According to an Oracle Netsuite study, ERP in the cloud may require 50% less investment than local ERP when employing 100 people over a 4-year period.
Moreover, the key advantage of the cloud is the predictability of monthly costs, which include licenses, upgrades, support, system backups, and maintenance services. The expenses are spread over time, eliminating the risk of sudden large bills. The pay-as-you-go model available in the cloud is also of great importance to cost optimization. Thanks to it, we incur expenses only for the part of the infrastructure that is actually used, without having to worry about the costs associated with resources not used for product implementation. It’s also possible to optimize the costs of cloud solutions.
Cloud means flexibility; which is appreciated not only by startups under rapid development but also by companies that note sudden expansion needs. We are only a few clicks away from the possibility of multiplying the cloud capacity we need to perform a given operation or can increase the traffic capacity in weeks, days, or peak hours. Infrastructure performance only increases as needed and then diminishes or may be turned off altogether. This allows you to use only the resources that are currently needed, and therefore also to optimize costs accurately.
When scaling, it’s worth mentioning the Auto Scaling Group available on AWS, which includes a set of EC2 instances. In test environments, you can use auto-scaling to zero, which allows you to shut down the entire cluster at a given time. Thanks to this, AWS doesn’t charge us with costs when we don’t use EC2. Then you just need to set the trigger for specific hours when the resources will automatically decrease and increase. Groups scale depending on the used CPU or RAM resources or whether a given server has passed the Health Check. The size of the Auto Scaling Group depends on the number of instances set as the requested capacity.
Infrastructure as code
Infrastructure as Code (IaC) is a concept which assumes that all application infrastructure should be treated in the same way as the application code. The infrastructure stored in the cloud becomes virtual. The application’s containerization allows for easy communication between the containers and IaC to automate the platform’s operation. IaC allows creating scripts or applications that support the process of automatic infrastructure configuration, helping you avoid making manual changes, thus saving time.
IaC can also be implemented in an on-premises environment, but it’s associated with large additional financial and time expenditure for the implementation of automation and orchestration of network, computing, and disk space infrastructure. When working with a cloud provider, we have it already as part of the service price.
Disadvantages of Cloud CI/CD
Data availability and location not for everyone
In some cases, the adopted model may also be a disadvantage of the cloud solution – namely limiting the possibility of adjusting the server to individual needs. As part of the selected IaaS, PaaS, or SaaS model, we get a service managed by a cloud provider, but we accept restrictions that are imposed on us and which result from standardizing services. The higher we go up the ladder (IaaS, PaaS, SaaS, etc.), the more responsibilities we will place on the cloud provider, and the more control we will lose over our environment.
An example of this could be email:
- in IaaS, we take an instance of a virtual machine and install the mail server ourselves. Thus, we lose control over the virtualization layer, network, and disk space but maintain full control over the email application,
- in PaaS, Exchange could be the service. At this point, we lose control of the virtual machine. We also have limited control over the environment, version, and configuration of the email software,
- in SaaS, we can use the Google Workplace service (formerly G Suite). We no longer have any control over the available functionalities or their extensions. However, in return, we expect the availability of our mail and its security (e.g., spam filtering).
In the case of on-premise solutions, we can be sure that our data, changes, software, and configuration are under our strict control. However, now that proven cloud service providers use security measures that go beyond the cost capabilities of many companies, hence in many cases, data is often safer in the cloud than on local servers.
The above-mentioned geolocation also has its weaknesses, though a lot depends on the nature of the company using the solution. When deciding to use the cloud hosting option, it’s worth finding out about the physical location of the provider’s servers. This may be of great importance in the case of, for example, lawyers, banks, or other financial enterprises that are obliged to keep sensitive data in a specific area (like the European Union) or to ensure adequate data protection if they are stored outside certain countries.
Rising costs with high resource demand
While cloud hosting is definitely a cheaper option than on-premise hosting at the beginning of product development, costs may increase over time. In the case of cloud solutions, they depend on network traffic: the higher the traffic, the higher the costs. The amount of stored data, the frequency of inquiries, and the speed of resources also affect the final bill.
In the case of server solutions, the need to place a physical server in one or more locations brings a high cost at the beginning, but it’s a one-off expense. Subsequent investments related to the maintenance of infrastructure (e.g., electricity, maintenance, operation, rental of premises) are definitely lower and more profitable in the long-term, assuming continuous product development. From the point of view of costs, maintaining the application in the cloud may not work well in the case of workloads requiring a large number of transfers – for example, data synchronization between the cloud environment and on-premise.
If we’re considering a migration from on-premises to the cloud, it’s worth considering the issue of vendor lock-in that may be caused, among others, by proprietary technology but also inefficient processes. While the cost of such a migration may be small, it might not be profitable due to funds that were already invested in the infrastructure. Remember that the final cost of migration also depends on the application’s architecture, its implementation, and the technology stack. Many factors can increase it significantly.
Who should use hybrid solutions?
If none of the solutions convince you entirely, you can consider taking advantage of creating a hybrid CI/CD structure, where data is stored on local servers and packages are built in the cloud. The use of hybrid clouds is popular in special cases like in the medical and financial industries that must take particular care of data security. The built artifact goes to the on-premise environment, where it can be successfully delivered.
The hybrid model is characterized by depreciation (fees only for current resources), scalability, and lower dependence on the supplier. It’s also worth considering the disadvantages of this solution: double maintenance fees and possible difficulties in implementing the application.
Cloud or on-premise?
Which solution is better? There’s no clear answer to this question – it all depends on the individual needs of your business. If you don’t know which way your product will develop and have high expectations, test the cloud. After the implementation and stabilization of all processes, you will get the option of a lossless transfer to the local infrastructure or testing the hybrid structure. It’s also worth using the help of an implementation company with extensive experience in cloud, on-premises, and migration solutions.
Are you looking for a solution for your business? Check what we can offer you in terms of cloud hosting, implementation, and maintenance. Contact us to choose the optimal solution for your company.
Find out more about CI/CD: