Devops Unit1 Note
Devops Unit1 Note
The word “DevOps” was coined in 2009 by Patrick Debois, who became one of its gurus. The term was
formed by combining “development” and “operations,” which provides a starting point for understanding
exactly what people typically mean when they say “DevOps.” Notably, DevOps isn’t a process or a
technology or a standard. Many devotees refer to DevOps as a “culture”—a viewpoint that New Relic
favors. We also use the term “DevOps movement” when talking about topics such as adoption rates and
trends for the future, and “DevOps environment” to refer to an IT organization that has adopted a DevOps
culture.
“DevOps represents a change in IT culture, focusing on rapid IT service delivery through the adoption of
agile, lean practices in the context of a system-oriented approach. DevOps emphasizes people (and
culture), and seeks to improve collaboration between operations and development teams. DevOps
implementations utilize technology— especially automation tools that can leverage an increasingly
programmable and dynamic infrastructure from a life cycle perspective.”
DevOps is defined as a combination of processes and tools created to facilitate organizations in delivering
services and applications much faster than they can through conventional software development processes.
It helps increase customers’ confidence in the applications that an organization offers, thereby allowing the
company to flourish and achieve its business goals faster.
1
Course Code/Title: AD3V15 /Devops Unit: I
Benefits of DevOps
DevOps helps organizations deliver added value to their customers. Here are some compelling benefits
of DevOps.
1. Smarter work and faster release: With DevOps, your development team can release the required
deliverables quickly. Faster release of deliverables will keep you miles ahead of your competitors,
which is very important in today’s cut-throat business realm. Businesses should understand that if
their review cycle is not automated, it will slow down the release process. Moreover, the inclusion
of disparate tools will lead to context switching and higher costs. Thus, DevOps can help rectify
this worrisome business situation.
2. Quick resolution of issues: In a business world where speed and accuracy are paramount, a fast
feedback loop will help you thrive. With DevOps, the communication process becomes
seamless, and, as such, it minimizes the time required to solve issues. Without open
communication, key issues can slip out of mind, which will have serious repercussions in the
long run. DevOps fosters open communication that helps resolve issues, thus unblocking the
release pipeline faster.
2
Course Code/Title: AD3V15 /Devops Unit: I
3. Better collaboration between teams: DevOps paves the way for more dynamic and round-the-
clock communication between teams. It renders an environment for mutual
collaboration and integration among teams that are distributed globally. Eliminating the
traditional departmental barriers between teams forms a new sense of ownership, wherein each
team member feels equally responsible for meeting delivery timelines. This collaboration
contributes to happier and more engaged employees.
4. Fostering innovative mindsets: With DevOps, deployment phases of the application are more
relaxed as compared to traditional methods. This is because it streamlines the entire process,
ensures that there are no lapses in quality, and allows on-time and efficient release. Thus, as
everything is in order, the development team is more at peace. This allows it to think out of the
box and provide additional value to the user. Having a development team with an innovative
mindset is a boon for any business organization. An innovative approach, in itself, has immense
scope and leads to better quality and resolution of issues at hand. Thus, through DevOps, the
process of expanding the horizon of an app becomes much easier.
5. Faster threat detection: Automated and continuous testing of the code will make the process of
threat detection faster. As developers can locate problem areas at an early stage, they can then
resolve them faster. Thus, DevOps is a vital cog in maintaining and enhancing the quality and
performance of an app. As the overall build of the app is in capable hands, teams working
together are empowered to share feedback as and when necessary.
6. Increased customer satisfaction: Customer satisfaction is paramount in any day and age,
irrespective of the business one is involved in. DevOps is known for enhancing customer
experience, which ultimately increases the level of customer satisfaction. Dissatisfied customers
are never a good sign for any business. Feedback loops are an important component of DevOps.
These loops empower end users to track the progress of app development at various stages.
7. In addition, they can suggest changes (if any) or give their inputs to make the app more customer-
centric. Due to their dynamic nature, feedback loops help developers and customers remain on the
same page. Moreover, DevOps accelerates the process of app development, which eventually
lessens the delivery timer. This has a positive impact on the customer satisfaction ratio.
8. Providing the much-needed edge: Along with staying true to their development process,
companies need to ensure that they sustain themselves in the cut-throat competition.
Implementing DevOps can be your trump card to provide your organization with that much-
needed edge. Competitive advantage is necessary, as it can become the deciding factor in the
popularity of an application in many cases. Some factors set expert businesses apart from
mediocre ones:
• Top-quality features
3
Course Code/Title: AD3V15 /Devops Unit: I
Example: Facebook’s mobile app which is updated every two weeks effectively tells users you can have
what you want and you can have it. Now ever wondered how Facebook was able to do social smoothing?
It’s the DevOps philosophy that helps facebook and sure that apps aren’t outdated and that users get the
best experience on Facebook. Facebook accomplishes this true code ownership model that makes its
developers responsible that includes testing and supporting through production and delivery for each
kernel of code.
They write and update their true policies like this but Facebook has developed a DevOps culture and has
successfully accelerated its development lifecycle.
Difference between Agile and DevOps:
S. No. Agile DevOps
1 It started in the year 2001. It started in the year 2007.
2 Invented by John Kern, and Martin Fowler. Invented by John Allspaw and Paul Hammond at
Flickr, and the Phoenix Project by Gene Kim.
It is not related to software development. Instead,
Agile is a method for creating software. the software that is used by DevOps is pre-built,
3 dependable, and simple to deploy.
4 An advancement and administration approach. Typically a conclusion of administration related
DevOps centtoerdsesoingnstienagd. y testing and
The agile handle centers on consistent changes.
5 conveyance.
DevOps to have a few best hones that ease
A few of the finest steps embraced in Agile are
recorded underneath – 1. Backlog Building the method – 1. Focus on specialized
6 greatness. 2. Collaborate straightforwardly
2.Sprint advancement
with clients and join their feedback.
Agile relates generally to the way advancement
is DevOps centers more on program arrangement
carried of, any division of the company can be choosing the foremost dependable and most
7 spry in its hones. This may be accomplished secure course.
through preparation.
All the group individuals working in a spry
hone have a wide assortment of comparable DevOps features a diverse approach and is
ability sets. This is often one of the points of very viable, most of the time it takes after
interest of “Divide and Conquer”. Work partitioned
having such a group since within the time of among the improvement and operation groups.
8 requirement any of the group individuals can
loan
help instead of holding up for the group leads
or any pro impedances. DevOps, on the other hand, accepts that
Spry accepts “smaller and concise”. Littler “bigger is better”.
the
group superior it would be to convey with DevOps, on the other hand, prioritizes
9 fewer
complexities. reliabilities. It is since of this behavior that
Since Agile groups are brief, a foreordained they can center on a long-term plan that
sum minimizes commerce’s unsettling influences.
of time is there which are sprints. Tough, it
10 happens that a sprint has endured longer
than a
month but regularly a week long.
11 A big team for your project is not required. It demands collaboration among different teams
for the completion of work.
4
Course Code/Title: AD3V15 /Devops Unit: I
It is suitable for managing complex projects It centers on the complete engineering process.
13 in any department.
14 It does not focus on the automation. It focusses on automation.
Working system gets more significance in The process documentation is significant
15 Agile than documentation.
in DevOps.
5
Course Code/Title: AD3V15 /Devops Unit: I
DevOps Tools
1. Git (GitLab, GitHub, Bitbucket)
Git remains indispensable in software development and DevOps due to its pivotal role in version control,
collaborative coding, and efficient project management. As technology has accelerated, the need for
streamlined and organized code management has never been greater.
Git empowers developers to collaborate on codebases, effortlessly creating and merging branches for new
features and bug fixes. Its distributed nature ensures developers can work seamlessly offline, an
increasingly valuable feature in today's remote and distributed work environments.
Additionally, Git facilitates the tracking of code modifications, making it easier to identify when and why
specific changes were made, a critical aspect of maintaining code quality and security. Software
development is essential in driving innovation and advancing progress, and Git maintains its prominent
position as the bedrock of efficient, cooperative, and secure coding methodologies.
2. Maven
Due to its enduring significance in managing project dependencies, building, and project lifecycle
management, Maven remains a pivotal tool in SD and DevOps. As a robust build automation and project
management tool, Maven simplifies the complexities of Java-based project development by streamlining
the compilation, testing, packaging, and distribution processes. It ensures consistent and reproducible
builds, making it easier for development teams to collaborate efficiently and deliver high-quality software.
Maven's role in managing dependencies and facilitating continuous integration and deployment remains
crucial. Its ability to handle complex build scenarios and integrate seamlessly with modern DevOps
practices makes it indispensable for ensuring software projects' reliability, maintainability, and scalability
in 2024 and beyond.
3. Jenkins
Its importance lies in its role as a powerful automation server that enables continuous integration and
continuous delivery (CI/CD) pipelines. Jenkins streamlines software development by automating tasks
such as building, testing, and deploying code changes, ensuring that software is delivered quickly and
highly. With the growing complexity of modern applications, the need for efficient CI/CD processes has
become even more paramount.
Jenkins provides flexibility, extensibility, and a vast library of plugins that cater to a wide range of
technologies and tools, making it adaptable to diverse development environments. As organizations
prioritize speed, reliability, and collaboration in their software development practices, Jenkins stands as a
cornerstone tool, enabling teams to achieve seamless automation and efficient delivery of software
solutions.
4. Chef
Chef, a powerful automation platform, is crucial in managing infrastructure as code. Chef empowers
organizations to achieve scalability, reliability, and speed seamlessly. By allowing the automation of server
provisioning, configuration, and maintenance, Chef enhances efficiency and consistency across the entire
infrastructure, reducing manual errors and ensuring that infrastructure remains desired.
Moreover, Chef integrates smoothly with various cloud providers, containerization technologies, and other
DevOps tools, making it adaptable to the ever-evolving tech
6
Course Code/Title: AD3V15 /Devops Unit: I
landscape. As organizations prioritize agility and scalability, Chef remains a vital tool
in automating complex infrastructure tasks and enabling DevOps teams to focus on innovation and
delivery.
5. Puppet
Puppet is essential because it simplifies the management and orchestration of complex IT infrastructures
by allowing administrators to define infrastructure as code. It ensures consistency and repeatability in
configuration across servers, cloud instances, and containers. Businesses increasingly rely on diverse,
dynamic, and hybrid infrastructures.
Puppet's importance lies in its ability to streamline provisioning, configuration, and continuous compliance,
thus reducing operational complexity, minimizing errors, and accelerating software delivery. Puppet
continues to empower organizations to efficiently manage and scale their infrastructure while maintaining
high levels of security and compliance, making it a crucial tool for DevOps teams.
6. Ansible
Ansible is a powerful and widely adopted automation and configuration management tool important
in 2024 for several reasons. This tool stands out for its simplicity and versatility. It empowers
organizations to automate repetitive tasks, provisioning of infrastructure, and configuration
management across diverse environments, making it an invaluable asset for DevOps and IT teams.
Furthermore, Ansible's agentless architecture, declarative language, and a vast library of pre- built modules
make it accessible to both beginners and seasoned professionals. As organizations prioritize efficiency,
scalability, and the rapid deployment of applications and services, Ansible remains an indispensable
DevOps toolkit, helping teams streamline operations, enhance security, and maintain infrastructure at scale,
all while reducing manual errors and increasing agility in a fast-paced technological landscape.
7. Docker
Docker is crucial in modern software development and DevOps practices. It can simplify and streamline
the management of applications across various environments. Docker containers encapsulate an app and its
dependencies, ensuring consistent and reproducible deployments from development to production.
This technology enhances portability and scalability, accelerates development cycles, and reduces the "it
works on my machine" problem. In a rapidly evolving software landscape, Docker's containerization
approach remains crucial for achieving efficient, isolated, and highly flexible application deployment,
making it an essential component of DevOps and continuous delivery pipelines.
8. Kubernetes
Kubernetes, often abbreviated as K8s, play a central role in modern software development and
operations. Its importance lies in its ability to orchestrate, manage, and automate containerized
applications at scale. As organizations increasingly embrace microservices architectures and
containerization for their applications, Kubernetes provides the essential infrastructure for deploying,
scaling, and maintaining these containers efficiently.
The tool’s resilience, self-healing capabilities, and support for hybrid and multi-cloud environments make
it vital for achieving agility, reliability, and cost-effectiveness in application deployment. It serves as the
backbone of cloud-native ecosystems, enabling organizations to accelerate software delivery, improve
resource utilization, and respond effectively to the evolving demands of the digital landscape.
7
Course Code/Title: AD3V15 /Devops Unit: I
9. Slack
Slack is a crucial tool for businesses and organizations worldwide. Its significance lies in facilitating
seamless communication and collaboration among teams, whether working in the same office or remotely.
Slack's real-time messaging, file sharing, and integration capabilities streamline workflow, enhance
productivity and keep teams connected across different time zones and locations.
As the work landscape evolves, with more companies embracing hybrid and remote work models, Slack is
a vital hub for quick decision-making, project coordination, and knowledge sharing. With an ever-
expanding ecosystem of integrations and features, Slack remains at the forefront of modern workplace
communication, making it essential for businesses to stay agile, efficient, and competitive.
8
Course Code/Title: AD3V15 /Devops Unit: I
14. Appdynamics
AppDynamics, a leading application performance management and monitoring platform, remains critically
important as it ensures the optimal performance of modern digital businesses. As organizations rely on
complex and distributed software systems, proactively monitoring, troubleshooting, and optimizing these
applications becomes essential.
AppDynamics provides real-time visibility into application performance, allowing businesses to swiftly
identify bottlenecks, latency issues, and errors.
With the ever-growing complexity of applications, the importance of AppDynamics lies in its ability to
empower organizations to deliver exceptional user experiences, maintain application reliability, and
swiftly respond to performance issues, thereby ensuring the continued success and competitiveness of
digital businesses.
15. Raygun
It is a crucial tool in software development and DevOps because it ensures application reliability and
performance. Raygun is an application monitoring and error-tracking platform that empowers development
teams to identify, diagnose, and resolve real-time issues.
With software systems growing in complexity and the increased demand for seamless user experiences,
Raygun's importance lies in providing actionable insights into application errors and performance
bottlenecks. It enables organizations to proactively address issues, reduce downtime, and enhance user
satisfaction, leading to higher software quality and improved customer experiences.
Software is central to businesses across industries. Raygun's role in maintaining application health and
facilitating rapid issue resolution makes it a fundamental tool for DevOps professionals and software
developers.
9
Course Code/Title: AD3V15 /Devops Unit: I
17. Selenium
It remains a vital tool in software testing and automation due to its enduring relevance in ensuring the
quality of web applications. As technology evolves, web applications become increasingly complex,
requiring thorough testing across various browsers and platforms.
With its robust automation capabilities and extensive browser compatibility, Selenium allows developers
and QA teams to automate repetitive testing tasks efficiently, conduct cross- browser testing, and ensure
that web applications function flawlessly across diverse environments.
Its open-source nature, active community support, and integration with other DevOps tools make Selenium
a go-to choice for organizations striving for continuous delivery and the rapid deployment of high-quality
software, a cornerstone of modern software development practices.
18. Gremlin
Gremlin is an essential tool in chaos engineering, which has become increasingly critical for ensuring the
resilience and reliability of modern software systems. As technology advances and complex distributed
systems become the norm, the potential for unexpected failures and outages also rises.
Gremlin allows organizations to proactively identify weaknesses and vulnerabilities in their infrastructure
and applications by simulating controlled failures, such as network disruptions, service outages, and
resource constraints.
By intentionally inducing chaos and monitoring the system's response, teams can uncover weaknesses
before they lead to costly downtime or security breaches. Gremlin facilitates organizations to build more
robust, fault-tolerant systems that can withstand real-world challenges and deliver uninterrupted services
to users.
19. ServiceNow
ServiceNow is a vital platform for organizations seeking to streamline their IT service management and
beyond. Its significance lies in its ability to provide a unified, cloud-based solution for automating and
optimizing various business processes, including ITSM, ITOM, HR, customer service, and more.
Due to the rapid digitization of services, remote work, and the growing complexity of technology
infrastructures, ServiceNow offers a comprehensive approach to managing workflows, resolving issues,
and delivering services efficiently. Its intelligent automation capabilities, analytics, and AI-driven insights
empower organizations to enhance productivity, agility, and customer satisfaction while reducing
operational costs.
ServiceNow's role in orchestrating and integrating diverse systems and processes makes it an
indispensable tool for driving digital transformation and ensuring smooth operations in the ever-evolving
business landscape of 2024.
10
Course Code/Title: AD3V15 /Devops Unit: I
Downtime can often lead to significant financial losses and damage to a company's reputation, so having
a practical Status Page becomes not just a convenience but a necessity. It allows organizations to showcase
their commitment to transparency and responsiveness in addressing service-related issues, ultimately
fostering stronger customer relationships and trust.
23. Scripting
Scripting remains vital due to its pivotal role in automating and streamlining various aspects of software
development, system administration, and DevOps practices. Scripting languages like Python, Bash, and
PowerShell empower tech professionals to write code that can execute repetitive tasks, manipulate data,
and orchestrate complex processes efficiently.
Scripting facilitates rapid prototyping, configuration management, and the creation of automated
deployment pipelines. It enhances productivity, ensures consistency and reduces human error in tasks
ranging from software testing and deployment to infrastructure provisioning and monitoring. As
organizations increasingly embrace DevOps and cloud- native technologies, scripting stays competitive
and adaptive in the tech landscape.
24. Terraform
Terraform plays a crucial role in modern infrastructure provisioning and management. It allows
organizations to define and deploy infrastructure as code, enabling the automated creation and
configuration of cloud resources, containers, and other infrastructure components. Cloud computing,
microservices, and containerization have become the norm in
11
Course Code/Title: AD3V15 /Devops Unit: I
2024. Terraform provides the agility and scalability required to keep up with the dynamic demands of
modern applications.
Terraform’s importance lies in its ability to bring consistency, version control, and automation to
infrastructure operations, thereby reducing manual errors, streamlining DevOps workflows, and
facilitating applications' rapid and reliable deployment in an increasingly complex and cloud-centric
environment. As organizations adopt cloud-native
technologies, Terraform remains essential to ensure efficient and consistent infrastructure management.
25. Phantom
Phantom enhances security automation and incident response capabilities. In today's rapidly evolving
threat landscape, organizations face a constant barrage of cybersecurity incidents, and the ability to
respond swiftly and effectively is necessary. It provides a platform for automating security workflows,
from detecting and investigating potential threats to orchestrating responses and mitigating risks.
Phantom’s importance lies in its capacity to reduce response times, increase consistency in incident
handling, and free up manual resources from repetitive tasks. With the growing complexity of cyber threats,
Phantom empowers security teams to defend against attacks and safeguard critical assets proactively.
26. Nagios
Nagios, an open-source monitoring and alerting system, remains vital due to its enduring significance in
maintaining the reliability and performance of IT infrastructure and applications. Organizations
increasingly rely on complex systems and services. Nagios plays a crucial role by providing real-time
monitoring and alerting capabilities, allowing IT
teams to detect and address issues before they impact users or cause system outages.
Its versatility, extensibility, and support for both on-premises and cloud environments make Nagios a
valuable tool for ensuring critical systems' availability, stability, and security, aligning perfectly with the
demands of modern IT operations and DevOps practices.
27. Vagrant
Vagrant continues to play a crucial role in software development and DevOps. It is a tool that simplifies
creating and managing reproducible development environments. Its importance lies in its ability to provide
developers and DevOps teams with a consistent and isolated environment for software development,
testing, and deployment.
With the ever-evolving complexity of software stacks, dependencies, and infrastructure configurations,
Vagrant remains essential in ensuring these environments are easily shareable, scalable, and maintainable. It
allows developers to work seamlessly across various operating systems and provides a standardized setup
that minimizes compatibility issues.
28. Sentry
Sentry plays a critical role in modern software development and DevOps practices. With software
applications' increasing complexity and scale, identifying and addressing errors and issues has become
crucial.
Sentry is vital because it provides real-time error tracking and monitoring, allowing development teams to
proactively detect and diagnose issues, whether they occur in production or during development. Its
importance is minimizing downtime, improving user experience, and maintaining software systems'
overall health and reliability.
12
Course Code/Title: AD3V15 /Devops Unit: I
29. Gradle
Gradle continues to be a vital tool in software development and DevOps. Gradle is an advanced build
automation system that plays a crucial role in managing dependencies, building projects, and orchestrating
complex workflows efficiently. Its importance lies in its versatility and scalability, as it caters to various
project sizes and types.
Gradle's ability to easily handle multi-language, multi-project builds and its support
for plugin-based customization make it indispensable in modern software development. As organizations
increasingly adopt microservices architectures and cloud-native technologies, Gradle's capabilities are
instrumental in managing the complexity of building, testing, and deploying applications across diverse
environments.
DevOps Architecture
DevOps architecture is used for the applications hosted on the cloud platform and large distributed
applications. Agile Development is used in the DevOps architecture so that integration and delivery can be
contiguous. When the development and operations team works separately from each other, then it is time-
consuming to design, test, and deploy. And if the terms are not in sync with each other, then it may cause
a delay in the delivery. So DevOps enables the teams to change their shortcomings and increases
productivity.
13
Course Code/Title: AD3V15 /Devops Unit: I
2) Code: Many good practices such as Git enables the code to be used, which ensures writing the code for
business, helps to track changes, getting notified about the reason behind the difference in the actual and
the expected output, and if necessary reverting to the original code developed. The code can be
appropriately arranged in files, folders, etc. And they can be reused.
3) Test: The application will be ready for production after testing. In the case of manual testing, it
consumes more time in testing and moving the code to the output. The testing can be automated, which
decreases the time for testing so that the time to deploy the code to production can be reduced as
automating the running of the scripts will remove many manual steps.
4) Plan: DevOps use Agile methodology to plan the development. With the operations and development
team in sync, it helps in organizing the work to plan accordingly to increase productivity.
5) Monitor: Continuous monitoring is used to identify any risk of failure. Also, it helps in tracking the
system accurately so that the health of the application can be checked. The monitoring becomes more
comfortable with services where the log data may get monitored through many third-party tools such as
Splunk.
6) Deploy: Many systems can support the scheduler for automated deployment. The cloud management
platform enables users to capture accurate insights and view the optimization scenario, analytics on trends
by the deployment of dashboards.
7) Operate: DevOps changes the way traditional approach of developing and testing separately. The
teams operate in a collaborative way where both the teams actively participate throughout the service
lifecycle. The operation team interacts with developers, and they come up with a monitoring plan which
serves the IT and business requirements.
8) Release: Deployment to an environment can be done by automation. But when the deployment is
made to the production environment, it is done by manual triggering. Many processes involved in release
management commonly used to do the deployment in the production environment manually to lessen the
impact on the customers.
DevOps Lifecycle
DevOps defines an agile relationship between operations and Development. It is a process that is practiced
by the development team and operational engineers Learning DevOps is not complete without
understanding the DevOps lifecycle phases. The DevOps lifecycle includes seven phases as given below:
14
Course Code/Title: AD3V15 /Devops Unit: I
1) Continuous Development
2) Continuous Integration
This stage is the heart of the entire DevOps lifecycle. It is a software development practice in which the
developers require to commit changes to the source code more frequently. This may be on a daily or weekly
basis. Then every commit is built, and this allows early detection of problems if they are present. Building
code is not only involved compilation, but it also includes unit testing, integration testing, code review,
and packaging.
The code supporting new functionality is continuously integrated with the existing code. Therefore, there
is continuous development of software. The updated code needs to be integrated continuously and
smoothly with the systems to reflect changes to the end-users.
production server.
3) Continuous Testing
This phase, where the developed software is continuously testing for bugs. For constant testing, automation
testing tools such as TestNG, JUnit, Selenium, etc are used. These tools allow QAs to test multiple code-
bases thoroughly in parallel to ensure that there is no flaw in the functionality. In this phase, Docker
Containers can be used for simulating the test environment.
It may occur in the form of documentation files or maybe produce large-scale data about the application
parameters when it is in a continuous use position. The system errors such as server not reachable, low
memory, etc are resolved in this phase. It maintains the security and availability of the service.
Automation testing saves a lot of time and effort for executing the tests instead of doing this manually.
Apart from that, report generation is a big plus. The task of evaluating the test cases
15
Course Code/Title: AD3V15 /Devops Unit: I
that failed in a test suite gets simpler. Also, we can schedule the execution of the test cases at predefined
times. After testing, the code is continuously integrated with the existing code.
4) Continuous Monitoring
Monitoring is a phase that involves all the operational factors of the entire DevOps process, where
important information about the use of the software is recorded and carefully processed to find out trends
and identify problem areas. Usually, the monitoring is integrated within the operational capabilities of the
software application.
5) Continuous Feedback
The application development is consistently improved by analyzing the results from the operations of the
software. This is carried out by placing the critical phase of constant feedback between the operations and
the development of the next version of the current software application.
The continuity is the essential factor in the DevOps as it removes the unnecessary steps which are required
to take a software application from development, using it to find out its issues and then producing a better
version. It kills the efficiency that may be possible with the app and reduce the number of interested
customers.
6) Continuous Deployment
In this phase, the code is deployed to the production servers. Also, it is essential to ensure that the code is
correctly used on all the servers. The new code is deployed continuously, and configuration management
tools play an essential role in executing tasks frequently and quickly. Here are some popular tools which
are used in this phase, such as Chef, Puppet, Ansible, and SaltStack.
Containerization tools are also playing an essential role in the deployment phase. Vagrant
and Docker are popular tools that are used for this purpose. These tools help to produce consistency across
development, staging, testing, and production environment. They also help in scaling up and scaling down
instances softly.
Containerization tools help to maintain consistency across the environments where the application is tested,
developed, and deployed. There is no chance of errors or failure in the production environment as they
package and replicate the same dependencies and packages used in the testing, development, and staging
environment. It makes the application easy to run on different computers.
7) Continuous Operations
All DevOps operations are based on the continuity with complete automation of the release process and
allow the organization to accelerate the overall time to market continuingly. It is clear from the discussion
that continuity is the critical factor in the DevOps in removing steps that often distract the development,
take it longer to detect issues and produce a better version of the product after several months. With
DevOps, we can make any software product more efficient and increase the overall count of interested
customers in your product.
16
Course Code/Title: AD3V15 /Devops Unit: I
AWS
AWS stands for Amazon Web Services, It is an expanded cloud computing platform provided by Amazon
Company. AWS provides a wide range of services with a pay-as-per-use pricing model over the Internet
such as Storage, Computing power, Databases, Machine Learning services, and much more. AWS
facilitates for both businesses and individual users with effectively hosting the applications, storing the data
securely, and making use of a wide variety of tools and services improving management flexibility for IT
resources.
1. Cost savings: One of the biggest benefits of AWS is that it can help businesses save money. As
mentioned previously, businesses can avoid the high upfront costs of traditional
infrastructure with AWS and pay only for the resources they use. Traditionally, businesses had
to invest in hardware and software upfront, which often led to overspending.
Let’s look at this for example – if a business needs to run a website that gets 1000 visitors per day,
they would need to purchase and maintain enough servers to support this traffic. With AWS, the
business only pays for the compute resources they use when someone visits their website. This can
result in significant cost savings.
2. Flexibility: Another key benefit of AWS is its flexibility. Businesses are able to customize
their virtual environment – whether the operating system, database, programming language, or
something else – to meet their specific needs. Especially in today’s climate, the migration
process to the cloud should be as frictionless as possible – and AWS makes that possible.
Regardless of your use case or
industry, AWS can be tailored to fit your needs, whether you’re looking for a single cloud-
hosted application or an entire suite of integrated solutions.
3. Reliability: AWS is known for being reliable, with an uptime of 99.9%. This makes it a great
platform for mission-critical applications that need to be available 24/7. AWS also offers the
ability to deploy resources across multiple availability zones for even greater reliability. The
cloud platform also has a number of features that make it easier to ensure reliability, such as
autoscaling and auto-healing. Autoscaling allows businesses to automatically scale their resources
up or down based on demand, while auto-healing enables them to quickly identify and replace
any faulty components.
4. Security: Businesses can take advantage of advanced security features, such as identity and
access management, to help protect their data. Their tough infrastructure with an end-to-end
approach is designed to withstand attacks and AWS provides customers with tools to help them
monitor and respond to threats. When it comes to storage, Amazon S3 provides customers with a
secure and reliable way to store and access data. The service is designed to be highly scalable
and resilient, with built-in redundancy. Fine-grain identity and access controls can be applied to
S3 buckets and objects, giving customers control over who has access to their data. Security
tasks can be automated with AWS CloudFormation, making it easier for businesses to
manage their security policies. And, you can rest easy knowing that AWS takes privacy
seriously, with comprehensive customer data protection and compliance measures.
17
Course Code/Title: AD3V15 /Devops Unit: I
5. Compliance: By compliance, we mean that certain businesses are required to follow specific
regulations. Financial services companies in the United States, for example, must comply with
the Sarbanes-Oxley Act, while healthcare, education, and energy companies must comply with
HIPAA and other regulations. AWS provides a number of compliance-related features and
services, such as data encryption and identity and access management, to help businesses meet
these requirements.
7. Developer Tools: Developer tools are designed to make it easier for developers to create,
deploy, and manage applications – and AWS provides developers with what they need to build
applications quickly and easily. By leveraging developer
tools, developers can save time and money by automating tedious tasks. They also benefit
from access to AWS’s extensive library of pre-built applications that can help them get their
projects off the ground quickly. Services such as Amazon Elastic Beanstalk and Amazon
CloudFormation can help them automate the process of creating and deploying applications.
Other ways developers can improve productivity with AWS include using AWS CodeCommit to
store and manage source code.
8. Integration: Thanks to its many integrations with other Amazon services, as well as third-party
services, AWS makes it easy for businesses to get started with cloud computing. AWS provides
a wide range of services that can be easily integrated into existing business infrastructure. This
allows businesses to add new features and capabilities without having to make major changes or
invest in new hardware or software. For instance, if a business wants to add mobile capabilities
to its website,
it can take advantage of Amazon’s Mobile SDK and Web Services. These tools allow
businesses to quickly develop and deploy mobile apps that connect directly with their existing
infrastructure.
9. Management Console: The AWS management console is a web-based interface that provides
users with a simple way to interact with and manage their AWS resources – essentially a place
where you can access and manage everything on the cloud. It provides a graphical view of all the
resources associated with an account, as well as tools for creating and configuring new resources.
Compared to traditional command- line interfaces, the AWS management console saves time
and makes it easier for users to get the most out of their AWS services. Not only that, but
your business gets access to 350+ free digital training courses through the AWS Academy,
covering topics such as cloud fundamentals, DevOps, security, and big data.
This means you can train your employees on how to use AWS, and in turn, help them become
more efficient at their jobs.
18
Course Code/Title: AD3V15 /Devops Unit: I
10. Scalability: With an on-demand service, businesses can quickly spin up new servers as needed
with just a few clicks. This makes it much easier to scale resources up or down as demand
changes, allowing businesses to save costs and maintain performance even during peak periods.
For example, if a business is expecting a sudden surge in traffic due to an advertising campaign
or seasonal event, they can easily add more capacity to their server infrastructure to handle the
increased load. Bru Textiles, a specialty textile company in Belgium, was able to quickly scale
its infrastructure by leveraging AWS. Bru Textiles went digital to grow and offer new services.
Embracing technology, they brought in digital twin technology to give their customers an idea of
the texture and essence of their physical fabrics.
AWS Applications
• Storage and Backup: Storage and backup are important for any Cloud Computing service. AWS
provides you with reliable storage services like Amazon Simple Storage Service to store large-
scale data and backup services like AWS Backup to take backups of this data, which is stored in
other AWS services. AWS stores the data in three different availability zones so that if one fails,
you can still access your data. This makes AWS storage reliable and easily accessible. Therefore,
companies with huge application data to store and backup securely can use AWS.
• Big Data: One of the biggest challenges faced by companies these days is Big Data. The
companies are struggling to store their large amounts of data using traditional methods. With
AWS Big Data storage services, they can manage to store their data even if the data limit
increases unexpectedly as AWS provides virtually unlimited data storage with scale-in and scale-
out options. AWS offers easy access and faster data retrieval as well. For data processing, it offers
services like EMR, with which the companies can easily set up, operate, and scale their big data.
Therefore, efficiently storing and managing Big Data is among the top AWS applications.
• Enterprise IT: AWS is a one-stop solution for any IT business. Many features of it such as
secure storage, scalability, flexibility, and elasticity support companies to innovate faster than
ever before. Using AWS for IT enterprises makes them profitable in terms of both money and
time. As AWS maintains its cloud architecture, it need not waste time and money on
professionals to do the same.
• Social Networking: Social networking is essential for businesses in the present-day scenario
where Digital Marketing is key, and it is easier with AWS. Companies can connect with
customers and stakeholders and communicate through social networking sites and develop their
business. Services like AWS social networking engine, which is powered by TurnKey
GNU/Linux (HVM) AMI stack, are used for performance and scalability to help companies
build a suitable social networking site and gain profits.
• Mobile Apps: Mobile applications are embedded with day-to-day life. With AWS, you have the
facility to create an app in your desired programming language. You can also keep up the
applications that are consistently accessible and solid with high compute, storage, database, and
application services. You can take advantage of AWS auto-scaling and managed relational
database service for the better performance of your apps.
• Websites: AWS offers a wide range of website hosting options to create the best website for
customers. Its services like Amazon Lightsail have everything, such as a virtual machine, SSD-
based storage, data transfer, DNS management, and a static IP, to launch a website in such a way
that the user can manage the website easily. Amazon EC2, AWS Lambda, Elastic Load
Balancing, AWS Amplify, Amazon S3, etc. also help users build reliable and scalable websites.
19
Course Code/Title: AD3V15 /Devops Unit: I
• Gaming: AWS has been serving many gaming studios. Combining Amazon EC2 and S3 services
with CloudFront enables gaming websites to deliver high-quality gaming experiences to their
customers regardless of location.
• Netflix
Netflix is an entertainment platform that started in the United States, but eventually, it expanded to many
countries and soon became popular. However, once Netflix confronted the scalability problem because of
the sudden increase in viewers. That made Netflix choose AWS services. Netflix reports that when it started
using AWS services like DynamoDB and Cassandra for its distributed databases, it could handle the data
easily. So, scalability is a great advantage of AWS. Netflix has adapted around 100,000 server instances
from AWS for computing and storage databases, analytics, recommendation engines, and video
transcoding as well.
• McDonald’s
McDonald’s is the world’s largest fast-food company that serves around 64 million people per day. The
growth of this company has gone to another level when it started home deliveries. By utilizing AWS
services, McDonald’s created a platform that integrates local restaurants with delivery partners such as
Uber Eats. Scalability is also a reason for the company to choose AWS services. Moreover, with AWS
Microservices Architecture, McDonald’s platform can scale 20,000 orders per second and integrate with
the global partners easily.
• Airbnb
Airbnb is an international online marketplace for rental homes. This platform connects people who are
looking for rental accommodation with those who want to rent out their houses. Quite soon, Airbnb became
unable to handle the constant streaming of data on the website from its customers. That is when it started
using Amazon EC2 service and Elastic Load Balancing, which distributes incoming traffic to multiple
Amazon EC2 instances. In this way, Airbnb could avoid traffic, and customers could use the online
platform without any disruption.
• Novartis
Novartis is the best example for AWS use cases in healthcare. Novartis is one of the world’s largest
healthcare companies that provides solutions for patients’ well-being. It adapted Amazon EC2 services
and built a platform using other services such as Amazon Simple Storage Service, Amazon Elastic Block
Store, and four availability zones. Data Analysts of Novartis are taking advantage of the AWS services
and still implementing new solutions for the patients.
• Expedia
Expedia is a worldwide online travel agency that has always focused on the constant development and
innovation of its platform to offer an extraordinary user experience for its clients. Since 2010, Expedia has
been using AWS services to build a standard deployment model for better infrastructure as AWS offers
the best data security through different availability zones.
• Samsung
If you are using Samsung mobile phones, then you may know about the Samsung app store. For setting up
the apps stacked in its store, the company started using AWS services. Using AWS app development
services, Samsung wanted to provide its customers with the facility to download the apps anywhere
without any network traffic.
• NASA
NASA (National Aeronautics and Space Administration) has always wondered about creating a library to
present people with all its achievements through pictures and videos of space. Later on, it created such
platforms, but because it had 10 different NASA centers, it couldn’t provide the best experience for
viewers. So, all it wanted was to create an easy-access platform for
20
Course Code/Title: AD3V15 /Devops Unit: I
people to search for and view images and videos. Then, NASA started adopting many services from AWS
to solve this problem, which included Amazon Elastic Compute Cloud, Elastic Load Balancing, Amazon
Simple Storage Service, Amazon Simple Queue Service, etc. Among these, Amazon S3 helped the
company store all the incoming data such as photos, videos, and audio files without any hassle.
• Facebook
Facebook, without a doubt, is a widespread social media platform. To build a scalable application,
Facebook used services such as Amazon Elastic Compute Cloud, Amazon Simple Storage Service, Amazon
Relational Database Service, Amazon SimpleDB, Amazon CloudFront, Amazon Simple Queue Service,
etc. Amazon RDS helps the platform to make it easy to set up, operate, and scale the database in the cloud.
The Important Cloud Services according to various categories that are provided by AWS are given below :
1. Compute
• Amazon EC2: Amazon Elastic Compute Cloud (Amazon EC2) is a web service that provides
secure, resizable compute capacity in the cloud. It allows organizations to obtain and configure
virtual compute capacity in the cloud. You can select from a variety of operating systems and
resource configurations like memory, CPU, and storage that are required for your
21
Course Code/Title: AD3V15 /Devops Unit: I
application. Amazon EC2 enables you to increase or decrease capacity within minutes. You can
use one or hundreds or even thousands of server instances simultaneously. Because this is all
controlled with web service APIs, your application can automatically scale itself up and down
depending on its needs. Amazon EC2 is integrated with most AWS services, such as Amazon
Simple Storage Service (Amazon S3), Amazon Relational Database Service (Amazon RDS), and
Amazon Virtual Private Cloud (Amazon VPC) to provide a complete, secure solution for
computing applications. Amazon EC2 is an example of Infrastructure as a Service(IaaS). EC2
delivers secure, reliable, cost-effective compute and high-performance compute infrastructure so
as to meet the needs of demanding businesses. Amazon EC2 is one of the easiest ways of
providing servers on AWS Cloud and also the access to Operating system.
• AWS Lambda: AWS Lambda is a serverless, event-driven compute service that allows you to
run code without managing servers. You pay only for the compute time you consume and there is
no charge when your code is not running. With AWS Lambda, you can run code for any type of
application with zero administration. Just upload your code, and Lambda takes care of everything
required to run and scale your code with high availability. You can set up your code to
automatically trigger from other AWS services, or you can call it directly from any web or
mobile app. But triggering Lambda is possible with over 200 AWS services. You can only pay
for what you have used. The compute time that you consume, you are needed to pay for it. You
just only need to upload your code and everything required to run will take care of by Lambda
and it automatically scales your code with high availability.
• AWS Elastic Beanstalk: AWS Elastic Beanstalk is a Platform as a Service that facilitates quick
deployment of your applications by providing all the application services that you need for your
application. Beanstalk is a plug- and-play platform that allows working with multiple
programming languages and environments. Elastic Beanstalk supports a large range of platforms
like Node js, Java, PHP, Python, and Ruby. So, you can develop your application to meet your
requirements and simply deploy it on Elastic Beanstalk. The main aim to use AWS Elastic
Beanstalk is to allow you to focus on the deployment and management of your applications. You
can simply upload your code, and AWS Elastic Beanstalk automatically handles the deployment,
from capacity provisioning, load balancing, and auto-scaling to application health monitoring. At
the same time, you retain full control over the AWS resources powering your application and can
access the underlying resources at any time.
2. Networking
• Amazon VPC: Amazon VPC is your network environment in the cloud. It allows you to create a
private network within the AWS cloud that uses many of the same concepts and constructs as an
on-premises network. Amazon VPC also gives you complete control of the network configuration.
Customers can define normal networking configuration items such as IP address ranges, subnet
creation, route table creation, network gateways, and security settings. Amazon VPC is an AWS
foundational service and integrates with numerous AWS services. For instance, Amazon EC2
instances are deployed into your
22
Course Code/Title: AD3V15 /Devops Unit: I
Amazon VPC. Similarly, Amazon Relational Database Service (Amazon RDS) database
instances deploy into your Amazon VPC, where the database is protected by the structure of
the network just like your on-premises network. You can easily launch AWS resources into a
virtual network by Amazon Virtual Private Cloud. An isolated virtual network environment in
the AWS cloud is created by Amazon VPC.
• Amazon Route 53: Amazon Route 53 is a highly available and scalable cloud Domain Name
System (DNS) web service. It is designed to give developers and businesses an extremely reliable
and cost-effective way to route end users to Internet applications by translating human-readable
names, such as www.geeksforgeeks.com, into the numeric IP addresses that computers use to
connect to each other. Amazon Route 53 is fully compliant with IPv6 as well.
3. Storage
• Amazon S3 (Simple Storage Service): Amazon Simple Storage Service (Amazon S3) is object
storage with a simple web service interface to store and retrieve any amount of data from
anywhere on the web. It is designed to provide an infinite amount of storage and it is delivered
with 99.999999999% durability. You can use Amazon S3 as primary storage for cloud-native
applications as a target for backup and recovery and disaster recovery. It offers industry-leading
scalability, data availability, security, and
performance. It’s simple to move large volumes of data into or out of Amazon S3 with Amazon’s
cloud data migration options. Once data is stored in Amazon S3, it can be automatically tiered
into lower cost, longer-term cloud storage classes like Amazon S3 Standard – Infrequent Access
and Amazon Glacier for archiving.
• Amazon Glacier: Amazon Glacier is a secure, durable, and extremely low- cost storage
service for data archiving and long-term backup. Data stored in Amazon Glacier takes several
hours to retrieve, which is why it’s ideal for archiving. The fastest access to your archive data
is via Amazon Glacier.
4. Databases
• Amazon RDS (Relational Database Service): Amazon Relational Database Service (Amazon
RDS) makes it easy to set up, operate, and scale a relational database in the cloud. It provides
cost-efficient and resizable capacity while managing time-consuming database administration
tasks, freeing you up to focus on your applications and business. You can find Amazon RDS is
also available on several database instance types – optimized for memory, performance, or I/O.
Amazon RDS provides you with six familiar database engines to choose from, including Amazon
Aurora, PostgreSQL, MySQL, MariaDB, Oracle, and Microsoft SQL Server.
• Amazon DynamoDB (Non-Relational Database): Amazon DynamoDB is a fast and flexible
NoSQL database service for all applications that need consistent, single-digit millisecond latency
at any scale. It is a fully managed database and supports both document and key-value data
models. When you create a database table that can store and retrieve any amount of data you can
simply use Amazon DynamoDB that will serve any level of requested traffic. Its flexible data
model and reliable performance make it a great fit for mobile, web, gaming, Internet of Things
(IoT), and many other applications. DynamoDB provides many features like
• built-in security
23
Course Code/Title: AD3V15 /Devops Unit: I
• backups
• automated multi-region replication
• in-memory caching
• data export tools.
The following are the components that make up the AWS infrastructure:
o Availability Zones
o Region
o Edge locations
o Regional Edge Caches
o An availability zone is a facility that can be somewhere in a country or in a city. Inside this facility,
i.e., Data Centre, we can have multiple servers, switches, load balancing, firewalls. The things
which interact with the cloud sits inside the data centers.
o An availability zone can be a several data centers, but if they are close together, they are counted
as 1 availability zone.
Region
24
Course Code/Title: AD3V15 /Devops Unit: I
o A region is a collection of data centers which are completely isolated from other regions.
o A region consists of more than two availability zones connected to each other through links.
o Availability zones are connected through redundant and isolated metro fibers.
Edge Locations
o Edge locations are the endpoints for AWS used for caching content.
o Edge locations consist of CloudFront, Amazon's Content Delivery Network (CDN).
o Edge locations are more than regions. Currently, there are over 150 edge locations.
o Edge location is not a region but a small location that AWS have. It is used for caching the content.
o Edge locations are mainly located in most of the major cities to distribute the content to end users
with reduced latency.
o For example, some user accesses your website from Singapore; then this request would be
redirected to the edge location closest to Singapore where cached data can be read.
o AWS announced a new type of edge location in November 2016, known as a Regional Edge Cache.
o Regional Edge cache lies between CloudFront Origin servers and the edge locations.
o A regional edge cache has a large cache than an individual edge location.
o Data is removed from the cache at the edge location while the data is retained at the Regional
Edge Caches.
o When the user requests the data, then data is no longer available at the edge location. Therefore,
the edge location retrieves the cached data from the Regional edge cache instead of the Origin
servers that have high latency.
25
Course Code/Title: AD3V15 /Devops Unit: I
Cloud computing is the use of hardware and software components in an off-premises location to deliver a
service to a network. Users can access files and applications from any device that can access the internet.
• Cloud providers can pull the computing resources to provide services to multiple customers
with the help of a multi-tenant model
• Users can access cloud data and upload it on the cloud from any device with a solid
internet connection
• Cloud environments can be modified according to the user's requirements and is easily
accessible
• It offers pay-as-you-go pricing, meaning you only pay for the resources you use
1. Infrastructure as a Service: IaaS delivers virtualized computing resources over the Internet.
Users can rent virtual machines, storage, and networking infrastructure, allowing for easy
scalability without investing in physical hardware. Examples include AWS EC2 and
Azure Virtual Machines.
2. Platform as a Service: PaaS offers a robust platform for developers to build, deploy, and
manage apps without worrying about the underlying infrastructure. It simplifies application
development and deployment, with services like Google App Engine and Heroku leading the way.
3. Software as a Service: SaaS offers software applications on a subscription basis, accessible via a
web browser. Users don't need to install or maintain software locally, making it ideal for
collaboration tools (e.g., Microsoft 365, Google Workspace) and CRM systems (e.g., Salesforce).
4. Function as a Service: FaaS allows developers to execute code responding to events without
managing servers. It's highly scalable and cost-efficient, exemplified by AWS Lambda and
Azure Functions. FaaS is also known as serverless computing.
5. Container as a Service: CaaS enables the deployment and management of containerized
applications using orchestration tools like Kubernetes. It provides portability and scalability for
applications across different cloud environments.
26
Course Code/Title: AD3V15 /Devops Unit: I
It is a cloud
It is a service model It is a service model in
computing model that
that provides cloud computing that
delivers tools that are
Model virtualized computing hosts software to make
used for the
resources over the it available to clients.
development of
internet.
applications.
There is no
Some knowledge is requirement about
Technical It requires technical
required for the basic technicalities
understanding. knowledge.
setup. company handles
everything.
It is popular among It is popular among
It is popular among developers who focus consumers and
Popularity developers and on the companies, such as
researchers. development of apps and file sharing, email, and
scripts. networking.
It has about a 27 % rise
It has around a 12% It has around 32% in the cloud computing
Percentage rise
increment. increment.
model.
27
Course Code/Title: AD3V15 /Devops Unit: I
Enterprise AWS virtual private
Microsoft Azure. IBM cloud analysis.
services. cloud.
Outsourced cloud Force.com,
services. Salesforce Gigaspaces. AWS, Terremark
Operating System,
Runtime, Data of the
User Controls Nothing
Middleware, and application
Application data
It is highly scalable to It is highly scalable to
It is highly scalable suit the different suit the small, mid and
Others
and flexible. businesses according enterprise level
to resources. business
• Compute
• Networking
• Storage and Databases
• Big Data
• Machine Learning
• Identity & Security
• Management and Developer Tools
1. Compute: GCP provides a scalable range of computing options you can tailor to match your
needs. It provides highly customizable virtual machines. and the option to deploy your code
directly or via containers.
2. Networking: The Storage domain includes services related to networking, it includes the
following services
3. Storage and Databases: The Storage domain includes services related to data storage, it includes
the following services
28
Course Code/Title: AD3V15 /Devops Unit: I
4. Big Data: The Storage domain includes services related to big data, it includes the following
services
• Google BigQuery
• Google Cloud Dataproc
• Google Cloud Datalab
• Google Cloud Pub/Sub
5. Cloud AI: The Storage domain includes services related to machine learning, it includes the
following services
6. Identity & Security: The Storage domain includes services related to security, it includes the
following services
7. Management Tools: The Storage domain includes services related to monitoring and
management, it includes the following services
• Stackdriver
• Monitoring
• Logging
• Error Reporting
• Trace
• Cloud Console
8. Developer Tools: The Storage domain includes services related to development, it includes
the following services
• Cloud SDK
• Deployment Manager
• Cloud Source Repositories
• Cloud Test Lab
AZURE
Azure is Microsoft’s cloud platform, just like Google has its Google Cloud and Amazon has its Amazon
Web Service or AWS.000. Generally, it is a platform through which we can use Microsoft’s resources.
For example, to set up a huge server, we will require huge investment, effort, physical space, and so on.
In such situations, Microsoft Azure comes to our rescue. It will provide us with virtual machines, fast
processing of data, analytical and monitoring tools, and so on to make
29
Course Code/Title: AD3V15 /Devops Unit: I
our work simpler. The pricing of Azure is also simpler and cost-effective. Popularly termed as “Pay As
You Go”, which means how much you use, pay only for that.
30
Course Code/Title: AD3V15 /Devops Unit: I
10. Security + Identity: Includes Security Center, Azure Active Directory, Key Vault, and
Multi-Factor Authentication Services.
11. Developer Tools: Includes cloud development services like Visual Studio Team Services,
Azure DevTest Labs, HockeyApp mobile app deployment and monitoring, Xamarin cross-
platform mobile development, and more.
31
Course Code/Title: AD3V15 /Devops Unit: I
Difference between AWS (Amazon Web Services), Google Cloud, and Azure
Pricing Per hour — rounded Per minute — rounded Per minute — rounded
up. up up.
Models On demand, reserved spot. On demand — Per minute- rounded up
sustained use. commitments(Pre-paid or
monthly)
GIT
Git is a distributed version control system (DVCS) that helps manage and track changes in source code
during software development. It was created by Linus Torvalds in 2005 and has become one of the most
widely used version control systems in the software development industry.
Some key concepts and features of Git:
• Version Control: Git allows developers to keep track of changes made to their code over time.
This includes modifications, additions, and deletions of files.
• Distributed System: Git is a distributed version control system, meaning that each developer
has a complete copy of the entire repository, including its full history. This allows developers to
work independently and merge their changes when necessary.
• Branching: Git enables developers to create branches, which are essentially separate lines of
development. This allows for the parallel development of features or bug fixes without affecting
the main codebase.
32
Course Code/Title: AD3V15 /Devops Unit: I
• Merging: Git provides tools for merging changes from one branch into another. This is essential
when multiple developers are working on different branches and need to bring their changes
together.
• History Tracking: Git maintains a complete history of changes made to the codebase. Developers
can view, revert, or analyze changes made over time.
• Remote Repositories: Git supports remote repositories, allowing developers to collaborate with
others by pushing and pulling changes to and from a shared repository. Platforms like GitHub,
GitLab, and Bitbucket provide hosting services for Git repositories.
• Staging Area: Git uses a staging area (also known as the index) to prepare and review changes
before committing them to the repository. This allows developers to selectively include or exclude
specific changes.
• Open Source: Git is an open-source tool, and its source code is freely available for
modification and distribution.
Various GIT Components:
Git is composed of several key components that work together to enable version control and collaborative
development. Here are the main components of Git:
• Repository (Repo): A repository is a directory or storage space where your project and its
version history are stored. It contains all the files and directories associated with your project,
along with the metadata and configuration information.
• Working Directory: The working directory is the directory on your local machine where you
manipulate files and make changes to your project. It is essentially your local copy of the
repository.
• Index (Staging Area): The index, also known as the staging area, is a middle ground where
changes are prepared before being committed to the repository. It allows you to selectively stage
changes, which means you can choose which modifications to include in the next commit.
• Commit: A commit is a snapshot of the changes made to the files in the repository. It represents a
specific point in the project's history and is accompanied by a commit message that describes the
changes.
• Branch: A branch is a parallel line of development within a repository. It allows developers to
work on different features or bug fixes simultaneously without affecting the main codebase.
Branches can be merged to incorporate changes into other branches.
• Head: HEAD is a reference to the latest commit in the currently checked-out branch. It
essentially points to the tip of the branch you are currently on.
• Remote: A remote is a version of the repository stored on a different server. Git supports
collaboration by allowing developers to push and pull changes between their local repository and
remote repositories. Platforms like GitHub, GitLab, and Bitbucket are examples of remote
repositories.
• Clone: Cloning is the process of creating a copy of a remote repository on your local machine.
This allows you to start working on your own copy of a project.
• Fetch: The fetch operation retrieves changes from a remote repository but does not
automatically merge them into your working directory. It is useful for reviewing changes
before deciding to merge.
• Pull: Pull is a combination of fetch and merge. It retrieves changes from a remote repository
and automatically merges them into your working directory.
33
Course Code/Title: AD3V15 /Devops Unit: I
Push: Push is the operation that sends your committed changes to a remote repository, making
them accessible to others.
Git workflow
Git Flow is a structured branching model designed for projects with well- defined release cycles and a need
for strict quality control.
Branches:
The branching model described is commonly known as the Gitflow Workflow. It's a branching strategy that
defines a strict branching model
34
Course Code/Title: AD3V15 /Devops Unit: I
designed to facilitate collaboration and streamline the release process. Let's go into detail about each branch:
1. Master Branch: The `master`branch represents the main codebase and contains production-
ready code. This branch is typically stable and should only include thoroughly tested and
approved changes. Each commit on the `master` branch represents a new version or release of
the software.
2. Develop Branch: The `develop` branch is an integration branch where various feature branches
are merged. It serves as a staging area for testing new features and ensuring they work well
together before merging into the `master` branch. This branch may have ongoing development
work and is not necessarily always in a production- ready state.
3. Feature Branches: Feature branches are created for developing new features or implementing
changes. These branches are typically based on the `develop`branch. Once a feature is complete,
the branch is merged back into the `develop` branch. Feature branches allow developers to work
on specific tasks without affecting the main codebase.
4. Release Branch: The `release` branch is created when the `develop` branch reaches a point where
it is ready for a production release. This branch is used for final testing, bug fixes, and preparing
the code for deployment. No new features should be added to the release branch. Once the release
is deemed stable, it is merged into both the `master` branch and the `develop` branch.
5. Hotfix Branch: The `hotfix` branch is used to quickly address critical issues or bugs in the
production code. It is created directly from the `master` branch. Hotfixes are intended to be
small and focused on resolving the specific issue at hand. Once the hotfix is
35
Course Code/Title: AD3V15 /Devops Unit: I
• The release branch is merged into both `master` and `develop` once it's stable.
• The hotfix is merged into both `master` and `develop`to keep both branches in sync.
• This Gitflow Workflow helps maintain a structured development process, ensuring that features are
developed, tested, and released in a controlled manner.
Example Scenario:
• Imagine you’re working on a large software project with a team of 10 developers. You have a
major release planned for every six months.
• Once the feature is complete, it’s merged into the “develop” branch for integration and testing.
• As the release date approaches, you create a “release/v1.0” branch to freeze code for the
upcoming release.
GIT INSTALLATION
36
Course Code/Title: AD3V15 /Devops Unit: I
• Run the following commands to configure your Git username and email using the following
commands, replacing Emma's name with your own. These details will be associated with any
commits that you create:
Some basic Git commands along with their syntax and examples:
• Initialize a Repository:
Syntax: `git init` Example:
`git init`
• Clone a Repository:
Syntax: `git clone <repository_url>`
• Commit Changes:
Syntax: `git commit -m "Commit message"`
Example: `git commit -m "Add new feature"`
• Switch to a Branch:
Syntax: `git checkout <branch_name>`
Example: `git checkout feature-branch` OR
37
Course Code/Title: AD3V15 /Devops Unit: I
Syntax: `git switch -c <new_branch_name>` (Git version 2.23 and later) Example: `git
switch -c new-feature`
38
Course Code/Title: AD3V15 /Devops Unit: I
GITHUB
GitHub is an increasingly popular programming resource used for code sharing. It's a social networking
site for programmers that many companies and organizations use to facilitate project management and
collaboration. According to statistics collected in October 2020, it is the most prominent source code host,
with over 60 million new repositories created in 2020 and boasting over 56 million total developers.
GitHub is a Git repository hosting service that provides a web-based graphical interface. It is the world’s
largest coding community. Putting a code or a project into GitHub brings it increased, widespread
exposure. Programmers can find source codes in many different languages and use the command-line
interface, Git, to make and keep track of any changes. GitHub helps every team member work together on
a project from any location while facilitating collaboration. You can also review previous versions created
at an earlier point in time.
GitHub’s Features?
1. Easy Project Management: GitHub is a place where project managers and developers come
together to coordinate, track, and update their work so that projects are transparent and stay on
schedule.
2. Increased Safety With Packages Packages can be published privately, within the team, or
publicly to the open-source community. The packages can be used or reused by downloading
them from GitHub.
3. Effective Team Management GitHub helps all the team members stay on the same page and
organized. Moderation tools like Issue and Pull Request Locking help the team to focus on the
code.
4. Improved Code Writing Pull requests help the organizations to review, develop, and propose
new code. Team members can discuss any implementations and proposals through these before
changing the source code.
5. Increased Code Safety GitHub uses dedicated tools to identify and analyze vulnerabilities to
the code that other tools tend to miss. Development teams everywhere work together to secure
the software supply chain, from start to finish.
6. Easy Code Hosting All the code and documentation are in one place. There are millions of
repositories on GitHub, and each repository has its own tools to help you host and release code.
39
Course Code/Title: AD3V15 /Devops Unit: I
When it comes to hosting Git repositories, various platforms provide a robust infrastructure for
collaborative development, version control, and project management. Choosing the right hosting service
depends on factors like ease of use, collaboration features, and integration capabilities. Here are some
popular Git hosting services widely utilized in the software development community:
1. GitHub: GitHub stands out as one of the most prevalent Git hosting platforms, offering a
user-friendly interface, powerful collaboration features, and seamless integration with various
tools. It serves as an ideal choice for open-source projects, private repositories, and team
collaboration.
2. GitLab: GitLab is a comprehensive web-based Git repository manager that not only provides
source code management but also includes features like continuous integration. It caters to both
cloud-based and self-hosted solutions, giving users flexibility in hosting their repositories.
3. Bitbucket: Owned by Atlassian, Bitbucket is another popular Git repository hosting service.
Supporting both Git and Mercurial repositories, it offers features like code collaboration, issue
tracking, and continuous integration. Bitbucket is often preferred by teams using other Atlassian
tools such as Jira and Confluence.
4. GitKraken Glo Boards: GitKraken Glo Boards is an integrated task and issue tracking
service linked with GitKraken, a Git client. This platform allows teams to manage tasks
directly associated with their Git repositories and provides a visual approach to monitoring
project progress.
5. SourceForge: SourceForge, with a long history, hosts open-source software projects and offers
version control, bug tracking, and project management tools. While not as prominent as some
other options, it remains a viable choice for numerous projects.
6. AWS CodeCommit: As part of Amazon Web Services (AWS), AWS CodeCommit is a fully
managed source control service. It seamlessly integrates with other AWS services and provides
a secure and scalable environment for hosting Git repositories.
Selecting the most suitable Git hosting service depends on your team's requirements, project size, and
preferences for cloud-based or self-hosted solutions. Each platform has its strengths, catering to specific
use cases within the software development landscape.
Git and GitHub are related concepts but serve different purposes in the context of version control and
collaborative software development.
Git: Git is a distributed version control system for tracking changes in source code during software
development. It is designed for coordinating work among programmers, but it can be used to track changes
in any set of files. Its goals include speed, data integrity, and support for distributed, non-linear workflows.
GitHub: GitHub is a web-based Git repository hosting service, which offers all of the distributed revision
control and source code management (SCM) functionality of Git as well as adding its own features.
40
Course Code/Title: AD3V15 /Devops Unit: I
5 Git is focused on version control and code GitHub is focused on centralized source
sharing. code hosting.
6 Git is a version control system to manage GitHub is a hosting service for Git
source code history. repositories.
41