tК°conf. Как мы делали ЖЖ. Егор Толстой
TRANSCRIPT
![Page 1: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/1.jpg)
EGOR TOLSTOY RAMBLER&CO08 Окт 2016 17:30
Пять историй про ЖЖОтветы на все животрепещущие вопросы! Причем тут Рамблер? API нестабильно - как с этим жить? Чем помогает VIPER? Uni-подожди-подожди-directional data flow - он тут каким боком? Как обеспечить концептуальную целостность в большом проекте?
5002.5k @igrekde
![Page 2: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/2.jpg)
2
Продуктологи
![Page 3: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/3.jpg)
3
Продуктологи Аналитики
![Page 4: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/4.jpg)
4
Продуктологи Аналитики Дизайнеры
![Page 5: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/5.jpg)
5
Продуктологи Аналитики Дизайнеры
Разработчики
![Page 6: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/6.jpg)
6
Продуктологи Аналитики Дизайнеры
Разработчики QA
![Page 7: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/7.jpg)
7
Продуктологи Аналитики Дизайнеры
Разработчики QA ПМы
![Page 8: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/8.jpg)
8
Чем помогают налаженные процессы
разработки?
![Page 9: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/9.jpg)
9
Про Rambler&Co и ЖЖ
Смиряемся со сложным API
Как VIPER делает жизнь проще
Упрощаем логику лент постов
Про концептуальную целостность
![Page 10: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/10.jpg)
10
Про Rambler&Co и ЖЖ
Смиряемся со сложным API
Как VIPER делает жизнь проще
Упрощаем логику лент постов
Про концептуальную целостность
![Page 11: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/11.jpg)
11
![Page 12: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/12.jpg)
12
![Page 13: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/13.jpg)
13
1999 2005 2007 2013 2014
![Page 14: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/14.jpg)
14
1999 2005 2007 2013 2014
![Page 15: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/15.jpg)
15
1999 2005 2007 2013 2014
![Page 16: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/16.jpg)
16
1999 2005 2007 2013 2014
![Page 17: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/17.jpg)
17
1999 2005 2007 2013 2014
![Page 18: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/18.jpg)
18
![Page 19: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/19.jpg)
19
![Page 20: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/20.jpg)
20
3957 коммитов 2888 unit-тестов
30 VIPER модулей >800 стейтов экранов
>700 code-review
![Page 21: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/21.jpg)
21
Сентябрь
2015 года
![Page 22: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/22.jpg)
22
Про Rambler&Co и ЖЖ
Смиряемся со сложным API
Как VIPER делает жизнь проще
Упрощаем логику лент постов
Про концептуальную целостность
![Page 23: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/23.jpg)
23
Бэкенд сложный
😃
![Page 24: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/24.jpg)
24
Бэкенд не для мобильных
😅
![Page 25: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/25.jpg)
25
Бэкенд не один
😰
![Page 26: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/26.jpg)
26
<member> <name>journal</name> <value> <string>tema</string> </value> </member>
{ journal : tema }
![Page 27: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/27.jpg)
27
Создание запроса
Подпись запроса
Отправка в сеть
Десери-ализация
Валидация Маппинг
![Page 28: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/28.jpg)
28
Создание запроса
Подпись запроса
Отправка в сеть
Десери-ализация
Валидация Маппинг
![Page 29: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/29.jpg)
29
Создание запроса
Подпись запроса
Отправка в сеть
Десери-ализация
Валидация Маппинг
NSOperation
NSOperation NSOperation NSOperation NSOperation NSOperation NSOperation
![Page 30: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/30.jpg)
30
Создание запроса
Подпись запроса
Отправка в сеть
Десери-ализация
Валидация Маппинг
NSOperation
NSOperation
get_post
get_comments
send_comment
NSOperationNSOperationNSOperationNSOperationNSOperation
Создание запроса
Подпись запроса
Отправка в сеть
Десери-ализация
Валидация Маппинг
NSOperation
NSOperationNSOperationNSOperationNSOperationNSOperationNSOperation
Создание запроса
Подпись запроса
Отправка в сеть
Десери-ализация
Валидация Маппинг
NSOperation
NSOperationNSOperationNSOperationNSOperationNSOperationNSOperation
![Page 31: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/31.jpg)
31
@interface OperationConfig : NSObject
@property DeserializerType deserializerType; @property MapperType mapperType;
@end
![Page 32: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/32.jpg)
32
![Page 33: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/33.jpg)
33
![Page 34: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/34.jpg)
34
Создание
запроса
Подпись
запроса
Отправка
в сеть
Десери-
ализацияВалидация Маппинг
OAuth 1.0
OAuth 2.0
![Page 35: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/35.jpg)
35
Проектируя, учитывайте особенности окружения
![Page 36: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/36.jpg)
36
https://github.com/rambler-digital-solutions/
rambler-it-ios
![Page 37: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/37.jpg)
37
Ноябрь
2015 года
![Page 38: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/38.jpg)
38
Про Rambler&Co и ЖЖ
Смиряемся со сложным API
Как VIPER делает жизнь проще
Упрощаем логику лент постов
Про концептуальную целостность
![Page 39: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/39.jpg)
39
![Page 40: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/40.jpg)
40
Переиспользование, тестируемость, простота!
![Page 41: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/41.jpg)
41
![Page 42: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/42.jpg)
42
![Page 43: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/43.jpg)
43
![Page 44: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/44.jpg)
44
RDSTagModule
![Page 45: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/45.jpg)
45
Модуль ленты постов
Модуль поиска
Модуль коммента-
риев
Модуль каталога
Сервис постов
Сервис людей
![Page 46: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/46.jpg)
46
Экран 1 Экран 4Экран 2 Экран 3
АПИ МЕНЕДЖЕР!!
111
![Page 47: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/47.jpg)
47
Стандартизация - залог успеха
![Page 48: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/48.jpg)
48
https://github.com/rambler-digital-solutions/
The-Book-of-VIPER
![Page 49: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/49.jpg)
49
Февраль
2016 года
![Page 50: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/50.jpg)
50
Про Rambler&Co и ЖЖ
Смиряемся со сложным API
Как VIPER делает жизнь проще
Упрощаем логику лент постов
Про концептуальную целостность
![Page 51: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/51.jpg)
51
View Presenter Interactor
Router
PostService
![Page 52: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/52.jpg)
52
View Presenter Interactor
Router
PostService
StrategyFactory
![Page 53: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/53.jpg)
53
View Presenter Interactor
Router
PostService
StrategyFactory
AnotherFactory
![Page 54: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/54.jpg)
54
View Presenter Interactor
Router
PostService
StrategyFactory
AnotherFactory FactoryFactory
![Page 55: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/55.jpg)
55
View Presenter Interactor
Router
PostService
StrategyFactory
AnotherFactory FactoryFactory
MediaService
FeedService
TopService
![Page 56: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/56.jpg)
56
View Presenter Interactor
Router
PostService
StrategyFactory
AnotherFactory FactoryFactory
MediaService
FeedService
TopService
Helper2Helper1 Helper3
![Page 57: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/57.jpg)
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. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/58.jpg)
58
![Page 59: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/59.jpg)
59
![Page 60: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/60.jpg)
60
![Page 61: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/61.jpg)
61
![Page 62: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/62.jpg)
62
![Page 63: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/63.jpg)
63
ContentListModule
MainModule
![Page 64: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/64.jpg)
64
Module PostService
CoreData
пишет
читает
![Page 65: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/65.jpg)
65
Module PostService
CoreData
пишет
читает
ContentModule
![Page 66: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/66.jpg)
66
MainModule PostService
CoreData
пишет
ContentModuleуведомляет
![Page 67: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/67.jpg)
67
Не стройте сложные системы
![Page 68: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/68.jpg)
68
Сентябрь
2015 года -
наше время
![Page 69: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/69.jpg)
69
Про Rambler&Co и ЖЖ
Смиряемся со сложным API
Как VIPER делает жизнь проще
Упрощаем логику лент постов
Про концептуальную целостность
![Page 70: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/70.jpg)
70
«Мифический человеко-месяц», Фредерик Брукс
![Page 71: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/71.jpg)
71
![Page 72: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/72.jpg)
72
![Page 73: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/73.jpg)
73
Presentation layer
Service layer
Core layer
![Page 74: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/74.jpg)
74
]] ]] ]] ]] ]] ]]
]] ]] ]]Code Review
develop branch
feature branch
![Page 75: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/75.jpg)
75
![Page 76: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/76.jpg)
76
350 review за 5 месяцев
![Page 77: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/77.jpg)
77
Культивируйте коллективное
владение кодом
![Page 78: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/78.jpg)
Гибкая архитектура
Коллективное владение кодом
Стандартизация процессов
https://appsto.re/ru/7Ogzbb.i
![Page 79: TК°Conf. Как мы делали ЖЖ. Егор Толстой](https://reader033.vdocuments.net/reader033/viewer/2022051521/587485921a28abc62f8b5163/html5/thumbnails/79.jpg)
Гибкая архитектура
Коллективное владение кодом
Стандартизация процессов
https://appsto.re/ru/7Ogzbb.i
Талисман LiveJournal по имени Фрэнк