NASA-AMMOS / slim

Software Lifecycle Improvement & Modernization
https://nasa-ammos.github.io/slim/
Apache License 2.0
26 stars 9 forks source link

[New Best Practice Guide]: DevOps Integration Process Improvement Guide #157

Open ddalton-swe opened 6 months ago

ddalton-swe commented 6 months ago

Checked for duplicates

Yes - I've already checked

Describe the needs

DevOps Integration Process Improvement Guide

Overview

We aim to improve our overall software quality by integrating DevOps. This guide will be a superset guide focusing on implementing CI/CD, continuous testing, and other essential DevOps practices.

Goals

Steps:

  1. Guide projects on how to implement Continuous Integration (CI).
  2. Guide projects on how to Integrate Continuous Testing (CT) to ensure code quality and catch issues early.
  3. Guide projects on implementing Continuous Delivery (CD) to keep software deployment-ready.
  4. Guide projects on utilizing infrastructure as code (IaC) for consistent and repeatable deployments.
  5. Guide projects on implementing monitoring and logging to provide visibility into system performance and issues.
  6. Guide projects on utilizing DORA metrics to measure their DevOps performance. Listed here
  7. Guide projects on fostering a culture of collaboration and shared responsibility between development and operations teams.
  8. Guide projects on setting up Continuous Deployment (CD) to automate the release of software to production.

Additional Resources

riverma commented 6 months ago

@ddalton-swe - thank you for putting this together! I think what you're proposing is sorely needed.

Guide projects on how to implement Continuous Integration (CI).

We can link to the existing CI guide on this. I think for the purposes of this ticket, we should consider updating the CI guide to be more action-oriented (i.e. have a piece of automation proposed or a template) rather than theoretical. We can chat with @jpl-jengelke about this!

Guide projects on how to set up Continuous Deployment (CD) to automate the release of software to production.

Yes! We need this. Here's the ticket for this topic which we could seek to implement as part of this ticket.

Guide projects on how to Integrate continuous testing to ensure code quality and catch issues early.

We can link to @yunks128 's nearly finished guide on this: https://github.com/NASA-AMMOS/slim/pull/144

Guide projects on how to foster a culture of collaboration and shared responsibility between development and operations teams.

Sounds like good material for a DevOps guide. I would encourage you to think about how we can infuse recommendations as code as much as possible. For example, automatically adding some key team members to every PR review, or having set GitHub teams for OPS / DEV etc. that can be tagged easily during discussions.

Guide projects on how to utilize infrastructure as code (IaC) for consistent and repeatable deployments.

Perhaps this could come in the form of a devops-frameworks.md (much like the continuous testing frameworks file) that lists recommended tools and frameworks that are compatible with your vision.

Guide projects on how to implement monitoring and logging to provide visibility into system performance and issues.

Interesting. Possibly a new guide that recommends a standardized approach via a set of possible logging tools to choose from?

Guide projects on how to use the DORA metrics to measure their DevOps performance.

Recommend linking to your Metrics guide.