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

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

  • Upload
    tkconf

  • View
    37

  • Download
    1

Embed Size (px)

Citation preview

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 по имени Фрэнк