TК°Conf. Как мы делали ЖЖ. Егор Толстой.

79
EGOR TOLSTOY RAMBLER&CO 08 Окт 2016 17:30 Пять историй про ЖЖ Ответы на все животрепещущие вопросы! Причем тут Рамблер? API нестабильно - как с этим жить? Чем помогает VIPER? Uni-подожди-подожди-directional data flow - он тут каким боком? Как обеспечить концептуальную целостность в большом проекте? 500 2.5k @igrekde

Transcript of TК°Conf. Как мы делали ЖЖ. Егор Толстой.

Page 1: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

EGOR TOLSTOY RAMBLER&CO08 Окт 2016 17:30

Пять историй про ЖЖОтветы на все животрепещущие вопросы! Причем тут Рамблер? API нестабильно - как с этим жить? Чем помогает VIPER? Uni-подожди-подожди-directional data flow - он тут каким боком? Как обеспечить концептуальную целостность в большом проекте?

5002.5k @igrekde

Page 2: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

2

Продуктологи

Page 3: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

3

Продуктологи Аналитики

Page 4: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

4

Продуктологи Аналитики Дизайнеры

Page 5: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

5

Продуктологи Аналитики Дизайнеры

Разработчики

Page 6: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

6

Продуктологи Аналитики Дизайнеры

Разработчики QA

Page 7: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

7

Продуктологи Аналитики Дизайнеры

Разработчики QA ПМы

Page 8: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

8

Чем помогают налаженные процессы

разработки?

Page 9: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

9

Про Rambler&Co и ЖЖ

Смиряемся со сложным API

Как VIPER делает жизнь проще

Упрощаем логику лент постов

Про концептуальную целостность

Page 10: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

10

Про Rambler&Co и ЖЖ

Смиряемся со сложным API

Как VIPER делает жизнь проще

Упрощаем логику лент постов

Про концептуальную целостность

Page 11: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

11

Page 12: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

12

Page 13: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

13

1999 2005 2007 2013 2014

Page 14: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

14

1999 2005 2007 2013 2014

Page 15: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

15

1999 2005 2007 2013 2014

Page 16: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

16

1999 2005 2007 2013 2014

Page 17: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

17

1999 2005 2007 2013 2014

Page 18: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

18

Page 19: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

19

Page 20: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

20

3957 коммитов 2888 unit-тестов

30 VIPER модулей >800 стейтов экранов

>700 code-review

Page 21: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

21

Сентябрь

2015 года

Page 22: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

22

Про Rambler&Co и ЖЖ

Смиряемся со сложным API

Как VIPER делает жизнь проще

Упрощаем логику лент постов

Про концептуальную целостность

Page 23: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

23

Бэкенд сложный

😃

Page 24: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

24

Бэкенд не для мобильных

😅

Page 25: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

25

Бэкенд не один

😰

Page 26: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

26

<member> <name>journal</name> <value> <string>tema</string> </value> </member>

{ journal : tema }

Page 27: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

27

Создание запроса

Подпись запроса

Отправка в сеть

Десери-ализация

Валидация Маппинг

Page 28: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

28

Создание запроса

Подпись запроса

Отправка в сеть

Десери-ализация

Валидация Маппинг

Page 29: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

29

Создание запроса

Подпись запроса

Отправка в сеть

Десери-ализация

Валидация Маппинг

NSOperation

NSOperation NSOperation NSOperation NSOperation NSOperation NSOperation

Page 30: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

30

Создание запроса

Подпись запроса

Отправка в сеть

Десери-ализация

Валидация Маппинг

NSOperation

NSOperation

get_post

get_comments

send_comment

NSOperationNSOperationNSOperationNSOperationNSOperation

Создание запроса

Подпись запроса

Отправка в сеть

Десери-ализация

Валидация Маппинг

NSOperation

NSOperationNSOperationNSOperationNSOperationNSOperationNSOperation

Создание запроса

Подпись запроса

Отправка в сеть

Десери-ализация

Валидация Маппинг

NSOperation

NSOperationNSOperationNSOperationNSOperationNSOperationNSOperation

Page 31: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

31

@interface OperationConfig : NSObject

@property DeserializerType deserializerType; @property MapperType mapperType;

