Cocoaheads Meetup / Kateryna Trofimenko / Feature development

Post on 22-Jan-2018

5951 Views

Category:

Internet

1 Downloads

Preview:

Click to see full reader

Transcript

Feature development: from feature flags to A/B

testing

Kateryna Trofimenko · Lead iOS developer1

2releas

14iOS

49countrie

About

2

10QA

14iOS

release

About

3

10QA

2releas

14iOS

2release

About

4

10QA

2releas 47

languag

14iOS

49countrie

2release

327Musers

About

5

10QA

2releas

5+applicatio

47languag

14iOS

49countrie

2release

327Musers

About

6

7

Feature service

8

9

Feature Service

Feature Object

Feature Object

Feature Object

10

Feature Service

Major feature

Remote dev feature

Feature Object

Feature Object

Feature Object

11

Feature Service

Major feature

Remote dev feature

Dev feature

Feature Object

Feature Object

Feature Object

Feature objectclass BPFFeature : NSObject, NSCoding {

let key: String

var title: String?

var group: String?

let isOnByDefault: Bool

func isOn() -> Bool { ... }

func toggle() { ... }

}

12

Feature service in debug

13

Feature service

Server

14

Feature service

Server

15

Feature service

Server

16

Feature service

Server

✦ Platform type

17

Feature service

Server

✦ Platform type

✦ Product type …

18

Feature service

Server

✦ Platform type

✦ Product type …

✦ Product requirements

19

Feature service

Server

✦ Platform type

✦ Product type …

✦ Product requirements

✦ Client version

20

Protocol evolution Change of the data format for existing feature

21

22

23

Minor feature

✦ Informs server that client supports certain data format

24

Minor feature

✦ Informs server that client supports certain data format

✦ Removes client version dependency on the server

✦ Easy to QA old and new version of the client

25

Chat redesign

26

Chatto

27

https://github.com/badoo/Chatto

28

Git flow

dev

feature_1

release_1

integration_1

feature_2

masterintegration_2

Release branch

Pending release

On Live

In Progress

In Review

In QA

In dev

In integration

In master

autodeveloper qa time

2-3 days

1 week

Dev Feature… and chat redesign

29

Dev featurefinal class ChattoFeature: NSObject, BPFFeatureSource {

class func feature() -> BPFFeature { let feature = BPFFeature(title: "Chat V2", group: "Chat", key: self.featureKey()) feature.isOnByDefault = false return feature }

class func featureKey() -> String { return "com.badoo.chat.chatto" }

class var enabled: Bool { return BPFGlobals.shared().features().isFeatureEnabled(featureKey: self.featureKey()) }

}

30

Dev feature- (void)configureFeatures { id<BPFFeaturesService> featureService = [self features]; [featureService loadFeatures:[self classBasedFeatures] withRuntimeSearch:NO]; }

- (NSArray *)classBasedFeatures { NSArray *classes = @[ ...., [ChattoFeature class],....]; NSMutableArray *classBasedFeatures = [NSMutableArray array]; for (Class class in classes) { NSAssert([class conformsToProtocol:@protocol(BPFFeatureSource)], @"Class %@ should conform to BPFFeatureSource protocol", NSStringFromClass(class)); BPFFeature *feature = [(id<BPFFeatureSource>)class feature]; [classBasedFeatures addObject:feature]; } return [classBasedFeatures copy]; }

31

32

Remote dev feature… and gradual release

33

Remote dev feature

34

Remote dev feature

35

Remote dev feature

36

A/B testingTopic Description

37

A/B testing

38

A/B testing

39

A/B testing

40

Overview

41

✦ Major feature

Overview

42

✦ Major feature

✦ Minor feature

Overview

43

✦ Major feature

✦ Minor feature

✦ Development feature

Overview

44

✦ Major feature

✦ Minor feature

✦ Development feature

✦ Remote Development feature

Overview

45

✦ Major feature

✦ Minor feature

✦ Development feature

✦ Remote Development feature

✦ A/B testing

Overview

46

kateryna.trofimenko@corp.badoo.com

https://www.linkedin.com/in/ekaterina-trofimenko-b7515128

Thank you!

47

top related