Infrastructure as a code-on Demand Infrastructure

Infrastructure as code (IaC) is the devops process to automate every single need of the infrastructure to enable better deployment speed, secured, high scalability, automated backup and restores. IaC is about writing code that describes the infrastructure where resources can easily be created, destroyed, resized, replaced and moved. It is the process of scripting environments from installing an operating system, to installing and configuring servers on instance, to configuring how the instances software communicate with one another, and much more. This paper discusses various tools and technology sets that can be used to attain an efficient infrastructure across all the industries ensuring the security using public and private clouds. Questions like how easily we can adapt, how to ensure security, how to choose the correct tools and technology set, deployment methods, benefits and implementations of the IaC, would be answered in this paper. Infrastructure as code (IaC) is the devops process to automate every single need of the infrastructure to enable better deployment speed, secured, high scalability, automated backup and restores. IaC is about writing code that describes the infrastructure where resources can easily be created, destroyed, resized, replaced and moved. It is the process of scripting environments from installing an operating system, to installing and configuring servers on instance, to configuring how the instances software communicate with one another, and much more. This paper discusses various tools and technology sets that can be used to attain an efficient infrastructure across all the industries ensuring the security using public and private clouds. Questions like how easily we can adapt, how to ensure security, how to choose the correct tools and technology set, deployment methods, benefits and implementations of the IaC, would be answered in this paper.


Introduction
Cloud computing is rapidly emerging as a new paradigm for delivering computing as a utility. While enterprises in India are apprehensive about public clouds, they would still like to avail themselves benefits that cloud computing have to offer. The idea behind any cloud computing proposal is for you to pay only for what you use, scaling up or down according to business needs. [1]. Cloud computing is becoming ubiquitous in today's competitive and dynamic business world. When combined with the DevOps culture, enterprises and developers stand to gain much in terms of quicker runtimes, scaling on demand, consistency of code, and better performance of software and applications [2]. In the subsequent section we will see the details about cloud computing and devops. Implementing devops in Public and Private Cloud with their impacts on business.

Cloud Computing
Cloud computing is the next natural step in the evolution of on-demand information technology services and products. To a large extent, cloud computing will be based on virtualized resources.
Cloud Computing is here to stay, as it is proposed to transform the way IT is deployed and managed, promising reduced implementation, maintenance costs and complexity, while accelerating innovation, providing faster time to market, and providing the ability to scale highperformance applications and infrastructures on demand. [3].
With the progression in the era of adaption of cloud computing various service models that came into existence which are categorized into three broad spectrums:

IaaS
Broadly know as Infrastructure as a Service in which infrastructure related capabilities like raw storage space, computing, virtual machines, networks etc are delivered to and used by customer.

PaaS
Broadly known as Platform as a Service provides toolkit and number of supported programming languages.

SaaS
Broadly known as Software as a Service which provides end user interface of complete application hosted on cloud platform.
There are multiple deployment models that are used in the cloud computing which are Public Cloud which is owned by cloud service provider, Private Cloud which is built and owned exclusively for customer, Community Cloud shared infrastructure when group of entities have similar interests, Hybrid Cloud is used when customer needs to use combination of above stated cloud deployment methods.

Devops
DevOps which is combination Development and Operations signifying a cultural shift that is bridging the gap between development and operation teams. Devops is a set of practices that works to automate and integrate the processes between software development and IT teams, so they can build, test, and release software faster and more reliably.
There are combination of devops tools used to achieve automation and defined by a periodic table [4].

IaC
Infrastructure as code (IaC) is the practice to automatically configure system dependencies and to provision local and remote instances [5]. IaC scripts automate continuous deployment. Popular IaC technologies, such as Ansible, Terraform etc, provide mechanisms to automatically configure and provision software deployment infrastructure using cloud instances.
IaC is closely related to devops focussing on IaaS service of cloud computing which can be implemented on any of the deployment models with the help of suitable tools fetched from the devops periodic table.

Pros of IaC:
-Redeploying of the infrastructures became handy.
-Sharing and Utilization of code and infrastructure became easy.
-Infrastructure becomes scalable that the resources can be up scaled and downscaled easily.
-Pay per use policy helps us to reduce our infrastructure costs.

Cons of IaC:
-Sometimes code becomes too large to manage -You cannot start the code in between, whole infrastructure needs to be killed and redeployed.

