Tuesday, 26 October 2021

DevOps and SRE and DevSeCOps

DevOps

DevOps is a set of practices that combines software development (Dev) and IT operations (Ops). It aims to shorten the systems development life cycle and provide continuous delivery with high software quality. DevOps is complementary with Agile software development; several DevOps aspects came from the Agile methodology.

 

As DevOps is intended to be a cross-functional mode of working, those who practice the methodology use different sets of tools—referred to as "toolchains"—rather than a single one These toolchains are expected to fit into one or more of the following categories, reflective of key aspects of the development and delivery process.

·        Coding – code development and review, source code management tools, code merging.

·        Building – continuous integration tools, build status.

·        Testing – continuous testing tools that provide quick and timely feedback on business risks.

·        Packaging – artifacts repository, application pre-deployment staging.

·        Releasing – change management, release approvals, release automation.

·        Configuring – infrastructure configuration and management, infrastructure as code tools.

·        Monitoring – applications performance monitoring, end-user experience.








Benefits of DevOps

DevOps reduces the complexity of managing software engineering projects through collaboration and automation. Some benefits of adopting DevOps include:

·        Ensure quicker and frequent delivery of application features that improve customer satisfaction

·        Create a balanced approach to managing an SDLC for enhanced productivity of software teams

·        Innovate faster by automating repetitive tasks

·        Remediate problems quicker and more efficiently

·        Minimize production costs by cutting down errors in maintenance and infrastructure management

SRE (Site-reliability engineering)

A site reliability engineer (SRE) monitors and helps stabilize services in production, sets and maintains acceptable performance and availability thresholds (service level objectives), writes code that automates repetitive tasks (toil), and works on-call shifts responding to alerts.

SRE essentially creates a new role: the site reliability engineer. An SRE is tasked with ensuring seamless collaboration between IT operations and development teams through the enhancement and automation of routine processes. Some core responsibilities of an SRE include:

·        Developing, configuring, and deploying software to be used by operations teams

·        Handling support escalation issues

·        Conducting and reporting on incident reviews

·        Developing system documentation

·        Change management

·        Determining and validating new features and updates




 

SRE tools

SRE teams rely on the automation of routine processes using tools and techniques that standardize operations across the software’s lifecycle. Some tools and technologies that support Site Reliability Engineering include:

·        Containers package applications in a unified environment across multiple deployment platforms, enabling cloud-native development.

·        Kubernetes is a popular container orchestrator that can effectively manage containerized applications running on multiple environments.

·        Cloud platforms allow you to provision scalable, flexible, and reliable applications in highly distributed environments. Popular platforms include Microsoft Azure, Amazon AWS, and Google Cloud.

·        Project planning & management tools allow you to manage IT operations across distributed teams. Some popular tools include JIRA and Pivotal Tracker.

·        Source control tools such as Subversion and GitHub erase boundaries between developers and operators, allowing for seamless collaboration and release of application delivery. Source control tools include Subversion and GitHub.

 

SRE vs DevOps

Both methodologies enforce minimal separation between Development and Operations teams. But we can sum up the key difference as this: DevOps focuses more on a cultural and philosophical shift, and SRE is more pragmatic and practical.

This highlights various differences in how the concepts operate, including:

 

·        Essence: SRE was developed with a narrow focus: to create a set of practices and metrics that allow for improved collaboration and service delivery. DevOps, on the other hand, is the collection of philosophies that enable the mindset of culture and collaboration between siloed teams.

·        Goal: SRE and DevOps aim to bridge the gap between development and operations, though SRE involves prescriptive ways of achieving reliability, DevOps works as a template that guides collaboration.

·        Focus: SRE mainly focuses on enhancing system availability and reliability DevOps focuses on speed of development and delivery while enforcing continuity.

·        Team structure: SRE is composed of site reliability engineers who have a background in both operations and development. DevOps teams include a variety of roles, including QA experts, developers, engineers, SREs and many others.



DevSecOps

DevSecOps short for development, security, and operations—automates the integration of security at every phase of the software development lifecycle, from initial design through integration, testing, deployment, and software delivery

What is the difference between DevOps and DevSecOps?

A DevOps engineer thinks about things like how he or she can deploy updates to an app as efficiently as possible with minimal disruption to the user experience. ... DevSecOps emphasizes that developers should create code with security in mind and aims to solve the issues with security that DevOps doesn't address





The Difference Between a Program Manager and a Project Manager

The Difference Between a Program Manager and a Project Manager A program manager manages multiple projects, and sometimes multiple program...