Get Good at DevOps: Feature Flag Deployments with ASP

Slides:



Advertisements
Similar presentations
Software Testing with Visual Studio 2013 & Team Foundation Server 2013 Benjamin Day.
Advertisements

Real World Scrum with TFS2013 Benjamin Day. Brookline, MA Consultant, Coach, & Trainer Microsoft MVP for Visual Studio ALM Team Foundation Server, Software.
How to be a C# ninja in 10 easy steps. Benjamin Day.
High-performing organizations are deploying code 30 times more frequently, with 50 percent fewer failures than their lower-performing counterparts. 1 1.
Real World Scrum with Team Foundation Server 2013 Benjamin
Team Foundation Server 2010 Builds: Understand, Configure, and Customize Benjamin Day benday.com |
CONTINUOUS INTEGRATION, DELIVERY & DEPLOYMENT ONE CLICK DELIVERY.
1 Testing – Part 2 Agile Testing In which we talk about nothing, because having unit tests solves all problems forever. Really. It’s not a subtitle balance.
Continuous Delivery Ajey Gore Head of Technology ThoughtWorks India.
Craig Berntson Chief Software Gardener Mojo Software Worx Branches and Merges are Bears, Oh My!
Application Lifecycle Management and the cloud
Design for Testability: Mocks, Stubs, Refactoring, and User Interfaces Benjamin Day.
@benday #vslive Better Unit Tests through Design Patterns: Repository, Adapter, Mocks, and more… Benjamin
@benday #vslive Automated Build, Test & Deploy with TFS, ASP.NET, and SQL Server Benjamin
& Dev Ops. Sherwin-Williams & DevOps Introduction to Sherwin-Williams.
Top 10 Ways to Go from Good to Great Scrum Master Benjamin Day.
Team Foundation Server 2012 Builds: Understand, Configure, and Customize Benjamin Day.
4/23/ :45 PM © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered.
How to be a C# ninja in 10 easy steps Benjamin Day.
1 Design and Integration: Part 2. 2 Plus Delta Feedback Reading and lecture repeat Ambiguous questions on quizzes Attendance quizzes Boring white lecture.
Zero to Hero: Untested to Tested with Visual Studio Fakes Benjamin
Anubha Gupta | Software Engineer Visual Studio Online Microsoft Corp. Visual Studio Enterprise Leveraging modern tools to streamline Build and Release.
Copyright © 2015 SolutionsIQ Inc. All rights reserved. Branching for CD? Think again ! Devesh Chanchlani.
Real World SQL Server Data Tools Benjamin
To Git or Not to Git for Enterprise Development Benjamin Edward Thomson
Cruise Training Introduction of Continuous Integration.
1 Punishment Through Continuous Delivery If it hurts, do it more often…
Benjamin Day Get Good at DevOps: Feature Flag Deployments with ASP.NET, WebAPI, & JavaScript.
Benjamin Unit Testing & Test-Driven Development for Mere Mortals.
Declarative Configuration Management with Azure Automation DSC and ARM Nathan Lasnoski Vice President of blog.concurrency.com Concurrency.
Benjamin Day Role-based Security Stinks: Better Authorization in ASP.NET.
Ognjen Bajić Ana Roje Ivančić Ekobit Efficient Application Testing.
DevOps in the cloud Peter’s personal journey on how I found out, I need Dev skills to optimize my ‘Azure’ work… and so do you!!
Continuous Delivery and Quality Monitoring 1 iCSC2016, Kamil Henryk Król, CERN Continuous Delivery and Quality Monitoring Kamil Henryk Król CERN Inverted.
Benjamin Day Real World Scrum with TFS 2015 & VSTS.
Figure 1. Gartner DevOps Model
DevOps for the IT Pro with Azure and Visual Studio Team Services
DevOps with ASP.NET Core and Entity Framework Core
Continuous Delivery and Quality Monitoring
Joonas Sirén, Technology Architect, Emerging Technologies Accenture
Stress Free Deployments with Octopus Deploy
Continuous Delivery- Complete Guide
Constructing Deploying and Maintaining Enterprise Systems
Better Unit Tests through Design Patterns: Repository, Adapter, Mocks, and more… Benjamin
Microsoft /23/2018 8:20 PM THR3038 Implement dev and test scenarios using Azure and Visual Studio Team Services Alex Mang Azure MVP © 2016 Microsoft.
Владимир Гусаров Директор R&D, Dell Visual Studio ALM MVP ALM Ranger
Entity Framework Core for Enterprise Applications
Introduction to Team Foundation Server 2010
Zero to DevOps Louis Berman Cloud Solutions Architect
Unit Testing & Test-Driven Development for Mere Mortals
Application Lifecycle Management – Best Practices for SharePoint and Office App development November 2015.
Unit Testing & Test-Driven Development for Mere Mortals
Johanna Rothman Create Technical Excellence Chapter 9
X in [Integration, Delivery, Deployment]
Coaching Skills for Scrum Masters & the Self-Organizing Team
Johan Hedberg Microsoft Azure MVP BizTalk Server – Behind enemy lines.
11/29/2018 2:52 AM MDC317A Continuous Delivery - The Agile End to End Story for Developers & IT Pros! Morgan Webb Technical © 2013.
TechEd /3/2018 8:11 AM © 2013 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks.
From a controlled chaos to well oiled machine
Zero to Hero: Untested to Tested with Visual Studio Fakes
Unit Testing & Test-Driven Development for Mere Mortals
Real World Scrum with TFS & VSTS / Azure DevOps
Your code is not just…your code
Entity Framework Core for Enterprise Applications
Implementing Security in ASP.NET Core: Claims, Patterns, and Policies
TechEd /7/2019 1:14 AM © 2013 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks.
From Development to Production: Optimizing for Continuous Delivery
HCL’s Viewpoint – DevOps on MS Cloud
Jamie Cool Program Manager Microsoft
Your code is not just…your code
Presentation transcript:

