Anda di halaman 1dari 82

“… I WOULD DEFINITELY


MISS LUNCH FOR THIS TALK…”

YOUNES
Younes Jaaidi

@yjaaidi

eXtreme Programming since 2007



Web Dev & Security

Co-founder of Wishtack since 2013 ! Lyon


wishtack.io

• Web Dev, XP & Security Trainings

• Consulting & XP Coaching

• Remote Consulting Sessions

wishtack.io @yjaaidi
A/B Testing,

Canary Release

& White-Labeling

with Interchangeable Components

by Younes

wishtack.io @yjaaidi
THIS TALK IS A FICTIONAL DRAMATIZATION

BASED ON

A TRUE STORY AND REAL EVENTS

NETCLIX
Eibie

the Product Owner
wishtack.io @yjaaidi
wishtack.io @yjaaidi
Eibie’s First Reaction

wishtack.io @yjaaidi
On Second Thoughts…

wishtack.io @yjaaidi
wishtack.io @yjaaidi
Fear of Change

wishtack.io @yjaaidi
• Afraid of disappointing users

• Afraid of breaking stuff

wishtack.io @yjaaidi
Embrace Change! I want anyone to be able to
• release features one by one

• and progressively on the audience

• then rollback if necessary

• in one click & from home

wishtack.io @yjaaidi
What about Canary Release? We need Eibie testing
on users

What about a Kill Switch?

wishtack.io @yjaaidi
Eibie testing
Canary Release
on users

wishtack.io The Kill Switch @yjaaidi


Eibie testing
Canary Release
on users

wishtack.io The Kill Switch @yjaaidi


What is Eibie A/B Testing?

wishtack.io @yjaaidi
8% Conversion

%
80
Variant A
20
%

15% Conversion

Variant B

Make data-driven decisions

wishtack.io @yjaaidi
What is Canary Release?


wishtack.io @yjaaidi
What is Canary Release?

or Canary Deployment

or Progressive Deployment

or Phased Rollout
or Incremental Rollout

wishtack.io @yjaaidi
I feel upside down
since last release…

What is Canary Release?



wishtack.io @yjaaidi
1% => 10%

%
Try me!

99
Default
1%

1. Employees

2. Friends, family and fools

3. {{ your_strategy_here }}
Monitoring
4. …
New feature

wishtack.io @yjaaidi
1% => 10%

%
Try me!

99
Default
1%

1. Employees

2. Friends, family and fools

3. {{ your_strategy_here }}
Monitoring
4. …
New feature

ROLLBACK!

wishtack.io @yjaaidi
What is a Kill Switch?

wishtack.io @yjaaidi
Fallback

Live Support Component

wishtack.io @yjaaidi
Fallback

Live Support Component

wishtack.io @yjaaidi
wishtack.io @yjaaidi
Oh! And we need a special
version for AngularConnect

wishtack.io @yjaaidi
White-Labeling

White Label App

Brand A Brand B

wishtack.io @yjaaidi
Interchangeable
Components

wishtack.io @yjaaidi
Interchangeable Components

• are different component implementations serving the same purpose

• can replace each other without any custom fitting

• should share the same signature (component’s Inputs & Outputs)

wishtack.io @yjaaidi
wishtack.io @yjaaidi
<search-container>

<search-form> or <search-chips> …

wishtack.io @yjaaidi
<search-container>

Inputs Outputs

<search-form> or <search-chips> …

wishtack.io @yjaaidi
😿
No native declarative way to control inputs and outputs with ngComponentOutlet

https://github.com/angular/angular/issues/15360

😸
But there’s ng-dynamic-component

https://github.com/gund/ng-dynamic-component

wishtack.io @yjaaidi
Inputs and Outputs are the signature 

of Interchangeable Components

wishtack.io @yjaaidi
wishtack.io
🤗
Users @yjaaidi
but then…

wishtack.io @yjaaidi
…the bundle was too big

Active components

Unused components

wishtack.io @yjaaidi
Reactive Component Loader 

to the rescue!