@end

Page 32: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

32

Page 33: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

33

Page 34: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

34

Создание

запроса

Подпись

запроса

Отправка

в сеть

Десери-

ализацияВалидация Маппинг

OAuth 1.0

OAuth 2.0

Page 35: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

35

Проектируя, учитывайте особенности окружения

Page 36: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

36

https://github.com/rambler-digital-solutions/

rambler-it-ios

Page 37: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

37

Ноябрь

2015 года

Page 38: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

38

Про Rambler&Co и ЖЖ

Смиряемся со сложным API

Как VIPER делает жизнь проще

Упрощаем логику лент постов

Про концептуальную целостность

Page 39: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

39

Page 40: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

40

Переиспользование, тестируемость, простота!

Page 41: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

41

Page 42: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

42

Page 43: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

43

Page 44: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

44

RDSTagModule

Page 45: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

45

Модуль ленты постов

Модуль поиска

Модуль коммента-

риев

Модуль каталога

Сервис постов

Сервис людей

Page 46: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

46

Экран 1 Экран 4Экран 2 Экран 3

АПИ МЕНЕДЖЕР!!

111

Page 47: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

47

Стандартизация - залог успеха

Page 48: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

48

https://github.com/rambler-digital-solutions/

The-Book-of-VIPER

Page 49: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

49

Февраль

2016 года

Page 50: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

50

Про Rambler&Co и ЖЖ

Смиряемся со сложным API

Как VIPER делает жизнь проще

Упрощаем логику лент постов

Про концептуальную целостность

Page 51: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

51

View Presenter Interactor

Router

PostService

Page 52: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

52

View Presenter Interactor

Router

PostService

StrategyFactory

Page 53: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

53

View Presenter Interactor

Router

PostService

StrategyFactory

AnotherFactory

Page 54: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

54

View Presenter Interactor

Router

PostService

StrategyFactory

AnotherFactory FactoryFactory

Page 55: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

55

View Presenter Interactor

Router

PostService

StrategyFactory

AnotherFactory FactoryFactory

MediaService

FeedService

TopService

Page 56: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

56

View Presenter Interactor

Router

PostService

StrategyFactory

AnotherFactory FactoryFactory

MediaService

FeedService

TopService

Helper2Helper1 Helper3

Page 57: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

57

View Presenter Interactor

Router

PostService

StrategyFactory

AnotherFactory FactoryFactory

MediaService

FeedService

TopService

Helper2Helper1 Helper3

Router2Router1 Router3Manager

Factory

ManagerFactory

FactoryFactory

Helper2Helper1 Helper3

Page 58: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

58

Page 59: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

59

Page 60: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

60

Page 61: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

61

Page 62: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

62

Page 63: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

63

ContentListModule

MainModule

Page 64: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

64

Module PostService

CoreData

пишет

читает

Page 65: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

65

Module PostService

CoreData

пишет

читает

ContentModule

Page 66: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

66

MainModule PostService

CoreData

пишет

ContentModuleуведомляет

Page 67: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

67

Не стройте сложные системы

Page 68: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

68

Сентябрь

2015 года -

наше время

Page 69: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

69

Про Rambler&Co и ЖЖ

Смиряемся со сложным API

Как VIPER делает жизнь проще

Упрощаем логику лент постов

Про концептуальную целостность

Page 70: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

70

«Мифический человеко-месяц», Фредерик Брукс

Page 71: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

71

Page 72: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

72

Page 73: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

73

Presentation layer

Service layer

Core layer

Page 74: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

74

]] ]] ]] ]] ]] ]]

]] ]] ]]Code Review

develop branch

feature branch

Page 75: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

75

Page 76: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

76

350 review за 5 месяцев

Page 77: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

77

Культивируйте коллективное

владение кодом

Page 78: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

Гибкая архитектура

Коллективное владение кодом

Стандартизация процессов

https://appsto.re/ru/7Ogzbb.i

Page 79: TК°Conf. Как мы делали ЖЖ. Егор Толстой.

Гибкая архитектура

Коллективное владение кодом

Стандартизация процессов

https://appsto.re/ru/7Ogzbb.i

Талисман LiveJournal по имени Фрэнк