SlideShare a Scribd company logo
1
How to feature flag and
run experiments in iOS
and Android
Kody O’Connell
Developer Advocate
Optimizely
Tom Zurkan
Senior Software Engineer
Optimizely
2
Optimizely Introductions
Perri Bronson
Product Marketing
Tom Zurkan
Sr. Software Engineer
Kody O’Connell
Developer Advocate
https://twitter.com/pezbronson https://twitter.com/KodyOConnellhttps://medium.com/@TomZurkan
3
Housekeeping ● We are recording this webinar
● You will be emailed the slides and
recording
● Ask your questions via the webinar
questions box
● We’ll answer all questions at end
4
Agenda
1. Why use feature flags in mobile app development? (Kody)
2. How the iOS and Android SDKs work (Tom)
3. The steps to create free Optimizely feature flags in your iOS app (Kody)
4. How to set up a feature experiment with Full Stack (Kody)
5. Q&A (Tom and Kody)
5
What are feature flags?
Feature Flags
if feature_flag is ‘on’:
do_something()
else:
do_something_else()
7
Controlled Rollouts
100% ROLLOUTGRADUAL
ROLLOUTBETA USERSSTAGING
ENVIRONMENT
LOCAL
DEVELOPMENT
8
How do Feature Flags
fit into CI/CD?
9
Software Development Life Cycle
DEPLOY
BUILD &
TEST
RELEASE
Develop & Iterate Quickly
● Selectively enable test suites
and making data-driven
technical evaluations
● Don’t waste time untangling
messy merge conflicts
Delight Your Customers
● Empower teams to
manage their own releases
● Incident? Minimize time to
solution
Scale Feature Delivery
● Ship faster by decoupling
deploys from releases to
shorten development cycles
● Deploy frequently and safely
10
Faster Development Cycles
Features don’t need to be complete to get merged
● No stale feature branches
● Smaller code reviews
● Safety of a feature flag
BUILD & TEST
11
Seamless Delivery
● Decouple deployment from release
● Stop worrying about when to deploy
● Deploy freeze != Feature freeze
○ E.g. Thanksgiving Weekend
DEPLOY
12
Feature Control
● Empower teams to manage their own
releases
● Test out your feature on a small targeted
audience 🐥
○ Easily manage beta customers
RELEASE
13
Incident Response
It’s 3am, you get paged… 😱
● Smaller changeset → easier investigation
● Roll back, don’t hotfix
● Someone else having an outage? → killswitch
● Don’t roll back an entire version for a single bug
RELEASE
14
Feature Flags on Mobile
Feature Flags
on Mobile
mobile_app_header
Feature Flags
on Mobile
mobile_app_header
search_ranking_algorithm
Feature Flags
on Mobile
mobile_app_header
checkout_flow
search_ranking_algorithm
Feature Flags
on Mobile
19
Beyond Feature Flagging:
Experimentation
mobile_app_header
checkout_flow
search_ranking_algorithm
Feature Experiment
on Mobile
enabled: True
header_color: #F829EA
header_sticky: True
header_height: 20
mobile_app_header
enabled: True
checkout_version: 3
quick_checkout: True
header_height: 20
checkout_flow
enabled: True
fresh_boost: 1.25
profile_boost: 2.10
local_boost: 0.75
search_ranking_algorithm
Feature Experiments
Remote
Configuration
enabled: True
header_color: #F829EA
header_sticky: True
header_height: 20
mobile_app_header
header_message: ‘We
love our users <3’
We love our users <3
SDK polls for new config at
desired frequency
Webhooks deliver new
config in seconds
23
Sounds great, but how does it work?
How Optimizely Full Stack Works
JSON
Datafile
Client SDKs
Server SDKs
Remote
Config
Data
Warehouse
Remotely configure
flags / experiments in Optimizely.
(UI and/or REST API)
Update the JSON datafile
SDKs make decisions locally,
track events asynchronously
for zero latency
Analyze results through
Optimizely and/or exports
and integrations into your
other systems
Optimizely
Event Tracking
Event Tracking
How iOS/tvOS SDK works
Client - Interact directly with the client
DatafileHandler - Responsible for getting, polling and caching datafile
EventHandler - Saves and sends events to Optimizely backend
UPS - User Profile Service holds previous bucketing information
Unique to iOS/tvOS SDK
- Written in Swift with safety first and modern APIs
- No core data (we use file for events by default).
- Event handler has event batching for performance.
- Datafile handler and event handler are unscheduled when
app goes to background.
- Clean Swift API with Objective-C hanging off to the side.
- Take a look at my medium articles on the Swift SDK
design (enums, atomic property, dependency injection,
and exposing Objective-C API)
How the Android SDK works
Manager - Holds the Optimizely instance from the Optimizely Java SDK
DatafileHandler - Implements ProjectConfigManager. Responsible for getting,
polling and caching datafile
EventHandler - Saves and sends events to Optimizely backend
UPS - User Profile Service holds previous bucketing information
Unique to Android SDK
- Datafile handler uses the intents and the JobScheduler to
schedule future updates even in the background
- Events are also uses intents and the scheduler to
schedule attempts at flushing the events.
- Events can be triggered to send after a connection
becomes available.
- Android and iOS features will converge.
- Config diffs instead of full configs.
- IDE Plugins to help with development
(https://plugins.jetbrains.com/plugin/13969-optimizely)
What’s next for our mobile SDKs
30
Let’s create a feature flag and set up
an experiment in Swift.
31
Best Practices
Visibility
● Flag On or Off
● Environment Deployed
● Behavior of flag ON/OFF
Risk Assessment
● Can this feature be
rolled back safely?
● What happens if this
flag were to fail?
Exit Criteria/Expiration
● When is the usefulness
of this flag over?
● How soon should we
remove this flag when it
is no longer needed?
● Who should be
removing this flag?
Communication
● Who should be alerted
when flag is turned ON?
● Who should be
monitoring metrics?
● Who should be alerted if
flag is turned OFF?
32
Resources
iOS
● Swift SDK and demo app on Github https://github.com/optimizely/swift-sdk
● Swift SDK docs https://docs.developers.optimizely.com/full-stack/docs/swift-sdk
● Kody’s blog post https://blog.optimizely.com/2020/02/24/feature-flags-swift-ios/
Android
● Android SDK and demo app on Github https://github.com/optimizely/android-sdk
● Android SDK docs https://docs.developers.optimizely.com/rollouts/docs/android
General
● Optimizely Full Stack product info https://www.optimizely.com/platform/full-stack/
● Optimizely SDK IntelliJ plug-in https://plugins.jetbrains.com/plugin/13969-optimizely
● Tom’s Blog https://medium.com/@TomZurkan
optimize.ly/mobile-rollouts
Free feature flags & controlled rollouts
34
Questions?

More Related Content

Similar to How to feature flag and run experiments in iOS and Android

Android automation tools
Android automation toolsAndroid automation tools
Android automation tools
SSGMCE SHEGAON
 
Failure is an Option: Scaling Resilient Feature Delivery
Failure is an Option: Scaling Resilient Feature DeliveryFailure is an Option: Scaling Resilient Feature Delivery
Failure is an Option: Scaling Resilient Feature Delivery
Optimizely
 
ganesh[5+ years] exp _Resume
ganesh[5+ years] exp _Resumeganesh[5+ years] exp _Resume
ganesh[5+ years] exp _Resumeganesh r
 
Introduction To Mobile-Automation
Introduction To Mobile-AutomationIntroduction To Mobile-Automation
Introduction To Mobile-Automation
Mindfire Solutions
 
SplunkLive! Seattle - Splunk for Developers
SplunkLive! Seattle - Splunk for DevelopersSplunkLive! Seattle - Splunk for Developers
SplunkLive! Seattle - Splunk for Developers
Grigori Melnik
 
Splunk for Developers Breakout Session
Splunk for Developers Breakout SessionSplunk for Developers Breakout Session
Splunk for Developers Breakout Session
Splunk
 
CV_Sayani_Updated
CV_Sayani_UpdatedCV_Sayani_Updated
CV_Sayani_UpdatedSAYANI ROY
 
Deepak_28feb16_mix
Deepak_28feb16_mixDeepak_28feb16_mix
Deepak_28feb16_mixDeepak Punia
 
Getting started with appium
Getting started with appiumGetting started with appium
Getting started with appium
Pratik Patel
 
Building a scalable app factory with Appcelerator Platform
Building a scalable app factory with Appcelerator PlatformBuilding a scalable app factory with Appcelerator Platform
Building a scalable app factory with Appcelerator Platform
Angus Fox
 
4 Phases followed by the Android Application Development Company.pdf
4 Phases followed by the Android Application Development Company.pdf4 Phases followed by the Android Application Development Company.pdf
4 Phases followed by the Android Application Development Company.pdf
John William
 
Dive into Angular, part 5: Experience
Dive into Angular, part 5: ExperienceDive into Angular, part 5: Experience
Dive into Angular, part 5: Experience
Oleksii Prohonnyi
 
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Applitools
 
Gnana Prasuna B_5.5 years
Gnana Prasuna B_5.5 yearsGnana Prasuna B_5.5 years
Gnana Prasuna B_5.5 yearsGnana Bocha
 
Splunk for Developers Breakout Session
Splunk for Developers Breakout SessionSplunk for Developers Breakout Session
Splunk for Developers Breakout Session
Splunk
 
Splunk for Developers
Splunk for DevelopersSplunk for Developers
Splunk for Developers
Splunk
 
Lecture 12 - Maps, AR_VR_aaaaHardware.pptx
Lecture 12 - Maps, AR_VR_aaaaHardware.pptxLecture 12 - Maps, AR_VR_aaaaHardware.pptx
Lecture 12 - Maps, AR_VR_aaaaHardware.pptx
NgLQun
 
Vipin qa engineer-3.5+years_exp
Vipin qa engineer-3.5+years_expVipin qa engineer-3.5+years_exp
Vipin qa engineer-3.5+years_exp
Vipin Gupta
 

Similar to How to feature flag and run experiments in iOS and Android (20)

Android automation tools
Android automation toolsAndroid automation tools
Android automation tools
 
Resume(1)
Resume(1)Resume(1)
Resume(1)
 
Failure is an Option: Scaling Resilient Feature Delivery
Failure is an Option: Scaling Resilient Feature DeliveryFailure is an Option: Scaling Resilient Feature Delivery
Failure is an Option: Scaling Resilient Feature Delivery
 
ganesh[5+ years] exp _Resume
ganesh[5+ years] exp _Resumeganesh[5+ years] exp _Resume
ganesh[5+ years] exp _Resume
 
Introduction To Mobile-Automation
Introduction To Mobile-AutomationIntroduction To Mobile-Automation
Introduction To Mobile-Automation
 
SplunkLive! Seattle - Splunk for Developers
SplunkLive! Seattle - Splunk for DevelopersSplunkLive! Seattle - Splunk for Developers
SplunkLive! Seattle - Splunk for Developers
 
Splunk for Developers Breakout Session
Splunk for Developers Breakout SessionSplunk for Developers Breakout Session
Splunk for Developers Breakout Session
 
CV_Sayani_Updated
CV_Sayani_UpdatedCV_Sayani_Updated
CV_Sayani_Updated
 
SURYA_3.6
SURYA_3.6SURYA_3.6
SURYA_3.6
 
Deepak_28feb16_mix
Deepak_28feb16_mixDeepak_28feb16_mix
Deepak_28feb16_mix
 
Getting started with appium
Getting started with appiumGetting started with appium
Getting started with appium
 
Building a scalable app factory with Appcelerator Platform
Building a scalable app factory with Appcelerator PlatformBuilding a scalable app factory with Appcelerator Platform
Building a scalable app factory with Appcelerator Platform
 
4 Phases followed by the Android Application Development Company.pdf
4 Phases followed by the Android Application Development Company.pdf4 Phases followed by the Android Application Development Company.pdf
4 Phases followed by the Android Application Development Company.pdf
 
Dive into Angular, part 5: Experience
Dive into Angular, part 5: ExperienceDive into Angular, part 5: Experience
Dive into Angular, part 5: Experience
 
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
 
Gnana Prasuna B_5.5 years
Gnana Prasuna B_5.5 yearsGnana Prasuna B_5.5 years
Gnana Prasuna B_5.5 years
 
Splunk for Developers Breakout Session
Splunk for Developers Breakout SessionSplunk for Developers Breakout Session
Splunk for Developers Breakout Session
 
Splunk for Developers
Splunk for DevelopersSplunk for Developers
Splunk for Developers
 
Lecture 12 - Maps, AR_VR_aaaaHardware.pptx
Lecture 12 - Maps, AR_VR_aaaaHardware.pptxLecture 12 - Maps, AR_VR_aaaaHardware.pptx
Lecture 12 - Maps, AR_VR_aaaaHardware.pptx
 
Vipin qa engineer-3.5+years_exp
Vipin qa engineer-3.5+years_expVipin qa engineer-3.5+years_exp
Vipin qa engineer-3.5+years_exp
 

More from Optimizely

Clover Rings Up Digital Growth to Drive Experimentation
Clover Rings Up Digital Growth to Drive ExperimentationClover Rings Up Digital Growth to Drive Experimentation
Clover Rings Up Digital Growth to Drive Experimentation
Optimizely
 
Make Every Touchpoint Count: How to Drive Revenue in an Increasingly Online W...
Make Every Touchpoint Count: How to Drive Revenue in an Increasingly Online W...Make Every Touchpoint Count: How to Drive Revenue in an Increasingly Online W...
Make Every Touchpoint Count: How to Drive Revenue in an Increasingly Online W...
Optimizely
 
The Science of Getting Testing Right
The Science of Getting Testing RightThe Science of Getting Testing Right
The Science of Getting Testing Right
Optimizely
 
Atlassian's Mystique CLI, Minimizing the Experiment Development Cycle
Atlassian's Mystique CLI, Minimizing the Experiment Development CycleAtlassian's Mystique CLI, Minimizing the Experiment Development Cycle
Atlassian's Mystique CLI, Minimizing the Experiment Development Cycle
Optimizely
 
Autotrader Case Study: Migrating from Home-Grown Testing to Best-in-Class Too...
Autotrader Case Study: Migrating from Home-Grown Testing to Best-in-Class Too...Autotrader Case Study: Migrating from Home-Grown Testing to Best-in-Class Too...
Autotrader Case Study: Migrating from Home-Grown Testing to Best-in-Class Too...
Optimizely
 
Zillow + Optimizely: Building the Bridge to $20 Billion Revenue
Zillow + Optimizely: Building the Bridge to $20 Billion RevenueZillow + Optimizely: Building the Bridge to $20 Billion Revenue
Zillow + Optimizely: Building the Bridge to $20 Billion Revenue
Optimizely
 
The Future of Optimizely for Technical Teams
The Future of Optimizely for Technical TeamsThe Future of Optimizely for Technical Teams
The Future of Optimizely for Technical Teams
Optimizely
 
Empowering Agents to Provide Service from Anywhere: Contact Centers in the Ti...
Empowering Agents to Provide Service from Anywhere: Contact Centers in the Ti...Empowering Agents to Provide Service from Anywhere: Contact Centers in the Ti...
Empowering Agents to Provide Service from Anywhere: Contact Centers in the Ti...
Optimizely
 
Experimentation Everywhere: Create Exceptional Online Shopping Experiences an...
Experimentation Everywhere: Create Exceptional Online Shopping Experiences an...Experimentation Everywhere: Create Exceptional Online Shopping Experiences an...
Experimentation Everywhere: Create Exceptional Online Shopping Experiences an...
Optimizely
 
Building an Experiment Pipeline for GitHub’s New Free Team Offering
Building an Experiment Pipeline for GitHub’s New Free Team OfferingBuilding an Experiment Pipeline for GitHub’s New Free Team Offering
Building an Experiment Pipeline for GitHub’s New Free Team Offering
Optimizely
 
AMC Networks Experiments Faster on the Server Side
AMC Networks Experiments Faster on the Server SideAMC Networks Experiments Faster on the Server Side
AMC Networks Experiments Faster on the Server Side
Optimizely
 
Evolving Experimentation from CRO to Product Development
Evolving Experimentation from CRO to Product DevelopmentEvolving Experimentation from CRO to Product Development
Evolving Experimentation from CRO to Product Development
Optimizely
 
Overcoming the Challenges of Experimentation on a Service Oriented Architecture
Overcoming the Challenges of Experimentation on a Service Oriented ArchitectureOvercoming the Challenges of Experimentation on a Service Oriented Architecture
Overcoming the Challenges of Experimentation on a Service Oriented Architecture
Optimizely
 
How The Zebra Utilized Feature Experiments To Increase Carrier Card Engagemen...
How The Zebra Utilized Feature Experiments To Increase Carrier Card Engagemen...How The Zebra Utilized Feature Experiments To Increase Carrier Card Engagemen...
How The Zebra Utilized Feature Experiments To Increase Carrier Card Engagemen...
Optimizely
 
Making Your Hypothesis Work Harder to Inform Future Product Strategy
Making Your Hypothesis Work Harder to Inform Future Product StrategyMaking Your Hypothesis Work Harder to Inform Future Product Strategy
Making Your Hypothesis Work Harder to Inform Future Product Strategy
Optimizely
 
Kick Your Assumptions: How Scholl's Test-Everything Culture Drives Revenue
Kick Your Assumptions: How Scholl's Test-Everything Culture Drives RevenueKick Your Assumptions: How Scholl's Test-Everything Culture Drives Revenue
Kick Your Assumptions: How Scholl's Test-Everything Culture Drives Revenue
Optimizely
 
Experimentation through Clients' Eyes
Experimentation through Clients' EyesExperimentation through Clients' Eyes
Experimentation through Clients' Eyes
Optimizely
 
Shipping to Learn and Accelerate Growth with GitHub
Shipping to Learn and Accelerate Growth with GitHubShipping to Learn and Accelerate Growth with GitHub
Shipping to Learn and Accelerate Growth with GitHub
Optimizely
 
Test Everything: TrustRadius Delivers Customer Value with Experimentation
Test Everything: TrustRadius Delivers Customer Value with ExperimentationTest Everything: TrustRadius Delivers Customer Value with Experimentation
Test Everything: TrustRadius Delivers Customer Value with Experimentation
Optimizely
 
Optimizely Agent: Scaling Resilient Feature Delivery
Optimizely Agent: Scaling Resilient Feature DeliveryOptimizely Agent: Scaling Resilient Feature Delivery
Optimizely Agent: Scaling Resilient Feature Delivery
Optimizely
 

More from Optimizely (20)

Clover Rings Up Digital Growth to Drive Experimentation
Clover Rings Up Digital Growth to Drive ExperimentationClover Rings Up Digital Growth to Drive Experimentation
Clover Rings Up Digital Growth to Drive Experimentation
 
Make Every Touchpoint Count: How to Drive Revenue in an Increasingly Online W...
Make Every Touchpoint Count: How to Drive Revenue in an Increasingly Online W...Make Every Touchpoint Count: How to Drive Revenue in an Increasingly Online W...
Make Every Touchpoint Count: How to Drive Revenue in an Increasingly Online W...
 
The Science of Getting Testing Right
The Science of Getting Testing RightThe Science of Getting Testing Right
The Science of Getting Testing Right
 
Atlassian's Mystique CLI, Minimizing the Experiment Development Cycle
Atlassian's Mystique CLI, Minimizing the Experiment Development CycleAtlassian's Mystique CLI, Minimizing the Experiment Development Cycle
Atlassian's Mystique CLI, Minimizing the Experiment Development Cycle
 
Autotrader Case Study: Migrating from Home-Grown Testing to Best-in-Class Too...
Autotrader Case Study: Migrating from Home-Grown Testing to Best-in-Class Too...Autotrader Case Study: Migrating from Home-Grown Testing to Best-in-Class Too...
Autotrader Case Study: Migrating from Home-Grown Testing to Best-in-Class Too...
 
Zillow + Optimizely: Building the Bridge to $20 Billion Revenue
Zillow + Optimizely: Building the Bridge to $20 Billion RevenueZillow + Optimizely: Building the Bridge to $20 Billion Revenue
Zillow + Optimizely: Building the Bridge to $20 Billion Revenue
 
The Future of Optimizely for Technical Teams
The Future of Optimizely for Technical TeamsThe Future of Optimizely for Technical Teams
The Future of Optimizely for Technical Teams
 
Empowering Agents to Provide Service from Anywhere: Contact Centers in the Ti...
Empowering Agents to Provide Service from Anywhere: Contact Centers in the Ti...Empowering Agents to Provide Service from Anywhere: Contact Centers in the Ti...
Empowering Agents to Provide Service from Anywhere: Contact Centers in the Ti...
 
Experimentation Everywhere: Create Exceptional Online Shopping Experiences an...
Experimentation Everywhere: Create Exceptional Online Shopping Experiences an...Experimentation Everywhere: Create Exceptional Online Shopping Experiences an...
Experimentation Everywhere: Create Exceptional Online Shopping Experiences an...
 
Building an Experiment Pipeline for GitHub’s New Free Team Offering
Building an Experiment Pipeline for GitHub’s New Free Team OfferingBuilding an Experiment Pipeline for GitHub’s New Free Team Offering
Building an Experiment Pipeline for GitHub’s New Free Team Offering
 
AMC Networks Experiments Faster on the Server Side
AMC Networks Experiments Faster on the Server SideAMC Networks Experiments Faster on the Server Side
AMC Networks Experiments Faster on the Server Side
 
Evolving Experimentation from CRO to Product Development
Evolving Experimentation from CRO to Product DevelopmentEvolving Experimentation from CRO to Product Development
Evolving Experimentation from CRO to Product Development
 
Overcoming the Challenges of Experimentation on a Service Oriented Architecture
Overcoming the Challenges of Experimentation on a Service Oriented ArchitectureOvercoming the Challenges of Experimentation on a Service Oriented Architecture
Overcoming the Challenges of Experimentation on a Service Oriented Architecture
 
How The Zebra Utilized Feature Experiments To Increase Carrier Card Engagemen...
How The Zebra Utilized Feature Experiments To Increase Carrier Card Engagemen...How The Zebra Utilized Feature Experiments To Increase Carrier Card Engagemen...
How The Zebra Utilized Feature Experiments To Increase Carrier Card Engagemen...
 
Making Your Hypothesis Work Harder to Inform Future Product Strategy
Making Your Hypothesis Work Harder to Inform Future Product StrategyMaking Your Hypothesis Work Harder to Inform Future Product Strategy
Making Your Hypothesis Work Harder to Inform Future Product Strategy
 
Kick Your Assumptions: How Scholl's Test-Everything Culture Drives Revenue
Kick Your Assumptions: How Scholl's Test-Everything Culture Drives RevenueKick Your Assumptions: How Scholl's Test-Everything Culture Drives Revenue
Kick Your Assumptions: How Scholl's Test-Everything Culture Drives Revenue
 
Experimentation through Clients' Eyes
Experimentation through Clients' EyesExperimentation through Clients' Eyes
Experimentation through Clients' Eyes
 
Shipping to Learn and Accelerate Growth with GitHub
Shipping to Learn and Accelerate Growth with GitHubShipping to Learn and Accelerate Growth with GitHub
Shipping to Learn and Accelerate Growth with GitHub
 
Test Everything: TrustRadius Delivers Customer Value with Experimentation
Test Everything: TrustRadius Delivers Customer Value with ExperimentationTest Everything: TrustRadius Delivers Customer Value with Experimentation
Test Everything: TrustRadius Delivers Customer Value with Experimentation
 
Optimizely Agent: Scaling Resilient Feature Delivery
Optimizely Agent: Scaling Resilient Feature DeliveryOptimizely Agent: Scaling Resilient Feature Delivery
Optimizely Agent: Scaling Resilient Feature Delivery
 

Recently uploaded

Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Shahin Sheidaei
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
AMB-Review
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
WSO2
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Globus
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
wottaspaceseo
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
Globus
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 
Graphic Design Crash Course for beginners
Graphic Design Crash Course for beginnersGraphic Design Crash Course for beginners
Graphic Design Crash Course for beginners
e20449
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
vrstrong314
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
Donna Lenk
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
Tendenci - The Open Source AMS (Association Management Software)
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Globus
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
Juraj Vysvader
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
informapgpstrackings
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
Ortus Solutions, Corp
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
Cyanic lab
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
Globus
 

Recently uploaded (20)

Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
Graphic Design Crash Course for beginners
Graphic Design Crash Course for beginnersGraphic Design Crash Course for beginners
Graphic Design Crash Course for beginners
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
 

How to feature flag and run experiments in iOS and Android

  • 1. 1 How to feature flag and run experiments in iOS and Android Kody O’Connell Developer Advocate Optimizely Tom Zurkan Senior Software Engineer Optimizely
  • 2. 2 Optimizely Introductions Perri Bronson Product Marketing Tom Zurkan Sr. Software Engineer Kody O’Connell Developer Advocate https://twitter.com/pezbronson https://twitter.com/KodyOConnellhttps://medium.com/@TomZurkan
  • 3. 3 Housekeeping ● We are recording this webinar ● You will be emailed the slides and recording ● Ask your questions via the webinar questions box ● We’ll answer all questions at end
  • 4. 4 Agenda 1. Why use feature flags in mobile app development? (Kody) 2. How the iOS and Android SDKs work (Tom) 3. The steps to create free Optimizely feature flags in your iOS app (Kody) 4. How to set up a feature experiment with Full Stack (Kody) 5. Q&A (Tom and Kody)
  • 6. Feature Flags if feature_flag is ‘on’: do_something() else: do_something_else()
  • 7. 7 Controlled Rollouts 100% ROLLOUTGRADUAL ROLLOUTBETA USERSSTAGING ENVIRONMENT LOCAL DEVELOPMENT
  • 8. 8 How do Feature Flags fit into CI/CD?
  • 9. 9 Software Development Life Cycle DEPLOY BUILD & TEST RELEASE Develop & Iterate Quickly ● Selectively enable test suites and making data-driven technical evaluations ● Don’t waste time untangling messy merge conflicts Delight Your Customers ● Empower teams to manage their own releases ● Incident? Minimize time to solution Scale Feature Delivery ● Ship faster by decoupling deploys from releases to shorten development cycles ● Deploy frequently and safely
  • 10. 10 Faster Development Cycles Features don’t need to be complete to get merged ● No stale feature branches ● Smaller code reviews ● Safety of a feature flag BUILD & TEST
  • 11. 11 Seamless Delivery ● Decouple deployment from release ● Stop worrying about when to deploy ● Deploy freeze != Feature freeze ○ E.g. Thanksgiving Weekend DEPLOY
  • 12. 12 Feature Control ● Empower teams to manage their own releases ● Test out your feature on a small targeted audience 🐥 ○ Easily manage beta customers RELEASE
  • 13. 13 Incident Response It’s 3am, you get paged… 😱 ● Smaller changeset → easier investigation ● Roll back, don’t hotfix ● Someone else having an outage? → killswitch ● Don’t roll back an entire version for a single bug RELEASE
  • 21. enabled: True header_color: #F829EA header_sticky: True header_height: 20 mobile_app_header enabled: True checkout_version: 3 quick_checkout: True header_height: 20 checkout_flow enabled: True fresh_boost: 1.25 profile_boost: 2.10 local_boost: 0.75 search_ranking_algorithm Feature Experiments
  • 22. Remote Configuration enabled: True header_color: #F829EA header_sticky: True header_height: 20 mobile_app_header header_message: ‘We love our users <3’ We love our users <3 SDK polls for new config at desired frequency Webhooks deliver new config in seconds
  • 23. 23 Sounds great, but how does it work?
  • 24. How Optimizely Full Stack Works JSON Datafile Client SDKs Server SDKs Remote Config Data Warehouse Remotely configure flags / experiments in Optimizely. (UI and/or REST API) Update the JSON datafile SDKs make decisions locally, track events asynchronously for zero latency Analyze results through Optimizely and/or exports and integrations into your other systems Optimizely Event Tracking Event Tracking
  • 25. How iOS/tvOS SDK works Client - Interact directly with the client DatafileHandler - Responsible for getting, polling and caching datafile EventHandler - Saves and sends events to Optimizely backend UPS - User Profile Service holds previous bucketing information
  • 26. Unique to iOS/tvOS SDK - Written in Swift with safety first and modern APIs - No core data (we use file for events by default). - Event handler has event batching for performance. - Datafile handler and event handler are unscheduled when app goes to background. - Clean Swift API with Objective-C hanging off to the side. - Take a look at my medium articles on the Swift SDK design (enums, atomic property, dependency injection, and exposing Objective-C API)
  • 27. How the Android SDK works Manager - Holds the Optimizely instance from the Optimizely Java SDK DatafileHandler - Implements ProjectConfigManager. Responsible for getting, polling and caching datafile EventHandler - Saves and sends events to Optimizely backend UPS - User Profile Service holds previous bucketing information
  • 28. Unique to Android SDK - Datafile handler uses the intents and the JobScheduler to schedule future updates even in the background - Events are also uses intents and the scheduler to schedule attempts at flushing the events. - Events can be triggered to send after a connection becomes available.
  • 29. - Android and iOS features will converge. - Config diffs instead of full configs. - IDE Plugins to help with development (https://plugins.jetbrains.com/plugin/13969-optimizely) What’s next for our mobile SDKs
  • 30. 30 Let’s create a feature flag and set up an experiment in Swift.
  • 31. 31 Best Practices Visibility ● Flag On or Off ● Environment Deployed ● Behavior of flag ON/OFF Risk Assessment ● Can this feature be rolled back safely? ● What happens if this flag were to fail? Exit Criteria/Expiration ● When is the usefulness of this flag over? ● How soon should we remove this flag when it is no longer needed? ● Who should be removing this flag? Communication ● Who should be alerted when flag is turned ON? ● Who should be monitoring metrics? ● Who should be alerted if flag is turned OFF?
  • 32. 32 Resources iOS ● Swift SDK and demo app on Github https://github.com/optimizely/swift-sdk ● Swift SDK docs https://docs.developers.optimizely.com/full-stack/docs/swift-sdk ● Kody’s blog post https://blog.optimizely.com/2020/02/24/feature-flags-swift-ios/ Android ● Android SDK and demo app on Github https://github.com/optimizely/android-sdk ● Android SDK docs https://docs.developers.optimizely.com/rollouts/docs/android General ● Optimizely Full Stack product info https://www.optimizely.com/platform/full-stack/ ● Optimizely SDK IntelliJ plug-in https://plugins.jetbrains.com/plugin/13969-optimizely ● Tom’s Blog https://medium.com/@TomZurkan