Forwarded from Библиотека Системного Аналитика
Микросервисы_От_архитектуры_до_релиза_Митра_Р_Надареишвили_И.pdf
6.2 MB
Микросервисы. От архитектуры до релиза
✍️ Автор: Ронни Митра, Иракли Надареишвили
🗓 Год издания: 2023
🔤 Язык: русский
📚 Объём: 336 стр.
Книга - практическое руководство по разработке микросервисной архитектуры. Авторы на основе своего опыта и кейсов из индустрии, предлагают системный подход к проектированию, организации команд, созданию инфраструктуры и развертыванию микросервисов.
Основное внимание уделяется практическому проектированию и разработке, затрагиваются ключевые принципы и модели микросервисных систем.
Предназначена для архитекторов и инженеров, работающих с микросервисами, но также будет полезна тем, кто хочет глубже разобраться в их реализации.
Обзор книги на Хабр
Микросервисная архитектура: основные понятия
#микросервисы #архитектура
✍️ Автор: Ронни Митра, Иракли Надареишвили
🗓 Год издания: 2023
🔤 Язык: русский
📚 Объём: 336 стр.
Книга - практическое руководство по разработке микросервисной архитектуры. Авторы на основе своего опыта и кейсов из индустрии, предлагают системный подход к проектированию, организации команд, созданию инфраструктуры и развертыванию микросервисов.
Основное внимание уделяется практическому проектированию и разработке, затрагиваются ключевые принципы и модели микросервисных систем.
Предназначена для архитекторов и инженеров, работающих с микросервисами, но также будет полезна тем, кто хочет глубже разобраться в их реализации.
Обзор книги на Хабр
Микросервисная архитектура: основные понятия
#микросервисы #архитектура
👍27❤11🔥2🤔1
Карта навыков BA/SA
Очередная карта навыков, найденная здесь.
Ранее мы делали собственную очень объёмную карту навыков системного аналитика.
Ну а разложить теорию в голове по полочкам и намаппить на карту навыков поможет база знаний.
Картинка без сжатия в комментариях
Очередная карта навыков, найденная здесь.
Ранее мы делали собственную очень объёмную карту навыков системного аналитика.
Ну а разложить теорию в голове по полочкам и намаппить на карту навыков поможет база знаний.
Картинка без сжатия в комментариях
❤54🔥25👍19⚡3😁1
Ранее писали про балансировку нагрузки
Напомним, балансировка — механизм распределения входящих запросов между серверами
Уровни балансировки в модели OSI
Типы балансировщиков
Аппаратные (Hardware Load Balancer, HLB)
- физические устройства с сетевыми процессорами (ASIC), которые обрабатывают пакеты быстрее, чем программные решения
- часто используются в крупных дата-центрах
Как работают
Программные (Software Load Balancer, SLB)
- ПО на сервере, которое выполняет функции балансировки
- гибкое, дешевле аппаратных решений, но требует мощностей сервера
Как работают
Виртуальные (Virtual Load Balancer, VLB)
- программные балансировщики, работают в виртуальных средах или в облаке
- поддерживают авто-масштабирование (динамическое изменение кол-ва серверов)
Как работают
* инстанс (instance) – виртуальная / физическая машина, которая обрабатывает запросы
Методы балансировки
DNS-сервер возвращает разные IP-адреса на один DNS-запрос
— не учитывает загрузку серверов и может кэшироваться клиентами (возможны задержки в обновлении маршрутов)
— например, api.example.com может вести на разные серверы
запросы поступают на прокси → он анализирует содержимое и перенаправляет на нужные серверы
изменяет MAC-адреса пакетов, направляет их напрямую на backend-серверы
изменяет IP-адреса и порты пакетов, направляет трафик на разные серверы онлайн
Примеры методов для разных типов нагрузки
Пользователь запрашивает изображение с сайта
REST API с /auth и /data:
/auth — на серверы аутентификации
/data — на серверы обработки данных
L7-балансировщик (F5 BIG-IP) с алгоритмом Sticky Sessions определяет пользователя по cookie и направляет его запросы на один сервер. Данные сессии (корзина, авторизация) не потеряются
Кластер PostgreSQL с мастером и 3 репликами
1. Балансировка нагрузки: основные алгоритмы и методы
2. Load Balancer и Reverse Proxy в микросервисной архитектуре
3. Load Balancers для систем оркестрации
4. Балансировка нагрузки в Облаках
5. Сетевой балансировщик нагрузки
6. DNS Балансировка нагрузки: что это такое
7. Как работает L3 балансировщик нагрузки
8. Балансировка нагрузки на L3, L4 и L7
9. Что такое Envoy, зачем он нужен и как работает
#проектирование #инфраструктура
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥6🤔3❤2😁2
Forwarded from Библиотека Системного Аналитика
Please open Telegram to view this post
VIEW IN TELEGRAM
Прокси-сервер – промежуточный сервер между клиентом (пользователем / приложением) и сервером
Отличие от балансировщика и VPN
Для чего нужен?
Анонимность и скрытие IP-адреса
Кеширование
(!) Кэш может быть не только в прокси. Важно учитывать последствия кэширования на разных уровнях
Контроль и фильтрация трафика
Балансировка нагрузки и защита серверов
схоже с балансировщиком, но цель другая - доп безопасность, а не отказоустойчивость
Пример работы
Прямой и обратный прокси
Прямой
Клиент
Обратный (реверсивный)
Клиент
Примеры интеграции
Интеграция с CDN
Интеграция с WAF (Web Application Firewall)
В микросервисной архитектуре
пример: сервис-меш с прокси для маршрутизации API-запросов между микросервисами
Пример архитектуры с прокси
[ Клиенты ] → [ Reverse Proxy ] → [ Балансировщик ] → [ Серверы приложений ] → [ БД ]1. Прокси
2. Что такое прокси-сервер и как его настроить
3. Прокси-сервер: что это такое и нужен ли он вам?
4. Что такое прокси? Для самых маленьких
5. Что такое прямой прокси и обратный прокси
6. Разница между обратным и прямым прокси
7. Разница между прямым прокси, обратным прокси и балансировщиком нагрузки
8. Типы Прокси HTTP, HTTPS, Socks
9. VPN или прокси-сервер: что лучше и в чем разница?
📚Книги
Безопасность веб-приложений. Разведка, защита, нападение. — Хоффман Эндрю
#проектирование #инфраструктура
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Системный Аналитик
Кэширование — разбор по полочкам
🔹Кэширование – способ способов оптимизации приложений, при котором результаты выполнения операций сохраняются на некоторое время
🔹Кэширование позволяет ускорить время отклика системы и повысить устойчивость к увеличению…
🔹Кэширование – способ способов оптимизации приложений, при котором результаты выполнения операций сохраняются на некоторое время
🔹Кэширование позволяет ускорить время отклика системы и повысить устойчивость к увеличению…
👍27❤9🔥8👏1
Термины
Рассмотрим обобщенно: как происходит платеж с момента поднесения карты к терминалу эквайринга до списания средств со счета
Карту подносят к терминалу. Начинается процесс авторизации платежа
Терминал может быть:
Платежная система (например, «Мир») определяет стандарты передачи данных (например, MIR Accept) и их безопасность
Карта успешно считана, терминал передает платежные данные (номер карты, срок действия, CVV, сумму транзакции) в ПЦ эквайера через защищенное соединение
ПЦ эквайера принимает платежный запрос, проверяет его корректность и передает в платежную систему (например, «Мир»)
Платежная система маршрутизирует платеж:
Банк-эмитент проверяет:
Если все ок, банк-эмитент выдает авторизацию и передает ответ (одобрение/отказ в проведении транзакции) платежной системе
Платежная система передает его в ПЦ эквайера - > эквайрер передает результат на терминал
После авторизации банк-эмитент резервирует сумму на счете покупателя
ПЦ передает подтверждение эквайеру
Эквайер передает его продавцу -> продавец получает платеж, транзакция завершается
Платежная система участвует в клиринге* и окончательных расчетах между банком-эквайером и банком-эмитентом
* клиринг — процесс взаимных расчетов между банками, выполняется платежной системой
Примеры технологий на каждом этапе
1. Поднесение карты к терминалу эквайринга
2. Передача данных с терминала эквайринга
3. Передача данных в ПЦ и платежную систему
4. Проверка данных и авторизация в банке-эмитенте
5. Завершение транзакции и списание средств
1. Платежные системы простыми словами. Как устроены и зачем нужны Mastercard, Visa, МИР и прочие
2. Интернет-эквайринг «для чайников»
3. Интернет-эквайринг в картинках
4. Как работает интернет-эквайринг
5. Платёжный сервис в банке, часть первая
6. Как мы переезжали на новый платежный сервис
7. Путешествие финансовой транзакции
8. Платёжные системы
#интеграции
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤47🔥35👍14💩1
Шаблонизаторы — инструменты для автоматической генерации текстовых данных на основе шаблонов и входных данных.
Используются в:
Примеры
Шаблон описывает процесс оформления заказа, но меняются условия для разных ролей:
Вместо 3-х сценариев используется шаблон с переменными
{role}, {action}, {notification}. Например, с помощью Jinja2, Mustache
Форматы сообщений генерируются из шаблонов (например, FreeMarker или Jinja2):
payment_template.xmlemail_template.jsonorders_template.csvЕсли банк меняет XML-структуру, достаточно обновить шаблон, а не переделывать всю интеграцию
Примеры шаблонизаторов
Разработка микросервисного API для обработки заказов
Проблемы:
Пример решения:
Используется для генерации текстовых выходных данных (HTML, конфигурационные файлы, исходный код)
Разработка веб-приложения
1. Динамическая генерация страниц (баланс, последние транзакции) с неизменной версткой
Контроллер Spring Boot передаёт в шаблон FreeMarker объект пользователя с балансом и историей операций.
FreeMarker подставляет данные в HTML и формирует готовую страницу
2. Персонализация контента: разные предложения для пользователей
В шаблоне используются условия
<#if> — если клиент VIP, добавляется блок с индивидуальными предложениями. Контент обновляется без изменения логики бэкенда
3. Повторное использование компонентов (хедер, меню, подвал) без копирования вручную
Общие шаблоны (layouts) с подключением через
includeЕсли нужно изменить меню — правится один файл
-- все страницы используют один
header.ftl* с логотипом и навигацией-- в
footer.ftl хранится контактная информация-- основной шаблон (
base.ftl) объединяет их в одну структуру*FreeMarker Template Language (FTL)
1. Что такое и зачем нужны шаблонизаторы HTML
2. Текстовые шаблонизаторы и их реализация
3. Три неочевидных примера использования шаблонизаторов в backend-е
4. Шаблонизаторы HTML: что это и стоит ли их использовать в разработке
5. 15 шаблонизаторов для фронтенд-разработки
6. 6 лучших шаблонизаторов на PHP
7. 5 популярных PHP-шаблонизаторов
8. ТОП-10 шаблонизаторов HTML для web-разработки
#инфраструктура
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19👍14❤10
Может, познакомимся?
🔹 Канал активно ведётся уже почти 2 года, появилось 17+ тысяч подписчиков, а мы до сих пор не знакомы друг с другом. Надо исправляться.
Есть идея создать на базе нашего канала группу-комьюнити системных аналитиков, чтобы:
1. Обмениваться опытом друг с другом
2. Узнавать, как там работается в других местах
3. Что там по ЗП
4. Ну и просто болтать
Естественно, модерация и все дела.
💡 Есть также идея проводить митапы пару раз в месяц на определённые темы, за которые будут голосовать люди. Но нужны энтузиасты, которые готовы выступать НА ПУБЛИКУ 😱
💬 Пишите в комментариях всё, что думаете по этому поводу.
Ну а ниже предлагаем ответить на несколько вопросов и чуть-чуть узнать друг о друге.
Есть идея создать на базе нашего канала группу-комьюнити системных аналитиков, чтобы:
1. Обмениваться опытом друг с другом
2. Узнавать, как там работается в других местах
3. Что там по ЗП
4. Ну и просто болтать
Естественно, модерация и все дела.
💬 Пишите в комментариях всё, что думаете по этому поводу.
Ну а ниже предлагаем ответить на несколько вопросов и чуть-чуть узнать друг о друге.
Please open Telegram to view this post
VIEW IN TELEGRAM
5🔥51👍22❤11
Ваш грейд (только для СА/БА)
Anonymous Poll
6%
Стажёр
17%
Junior
28%
Middle
18%
Middle+
14%
Senior
7%
Lead
11%
Я не СА и не БА
Ваша локация (откуда вы работаете)
Anonymous Poll
33%
Москва
13%
Санкт-Петербург
24%
Другой город-миллионник России
18%
Другой город России менее 1 млн
4%
Беларусь 🇧🇾
3%
Казахстан 🇰🇿
0%
Армения 🇦🇲
0%
Грузия 🇬🇪
0%
Украина 🇺🇦
4%
Другая страна 🌍
Системный Аналитик
Может, познакомимся? 🔹 Канал активно ведётся уже почти 2 года, появилось 17+ тысяч подписчиков, а мы до сих пор не знакомы друг с другом. Надо исправляться. Есть идея создать на базе нашего канала группу-комьюнити системных аналитиков, чтобы: 1. Обмениваться…
Как и обещали, создаём группу-комьюнити системных аналитиков, чтобы:
1. Обмениваться опытом друг с другом
2. Узнавать, как там работается в других местах
3. Что там по ЗП
4. Ну и просто болтать
Навигация по группе
📣 Митапы — проводим онлайн-встречи. Здесь можно стать спикером или проголосовать за желаемые темы
💸 Зарплаты и условия труда — обсуждаем, кому, где и как работается
💼 Поиск работы — обсуждаем резюме, вакансии, вопросы и задачи к собесам и т.д.
Ждём всех!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥26👍13⚡3❤2
Фильтр Блума — структура данных, которая помогает быстро проверить, может ли элемент находится в наборе данных или точно его там нет
Работает как "чек-лист", отвечает:
-Может быть, элемент есть (иногда может ошибится)
-Точно элемента нет
Как работает?
Например,
id со значением 12345Хэш-функция — математический алгоритм, который превращает строку ("12345") в числа (индексы массива), например:
- hash_1("12345") → 2
- hash_2("12345") → 5
- hash_3("12345") → 7
[0, 0, 1, 0, 0, 1, 0, 1]
Фильтр запоминает, что на позициях [2, 5, 7] что-то есть
Чтобы узнать есть ли
id = 54321 в фильтре Блумаid снова пропускается его через те же хэш-функции:- hash_1("54321") → 1
- hash_2("54321") → 3
- hash_3("54321") → 6
Фильтр смотрит на эти индексы в массиве: [0, 0, 1, 0, 0, 1, 0, 1]
Позиция 1 = 0 → id = "54321" точно не добавлялся
Если бы добавлялся, то позиция 1 была бы = 1
Чего нет в фильтре Блума
Примеры применения
- для ускорения поиска записей без полного сканирования таблиц
- в индексах для предварительной проверки наличия ключа
Недостатки
Пример:
"12345" ставит 1 на позициях [2, 5, 7]
"67890" ставит 1 на позициях [5, 7, 8]
Фильтр может ошибочно считать, что элемент есть, хотя его нет
1. Что такое фильтр Блума?
2. Фильтр Блума: зачем нужен и как работает
3. Что такое фильтр Блума и как он работает на практике (с примерами)
4. Что такое фильтр Блума в Blockchain?
5. Вероятностные структуры данных и где они обитают
6. Фильтр Блума – вероятностная структура данных для проверки принадлежности элемента множеству
7. Просто о сложном: что фильтрует фильтр Блума?
8. Фильтр Блума
9. Когда фильтр Блума не подходит
#инфраструктура
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Системный Аналитик
🔐 Хэширование и Шифрование
🤗 Хэширование и Хэш-функции
⚪️Хэширование — преобразование данных с помощью специального алгоритма
В результате возникает хеш (hash) — отображение данных в виде уникальной строки
😍размер строки одинаковый для информации…
🤗 Хэширование и Хэш-функции
⚪️Хэширование — преобразование данных с помощью специального алгоритма
В результате возникает хеш (hash) — отображение данных в виде уникальной строки
😍размер строки одинаковый для информации…
🔥19👍11❤9🤔1
Общее
1. Как писать требования и документацию к проекту. Полный гайд с шаблоном документации и примерами заполнения — опыт Альфы
2. Ликбез по техническому заданию
3. Как оформить спецификацию, чтобы не запутаться самому и не выбесить коллег
4. Для архитекторов и аналитиков: шаблон описания архитектуры приложения (34 страницы пользы)
5. Как выжать максимум из Confluence: часть 1, часть 2
6. Матрица трассировки требований: руководство для системного аналитика
Стандарты
1. Стандарты и шаблоны для ТЗ на разработку ПО — обзор
2. Разработка Технического задания по ГОСТ 34 легко и просто — полный гайд по ТЗ ГОСТ 34
Docs as Code
1. Опыт аналитиков Альфы про доку в коде
2. Docs as Code: как вести фронтовую документацию рядом с кодом, чтобы репозиторий не раздуло — опыт Альфы
Интеграции
1. Как создать шаблон документации к микросервису — МТС
2. Пример ТЗ для описания API
3. Шаблоны документации API
4. Как написать свою первую спецификацию на REST API
5. Как мы описываем требования к REST API для бэкенда в Confluence — Magnit Tech
6. REST API: заполненный шаблон постановки задачи
7. Шаблон постановки задачи на REST API-метод для Confluence
8. Полная постановка задачи на интеграцию - заполненный шаблон требований
Требования
1. Шаблон спецификации требований
2. Как мы создали шаблон функциональных требований к разработке ПО
3. Шаблон пользовательских историй
Для пользователей базы знаний доступны реальные сокровенные шаблоны спек от аналитиков одной из жёлтых компаний, да и вообще там много полезного
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥64👍12❤9👏1
Forwarded from Библиотека Системного Аналитика
Непрерывное_развитие_API_Уайлд_Эрик,_Амундсен_Майк.pdf
5.5 MB
Непрерывное развитие АРI.
Правильные решения в изменчивом технологическом ландшафте
✍️ Автор: Мехди Меджуи, Эрик Уайлд, Ронни Митра, Майк Амундсен
🗓 Год издания: 2023
🔤 Язык: русский
📚 Объём: 368 стр.
Практическое руководство по эффективному управлению API. Раскрываются ключевые принципы проектирования, разработки и поддержки интерфейсов как продуктов с непрерывным жизненным циклом.
Книга охватывает:
💙 сложности управления API (масштабирование, стандарты, работа команд)
💙 стратегическое руководство (баланс централизации и гибкости)
💙 API как продукт (дизайн-мышление, опыт разработчиков, конкурентные преимущества)
💙 10 столпов успешного API — от стратегии и безопасности до мониторинга и продвижения
💙 стили API и жизненный цикл (создание, публикация, окупаемость, поддержка, удаление)
💙 работу команд (роли, масштабирование, культура).
💙 системы API (управление в крупных экосистемах, контроль версий, изменения)
#api
Правильные решения в изменчивом технологическом ландшафте
✍️ Автор: Мехди Меджуи, Эрик Уайлд, Ронни Митра, Майк Амундсен
🗓 Год издания: 2023
🔤 Язык: русский
📚 Объём: 368 стр.
Практическое руководство по эффективному управлению API. Раскрываются ключевые принципы проектирования, разработки и поддержки интерфейсов как продуктов с непрерывным жизненным циклом.
Книга охватывает:
#api
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤14🔥5🤡1
Docs as Code – подход к созданию и сопровождению документации.
Ообращение с текстом документации, как с исходным кодом приложения:
Но всегда должна быть актуальной и согласованной с кодом (как и наоборот)
Суть подхода
Документация:
Принципы написания документации
Написание спецификаций следует принципам написания кода, но имеет свои специфичные принципы
Не дублируем информацию: один факт — один источник, остальные ссылаются
Держим форму и язык простыми, без лишних деталей.
Пишем только то, что нужно прямо сейчас; гипотезы и «на будущее» убираем
Один раздел — одна тема или функция
Уровни абстракции не смешиваем: обзор и детали храним раздельно
Ссылаемся только на ближайший нужный контекст, избегаем дальних зависимостей
Хранение документации
Документация лежит в том же репозитории, что и сервис. Обычно в каталоге /docs.
Каждая ветка и тег кода несут свою версию текстов.
Документация развивается в своём проекте (или нескольких), независимом от исходников сервисов
Когда подходит:
1. Docs as Code: введение в предмет
2. Опыт аналитиков Альфы про доку в коде
3. Docs as Code: как вести фронтовую документацию рядом с кодом, чтобы репозиторий не раздуло — опыт Альфы
4. Documentation as code: практики и инструменты документирования в сфере финансовых технологий
5. Статья о Docs as code от техписов - сайт собран как код на Rst
6. Инструменты подхода Docs-as-code
#инфраструктура #документация
А ещё там 140+ статей и 2500+ ссылок на материалы -- и всё разложено по полочкам, как мы любим.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤32🔥19👍13🤔3😁2
Примеры типов метрик
(конверсия, средний чек, количество активных пользователей)
(загрузка CPU, время ответа сервера, количество ошибок)
(время загрузки страницы, кол-во кликов до целевого действия)
Примеры технических метрик
Серверные
Приложений
БД
Методологии анализа метрик
Анализ производительности ресурсов (CPU, память, диски, сеть)
Для инфраструктурных метрик
Для для мониторинга сервисов (часто микросервисов), API
*какой % значений ниже определённого значения
Расширенная версия RED, для сложных распределённых систем
Подходы к сбору метрик
Агенты на серверах/приложениях отправляют данные на сервер мониторинга
Сервер мониторинга запрашивает данные у агентов или экспортеров
Меньше нагрузки на сеть, сервер контролирует частоту запросов
Анализ логов для извлечения метрик (кол-во ошибок, время выполнения запросов)
Универсальный подход, логи есть почти везде
Можно анализировать исторические данные
Отслеживание запросов через распределённую систему
Позволяет понять, как запрос проходит через компоненты системы
Инструменты мониторинга
Grafana: визуализация метрик
Prometheus: сбор и хранение метрик
ELK: логирование и анализ событий
Zabbix: мониторинг инфраструктуры
Nagios: мониторинг сетей и серверов
1. Мониторинг начинается с метрик | Часть 2: серверное ПО
2. Как построить эффективную стратегию мониторинга
3. Основы мониторинга и сбора метрик
4. Мониторинг и сбор метрик
5. Руководство по мониторингу производительности сервера
6. Выбираем оптимальную архитектуру мониторинга
7. Как организовать мониторинг в мультипроцессорном режиме
#инфраструктура
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤13🔥9
BASE (Basically Available, Soft state, Eventually consistent) — подход к проектированию распределённых систем
Жертвует строгой согласованностью (ACID) ради доступности, масштабируемости и гибкости
Когда используют
Три принципа BASE
Система всегда отвечает, даже при частичных сбоях
Данные могут быть неактуальными, но запросы не блокируются
Данные могут меняться со временем без внешних запросов
И могут временно находиться в несогласованном состоянии из-за асинхронных обновлений
Система придет к согласованности, но не мгновенно
BASE vs ACID vs CAP
БД не может быть и ACID и BASE одновременно
Это противоположные подходы
Но некоторые гибридные СУБД (например, MongoDB) позволяют гибко настраивать уровень согласованности
CAP-теорема: система может гарантировать только 2 из 3 свойств:
Пример реализации BASE
Онлайн-магазин с высокой нагрузкой
Товар появляется в корзине, но остатки на складе могут обновиться с небольшой задержкой
Если два покупателя одновременно добавляют последний товар → оба увидят его в корзине, но физически доступен только 1
Сервис склада (Kafka + PostgreSQL) асинхронно проверяет остатки
BASE позволяет сначала принять действие, потом проверить ограничения
Это критично для высоконагруженных сценариев
1. BASE
2. Как бы я сейчас объяснил молодому себе… зачем существуют требования ACID для баз данных?
3. Требования ACID. BASE модель. CAP теорема
4. БАЗОВАЯ модель разработки БД
5. NoSQL: что это такое, отличие от других баз данных, BASE
📚Базы данных. Инжиниринг надежности - Кэмпбелл Лейн, Мейджорс Черити (Глава 11. BASE)
#бд
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍16❤12🔥11🤔1