John Kodumal is CTO and co-founder of LaunchDarkly, a continuous delivery platform. John was a development manager at Atlassian, where he led engineering for the Atlassian Marketplace. Prior to that he was an architect at Coverity, where he worked on static and dynamic analysis algorithms. He has a Ph.D. from UC Berkeley in programming languages and type systems, and a BS from Harvey Mudd College.
(upbeat music) - Hi, everyone, my name is John Kodumal, I'm the CTO and Co-Founder of LaunchDarkly. I'm excited to spend some time with you today, walking through our product vision and sharing some of the things that we've built over the year. I'd like to frame the conversation within the context of. LaunchDarkly's mission and vision statement. We believe that software powers the world. Everyone in this room has the experience of relying on software, not just in the workplace, but in their own personal lives. And as we rely more and more on software to get through our day, we demand more and more of that software. We don't tolerate buggy experiences, we don't tolerate poor user interfaces. And increasingly, we have more choices about the software that we use, both in the workplace and at home. This is forcing more companies to become really software-driven and software-fast organizations. I'm sure that some of the people in this audience here at Trajectory today are at organizations that are shifting to become more software-fast and building world-class software organizations within their company. And some of the audience members here today are companies that are already very software-driven and are thinking about ways to increase or improve their pace of innovation in the face of more complex software and increasing customer demand. We believe that LaunchDarkly is one of the best ways to accomplish those needs. LaunchDarkly empowers all teams to deliver and control their software to produce better user experiences and higher quality software faster. We've seen the use of the platform skyrocket over the course of the past year, and we've seen this through some of the key metrics that we track. We serve over 6 trillion feature flags per day, and we do that to over 14 million mobile devices and browsers at peak and three million concurrent servers at peak. We do this on top of a platform that reliably delivers updates to your feature flags to your infrastructure within 200 milliseconds. We've also seen that scale reflected in our customers. We have over 1300 customers using the LaunchDarkly platform today. We power 21 of the Fortune 100 companies. We're very proud of the companies using us. And one of the things that we've heard from each of these companies is as they continue to adopt LaunchDarkly, they're using more and more in new and novel use cases. Over the past few weeks, we've elaborated and enumerated these use cases in the trajectory nano series through the four pillars of build, operate, learn, and empower. These four pillars cover some of the most common use cases for feature flags, including kill switching, canary launches, or even more advanced use cases like the use of longterm feature flags and operational settings or feature flags for AB testing. Even feature flags for entitlements, making sure that the right customers have access to the right features. Our vision for the LaunchDarkly product is to make each of these use cases extremely natural and easy to use within the LaunchDarkly product and to provide a platform that delivers the reliability you expect so you can use the. LaunchDarkly and trust it for all of these use cases. We've been investing in the product with that vision in mind, and we've categorized our investments in three different themes,. LaunchDarkly Everywhere, Advanced Insights, and. Automation & Control. I wanna talk through each of these themes and explain some of the investments that we've made in each of these areas. And we'll start with LaunchDarkly Everywhere. We firmly believe that LaunchDarkly can be used in any kind of software, not just mobile applications or servers, websites, but in any piece of network-connected software. We also think that LaunchDarkly plays a critical role in your stack, and that requires you to connect LaunchDarkly to more and more pieces of your stack. To that end, we've been investing in a number of key areas, new SDKs so that you can use LaunchDarkly in a first-class way in any software that you produce. New integrations that allow you to connect LaunchDarkly to all the different components of your stack, and a new integration framework and partner program that allow us to build better integrations with the tools you're already using. And finally, a new edition of the LaunchDarkly relay proxy that provides even more resilience and security. The reality that we see from our customers is that modern tech stacks are complex. They're built with multiple languages, services, and tools. And we believe that to leverage LaunchDarkly to its full capabilities, we need to make LaunchDarkly work with everything that you're doing, all of the languages you're using and all of the tools in your stack. We also see that feature flags are being used everywhere, not just in servers, not just in mobile apps and browsers, but also in embedded contexts. LaunchDarkly is used in OTT platforms like Roku and Amazon Fire Stick, embedded systems like vehicle infotainment systems, and were used in infrastructure as well, all the way from the database to the Edge. To support these scenarios, we support over 20 SDKs. When LaunchDarkly builds an SDK, we do it in a first-class fashion. We never release half-baked, half-supported SDKs. So when you're using any of the SDKs shown on this slide, you're getting that first class. LaunchDarkly SDK experience. We're also investing in new SDKs. By the end of the year, we'll have released support for two new SDKs, one, the Salesforce Apex SDK, which allows you to use. LaunchDarkly feature flags in your Apex code, and a second SDK for Flutter, which allows you to use. LaunchDarkly in a first-class way whenever you're building a. Flutter mobile application. We're connecting LaunchDarkly to more and more systems in your stack. We've released LaunchDarkly integrations for all the tools that you see here today. And in fact, we're increasing the pace of innovation in our integrations. Over the past seven months, we've released 10 new integrations. Part of what's enabled that new speed is the release of the new LaunchDarkly Integration Framework. The integration framework exposes new connection points in the LaunchDarkly product and allows integrators to connect to those integration points with a simple code-free system. You can now build end-to-end integrations on top of the LaunchDarkly platform in hours, instead of weeks. Here's a simple example. To build a new LaunchDarkly integration, there are only three simple steps. You fork our open-source repository, define a short manifest file describing how your integration works and submit a pull request to us. Once we've merged that pull request, your integration will go live. This is what this looks like in practice. What I'm showing you on this slide is a complete end-to-end example of a signal effects integration. On the left hand side, we show a complete manifest describing how signal signal effects interacts with LaunchDarkly. I'm not hiding anything. There's no code other than this manifest file. And once this manifest file is live in the LaunchDarkly integration framework, it'll expose everything in the product, including a UI generated from the manifest file. We've created a new partner program that will allow our partners to leverage the integration framework and other technologies we're building to help you integrate with LaunchDarkly. By joining the partner program, you can take advantage of key benefits that we're providing our partners. First, we'll give you early product access so you can build integrations and go live with us whenever we release a new feature. Second, we'll work with you for joint marketing activities. We'll give you customer visibility so that we can identify mutual customers to work with. And finally, we'll give you a medium for technical feedback so that we can build better integrations together. You can use the LaunchDarkly integration framework by signing up for our early access program. You can head to launchdarkly.com/eap to join. We also invite everyone to join our partner program to reach thousands of customers using the LaunchDarkly application. And you can join our partner program from launchdarkly.com/partner. One of the things that we've heard from our enterprise customers as they've expanded the use of the LaunchDarkly platform within their organization is that feature flags have become critical infrastructure for them. They require availability, the highest levels of availability from the LaunchDarkly platform. One of the questions they ask us is how can we provide even additional redundancy with our use of LaunchDarkly. Our answer to that has been the LaunchDarkly relay proxy. If you're not familiar with it, the relay proxy is an open-source Go microservice. It stateless, horizontally scalable, and easy to deploy. By sticking the LaunchDarkly relay proxy within your own network, you can disconnect or decouple your servers and infrastructure from the LaunchDarkly service. If there's any kind of network partition or incident impacting the LaunchDarkly service, you can rest assured knowing that your infrastructure is connecting to the relay proxy directly, and won't be impacted. Many of our customers have been adopting the. LaunchDarkly relay proxy. One of the things that we've heard is that scale, these enterprise customers want and even easier to use solution. They want things like plug and play set up, they want live updates, and they want reduced operational overhead so that they can scale the relay proxy without manpower investment on their end. To that end, we're announcing a new offering called the Relay Proxy Enterprise. This is a new enterprise grade edition of the relay proxy that includes additional capabilities that enterprises need to scale the relay proxy with reduced developer and operations overhead. The first new capability that we're announcing for really a proxy enterprise edition is something we're calling automatic configuration. With the relay proxy today, whenever you add a new project or environment to LaunchDarkly, you need to update your. LaunchDarkly configuration file for that relay proxy and restart the relay proxy to pick up those changes.
That's overhead we want to avoid. Automatic configuration allows your relay proxy instance to automatically detect new environments and projects as you define them within LaunchDarkly and push those new environments to your relay proxy instance, without having to restart your services. We're also providing the capability to easily manage those configurations from within the LaunchDarkly UI directly. Here's an example of what this looks like. We've got a new configuration setting where you can now define a configuration and pick the projects and environments that your relay proxy supports. Once you copy that key, all you need to do is push that key to your relay proxy, and any configuration changes to the really proxy are now managed through the launch directly UI, and they're picked up automatically in real time by your relay proxy without having to restart. I wanna move on to the next piece of our product vision, which is Advanced Insights. One of the things that we've learned from our customers is as they adopt LaunchDarkly, it becomes increasingly important to have greater visibility into how the LaunchDarkly platform is being used and greater access to the data in the LaunchDarkly platform. We're iterating on a number of new features that meet those needs. I'm gonna walk through each of them in turn. We'll start with saved dashboards. This is a new capability that we've been asked for from a lot of our customers. This is the ability to set a filter on your LaunchDarkly dashboard, winnowing down the set of flags that you're looking at, and then share that filter or saved that filter so that you can come back to it later. In this specific example, I've restricted my view of flags to flags evaluated in the last hour, just my active flags, and specifically the ones that have active experiments. I can then take this, navigate to it quickly from my browser, or even share this filter with other members of my team. We're also launching a new experiments view. This experiment's view will make it easy to manage all of your experiments from one place within LaunchDarkly and understand how your experiments are performing or which ones require you to take action. We're building a new metrics import capability that allows you to connect events in segment into LaunchDarkly automatically and make them available for experimentation. We're adding on to our new data export offering. For those of you not familiar with data export, data export is a new capability in LaunchDarkly that allows you to push all of your feature flag analytics in real time to a downstream system like Amazon Kinesis,. Segment, Google Cloud PubSub, mParticle or now our new support for Azure Event Hubs. Finally, I wanna talk about code references. If you're not familiar with code references, you should learn a little bit more about it. It's one of our most commonly-used integrations, and it's incredibly impactful for managing technical debt. Code references allow you to see and manage references to your code directly from within LaunchDarkly. You can connect code references to your code provider like GitHub, GitLab or Bitbucket directly. We're adding new capabilities to make code references even more powerful and easy to use. The first one that I wanna talk about is called reference aliases. This is a common need that we see from some of our customers if they've defined wrappers or other ways of decorating the LaunchDarkly SDK in their own code base. You can now define patterns by which we can identify references to feature flags. In this example that I'm showing here, we've gone from dash snake case to camelcase, but code references is able to pick up both kinds of references because we've set that pattern up. Another enhancement that we're adding to code references is the ability to filter by branches. This will give you quick visibility into just the branches that matter to you. The final feature that we're adding to code references is something called last known references. This feature will give you extra confidence in your ability to remove a feature flag from the LaunchDarkly dashboard, which requires you to first remove it from code. This last known references feature will actually surface for you, within the LaunchDarkly UI, the commit where you actually remove the last reference to a particular feature flag across all of your repositories. I wanna move on to the third piece of the LaunchDarkly product vision, Automation and Control. This is one of the themes that we've been investing in most heavily over the course of the year. We described some of this work in a webinar a few months ago on feature workflows. And for those of you that were able to join that webinar, I wanna update you with some of the progress that we've made. And for those of you that weren't able to join us then, I wanna give you a broad introduction to workflows and show you what's coming soon. We've heard from a number of customers that have adopted. LaunchDarkly at feature scale that feature flags are incredibly powerful. But as they've adopted. LaunchDarkly more broadly and brought it out to numerous teams throughout their organization, one of the things that we've been hearing is that it's a difficult journey to go from a feature that's initially launched, all the way to a feature that's live for everyone in production and ready to be sunsetted from the feature flag perspective. We wanna make that process easier to manage. Here's a story that we've heard from one of our customers, DroneDeploy. They've got a feature entitlements workflow. There are some features that they wanna expose just to certain paying customers. So when they wanna upsell features, the process looks like this. Their sales team will request a trial, then their customer will be added to a particular feature flag with a scheduled removal, say 30 days. And after 30 days, they need to remember to remove that customer from the flag so that they're not continuing to have access to a feature that they shouldn't have access to. The problem with this workflow today is that it's completely manual. There's nothing in the. LaunchDarkly product that reminds them to go ahead and remove that user from targeting. And that means that it's easy to forget to remove that user and continue to give them access past their scheduled trial period. We wanna make that automatic, and we wanna do it entirely from within LaunchDarkly. Another workflow that the. DroneDeploy team shared with us is their feature release workflow. As they've adopted feature flags more broadly, they wanna make sure that every new feature they release goes through the same process. They wanna make sure it's released for beta users first. They wanna be able to wait a number of days to make sure that feature is really baked. Then they want team leads to approve a broader release, and they wanna gate that release against the health check to make sure that nothing goes wrong, either from an operational perspective or from the perspective of user engagement with the feature that they've been building. One of the challenges they have is that all of these processes happen outside of LaunchDarkly, and many of them require manual steps. You can see the requirements to have scheduling approvals as well as health checks tied together in this workflow. This is something that we wanna automate directly within LaunchDarkly, and that's what we're aiming to do with feature workflows. You'll be able to create standardized release processes that can be used seamlessly across your entire organization using feature workflows. There are three building blocks that make up the feature workflows story. The first is scheduling. This is available now. It's something that we've completed and is an early access for some of our customers. One of the pieces of scheduling is the ability to schedule flag updates. You can define complex changes to flags and segments and make sure that they're applied at a future date and time. This is what this looks like within the LaunchDarkly product. We're gonna go ahead and add a rule to this feature flag to check that if a user is in a specific segment, our internal testing team, they get this flag, but we don't want anybody else to have access to it. Instead of saving this immediately, I'm gonna schedule this for later. I'm gonna go ahead and pick a time, later today, perhaps, a specific hour that I want the release to occur in, and I'm gonna make sure that I provide a little bit of context to the team about why I'm making this change in the form of a comment. I'll validate that I'm mean to do this on the production environment, and then I'm gonna go ahead and schedule this change. The change didn't take effect immediately, it got scheduled. But now what I can do is look at all of the changes that have been scheduled. I can see the change that I just added, and there's another one. Maybe tomorrow, I'm gonna go ahead and turn this feature on for everyone. You can see the power of automated scheduling. I can schedule multiple steps, I can schedule simple changes like turning a flag on, as well as complicated workflows and new rules. You can use scheduled flight changes to define full-on feature rollout strategies directly within LaunchDarkly. You can use it to provide time box access to trials. You can even use it to orchestrate set and forget releases. There's nothing more frustrating than having to wake up at 7:00 AM on a Sunday morning just to flip a feature flag within LaunchDarkly. A third building block that we're adding to the. LaunchDarkly platform is something we call approvals. There are two forms of approvals that we're building into LaunchDarkly. The first is a peer request approval. You can get peer feedback on profile proposed flag changes before you ever take action. We think that as feature flags become more widely adopted, this is going to be a key part of your change management process, just like pull requests are for your code changes. Here's what this looks like within the LaunchDarkly product. Imagine I wanna go ahead and make a fairly sophisticated rule change to a specific feature flag. I go ahead and enter those rules. I'm serving one particular variation of a registration flow to users in one county and a different registration flow to users in a different county. But this change feels a little bit risky because it's so complicated. The business logic is a little challenging. I wanna get a second set of eyes on this change before I actually make it go live. I'm gonna go ahead and ask Leslie and Ron to review these changes before they take effect. I leave a comment explaining the nature of the change, and now it's up to them to go ahead and approve it. My other user, my approver, Leslie, is gonna come into the system now, note that she has a change to approve. She's gonna go ahead and review that change, look at it, make sure it meets what she thinks the right business logic is and then apply that change. That pure request based approval is an important process that we've heard from a number of our customers. But we've heard large enterprise customers also talk through the need to have more strict compliance-based approval workflows. Here, these organizations have sophisticated change management practices and processes that they need to make sure are applied in their most mission-critical environments. LaunchDarkly will support this as well. With our new approval system, you can lock down an entire environment so that no change happens to that environment without approval first. Here's what this looks like. Notice that my save changes button has been replaced with a request approval button. That means that all of my changes need to go through an approval process. Even more critically, I can bring that approval process outside of LaunchDarkly itself and delegated to an external change management system like ServiceNow or JIRA Service Desk. Once that approval takes place, that change can go live in LaunchDarkly. This new powerful form of compliance-based approvals is an incredibly important way to make sure that your organization's change management practices are being met in LaunchDarkly. We're excited about this capability and excited to integrate it with change management systems like ServiceNow and JIRA Service Desk. Approval workflows give you more confidence in your changes They'll also allow you to follow your organization's change management practices in critical environments and integrate with all of your existing compliance tools. A third core capability that I wanna talk through is something we call flag triggers. This is another important building block in the future workflow story. Flag triggers are coming soon, and they allow you to automatically change your feature flags targeting based on triggers or conditions and external tools. Here are a couple examples of this in practice. First, I wanna talk through health checks. This is the idea of automatically killswitching a feature flag based on alerts that have been defined in observability tools. Here in this example, I wanna killswitch a feature flag if Datadog is reporting an elevated API error rate. I can define that really simply within LaunchDarkly and Datadog and be assured that if anything goes wrong, this feature flag will be turned off instantaneously. Another example of an external trigger is an experiment conversion. I might wanna roll out a winning variation of an experiment to 100% of my traffic as quickly as possible once I've detected a winner. Here's what that looks like within LaunchDarkly. I can define a trigger when a winning variation is declared, set the default rule to the winning variation. And now once that winning variation is detected, my feature flag will automatically be retargeted towards that winning variation. Flight triggers are an incredibly powerful capability. They'll allow you to dynamically trigger flag updates based on the metrics that matter to you, automate kill switches and triggers from observability tools and other external systems and automatically update flag targeting based on things like experimentation results or other conditions. scheduling, approvals, and flag triggers, scheduling, approvals, and flag triggers are incredibly powerful in isolation as I've shown them to you. But they can be combined. We've built these in a modular way so that you can connect scheduling, approvals and flag triggers together with feature flags to create incredibly powerful feature workflows. We're even allowing you to templatize these workflows. This means that you can define a workflow once and apply it to multiple feature flags with a single click. Here's an example of this. I can define a complex workflow that involves multiple steps, including scheduling, approval processes, and even health checks combined together. And I can connect those together into one template and enroll multiple feature flags. In this example, two flags are using that workflow, and I can add new flags to that workflow really easily with one or two clicks. Workflow templates are incredibly valuable as you roll out LaunchDarkly within a larger organization. They allow you to define release workflows in a repeatable fashion. They allow you to ensure consistency across all of your teams processes and automate multi-step workloads across your tools. Feature workflows can power any of the use cases we've been talking about here at Trajectory from build, to operate, to learn, and empower. In the build pillar, we can use feature workflows to build an incremental release workflow where we deploy to internal users to minimize our blast radius, wait a handful of days before deploying to a beta segment before a final rollout to all of our users. In the operate pillar, we can create an automated killswitch workflow that turns off a feature flag whenever a core metric comes out of band. In the learn pillar, we can build an experimentation workflow that automatically selects a winning variation at the appropriate time and rolls it out to all of our users. And in the empower pillar, we can set up an entitlements workflow that allows us to automatically remove users from trials at the appropriate time and connect manager approvals with trials if necessary. A number of customers have told us how feature workflows will help their team save time, avoid mistakes and stage automatic rollouts of new functionality to customers. One of our customers, Degreed, has said that, "What's nice about feature is that LaunchDarkly creates a safety blanket around feature releases that PMs can use to schedule and turn on a specific set of features for a customer after a build has deployed." Feature workloads are an incredibly powerful way to deliver and control software with speed, safety and consistency. We've gone through the. LaunchDarkly Product Vision, and I've shared some of the investments that we've been making across three themes, LaunchDarkly Everywhere,. Advanced Insights, and Automation and Control. We believe that these investments will help you deliver more value while using LaunchDarkly. I invite all of you to join our early access program to gain access to these new features. You can join us at launchdarkly.com/eap. Thank you so much for joining us today. I hope you're as excited as I am about all the new things that we're building here at LaunchDarkly. (upbeat music)