Join Tom Zurkan and Kody O’Connell from Optimizely’s Engineering and Developer Relations teams to learn about the developer experience for the iOS and Android SDKs.
In this webinar, you’ll learn:
- How feature flagging sets a strong foundation for app development
- How the iOS and Android SDKs work
- What to expect when implementing and maintaining Full Stack in your app
- The steps to create feature flags and experiments in your app
- How to get started for free with Optimizely Rollouts
%in Soweto+277-882-255-28 abortion pills for sale in soweto
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
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)
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
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
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