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

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
Design for Testability: Mocks, Stubs, Refactoring, and User Interfaces Benjamin Day benday.com |
Team Foundation Server 2010 Builds: Understand, Configure, and Customize Benjamin Day benday.com |
 Definitions  Background/History  Continuous Delivery › How to practice Continuous Delivery  Continuous Integration  Continuous Integration Tools.
T EAM F OUNDATION S ERVER IN D EVELOPMENT Kambiz Saremi.
CONTINUOUS INTEGRATION, DELIVERY & DEPLOYMENT ONE CLICK DELIVERY.
BIT 285: ( Web) Application Programming Lecture 07 : Tuesday, January 27, 2015 Git.
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.
INTRODUCTION TO THE SCRATCH PROGRAMMING ENVIRONMENT.
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.
Coaching Skills for Scrum Masters & The Self-Organizing Team
Enterprise DevOps Grid Jonny Wooldridge this deck available here:
@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
資工 4A 陳怡秀 Microsoft Visual Studio’s Journey to Continuous Delivery.
Windows Azure Tour Benjamin Day Benjamin Day Consulting, Inc.
& 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
What Is DevOps? DevOps is "a portmanteau of 'development' and 'operations'" and is "a software development method that stresses communications, collaboration,
Anubha Gupta | Software Engineer Visual Studio Online Microsoft Corp. Visual Studio Enterprise Leveraging modern tools to streamline Build and Release.
WATERFALL DEVELOPMENT MODEL. Waterfall model is LINEAR development lifecycle. This means each phase must be completed before moving onto the next!!! WHAT.
Coaching Skills for Scrum Masters & The Self- Organizing Team.
Directions EMEA Community for Dynamics NAV partners.
It’s tough out there … Software delivery challenges.
Build on one person’s machine Code and debug for weeks (months?) Manually deploy parts via file copy Run manual tests against deployed app.
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.
Developer Operations with Visual Studio ALM 2013 Matteo Emili –
1 Punishment Through Continuous Delivery If it hurts, do it more often…
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.
Avoiding the Pitfalls of Database Change Automation Cindy Bean Sr. Software Consultant DBmaestro SQLSaturday #514 – Houston, May 14, 2016.
Benjamin Day Role-based Security Stinks: Better Authorization in ASP.NET.
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!!
Benjamin Day Real World Scrum with TFS 2015 & VSTS.
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
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
Unit Testing & Test-Driven Development for Mere Mortals
Unit Testing & Test-Driven Development for Mere Mortals
X in [Integration, Delivery, Deployment]
Get Good at DevOps: Feature Flag Deployments with ASP
TechEd /3/2018 8:11 AM © 2013 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks.
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
HCL’s Viewpoint – DevOps on MS Cloud
Your code is not just…your code
Presentation transcript:

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

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)

Got ?

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 now 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/ DevFeature-xFeature-yFeature-zReleasesv.1v.2v.3..n

Typical Branching Structure 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/ DevFeature-xFeature-yFeature-zReleasesv.1v.2v.3..n

Typical Release Flow Merge Features to Dev Verify / fix whatever is in Dev Merge to Main Create new Release branch V Deploy to production servers Main, Trunk, Origin, $/TeamProject/ DevFeature-xFeature-yFeature-zReleasesv.* MERGE BRANCH

Typical Release Flow Whatever gets merged to Main gets released Code-based release model Main, Trunk, Origin, $/TeamProject/ DevFeature-xFeature-yFeature-zReleasesv.* MERGE BRANCH

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

Typical Release Flow: Bad News 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 Main, Trunk, Origin, $/TeamProject/ DevFeature-xFeature-yFeature-zReleasesv.* MERGE

Typical Release Flow: Bad News, Change of plans 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 Commit the merge Main, Trunk, Origin, $/TeamProject/ DevFeature-xFeature-yFeature-zReleasesv.* MERGE

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 IFeedbackManager interface Each feature flag should be a Boolean property NO MAGIC STRINGS! Use Dependency Injection for your IFeedbackManager Makes it very easy to find and remove later

DEMOS Basic feature flag 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. The individual feature flags are temporary.

Watch out for technical debt.

Any last questions?

Thanks. |