Get Good at DevOps: Feature Flag Deployments with ASP Get Good at DevOps: Feature Flag Deployments with ASP.NET, WebAPI, & JavaScript Benjamin Day www.benday.com @benday

Benjamin Day Brookline, MA Consultant, Coach, & Trainer Microsoft MVP for Visual Studio ALM Scrum, Team Foundation Server, Software Testing, Software Architecture Scrum.org Classes Professional Scrum Master (PSM) Professional Scrum Developer (PSD) Professional Scrum Foundations (PSF) www.benday.com, benday@benday.com, @benday

Got ?

Fresh from Pluralsight HQ! DevOps Skills for Developers with Visual Studio & TFS 2015

Software development is hard.

Software delivery is hard.

How do you get a feature into production?

Branching & Merging

Branching lets you work on similar, related code in isolation at the same time.

“So, I can go nuts and create 250 zillion branches and it’s a good idea?”

No.

A branch is an integration credit card.

For every branch, there’s a merge.

Merging can be expensive and painful.

Until everything’s integrated, it’s definitely not done.

Keep it simple.

Best Practice: Don’t Branch * * - unless you absolutely have to

Integrate often.

The smaller the integration, the easier it is.

Typical Branching Structure Main, Trunk, Origin, $/TeamProject/ Dev Feature-x Feature-y Feature-z Releases v.1 v.2 v.3..n

Typical Branching Structure Main, Trunk, Origin, $/TeamProject/ Dev Feature-x Feature-y Feature-z Releases v.1 v.2 v.3..n Main Beginning of everything Ultimate integration point Dev Integration point for a release Feature-* Features are developed here Releases (v.*) Snapshot of what goes to production Source of hot fixes

Main, Trunk, Origin, $/TeamProject/ Typical Release Flow Main, Trunk, Origin, $/TeamProject/ Dev Feature-x Feature-y Feature-z Releases v.* MERGE Merge Features to Dev Verify / fix whatever is in Dev Merge to Main Create new Release branch V.1123414 2016.03.15 Deploy to production servers MERGE BRANCH

Main, Trunk, Origin, $/TeamProject/ Typical Release Flow Main, Trunk, Origin, $/TeamProject/ Dev Feature-x Feature-y Feature-z Releases v.* MERGE Whatever gets merged to Main gets released Code-based release model MERGE BRANCH

Typical Release Flow: Bad News Main, Trunk, Origin, $/TeamProject/ Dev Feature-x Feature-y Feature-z Releases v.* MERGE Merge Feature X Easy Commit the merge Merge Feature Y Ok Merge Feature Z HARD REALLY REALLY HARD Turns out that Feature X isn’t done Major surgery to get this undone

Typical Release Flow: Bad News Main, Trunk, Origin, $/TeamProject/ Dev Feature-x Feature-y Feature-z Releases v.* MERGE Feature branch integrations are not going well Getting merged code to “play nice” means manually un-doing work that’s already been committed Cherry picking DELAYS

Typical Release Flow: Bad News, Change of plans Main, Trunk, Origin, $/TeamProject/ Dev Feature-x Feature-y Feature-z Releases v.* MERGE Merge Features to Dev Commit the merge Boss wants only Feature X and Z to go live Merge Feature X and Z to Main Painful, annoying, & tedious

Releases based on source control can be a real drag.

Releases based on Source Control Whatever is in the branch goes to production Whatever is in production is live Pros: Simple to understand Cons Coordination can be a real headache

Feature flags

Feature Flags “Feature toggles” Configuration-based releases Define configuration values for features This is a feature flag On / Off Wrap feature code inside of checks for feature flag If it’s on, it runs Deploy whatever doesn’t cause problems Turn on whatever is ready Much less emphasis on branching & merging Easier to schedule The features are already deployed Turn them on when you’re ready

Feature Flag: Benefits New levels of flexibility Deploy multiple versions of the same feature side-by-side New user interfaces and old user interfaces at same time Private betas New features for only certain users A/B testing Which version do people prefer? Rollback Not working? Performance problems? Great for Scrum & DevOps

Feature Flag: Drawbacks Adds complexity to the code Can get confusing Technical debt Should be removed at some point For example, running two version of a feature should be temporary Sometimes turns into an excuse to ship garbage Lack of focus on being truly “Done”

DevOps?

DevOps How are you developing, delivering, deploying, & monitoring? “What is the process of getting a developer’s changeset from check-in to production? How long does that take?” If you want to go fast, start automating Automation removes hard / tedious stuff Automation provides reliability Automation helps you do more and go faster Stability, Reliability, Repeatability, Release-ability

DevOps increases the speed of feedback.

DevOps increases the speed of mistakes.

DevOps increases the speed of feedback. Product Ownership in an Agile world is all about experimentation Each new feature is an experiment Build as little code as possible  Minimum Viable Product (MVP) Ship it & gather feedback That’s the experiment You don't always want to commit to these experiments.

“Go big or go home” vs. “Go small and quietly and go home if it doesn’t work”

Technical Stuff

Implementation Tips Create an IFeatureManager interface Each feature flag should be a Boolean property NO MAGIC STRINGS! Use Dependency Injection for your IFeatureManager Makes it very easy to find and remove later

DEMOS Basic feature flag Two features side-by-side Search Two features side-by-side Undeploy a feature that’s getting bad reviews Private beta

A feature flag is (probably) technical debt.

Any specific feature flag should eventually be removed.

Your feature flag system is forever Your feature flag system is forever. The individual feature flags are temporary.

Watch out for technical debt.

Any last questions?

Thanks. benday@benday.com | www.benday.com