wishtack.io @yjaaidi
wishtack.io @yjaaidi

wishtack.io @yjaaidi
If your First Name
starts with

A to M N to Z

goto bit.ly/conf-finder goto bit.ly/find-conf

wishtack.io @yjaaidi
Follow some link

Add to Cart

wishtack.io bit.ly/conf-finder bit.ly/find-conf @yjaaidi


Interchangeable Services

wishtack.io bit.ly/conf-finder bit.ly/find-conf @yjaaidi


wishtack.io bit.ly/conf-finder bit.ly/find-conf @yjaaidi
wishtack.io bit.ly/conf-finder bit.ly/find-conf @yjaaidi
wishtack.io bit.ly/conf-finder bit.ly/find-conf @yjaaidi
???

wishtack.io bit.ly/conf-finder bit.ly/find-conf @yjaaidi


wishtack.io bit.ly/conf-finder bit.ly/find-conf @yjaaidi
wishtack.io bit.ly/conf-finder bit.ly/find-conf @yjaaidi
wishtack.io bit.ly/conf-finder bit.ly/find-conf @yjaaidi
Active services Unused services

@yjaaidi
wishtack.io bit.ly/conf-finder bit.ly/find-conf @yjaaidi
wishtack.io bit.ly/conf-finder bit.ly/find-conf @yjaaidi
wishtack.io bit.ly/conf-finder bit.ly/find-conf @yjaaidi
wishtack.io bit.ly/conf-finder bit.ly/find-conf @yjaaidi
Demo Time

wishtack.io @yjaaidi
If your First Name
starts with

A to M N to Z

goto bit.ly/conf-finder goto bit.ly/find-conf

wishtack.io @yjaaidi
1. Resolve

2. Apply

wishtack.io @yjaaidi
Key Takeaways

• Inputs and Outputs are the signature of Interchangeable Components

• Lazy load components using @wishtack/reactive-component-loader

• Services can be lazy loaded too using dynamic import

wishtack.io @yjaaidi
What’s next
• You might need a Feature Toggle Management solution

• Maybe easier component lazy loading with Ivy

• Interchangeable Web Components

wishtack.io @yjaaidi
Resources
Demo Source Code

https://github.com/wishtack/wishtack-conference-finder

How we lost (and found) millions by not A/B testing



https://m.signalvnoise.com/how-we-lost-and-found-millions-by-not-a-b-testing-e70f27dd783e

Feature Toggles

https://martinfowler.com/articles/feature-toggles.html

Canary Release

https://martinfowler.com/bliki/CanaryRelease.html

Angular CLI Global Styles Story



https://github.com/angular/angular-cli/blob/6449a753641340d8fc19a752e1a1ced75f974efa/docs/documentation/1-x/stories/global-
styles.md

Theming Angular with CSS Variables by Austin



https://medium.com/@amcdnl/theming-angular-with-css-variables-3c78a5b20b24

wishtack.io @yjaaidi
Some Tools
Flagr

https://github.com/checkr/flagr

Firebase A/B Testing



https://firebase.google.com/docs/ab-testing/

Firebase Remote Config



https://firebase.google.com/docs/remote-config/

Google Optimize

https://optimize.google.com

Launch Darkly

https://launchdarkly.com/

wishtack.io @yjaaidi
“… CAN WE GO NOW?”

YOUNES’ STOMACH
wishtack.io

• Web Dev, XP & Security Trainings

• Consulting & XP Coaching

• Remote Consulting Sessions

wishtack.io @yjaaidi
FREE CONT
ENT!!!
! &

wishtack.io @yjaaidi
wishtack.io @yjaaidi
TR A I N I N G CONSULTIN
G

XP COACH ?
ING E L P !
H

wishtack.io @yjaaidi
Keep in Touch!

@yjaaidi

medium.com/wishtack

wishtack.io
@wishtack

Special thanks to



❤ Elise ❤

🤔 Lionel 🤔

🤪 @shai_reznik 🤪

Anda mungkin juga menyukai