Задача: Спроектировать Дзен как продукт
- умная лента
- поиск*
- 50 мил DAU
- текстовые статьи, фото, видео
- каналы ,можно подписаться
- уведомления push
- генерация контента
[Balancer] - кеширование TTL - HTTP2 (GraphQL*) REST json - BD реплики РФ (по закону всю инфу в РФ) Yandex - микросервисная архитектура - авторизацияя - хранение контента (внутри РФ) + кеширование + защита от дос
Service:
- Feed / userID - бесконечная лента - персонализированный контент (список по дате публикации)
как кешировать ленту?
-
Post 2.1 Comments 2.2 Recommendation
-
Chanels - инфо / стата
-
Chanel
- получение по id
- имя описание подписчики
Feed by chanel ID
- Subscribe ? синхронность
Kotlin
Single Activity - Fragment - ViewModel - Coroutines
auth singnIn signUp token accessToken/refreshToken
tls
Retrofit okhttp json kotlinxSerialization
Data - Domain - Presentation
Data
-
Source(retrofit Service, оффлайн room)
-
dto
-
RepositoryImpl
-
Mapper (internal) + validation
-
Сериализаторы
-
sealed interface ApiResponse { data Sucess(value: T) sealled interface Failed {
} }
Domain (koltin module)
-
entity
-
usecase
-
repository interface
Presentation (android module)
-
ScreenViewModel
-
ScreenFragment
-
ScreenNavigation
-
ScreenViewEvent (UiEvent from d.android.com)
-
ScreenViewState (UiState)
-
/model + mapper / StringRes()
feed data - damai
core