Accelerate DevOps with GitHub
Enhance Software Delivery Performance with GitHub Issues, Projects, Actions, and Advanced Security
This is the companion repository for my book Accelerate DevOps with GitHub. You can find all hands-on labs and other examples from the book here. I also provide all the links and references from the chapters.
Part 1: Lean Management and Collaboration
In Part 1 you will learn how to reduce ballast from your development process and move to a lean and collaborative way of working that allows your teams to accelerate their value delivery. You’ll learn how to use GitHub to work together from everywhere effectively and use work insights and the right metrics to optimize your engineering productivity.
Chapter 1: Metrics that Matter
In this chapter I explain how to measure engineering velocity and developer productivity and how to make your DevOps acceleration measurable.
The following topics will are covered in this chapter:
- Why Accelerate?
- Engineering Velocity
- High Performance Companies
- Measuring metrics that matter
- The SPACE of Developer Productivity
- Objectives and Key-Results
References and Links
- Srivastava S., Trehan K., Wagle D. & Wang J. (April 2020). [Developer Velocity: How software excellence fuels business performance]( https://www.mckinsey.com/industries/technology-media-and-telecommunications/our-insights/developer-velocity-how-software-excellence-fuels-business-performance).
- Forsgren N., Smith D., Humble J., Frazelle J. (2019). [DORA State of DevOps Report](https://www.devops-research.com/research.html#reports)
- Brown A., Stahnke M. & Kersten N. (2020). [2020 State of DevOps Report](https://puppet.com/resources/report/2020-state-of-devops-report/)
- Forsgren N., Humble, J., & Kim, G. (2018). Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations (1st ed.) [E-book]. IT Revolution Press.
- Coupland M (2021). DevOps Adoption Strategies: Principles, Processes, Tools, and Trends: Embracing DevOps through effective culture people, and processes (1st ed.) [E-book]. Packt.
- Dina Graves Portman (2020). [Are you an Elite DevOps performer? Find out with the Four Keys Project]( https://cloud.google.com/blog/products/devops-sre/using-the-four-keys-to-measure-your-devops-performance)
- Forsgren N., Storey M.-A., Maddila C., Zimmermann T., Houck B., & Butler J. (2021). [The SPACE of Developer Productivity]( https://queue.acm.org/detail.cfm?id=3454124)
- Grove, A. S. (1983). High Output Management (1st ed.). Random House Inc.
- Grove, A. S. (1995). High Output Management (2nd ed.). Vintage.
- Doerr, J. (2018). Measure What Matters: OKRs: The Simple Idea that Drives 10x Growth. Portfolio Penguin
Chapter 2: Plan, Track, and Visualize Your Work
In this chapter we will focus on organizing your work inside your team and apply Lean Principles. You’ll learn how GitHub Issues and Projects can help you to simplify your flow of work.
In this chapter we will cover the following topics:
- Work is work
- Unplanned work and rework
- Visualizing your work
- Limiting work in progress (WIP)
- GitHub issues, labels, and milestones
- GitHub projects
Highlights:
References and Links
- Tregubov A., Rodchenko N., Boehm B. & Lane J.A. (2017). [Impact of Task Switching and Work Interruptions on Software Development Processes]( https://www.researchgate.net/publication/317989659_Impact_of_task_switching_and_work_interruptions_on_software_development_processes)
- Weinberg G.M. (1991), Quality Software Management: Systems Thinking (1st ed.). Dorset House
- [GitHub issues](https://guides.github.com/features/issues/) and [about GitHub issues](https://docs.github.com/en/issues/tracking-your-work-with-issues/about-issues)
- [Markdown](https://guides.github.com/features/mastering-markdown/)
- [Issue templates](https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/about-issue-and-pull-request-templates)
- [GitHub projects](https://docs.github.com/en/issues/trying-out-the-new-projects-experience/about-projects)
- [GitHub Jira integration](https://github.com/atlassian/github-for-jira)
- [GitHub Azure Boards integration](https://docs.microsoft.com/en-us/azure/devops/boards/github)
Chapter 3: Teamwork and Collaborative Development
A high performing team is more than the sum of its members, and it takes a high performing team to build products that people love.
In this chapter you’ll learn how to set up your team for high collaborative development using pull requests. You’ll learn what a pull request is and what features can help you to get a good code review workflow for your team.
The following are the core topics that we will cover in this chapter:
- Software development is a team sport
- The heart of collaboration: the pull request
- Propose changes using pull requests
- Pull request reviews
- Finishing pull request
- Best practices for code reviews
Hands-on exercices: ✋
- Create a pull request
- Review Changes
References and Links
Link to the video on [how GitHub uses GitHub to collaborate](https://youtu.be/HyvZO5vvOas?t=3189).
- Coyle D. (2018). The Culture Code: The Secrets of Highly Successful Groups (1st ed.). Cornerstone Digital
- Kim G., Humble J., Debois P. & Willis J. (2016). The DevOps Handbook: How to Create World-Class Agility, Reliability, and Security in Technology Organizations (1st ed.). IT Revolution Press
- Scott Prugh (2014), [Continuous Delivery](https://www.scaledagileframework.com/guidance-continuous-delivery/).
- Chacon S. & Straub B. (2014). [Pro Git (2nd ed.)](https://git-scm.com/book/de/v2). Apress.
- Kaufmann M. (2021), Git für Dummies (1st ed., German). Wiley-VCH
- [Git](https://en.wikipedia.org/wiki/Git)
- [Pull requests](https://docs.github.com/en/github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests)
- [Code owners](https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github/about-code-owners)
- [Branch protection](https://docs.github.com/en/github/administering-a-repository/defining-the-mergeability-of-pull-requests/about-protected-branches#about-branch-protection-rules)
- [Code review assignments](https://docs.github.com/en/organizations/ organizing-members-into-teams/managing-code-review-assignment-for-your-team)
- [Auto-Merge](https://docs.github.com/en/github/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/automatically-merging-a-pull-request)
- [Pull request reviews](https://docs.github.com/en/github/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews)
Chapter 4: Asynchronous Work: Collaborate from Anywhere
In this chapter we’ll focus on synchronous and asynchronous work and how you can use the benefits of asynchronous workflows for a better collaboration in distributed, remote, and hybrid teams and a better cross-team collaboration.
The following are the topics that will be covered in the chapter:
- Comparing synchronous and asynchronous work
- Distributed teams
- Cross-team collaboration
- GitHub Discussions
- GitHub Pages and Wikis
- Working from everywhere with GitHub Mobile
Highlights:
References and Links
- [History of communication 1](https://en.wikipedia.org/wiki/History_of_communication)
- [History of communication 2](https://www.g2.com/articles/history-of-communication)
- [Time capsule: 150 years](https://www.elon.edu/u/imagining/time-capsule/150-years/)
- [History in general](https://www.dhm.de/lemo/kapitel) (in German)
- [World population growth](https://ourworldindata.org/world-population-growth)
- [Hybrid work](https://www.microsoft.com/en-us/worklab/work-trend-index/hybrid-work)
- [Work trend index](https://www.microsoft.com/en-us/worklab/work-trend-index)
- [GitHub Discussions](https://docs.github.com/en/discussions)
- [GitHub Pages](https://docs.github.com/en/pages)
- [GitHub Mobile](https://github.com/mobile)
Chapter 5: The Influence of Open and Inner Source on Software Delivery Performance
In this chapter I explain the history of free and open-source software and why it has become so important over the last years. I will explain the impact it can have on your engineering velocity and how you can use the principles of open source for better cross-team collaboration in your company (inner source).
The chapter will cover:
- History of free and open-source software
- The difference between open source and open development
- Benefits of embracing open source for companies
- Implementing an open-source strategy
- Open and inner source
- Importance for insourcing
- GitHub Sponsors
Featured open-source projects to sponsor:
At the time writing the book, GitHub Sponsors
was new and I worked with some of the mainters mentioned to set this up in a good way. So not all projects made it here - for example oh-my-zsh, which I use every day and which was the inspiration for oh-my-posh.
References and Links
- Greene T. C. (2001). [Ballmer: Linux is a cancer](https://www.theregister.com/2001/06/02/ballmer_linux_is_a_cancer/)
- Warren T. (2020). [Microsoft: we were wrong about open source](https://www.theverge.com/2020/5/18/21262103/microsoft-open-source-linux-history-wrong-statement)
- Raymond, E. S. (1999). The Cathedral and the Bazaar: Musings on Linux and Open Source by an Accidental Revolutionary. O'Reilly Media.
- O’Reilly (1998). FREEWARE LEADERS MEET IN FIRST-EVER SUMMIT O'Reilly Brings Together Creators of Perl, Apache,Linux and Netscape's Mozilla. [Press Release](https://www.oreilly.com/pub/pr/636)
- OSI (2018). [Open Source Initiative - History of the OSI](https://opensource.org/history)
- Richard S. (2021). [Why Open Source Misses the Point of Free Software](https://www.gnu.org/philosophy/open-source-misses-the-point.en.html)
- Volpi M. (2019). [How open-source software took over the world](https://techcrunch.com/2019/01/12/how-open-source-software-took-over-the-world/)
- Ahlawat P., Boyne J., Herz D., Schmieg F., & Stephan M. (2021). [Why You Need an Open Source Software Strategy](https://www.bcg.com/publications/2021/open-source-software-strategy-benefits)
- [Inner Source](https://en.wikipedia.org/wiki/Inner_source)
- [GitHub Sponsors](https://github.com/sponsors)
Part 2: Engineering DevOps Practices
Part 2 explains the most important engineering practices for effective DevOps. You’ll learn how to use GitHub Actions to automate your release pipelines and other engineering tasks, how to work trunk-based and with feature-flags and how to shift left security and quality assurance.
Chapter 6: Automation with GitHub Actions
This chapter explains the importance of automation for quality and speed. It introduces you to GitHub Actions and how you can use them for any kind of automation – not only continuous delivery.
References and Links
- Humble J., & Farley, D. (2010). Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation. Addison-Wesley Professional.
- Forsgren N., Humble, J., & Kim, G. (2018). Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations (1st ed.) [E-book]. IT Revolution Press.
- [YAML](https://yaml.org/)
- [GitHub Actions](https://docs.github.com/en/actions)
- [GitHub Learning Lab](https://lab.github.com)
- [Workflow syntax](https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions)
- [GitHub Marketplace](https://github.com/marketplace)
Chapter 7: Running Your Workflows
In this chapter, I’ll show you the different options for running your workflows. We’ll investigate hosted and self-hosted runners, and I’ll explain how you can tackle hybrid-cloud scenarios or hardware-in-the-loop tests using the different hosting options. I’ll also show you how to set up, manage, and scale self-hosted runners, and I’ll show you how you can approach monitoring and troubleshooting.
The following are the core topics that we will cover in this chapter:
- Hosted runners
- Self-hosted runners
- Managing access with runner groups
- Using labels
- Scaling your self-hosted runners
- Monitoring and troubleshooting
References and Links
- [Using GitHub-hosted runners](https://docs.github.com/en/actions/using-github-hosted-runners)
- [Virtual environments](https://github.com/actions/virtual-environments)
- [Hosting your own runners](https://docs.github.com/en/actions/hosting-your-own-runners)
- A [curated list](https://jonico.github.io/awesome-runners) of awesome self-hosted GitHub Action runner solutions in a large comparison matrix.
Chapter 8: Managing Dependencies Using GitHub Packages
This chapter describes how you can use GitHub Packages, semantic Versioning together with GitHub Actions to manage dependencies between your teams and products.
The main topics are as follows:
References and Links
- [Semantic versioning](https://semver.org/)
- [Billing and pricing](https://docs.github.com/en/billing/managing-billing-for-github-packages/about-billing-for-github-packages)
- [Access control and visibility](https://docs.github.com/en/packages/learn-github-packages/configuring-a-packages-access-control-and-visibility)
- [Working with the registry (Container, Apache Maven, Gradle. NuGet, npm, RubyGems)](https://docs.github.com/en/packages/working-with-a-github-packages-registry)
Chapter 9: Deploy to Any Platform
In this chapter I'll show you how you can easily deploy to any cloud and any platform in a secure and compliant way.
The chapter will cover:
References and Links
- [CI/CD](https://azure.microsoft.com/en-us/overview/continuous-delivery-vs-continuous-deployment/)
- [Deployment rings](https://docs.microsoft.com/en-us/azure/devops/migrate/phase-rollout-with-rings)
- [Deploying to Azure App Service](https://docs.github.com/en/actions/deployment/deploying-to-your-cloud-provider/deploying-to-azure-app-service)
- [Deploying to Google Kubernetes Engine](https://docs.github.com/en/actions/deployment/deploying-to-your-cloud-provider/deploying-to-google-kubernetes-engine)
- [Deploy to AWS Elastic Container Service](https://docs.github.com/en/actions/deployment/deploying-to-your-cloud-provider/deploying-to-amazon-elastic-container-service)
- [Security hardening your deployments](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments)
- [Kubernetes Deployments](https://kubernetes.io/docs/concepts/workloads/controllers/)
- [Kubernetes Deployment Strategies](https://github.com/ContainerSolutions/k8s-deployment-strategies)
- [Helm](https://helm.sh/)
- [Kustomize](https://kustomize.io/)
- [Infrastructure as Code](https://en.wikipedia.org/wiki/Infrastructure_as_code)
- [Infrastructure as Code and environment or configuration drift](https://docs.microsoft.com/en-us/devops/deliver/what-is-infrastructure-as-code)
- [Workflow templates](https://docs.github.com/en/actions/learn-github-actions/creating-workflow-templates)
- [Reusable workflows](https://docs.github.com/en/actions/learn-github-actions/reusing-workflows)
- [Four Keys Project](https://github.com/GoogleCloudPlatform/fourkeys/)
Chapter 10: Feature Flags and the Feature Lifecycle
This chapter explains how Feature Flags – or Feature Toggles - can help you to reduce complexity and manage the lifecycle of features and your software.The main topics of this chapter are:
- What are Feature Flags
- The lifecycle of features
- The benefits of Feature Flags
- Getting started with Feature Flags
- Feature Flags and technical debt
- Experimentation with Feature Flags
References and Links
- Martin Fowler (2017). [Feature-Toggles (aka Feature Flags)](https://martinfowler.com/articles/feature-toggles.html)
- [Comparison of Feature Flag Solutions](https://wulfland.github.io/FeatureFlags/)
- [LaunchDarkly](https://launchdarkly.com/)
- [Switchover](https://switchover.io/)
- [VWO](https://vwo.com/)
- [Split](https://www.split.io/)
- [Flagship](https://www.flagship.io/)
- [Unleash](https://www.getunleash.io/) and [on GitHub](https://github.com/Unleash/unleash)
Chapter 11: Trunk-based Development
This chapter explains the benefits of trunk-based development and introduces you to the best git workflows to accelerate your software delivery.
The chapter covers:
References and Links
- Forsgren N., Humble, J., & Kim, G. (2018). Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations (1st ed.) [E-book]. IT Revolution Press.
- [Trunk-based development]( https://trunkbaseddevelopment.com)
- Git flow: Vincent Driessen (2010), [A successful Git branching model](https://nvie.com/posts/a-successful-git-branching-model/)
- [GitLab flow](https://docs.gitlab.com/ee/topics/gitlab_flow.html)
- Edward Thomson (2018). [Release Flow: How We Do Branching on the VSTS Team](https://devblogs.microsoft.com/devops/release-flow-how-we-do-branching-on-the-vsts-team/)
- Aman Gupta (2015). [Deploying branches to GitHub.com](https://github.blog/2015-06-02-deploying-branches-to-github-com/)
- [GitHub flow](https://docs.github.com/en/get-started/quickstart/github-flow)
- [GitHub CLI](https://cli.github.com/)
Part 3: Release with Confidence
Part 3 explains how you can accelerate even further and release frequently with confidence by baking quality assurance and security into your release pipelines. This includes concepts like shifting left testing and security, testing in production, chaos engineering, DevSecOps, securing your software supply chain, and ring-based deployments.
Chapter 12: Shift Left Testing for Increased Quality
takes a closer look at the role of quality assurance and testing on developer velocity and shows how you can shift left testing with test automation. The chapter also covers testing in production and chaos engineering.
Main topics in the chapter are:
- Shift left testing with test automation
- Eradicating flaky tests
- Code coverage
- Shift right – testing in production
- Fault injection and chaos engineering
- Tests and compliance
- Test management in GitHub
References and Links
- Forsgren N., Humble, J., & Kim, G. (2018). Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations (1st ed.) [E-book]. IT Revolution Press.
- Eran Kinsbruner (2018), Continuous Testing for DevOps Professionals: A Practical Guide From Industry Experts (Kindle Edition). CreateSpace Independent Publishing Platform.
- Sam Laing (2015), [The Testing Manifesto](https://www.growingagile.co.za/2015/04/the-testing-manifesto/).
- Wolfgang Platz, Cynthia Dunlop (2019), Enterprise Continuous Testing: Transforming Testing for Agile and DevOps (Kindle Edition), Independently published.
- Tilo Linz (2014): Testing in Scrum (E-book), Rocky Nook.
- Kaner C., Falk J., H. Q. Nguyen (1999), Testing Computer Software (2nd Edition) Wiley.
- Roy Osherove (2009), The Art of Unit Testing (1st edition), Manning.
- Martin Fowler (2007), [Mocks Aren't Stubs](https://martinfowler.com/articles/mocksArentStubs.html).
- Müller, Matthias M.; Padberg, Frank (2017). About the Return on Investment of Test-Driven Development (PDF). Universität Karlsruhe, Germany.
- Erdogmus, Hakan; Morisio, Torchiano (2014). On the Effectiveness of Test-first Approach to Programming. Proceedings of the IEEE Transactions on Software Engineering, 31(1). January 2005. (NRC 47445).
- [Shift left to make testing fast and reliable](https://docs.microsoft.com/en-us/devops/develop/shift-left-make-testing-fast-reliable).
- Martin Fowler (2011), [Eradicating Non-Determinism in Tests](https://martinfowler.com/articles/nonDeterminism.html).
- Jordan Raine (2020). [Reducing flaky builds by 18x](https://github.blog/2020-12-16-reducing-flaky-builds-by-18x/).
- John Micco (2016). [Flaky Tests at Google and How We Mitigate Them](https://testing.googleblog.com/2016/05/flaky-tests-at-google-and-how-we.html).
- [Shift right to test in production](https://docs.microsoft.com/en-us/devops/deliver/shift-right-test-production).
- Michael Nygard (2018). Release It! Design and Deploy Production-Ready Software (2nd Edition). O'Reilly.
Chapter 13, Shift Left Security ad DevSecOps
This chapter takes a broader look at the role of security in software development and how you can bake security into the process and practice DevSecOps, zero-trust, and how you can shift left security. The chapter looks at common attack scenarios and how you can practice security and create awareness using attack simulations and red team | blue team exercises. The chapter also introduces you to GitHub Codespaces as a secure development environment in the cloud.
The key points that we will cover in this chapter are:
- Shift left security
- Assume breach, zero trust, and a security first mindset
- Attack simulations
- Red team | blue team exercises
- Attack scenarios
- GitHub Codespaces
References and Links
- IC3 (2020). [Internet Crime Report 2020](https://www.ic3.gov/Media/PDF/AnnualReport/2020_IC3Report.pdf).
- IC3 (2019). [Internet Crime Report 2019](https://www.ic3.gov/Media/PDF/AnnualReport/2019_IC3Report.pdf).
- [Data reaches in 2020](https://www.identityforce.com/blog/2020-data-breaches).
- [Data breaches in 2021](https://www.identityforce.com/blog/2021-data-breaches).
- Terranova & Microsoft (2021). [Gone Phishing Tournament - Phishing Benchmark Global Report 2021](https://terranovasecurity.com/gone-phishing-tournament/).
- [GitHub Codespaces](https://docs.github.com/en/codespaces/).
- [devcontainer.json reference](https://code.visualstudio.com/docs/remote/devcontainerjson-reference).
Chapter 14, Securing Your Code
This chapter describes how you can use GitHub Advanced Security to eliminate bugs, security, and compliance issues by performing static code analysis with CodeQL and other tools, successfully manage your software supply chain with Dependabot, and eliminate secrets in your code base using Secret Scanning.
The key topics in this chapter are:
References and Links
- Keith Collins (2016). [How one programmer broke the internet by deleting a tiny piece of code](https://qz.com/646467/how-one-programmer-broke-the-internet-by-deleting-a-tiny-piece-of-code/).
- Tyler Eon (2016). [Kik, Left-Pad, and NPM — Oh My!](https://medium.com/@kolorahl/kik-left-pad-and-npm-oh-my-e6f216a22766)
- Maya Kaczorowski (2020). [Secure at every step: What is software supply chain security and why does it matter?](https://github.blog/2020-09-02-secure-your-software-supply-chain-and-protect-against-supply-chain-threats-github-blog/)
- [About the dependency graph](https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph).
- [About dependabot version updates](https://docs.github.com/en/code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/about-dependabot-version-updates).
- [About secret scanning](https://docs.github.com/en/code-security/secret-scanning/about-secret-scanning).
- [About GitHub Advanced Security](https://docs.github.com/en/get-started/learning-about-github/about-github-advanced-security).
- [About Code Scanning](https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/about-code-scanning).
- GitHub Blog (2021). [CodeQL code scanning: new severity levels for security alerts](https://github.blog/changelog/2021-07-19-codeql-code-scanning-new-severity-levels-for-security-alerts/).
- [Common Vulnerability Scoring System (CVSS)](https://www.first.org/cvss/v3.1/specification-document)
- [CodeQL documentation](https://codeql.github.com/docs/)
- [CodeQL Language Reference](https://codeql.github.com/docs/ql-language-reference)
Chapter 15, Securing Your Deployments
This chapter shows how you can secure deployments to your environments and how you can automate your complete release pipeline in a secure, compliant way to also meet regulatory requirements. The chapter covers Software Bills of Meterials (SBoM), code and commit signing, dynamic application security testing, and security hardening your release pipelines.
We will cover the following main topics in this chapter:
- Container and infrastructure security scanning
- Automate the infrastructure change process
- Source code and infrastructure integrity
- Signing commits and code
- Dynamic Application Security Testing
- Security hardening your release pipeline
References and Links
- Kim G., Humble J., Debois P. & Willis J. (2016). The DevOps Handbook: How to Create World-Class Agility, Reliability, and Security in Technology Organizations (1st ed.). IT Revolution Press
- Forsgren N., Humble, J., & Kim, G. (2018). Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations (1st ed.) [E-book]. IT Revolution Press.
- Oladimeji S., Kerner S. M. (2021). [SolarWinds hack explained: Everything you need to know](https://whatis.techtarget.com/feature/SolarWinds-hack-explained-Everything-you-need-to-know).
- Sudhakar Ramakrishna (2021). [New Findings From Our Investigation of SUNBURST](https://orangematter.solarwinds.com/2021/01/11/new-findings-from-our-investigation-of-sunburst/).
- Crowdstrike blog (2021). [SUNSPOT: An Implant in the Build Process](https://www.crowdstrike.com/blog/sunspot-malware-technical-analysis/).
- Eckels S., Smith J. & Ballenthin W. (2020). [SUNBURST Additional Technical Details](https://www.mandiant.com/resources/sunburst-additional-technical-details)
- Souppaya M., Morello J., & Scarfone K. (2017). [Application Container Security Guide](https://doi.org/10.6028/NIST.SP.800-190).
- National Telecommunications and Information Administration (NTIA), [Software Bill of Materials](https://www.ntia.gov/sbom).
- Thomas Claburn (2018). [Check your repos... Crypto-coin-stealing code sneaks into fairly popular NPM lib (2m downloads per week)]( https://www.theregister.com/2018/11/26/npm_repo_bitcoin_stealer/).
- Haymore A., Smart I., Gazdag V., Natesan D., & Fernick J. (2022). [10 real-world stories of how we’ve compromised CI/CD pipelines]( https://research.nccgroup.com/2022/01/13/10-real-world-stories-of-how-weve-compromised-ci-cd-pipelines/).
- Rob Bos (2022). [Setup an internal GitHub Actions Marketplace](https://devopsjournal.io/blog/2021/10/14/GitHub-Actions-Internal-Marketplace.html)
Part 4: Software Architecture
Part 4 is about the correlation of your software architecture and the communication in your organization. You’ll learn how to transform your monolith gradually to a loosely coupled, event-based architecture.
Chapter 16: Loosely Coupled Architecture and Microservices
In this chapter I’ll give you an overview of loosely coupled systems and how you can evolve your software and system design to achieve a high engineering velocity.
The following topics will be covered in this chapter:
- Loosely coupled systems
- Microservices
- Evolutionary design
- Event-based architecture
References and Links
- Forsgren N., Humble, J., & Kim, G. (2018). Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations (1st ed.) [E-book]. IT Revolution Press.
- Lewis J. & Fowler M. (2014). [Microservices](https://martinfowler.com/articles/microservices.html).
- Eric Evans (2003). Domain-Driven Design: Tackling Complexity in the Heart of Software. Addison-Wesley Professional.
- Martin Fowler (2004). [StranglerFigApplication](https://martinfowler.com/bliki/StranglerFigApplication.html).
- Michael T. Nygard (2017). Release It!: Design and Deploy Production-Ready Software. Pragmatic Programmers
- Martin Fowler (2005). [Event Sourcing](https://martinfowler.com/eaaDev/EventSourcing.html).
- Lucas Krause (2015). Microservices: Patterns and Applications – Designing Fine-Grained Services By Applying Patterns [Kindle Edition].
Chapter 17: Empower Your Teams
This chapter is about the correlation of the communication structure of your organization and your system architecture (Conway’s law) and how you can use this to improve architecture, organization structure, and software delivery performance. It covers the two-pizza team, the Inverse Conway Maneuver, and a mono- versus multi-repo strategy for your code.
The following are the core topics in this chapter:
- Conway's law
- The two-pizza team
- Inverse Conway Maneuver
- Delivery cadence
- Mono- or multi-repo strategy
References and Links
- Conway, Melvin (1968). [How do committees invent](http://www.melconway.com/Home/pdf/committees.pdf).
- Raymond, Eric S. (1996). The New Hacker's Dictionary [3rd ed.]. MIT Press.
- Amazon (2020): [Introduction to DevOps on AWS - Two-Pizza Teams](https://docs.aws.amazon.com/whitepapers/latest/introduction-devops-aws/two-pizza-teams.html).
- Willink, J. & Leif Babin, L. (2017). Extreme Ownership: How U.S. Navy SEALs Lead and Win. Macmillan.
- Miller, G. A. (1956). [The magical number seven, plus or minus two: Some limits on our capacity for processing information](http://psychclassics.yorku.ca/Miller/).
- Cohn M. (2009). Succeeding with Agile: Software Development Using Scrum. Addison-Wesley
- QSM (2011). [Team Size Can Be the Key to a Successful Software Project](https://www.qsm.com/process_improvement_01.html).
- Karau, S. J., & Williams, K. D. (1993). [Social loafing: A meta-analytic review and theoretical integration. Journal of Personality and Social Psychology, 65(4), 681–706](https://doi.org/10.1037/0022-3514.65.4.681).
- Robbins S. (2005). Essentials of organizational behavior. Prentice Hall.
- Steiner, I. D. (1972). Group process and productivity. Academic Press Inc.
- Forsgren N., Humble, J., & Kim, G. (2018). Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations (1st ed.) [E-book]. IT Revolution Press.
- Skelton M., and Pais M. (2019). Team Topologies: Organizing Business and Technology Teams for Fast Flow. IT Revolution.
- Reinertsen D. (2009). The Principles of Product Development Flow: Second Generation Lean Product Development. Celeritas Publishing.
- Medina A. M. (2021). [Remote debugging on Kubernetes using VS Code](https://developers.redhat.com/articles/2021/12/13/remote-debugging-kubernetes-using-vs-code).
Part 5: Lean Product Management
In Part 5 you’ll learn the importance of lean product management, how to integrate customer feedback into your flow of work, and how to combine hypothesis-driven development with OKR.
Chapter 18: Lean Product Development and Lean Startup
This chapter is about the importance of lean product management at a product and feature level. It shows how you can incorporate customer feedback into your product management, create Minimal Viable Products, and how you can manage your enterprise portfolio.
This chapter covers:
- Lean product development
- Incorporate customer feedback
- The Minimal Viable Product
- Enterprise portfolio management
- Business Model Canvas
References and Links
- Forsgren N., Humble, J., & Kim, G. (2018). Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations (1st ed.) [E-book]. IT Revolution Press.
- Ward, Allen (2007). Lean Product and Process Development. Lean Enterprise Institute, US
- Ries, Eric (2011). The Lean Startup: How Today's Entrepreneurs Use Continuous Innovation to Create Radically Successful Businesses [Kindl Edition]. Currency
- Humble J., Molesky J. & O’Reilly B. (2015). Lean Enterprise: How High Performance Organizations Innovate at Scale [Kindle Edition]. O'Reilly Media.
- Osterwalder, Alexander (2004). [The Business Model Ontology: A Proposition In A Design Science Approach](http://www.hec.unil.ch/aosterwa/PhD/Osterwalder_PhD_BM_Ontology.pdf).
- Goodwin, Kim (2009). Designing for the Digital Age - How to Create Human-Centered Products and Services. Wiley.
Chapter 19: Experimentation and A|B-Testing
This chapter explains how you can evolve and continuously improve your products by conducting experiments to validate hypotheses through evidence-based DevOps practices like A|B-testing. It also explains how you can leverage OKR to empower your teams to conduct the right experiments and to build the right products.
The following topics will be covered in this chapter:
- Conducting experiments with the scientific method
- Effective A|B testing with GrowthBook and Flagger
- Experimentation and OKR
References and Links
- [The Scientific Method](https://en.wikipedia.org/wiki/Scientific_method)
- [Ring-based Deployments](https://docs.microsoft.com/en-us/azure/devops/migrate/phase-rollout-with-rings)
- [Optimizely](https://www.optimizely.com/)
- [Hubspot](https://www.hubspot.com/)
- [GrowthBook](https://github.com/growthbook/growthbook)
- [Flagger](https://flagger.app/)
- Stefan Prodan: [GitOps recipe for Progressive Delivery with Flux v2, Flagger and Istio](https://github.com/stefanprodan/gitops-istio)
Part 6: GitHub for your Enterprise
In Part 6 you’ll learn about the different hosting and pricing options of GitHub, how you can migrate to GitHub from other platforms, and best practices for structuring your teams and products inside GitHub Enterprise.
Chapter 20: GitHub: The Home for All Developer
This chapter explains how GitHub can serve as the holistic, open platform for your teams. It explains the different hosting options, pricing, and how you can integrate it in your existing toolchain.
The key topics are:
- Hosting options and pricing
- GitHub Connect
- Hands-on: create your account on GitHub.com
- Enterprise Security
- GitHub Learning Labs
References and Links
- [Pricing](https://github.com/pricing)
- [GitHub AE](https://docs.github.com/en/github-ae@latest/admin/overview/about-github-ae)
- [SCIM](https://docs.github.com/en/enterprise-cloud@latest/rest/reference/scim)
- [Enterprise Managed Users](https://docs.github.com/en/enterprise-cloud@latest/admin/identity-and-access-management/managing-iam-with-enterprise-managed-users/about-enterprise-managed-users)
- [Audit logs](https://docs.github.com/en/enterprise-cloud@latest/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/about-the-audit-log-for-your-enterprise)
- [GitHub Learning Lab](https://lab.github.com)
- [Microsoft Learn](https://docs.microsoft.com/en-us/learn)
Chapter 21: Migrating to GitHub
If you are not a start-up, then you always have existing tools and processes that must be considered when moving to a new platform. In this chapter, we will discuss different strategies related to migrating to GitHub from different platforms.
In this chapter, we will cover the following:
- Picking the right migration strategy
- Achieving compliance with low-fidelity migrations
- Synchronizing requirements for a smooth transition
- Migrating from Azure DevOps with the GitHub Enterprise Importer
- Migrating pipelines using Valet
References and Links
- [GitHub Importer](https://docs.github.com/en/get-started/importing-your-projects-to-github/importing-source-code-to-github/importing-a-repository-with-github-importer).
- [GitHub Enterprise Importer CLI](https://github.com/github/gh-gei).
- [GitHub Valet CLI](https://github.com/github/gh-valet).
- [migrating with GitHub Enterprise Importer](https://docs.github.com/en/early-access/github/migrating-with-github-enterprise-importer).
- [GitHub Enterprise Server Importer](https://docs.github.com/en/enterprise-server@3.4/admin/user-management/migrating-data-to-and-from-your-enterprise/about-migrations)
- [ghe-migrator](https://docs.github.com/en/enterprise-server@3.4/admin/user-management/migrating-data-to-and-from-your-enterprise/about-migrations).
- [Tasktop](https://www.tasktop.com/).
- [git-svn](https://git-scm.com/docs/git-svn).
- [git-tfs](https://github.com/git-tfs/git-tfs).
Chapter 22: Organize Your Teams
In this chapter you’ll learn best-practices to structure your repositories and teams into organizations and enterprises to foster collaboration and facilitate administration.
The chapter covers:
- GitHub scopes and namespaces
- Structuring GitHub teams
- Role-based access
- Custom roles
- Outside Collaborators
References and Links
- [About teams](https://docs.github.com/en/organizations/organizing-members-into-teams/about-teams).
- [Base permissions](https://docs.github.com/en/organizations/managing-access-to-your-organizations-repositories/setting-base-permissions-for-an-organization).
- [Custom roles](https://docs.github.com/en/enterprise-cloud@latest/organizations/managing-peoples-access-to-your-organization-with-roles/managing-custom-repository-roles-for-an-organization).
- [Outside collaborators](https://docs.github.com/en/organizations/managing-access-to-your-organizations-repositories/adding-outside-collaborators-to-repositories-in-your-organization).
- [Managing access to your repository](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/managing-teams-and-people-with-access-to-your-repository#inviting-a-team-or-person).
Chapter 23: Transform Your Enterprise
The last chapter puts all the pieces together. The book gives you a lot of tools that you can use to drive a successful transformation and to gain developer velocity. But only if all pieces are put together the transformation will succeed. The chapter will explain, why many transformations fail, and what you shoud do to make your transformation a success.
We will cover the following topics:
- Why many transformations fail
- Start with WHY
- Data-driven transformation
References and Links
- Simon Sinek (2011), Start With Why – How Great Leaders Inspire Everyone to Take Action, Penguin
- Simon Sinek (2019), The Infinite Game, Penguin
- Nadella, S., Shaw, G. & Nichols, J. T. (2017), Hit Refresh: The Quest to Rediscover Microsoft's Soul and Imagine a Better Future for Everyone, Harper Business
- Srivastava S., Trehan K., Wagle D. & Wang J. (April 2020). [Developer Velocity: How software excellence fuels business performance](https://www.mckinsey.com/industries/technology-media-and-telecommunications/our-insights/developer-velocity-how-software-excellence-fuels-business-performance).
- Forsgren N., Humble, J., & Kim, G. (2018). Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations (1st ed.) [E-book]. IT Revolution Press.
- John P. Kotter (2008), A Sense of Urgency, Harvard Business Review Press
- John P. Kotter (2012), Leading Change, Harvard Business Review Press
- Volkswagen (2019): [Volkswagen with New Corporate Mission Statement Environment "goTOzero"](https://www.volkswagenag.com/en/news/2019/07/goTOzero.html).
- Mezedes-Benz Group Media (2019): [“Ambition2039”: Our path to sustainable mobility](https://group-media.mercedes-benz.com/marsMediaSite/ko/en/43348842).
- [Theory of constraints](https://www.leanproduction.com/theory-of-constraints).
- Small World (2016): [Theory of constraints – Drum-Buffer-Rope](https://www.smallworldsocial.com/theory-of-constraints-104-balance-flow-not-capacity/).
- de Vries, M., & van Osnabrugge, R. (2022): [Together we build an Engineering Culture](https://xpirit.com/together-we-build-an-engineering-culture/). XPRT Magazine #12.