Cloud Computing
Table of contents
- Introduction:-
- What is the Cloud.?
- Purpose of a Cloud.?
- Virtualization.
- What is a Hypervisor.?
- Types of Hypervisor.?
- Benefits of Virtualisation:-
- Containerization VS Virtualization.
- What is a Container.?
- How Containers are created.?
- Difference between a Virtual Machine and a Container.?
- DevOps.
- Why DevOps.?
- Waterfall model.
- Agile Model.
- Agile VS DevOps.(why we should go for DevOps?)
Introduction:-
Cloud computing means instead of storing and running data and programs on our local computers or devices, they're stored and run on the cloud through high-speed internet. So, when we use the internet to access these data and programs, we're actually using the power of the cloud instead of relying only on our own computers.
OR,
Cloud computing is the on-demand delivery of IT resources (eg Compute, storage, networking,databases) over the internet with pay-as-you-go pricing.
What is the Cloud.?
Cloud refers to a virtual place where we use resources. To put it simply, the cloud is just a big building filled with servers(computers) or we can say giant data centers that contain servers as far as our eye can see. These servers Perform numerous tasks, Such as running applications, Storing Data, Data processing, and Web Hosting. They are networked together and assessed through the internet.
Purpose of a Cloud.?
The companies that own These clouds are called cloud providers and their purpose is to sell their computers as a Service. Service is just something that we pay someone to do for us rather than doing the job ourselves. some examples of popular cloud providers are AWS, GCP, AZURE, etc
Why does any organization use the services offered by the Cloud providers.?
To understand this let us understand a story. Back in the old days Before cloud computing (Suppose in our example Email; if we wanted to use email, we would have our physical server. so we would need a server, operating Systern, and email software and after some configuration, we would able to use email. But the problem is, if anything goes wrong with the server, such as hardware failure, software problem, or Crash of OS, then we would be responsible for fixing the problem. However, we have the option of eliminating all the Hassle and upkeep of our email server by Hiring a cloud-based company. They would Host all our emails on their server such as Gmail.
other major reasons:-
1)Cost-Major Reason is cost. Cloud providers eliminate a lot of the expense on buying Hardware, software, Building, maintenance, and electricity.
2)Reliability- When we hire a cloud provider, the cloud provider is responsible for Data backup and disaster recovery. if one data center goes down it will also have several redundant sites as backup, which will ensure that there is no downtime.
3)Scalability- Cloud providers will offer a "Pay as you go" method. we can pay only what we need. we can rent few or lot computers.
Virtualization.
Defination:-It is the process of creating a virtual version of something like storage, network resources, etc. It is a technique that allows to share single physical instance of a resource among multiple customers or organizations.
let us understand this by one example. The traditional way a business operates by having one server for one application. But instead of one server running one application, we can run 3 or more applications with different OS in one Server with the help of Hypervisor, Called Virtualization. Virtualization is Consolidating multiple Physical servers with their different OS with applications and running them on just one physical server in a virtual environment.
What is a Hypervisor.?
The software that creates and runs virtual machines in a single server is called Hypervisor. Hypervisor allows one machine to run multiple Virtual machines. It allocates and controls the sharing of a machine's resources. Such as - Storage, RAM, and CPUs.
Types of Hypervisor.?
1) A bare metal Hypervisor is installed on bare metal hardware, meaning there is no existing OS or any other software on the machine. some examples of the bare metal hypervisor are VM ware, ESXI, Citrix XenServer, etc.
2) Hosted Hypervisor is installed and runs on top of existing OS such as Microsoft Windows, MacOS, Linux, etc.
Benefits of Virtualisation:-
(1) Saves money on hardware & electricity.
(2) Saves money on floor space.
(3) Saves money on maintenance and management.
(4) Portability:-VMs can be transferred to another physical machine if needed.
(5) Full computing capability:-It takes advantage of the full computing capability of a machine (Server)
(6) Disaster & Recovery: - virtual machines are Just software files and those files can be backed Up and they can be uploaded to multiple physical machines.
Containerization VS Virtualization.
Virtual machines Solve the problem of wasting money on new Servers But as great as they are they do have some drawbacks.
→VMs can consume lots of disk space. because each VM has its dedicated OS.
→VMs consume a lot of RAM and CPU power from the server
→ Slow to Startup because since they have an entire OS as they do take time to boot up.
→Requires a license for each OS so requires more money.
Now Let's talk about containers. Containers are Similar to VMs. but the major difference is hypervisor virtualizes an entire machine down to the hardware layer but the container engine, only virtualizes the software layer above the operating System level.
What is a Container.?
A container is an application that has been packed up with all the files, Configuration, and dependencies necessary for it to run. Which means that it is bundled with everything that it needs to run. for example, a developer creates a website and he wants to distribute it so it can be hosted on any other computer, by creating a container for that website, by bundling it with everything it takes for it to be hosted on another computer such as libraries, HTML code, scripts, web images, web server software then that container image can be distributed and hosted on just any server OS computer without adding any additional software or doing any configuration. The container has everything it needs to run that website.
How Containers are created.?
To create a container we start with Hardware (Server).On this hardware there pre-installed OS and on top of this OS instead of a Hypervisor, we use a container Engine. Such as Docker.
Difference between a Virtual Machine and a Container.?
Virtual machines and containers are both technologies used for virtualization and isolation. but they both have some very important differences.
1)Virtual machines offer full hardware virtualization. Each VM has a separate operating system, which runs on a hypervisor directly on the host hardware. Rather Container engine provides operating system-level virtualization. They share the host OS kernel and only package the application and its dependencies in an isolated container.
2)VM requires its separate OS and kernel. so they are heavy but Containers are lightweight as they share the host OS kernel.
3)VMs generally have longer startup times because they need to boot an entire OS with its kernel. Rather Containers have fast startup times because they do not require booting a separate OS.
DevOps.
Let us understand what is meant by DevOps:-
1. DevOps is not a new tool/technology in the market. Actually,
2. It is a new culture or process to develop, release, and maintenance of software applications, projects, and products with higher quality in a faster way. we can achieve it by using automation tools.
For any software product, two groups of Engineer will work together
Development Group:- The People who are involved in planning, coding, building, and testing. (eg.Business analyst, System analyst, Design architect, Developers, Test engineers, Build engineers)
after the project development, the operation team comes into the picture.
Operation Group:- The people who are involved in release, deployment, and monitoring. (Configuration engineer, system admin, database admin, release engineers)
DevOps is a combination of development and operation. Always remember the main objective of DevOps is to implement collaboration between development and operation.
Why DevOps.?
To understand the beauty of DevOps we have to be aware of already existing SDLC(Software development life cycle)
- Waterfall model.
- Prototype model.
Incremental/Iterative model.
Spiral model.
RAD model
Big bang model
Fish model
V model.
Agile model.
DevOps Culture.
we will only discuss about waterfall and agile model to understand the beauty of DevOps.
Waterfall model.
It is a very old model(1950s/1960s)
The Waterfall model is a traditional sequential software development methodology that consists of several distinct phases, each performed in a linear and sequential manner. The phases typically include: See above picture. In the Waterfall model, each phase must be completed before moving on to the next, and there is minimal communication and collaboration between different teams involved in the project.
✔️Advantages of the waterfall model:-
1) It is very simple and easy to implement.
2) It is best suitable if requirements are fixed.
3) Best suitable for small projects.
✔️Disadvantage of the waterfall model:-
1) Development time will be increased.
2) It would not include requirement change in the middle.
3) Client satisfaction is very low.
4) Bug fixes is very costly because we can not identify bugs in the early stage of the life cycle.
5) Not suitable for large projects.
Agile Model.
This model came around 2001 and it is the most frequently used and hot cake model in software development. Agile means speed. The agile model is divided into sub-models and each model under the agile umbrella has their specific practices and approach.
1) Rational Unified Process(RUP).
2) Adapative Software Development(ASD).
3) Feature Driven Development(FDD).
4) Crystal Clear.
5) Dynamic Software Development Method(DSDM).
6) Extreme Programming(XP).
7) Scrum Model.
Among all the above models Scrum model is the most popular and frequently used. The Scrum model is not a linear sequential method. But in this model software will be developed increment by increment and each increment is called a Sprint(which means a small piece of work).
A group of people will be allocated from the total team to work on Sprint. Like for example 3 developers, 1 UI developer, 1 tester.
To understand sprint more deeply let us take one example. Suppose a client requested to make a website of 100 pages so what we do in a scrum model we divide 10, 10 pages into a sprint. Where 7 to 9 people work on a single sprint and in this way they can get feedback from the client.
Advantages of the Scrum Agile Model:-
1) Less development time.
2) Less development cost.
3) Continuous feedback.
4) Client satisfaction is very high.
5) Requirement changes in the middle.
Agile VS DevOps.(why we should go for DevOps?)
Both models concentrate on rapid software development with team collaboration. but they have some differences.
(1) The Agile model talks only about development but not operation. DevOps model talks about a complete product life cycle like development and operations.
(2) Agile model won't force us to use automation tools. But DevOps model is completely based on automation.
(3) Agile is always giving the highest priority only for Speed But DevOps giving the priority for both quality and speed.
(4) In agile, the client is responsible for giving feedback for the Sprint. But DevOps immediate feedback is available from the monitoring tools.