 Hey, folks, welcome to the CNCF webinar understanding feature flags and proven feature management. We'll be talking about a lot more on feature flags today. So let's get started. So, first of all, my name is with feedback and I'm working as a technical community manager at harness. I'm a CNCF ambassador, I've been leading the community for the litmus chaos incubating project CNCF incubating project. And you might have seen me doing a lot of chaos engineering and right now I've started building communities for feature flags as well as phenops and I've been also organizing a lot of events in the community. Some of them are chaos carnival, KCD Bangluru, Chennai chaos engineering meetups every now and then and then you can connect with me on these socials. So for the agenda for today, we'll be talking about software delivery and its challenges. We'll also talk about the deployment inefficiencies that can be fixed. We'll start introducing feature flags, some common use cases, the software release workflow with feature flags, how to do feature flags the right way. Some case studies, key learnings and eventually about the community. So, before we get started with what feature flags are, let's discuss some challenges. I mean the modern software development or delivery has demanded the code to be shipped fast. And it's getting faster day by day. And it's not just the code that that's, you know, at risk, but even the customers, the end users wanted to be faster want applications to deliver faster and without without any risk. And that's why there's CI CD is has required some upgrading itself and that is where the idea of feature flags was brought in, I believe, and software delivery wasn't just enough in terms of CI CD, but there was something that was required in terms of enabling and disabling features and making sure that features are delivered with without any risk with higher velocity and with. I mean, as and when required. So before that we'll we'll talk about the challenges itself and I believe that software delivery has many challenges but I've segregated them into technical and business challenges. So, from the technical aspect, obviously, there's that there are a lot of feature branches in development. It's hard to test multiple solutions. It's, it's, I mean, it's hard to identify all the risks that are associated with decision making on what to build how to build and rollbacks due to fail deployments of individual features are pretty common. And these these challenges are faced day in and day out by by developers by the the engineering teams and it's very hard to identify how to I mean from from a granular aspect that how these challenges can be mitigated if it's difficult to manage these large amount of features and codes with, especially when the the eventual goal is to run them in in production so and and moving on if you if you talk about business challenges I mean that obviously there's loss of customer confidence it's it leads to negative customer impact due to release quality issues or rollbacks or roll forwards can cost business time as well as a lot of money. Companies end up losing millions of dollars in that sense and then time and effort spent in the whole team and and the loss of confidence and lack of governance leads to a lot of challenges for businesses itself today a lot of companies are facing these challenges and that there are there are frictions between engineering release timelines teams that there are issues between the productive and the marketing team. So these are some challenges today that software delivery has been facing and CICD itself has faced being part of the community for so long this is something that I have learned itself that these are the challenges that that are that have been hard to mitigate. And if you look at the larger problem in terms of features or delivering features there's been I mean developers day in and day out have faced tight deadlines they have faced a lot of stress during deployment. Personalization hasn't been that good and which has in in return has had repercussions such as reduced velocity increased risks poor developer experience and eventually as I mentioned that these these rollbacks these these bad features have have cost them dearly. So moving on what are the fixable deployment inefficiencies or what are the inefficiencies that that have been usually I mean there with today's deployments that are offering all or nothing basically and it creates rework and pain it I mean there's slow releases. I mean they are slow costly and and new features in production become become difficult and you can't test certain features because I mean the every feature has a different segment and rolling them out progressively becomes becomes difficult and similarly bug fixes take a lot of time it's costly. There's an added expense due to targeted rollouts when when you're trying to ensure that that a certain group of people are able to access a certain feature a certain feature a few features and then your different features for a certain group and this if I have to take an example this is something that I've seen myself. Let's say if I'm using an application let's say a food delivery application in recent times if I have to take an example and I've seen that the same application that is being used by my friend has has got some different features and I have been delivered some different features if you talk about Instagram they have some different features for the beta version they have some different features features for their alpha versions so so these these are the problems that each and every app application or companies that are delivering these applications face and that is where I mean feature flags come into play where the the idea is to I mean ensure that features are decoupled in the right sense or let's say a developers can conditionally turn certain sections of their code on and off and and it's it's to be honest an extension of continuous delivery so the the idea is to obviously you know you can think of feature flags as a new way to you know building and releasing applications by clearly defining features components that can be changed toggle on and off individually you allow for experimentation control rollouts to different users and and as well as you know letting more people such as developers your sre is your product managers your support teams to turn and turn on and turn off things for customers as as you require so if you have to simplify feature flags in in in some sense then you know feature flags are essentially used to create let's say private swim lanes for developers where they can ship a feature directly to customers and then have a control over who sees it get feedback turn it off and turn it on as needed it's it's basically like like like a switch as as this diagram depicts and what what are the values of feature flags again as as we we talked about the risks of feature flags or how feature flags are defined. I mean feature flag shift the lowest level of control to each individual artifact that's in production and it's it's more granular than production deployment as as we we spoke about so you know at at a higher level I mean feature flags give a lot of power to developers to create better features deliver them faster and at the same time they ensure that engineering is not the bottleneck for the business and that's why it delivers value in terms of you know the technical sense it's like you shift responsibility to the business to determine release dates you release new features faster and iterate rapidly without negative consequences you never roll back a good new feature due to a different bad feature or you are able to easily release individual features to production daily and that that's why it has a lot of positive outcomes as well where you know there's less time spent remediating feature failures in production there's less time spent in coordinating releases there's less time spent in auditing for compliance there are more bug fixes and eventually more features are shipped and from a business perspective if you if you talk about what are some I mean we spoke about some key challenges but you know you are able to deploy features more frequently there's shift controller feature releases to customer facing teams there's increase in net retention rate there's a lower churn rate and obviously there's less less exploitation of security loopholes and and eventually this helps the business grow and and do better so so we'll take a look at some I mean common use cases of where to use feature flags there are few ways to look at when you should use feature flags and we will explore some of them and another way to look at it is your when is your tech stack ready or when is it ready to use feature flags but we'll we'll talk about that later on perhaps so if you have to talk about different roles itself so for developers of course it helps increase velocity it helps them ship code faster and it decouples releases and deployments from a DevOps engineer perspective it helps them get operation control maybe kill switches help let's say kill an application or kill a feature itself the operation control is helps them to respond to roll out issues automatically and it basically automates the process for them and from a product manager perspective you they are able to control releases AB tests they're able to learn and experiment quickly and releases are delivered in a better sense and from a sales or support aspect you can see that they have better access to customers the customer facing teams get more empowerment and it helps in you know understanding the customer better and basically help the business better or you you say delivering features in a better sense and moving on I mean that the current state of feature flags teams solve this themselves but there are limitations of course the power of feature flags has not been fully leveraged I mean a lot of people are using homegrown feature flag solutions I mean I wouldn't suggest that homegrown solutions are not good but I believe that with a lot of things that are developing and and there are so many open source projects out there shout out to open feature that's been doing good in terms of leveraging the power of feature flags or feature management I would say and and then there's lack of confidence and governance where you know the the current state is that people are happy with with their CI CD solutions and they have not taken a look at at what other things that can be done or brought up but you know getting started with feature flags is easy I mean if you if you talk about a lot of other developer tools out there it might take a longer time to integrate but this this doesn't really take a long time I mean you just need to ensure that let's say your your features on a place and you can you can usually find I mean feature flags as as you know a few lines of code or a few commands it's basically a comment as this say and and that's that's where if you are just moving the comment as a feature it it becomes a flag or basically acts like a button right so the current state obviously also means that there's lesser adoption the community has been has been growing I mean people have not seen feature flags as something which is essential but slowly there's there's with with the identification of how important managing your features are I think the the the shift has has started to you know ensuring that feature flags is being adopted and if you look at it from a software release workflow perspective I mean developers are writing code but you know any changes are put behind a feature flag so that makes the living code on time testing features for impact easier if you if you talk about you know DevOps engineers releasing code to production it becomes makes deployment easier and helps bringing no change to the process and it continues I mean you move on to the product manager side and then obviously the customer facing side so it acts in a loop where the value you know eventually helps you iterate on your features faster and and deliver features with with quality as we spoke about during the value of feature flags and from business perspective as you can see this is an example of a new UI feature flag that we have taken and that I mean they they can be managed in terms of KTOPS or YAML files and it helps you know automate your business processes you are developing and then you're automating so it's it's I mean and then eventually if you want you can create your flag rules how how you want your flag to behave if you if you're not sure how they behave you you know you have to understand that feature flags get applied to end users of the application right so or you can call them targets or other other systems may call them users sessions. So you know these these targets have attributes that to define and that there are various attributes that can be there such as email licensing plan location other characteristics and then you can use those attributes to decide which flags to serve them. Right so I took the example of a new UI but let's say if I have to take some more examples of what what can be used or what what are the key business processes then you know they they involve. I mean making the velocity better because you can merge your feature branches sooner and deploy more often without worrying or isolating complete features it's easier to control the state of changes across environments with less custom scripting and you can hand these things over to your stakeholders to decide how or when when to make them work. So moving ahead how feature flags to it or what are the best ways feature flags function it helps you control access to your features as I mentioned before there's a toggle feature that that's mostly available in your production environments where you can switch on or switch off the features that you want it helps you resolve issues without without rollbacks as we mentioned before so it just helps you. I mean avoid rollbacks and and save time and I mean mitigate risks as it also helps you deploy in a smaller sense which I mean as we spoke about large deployment hosting a lot of risks I think if you're deploying. I mean features one by one or in a smaller sense then obviously there's less risk in terms of you know runtime while while the systems are in production it also minimizes the blast radius of changes so eventually there are a lot of. I mean you can you can serve your requirements faster and it becomes easier for you to you know go ahead with your deployments or your future deployments and outside engineering itself as we spoke about your sales teams your customer facing teams. They they are eventually empowered with how feature flags help you toggle in between your features. So moving on let's take a look at a few case studies and what are the challenges a few users of feature flags out there have faced. So I mean let's take a look at this enterprise it's called enter and they they were facing a lot of challenges to stabilize their pre production environments you know as as development teams increased and you know that I mean they were initially 12 teams and then it became 20 teams. And and the the it was essential to reimagine delivering software itself as we spoke about and you know software teams have their methodologies they might end up using different feature flag providers or they might want to deliver the software differently. They want to operate their deployment so you know having a unified approach was necessary and that is why just you know they enhance their their idea of software delivery with. You know having feature flags in place which helped them increase deployment frequency from twice per week to 14 times per week it helped them decrease their fear change failure rate from 20% to 5% and there's a there was a reduced roll back time from two hours to five hours in eventually you know ensuring that this feature flags becomes successful for them. And you know there are a lot of few problems that you know feature flags over the time have have incurred or presented in front of the community. I mean teams didn't get time to clean them up leading to them to I mean messy or sprawling code or lack of clarity around which flags still matter. I mean that the engineers were still creating their flags but they did not know what they meant they they did not know who was responsible for turning the flag on. Sometimes it's the sale person sometimes it's the product manager. So sometimes the engineering manager so it you know felt like playing a hot potato somewhat and everyone who operated flag eventually had access to production right so which which felt insecure in in some in some sense team started feeling insecure. And you know that's where the solution came into place where you know you have a discussion upfront of how to clean up the flags promptly. Once the feature has been rolled out decide on who owns the process and agree on regularly view reviews of the flag inventory and necessity. And the recommendation is also to make extensive use of the RBAC mechanism and bringing a security and compliance methodology into process or you know by deciding who to onboard to feature flags and with what commission level while feature flags do not give anyone access to customer data it's obviously necessary that you know that you should know your intentions about who has that access and even if then may not be single owner for a flag. It's it's very necessary early on in development that it's be it be relevant to a cross functional group to have the conversation and outline who should do what and who should not do what and who should update the flags at different stages. And this is the learning from from the community that that we have had over these various case studies. Moving on there's another case study that there was too much risk to slow for a for a release process. So I mean, again, this is another company called Metricus they needed to be able to reduce the risk of feature deployment while simultaneously increasing the velocity at which they shipped code and they there. They believe that eventually it helped them, you know, apply CI CD in a proper way where it was it wasn't just about, I mean, applying CI CD but, you know, making it faster releasing features to customers in a faster sense and making it. I mean, easier for them to, you know, commit to production I mean if you have to talk about them itself then I think they reduced production I mean, committing to production by 66% and they are able to take smarter risks feature development help them solve to, I mean, two major problems. That is one is they don't have to decide internally on how or who has to create it and then how to push it so it becomes more diversified the responsibility of releases become more diversified as as it says. And lastly, if we talk about this use case style attack. So they their product teams were asked to have more control over feature releases and exposure instead of deployment and they they had to I mean, take the next step in leveling up the increase in velocity and controlling their software delivery processes. So, I mean, they they wanted to achieve unparalleled velocity, I would say I mean that's where the belief that CI CD is not enough and you know feature flags obviously help you integrate better with the CI CD side of things and it makes your I mean, the customer account team responsive and helps deliver features as as we we mentioned previously. So with this we'll we'll just talk about what are the best ways to I mean deliver features and manage your features. It's necessary for you to have a flag management dashboard, which which helps you manage these flags, there has to be a global governance enforcement as we spoke about so that governance is better. There's a flexible user targeting so so that your, I mean, your users are flexible in terms of getting access to these features, and you can you can build deploy and release, you know, in a better sense, and have have some public API is out there open source is the way forward as as we mentioned and that's why I spoke about the open feature tool as well. And lastly, as we spoke about feature flags, I mean it's, it's a great way for not just an organization but an individual developer itself to align closely to the users and simplify the access to features. And it helps organizations with another layer of control velocity and risk management over the software delivery process. And while it seems simple, obviously there are so much there's so much more that comes up as a challenge with feature flags. And with, with that, you know, you need to continue to scale improve your feature management side of things, ensure that there are minimal rollbacks and how you can, you can deliver feature in the better sense, and obviously, release confidently with with pipelines. So with this, I think we come to the end of this talk. But in the end, obviously, I like to give you a gist of things that, you know, we spoke about how feature flags are essential, what are the risks during software delivery. And obviously, how how you can ensure that software delivery is managed in a better sense you can ship code faster and toggle around your features as and when required so that you can deliver them to the end users in in a better sense and and mitigate all the risks that come up with the challenges of software delivery. And for that, I also would love to invite you to the feature flags community that we are building it's a meter group as well as the slack community. And we will talk more from a community aspect about feature flags, what can be done better wise feature flags not just essential for developers, but all personas and obviously we look forward to learn more alongside you in terms of feature management and feature flags. So with this, thank you so much for tuning in and see you next time.