Architecture for continuous delivery
Topic: System Administration
Yesterday's best practice is tomorrow's anti-pattern. Everything in software continues to shift and move including architecture, a painful lesson developers who build logically sound but operationally cumbersome architectures quickly learn. Continuous delivery—a process for automating the production readiness of your application every time a change occurs to code, infrastructure, or configuration—enables you to better address these shifts head-on.
Neal Ford leads a deep dive into the intersection of the architect's role and the engineering practices at the heart of continuous delivery, covering continuous integration, deployment pipelines and how to structure them (including automating architecture governance), and best practices and anti-patterns. Neal also shares concrete engineering practices, such as automated machine provisioning, release strategies, and how feature toggles offer better continuous delivery than branches. You'll learn about migrating and evolving architectures, particularly how to understand enough about your architecture to restructure it. You'll leave with the knowledge and tools to immediately put these ideas into practice in your own projects.
What you'll learn-and how you can apply it
By the end of this live, example-lead online course, you understand:
- The difference between continuous integration and continuous delivery
- The difference between continuous delivery and continuous deployment
- How to structure deployment pipeline stages
- The role of DevOps in continuous delivery
- Continuous delivery release strategies and tools
- How to restructure architectures
- How to evolve architectures via fitness functions
And you’ll be able to:
- Build fitness functions to automate architectural governance
- Construct a useful deployment pipeline
- Explain why feature toggles offer better agility than feature branches
- Utilize architectural quanta to restructure architecture
- Evolve architecture due to domain or ecosystem changes
This training course is for you because...
- You're a software architect who needs to understand modern engineering practices.
- You're a DevOps engineer who needs to understand how architecture impacts operations.
- You're on a team that needs to respond to change (both technical and business) more quickly.
- You're a developer who has some architecture responsibilities and needs to understand how to apply modern engineering practices.
- A basic understanding of the software development lifecycle
- Familiarity with Agile software development concepts
- Architecture experience not required (Many of these principles apply throughout software projects.)
- Engineering Practices for Continuous Delivery (video, 8h,9m )
- Software Architecture Fundamentals (video, 9h,36m)
- Software Architecture Patterns (video, 1h,31m)
About your instructor
Neal Ford is a director, software architect, and meme wrangler at ThoughtWorks, a software company and a community of passionate, purpose-led individuals who think disruptively to deliver technology to address the toughest challenges, all while seeking to revolutionize the IT industry and create positive social change. He’s an internationally recognized expert on software development and delivery, especially in the intersection of Agile engineering techniques and software architecture. Neal has authored seven books (and counting), a number of magazine articles, and dozens of video presentations and spoken at hundreds of developers conferences worldwide. His topics include software architecture, continuous delivery, functional programming, cutting-edge software innovations, and a business-focused book and video on improving technical presentations. Check out his website, Nealford.com.
The timeframes are only estimates and may vary according to how the class is progressing
Continuous delivery (10 minutes)
- Lecture: Integration versus delivery versus deployment; the scope of continuous delivery
- Hands-on exercise: Which is best where?
The intersection of architecture and continuous delivery (15 minutes)
- Lecture: Modularity, coupling, cohesion, and quanta; architectural characteristics; domain versus architecture
- Hands-on exercise: Identify architecture characteristics
Deployment pipelines (20 minutes)
- Lecture: Stages; purpose; domain tests; fitness functions; strategies
- Hands-on exercise: Identify fitness functions
Break (10 minutes)
Engineering practices (35 minutes)
- Lecture: Automated machine provisioning; DevOps; feature toggles versus branching
- Hands-on exercise: Toggles or branches?
Release strategies (15 minutes)
- Lecture: Canary releasing; release toggles
Break (10 minutes)
Migrating architectures (30 minutes)
- Lecture: Identifying architectural "seams" via quanta; partitioning architecture; restructuring architecture
- Hands-on exercise: Find seams via quanta
Evolving architecture (20 minutes)
- Lecture: Building architecture to withstand change; the role of continuous delivery
Putting it into practice (15 minutes)
- Lecture: Case study—move fast and fix things; making the case in your organization