Good Software Delivery
Good Software Delivery (GSD) is the name for a set of best practices that help teams deliver high-quality software to production in minutes, not months.
While the term GSD may be new for you, you may already be familiar with the core tenants of GSD that have formed as best practices for delivering software over the last two decades.
- Developer Effectiveness
- DevOps as a culture
- Product thinking
- Extreme Programming, Continuous Integration, Continuous Delivery
By combinding these approaches for software delivery into a repeatable patten I've seen great success and growth across individuals, teams and organizations:
- I've been able to apply GSD to multiple client engagements, both at the team level and scaling to many teams through organization-wide programs (driven by communities of motivated people).
- Internally, my teams apply the same principles which we practice and refine to ensure we're also performing at our best
- I've had the pleasure to see my team members move to other teams and share the same practices and success internally and with other clients
- When team members moved to different companies, they've reported success in implementing these practices in their new organization
What is Good Software Delivery?
Good Software Delivery is about establishing a system of software delivery to production that encompasses all of the security and compliance requirements checks in an automated fashion that can be run and reported on earlier in the SDLC before the final delivery to production.
The intent is to increase confidence in releases by trusting development teams to run pipeline automation that audits their changes but then verifying via automated reports when ready for production. - Paul Kordes
In typical scenarios, although software goes through various levels of testing and packaging before delivery to production, there are many additional steps by other siloed departments such as security and compliance before it is deemed truly fit for deployment. The actual requirements to pass these screenings is often only known by the specific department that is directly responsible for doing large amounts of manual inspections and auditing. The end result of this process is that a Sprint is finished and the Engineering teams believes something is ready for deployment and has already moved on to new work only to find out that it did not pass security or compliance screening and changes will need to be made. The result is slow and frustrating to both teams as there is very little understanding of the overall process.
Leveraging GSD brings visibility and early detection of issues such that the software being delivered can be relied on to be truly complete and ready for deployment.
Learn about Good Software Delivery
Below are articles, code repositories, interactive learning modules, and demo apps using GSD practices.
3 Musketeers for an awesome developer experience
One of the core principals behind Good Software Delivery is ensuring Consistency, Control, and Confidence in the automation that developers use every day, while still maintaining a high degree of autonomy and trust.
This is made possible by implementing a pattern called 3 Musketeers in every pipeline.
3 Musketeers is made up of 3 technologies. They are
make
,docker
anddocker-compose
. The 3 main pillars are Consistency, Control and Confidence.
James Noonan has produced a set of 3 musketeers katacoda scenarios to introduce you to the 3 Musketeers, so you can take advantage of it in your own pipelines.
- 3 Musketeers Intro - Test, build, and deploy your apps from anywhere, the same way
- Env Variables - Make, Docker Compose & Env Vars
- Convert Python to 3 Musketeers (Taking a single python file and implement the 3musketeers patterns)
- Java to 3 Musketeers (Starting out with a gradle spring boot application and implementing 3muskteers patterns)
GSD Hello World Demo - Trust and Verify
https://github.com/contino/gsd-hello-world
The GSD "Hello World" app is written in Golang and wrapped in Docker via 3 Musketeers.
This repo is a demo of how you might implement a set of concepts that make up a "Trust and Verify" pipeline, which is a concept within the practice of GSD. This repo is a learning tool that can help you explore the concepts of GSD & Trust and Verify. The intention is to offer you an implementation that's simple enough for you to get hands-on quickly, with the opportunity to extend it for other use cases, or simply take the learnings into your existing software development for the concepts that apply to your use case.
GSD Hello World (Golang)- Trust and Verify Pipeline is an interactive learning module shows the capabilities of the GSD - Trust and Verify Pipeline.