.IaC in Public Cloud
Public cloud services such as AWS, Azure, -Automated creation of user in the public clouds for onboarding of users in different teams. -Automating day to day tasks for infrastructure changes. Each of the public cloud providers have their own set of services to perform a particular task stated in the below diagram [6-11]: We can use services offered by public cloud service providers and attain the Infrastructure as an automation by taking the pricing and infrastructure requirements for the customers.

.I a C in Private Cloud
The deployment of resources on-premises, using virtualization and resource management tools, is called the "private cloud." On-premises deployment doesn't provide many of the benefits of cloud computing but is sometimes sought for its ability to provide dedicated resources. In most cases this deployment model is the same as legacy IT infrastructure while using application management and virtualization technologies to try and increase resource utilization. Private cloud comes in two primary flavours

On private clouds,
The physical hardware is owned and managed by the client who uses the cloud, it can be also managed by a third-party data centre provider or a specialist private cloud vendor.
Private cloud users pay upfront for their hardware, management, and maintenance of their servers.
If the 'private cloud' is in a private data centre like VMware etc they only have to invest in building the infrastructure or they can pay a data centre or private cloud provider to do it for them.
The most important thing is with a private cloud users/providers can have more control over the hardware and the software it runs, or data that flows through it than a public cloud platform can offer that is the data on a private cloud is always under the control of the organizationwhich is critical to many organizations such as banking sector organization.
Example:-When you are creating Virtualized setup using VMware or Hyper-V with a limited set of physical machines which are hosting no of virtual machines. Since you control all the parameters for this virtual machine such as connection, security, hardware, apps etc. this is considered a private cloud. And here you have already done all the payments for everything including cost of servers, licensing, and maintenance. Private cloud provides below advantages: -Enhanced security and privacy: In addition to the perfectly robust security that is possible on individual virtual machines, a private cloud can be isolated from all but the company who owns it. This restricted access, which can integrate with a firm's firewall and other remote access policies, offers an additional layer of security.
-Improved reliability: When compared to either dedicated hardware or public cloud alternatives, private cloud offers a greater degree of reliability thanks to a fault resilient and redundant architecture that isn't shared in any way.
-Improved performance: The resources within your private cloud infrastructure are at the disposal of your company and your company alone. There is no contention with other companies for capacity (only with your own workloads) and far less chance that a malicious attack against another firm will affect your ability to function.
-Increased flexibility: Unlike a physical machine, a virtual machine can be scaled up and down seamlessly. And when you own all the virtual machines, you can reallocate resources dynamically, wherever they are needed most.
-Total control: Although there is a fair amount of universal best practice that you should no doubt follow, you are free to build and configure your private cloud in any way you like. For example, you have the freedom to use any operating systems and applications you please and to allocate resources in any way you see fit.
Some of the factors that can make you think before using private cloud is: -Cost: With exclusivity comes increased cost. If you plan to build your own private cloud, you face a large capital outlay. Fortunately, you can rent your private cloud from a hosting service provider, for a monthly fee, and still benefit from all the advantages.
-Under-utilisation: With a private cloud, the cost of capacity under-utilisation is a cost to you, not to your provider. Therefore, managing and maximising utilisation becomes your concern.
-Platform scaling: Since you are unlikely to want to retain significant, un-utilised capacity, based on the previous point, large upward changes in your requirements are likely to require scaling of the physical infrastructure. This is fine but may take longer than simply scaling a virtual machine within existing capacity.

Conclusion
IaC is the process and practice of representing underlying resources that support our organization in code. It is one that can be used by any size of teams regardless of cloud providers like AWS, GCP, Azure, or their own data center. The massive difference between public and private cloud is that, in private cloud you are directly responsible for managing the machines and operating the entire infrastructure along with the billing of the services and payments of the machines. With public cloud you don't have direct control to the machines or access to them. In terms of security, a private cloud favors all kind of IT fixes, updates and upgrade. It even allows IT to control the perimeters. Whereas, a public cloud protects data by managing security on both software and physical level. But from an enterprise point of view, there are more security benefits to a private cloud as your information lives behind your firewall. Its fully owned infrastructure reduces security concerns and ability to satisfy regulatory requirements without requiring cooperation of cloud provider. In terms of cost, public clouds are cheaper than private clouds as you don't have to buy a hardware. As public cloud hosted off sites so internal IT employees are not in charge for maintaining the system, but private cloud needs internal maintenance as hosted at the company's site. In public cloud scalability is good as compare to private clouds. Below is the graphic that shows with cloud computing technology, huge pools of resources can be easily connected via private or public network in order to deliver infrastructure.
With the combination of public and private clouds people can easily access their infrastructure in a cost effective way.