TGStat
TGStat
Qidiruv uchun matnni kiriting
Ilg‘or kanal qidiruvi
  • flag Uzbek
    Sayt tili
    flag Russian flag English flag Uzbek
  • Saytga kirish
  • Katalog
    Kanal va guruhlar katalogi Hududiy to‘plamlar Tematik to‘plamlar Платные каналы Kanallar qidiruvi
    Kanal/guruh qo‘shish
  • Reytinglar
    Kanallar reytingi Guruhlar reytingi Postlar reytingi
    Brendlar va shaxslar reytingi
  • Analitika
  • Postlarda qidiruv
  • Telegram'ni kuzatish
  • Targ‘ibot
    Yandex Business orqali reklama TGStat Agency orqali kanallarda reklama TGStat.ru saytida reklama
Женя Янченко

27 Aug, 09:48

Telegram'da ochish Ulashish Shikoyat qilish

В комментах под одним из постов развернулось обсуждение того, что считать микросервисом.

Еще в начале карьеры разработчика я услышала и запомнила два забавных определения:

Если над сервисом работает команда, которую можно накормить всего 2 пиццами, то это микросервис

🍕🍕

Логика микросервиса должна полностью умещаться в голове разработчика.


Это сложно назвать определением, хотя про логику замечание валидное 😃

Со временем я сформулировала для себя такие свойства:
🔴сфокусированность на отдельной бизнес-задаче
🔴возможность реализации разных нефункциональных требований
Например, у микросервиса обработки изображений могут отличаться требования к ресурсам по сравнению с сервисом каталога товаров.

Давайте посмотрим, какие определения дают известные авторы:

➡️ Крис Ричардсон (автор книги "Паттерны микросервисов")

Микросервисы — это сервисы, которые:
independently deployable - можно поставлять независимо (без необходимости одновременно выкатывать другие сервисы)
loosely coupled - слабо связаны друг с другом
Обычно они организованы вокруг бизнес-возможностей, а отдельный сервис часто находится в зоне ответственности одной небольшой команды.


➡️ Сэм Ньюман (автор "От монолита к микросервисам", "Создание микросервисов")

Микросервисы — независимо релизящиеся сервисы, смоделированные вокруг бизнес-домена.


➡️ Влад Хононов (автор книги "Изучаем DDD")

У него есть интересная статья про баланс сложности в распределенных системах.

Локальная сложность — сложность внутри отдельного сервиса
Глобальная сложность — сложность связей и зависимостей между сервисами

Если всё поместить в один компонент, глобальная сложность почти исчезает, зато может вырасти локальная. Если нарезать систему слишком мелко, отдельные сервисы могут стать проще, но количество взаимодействий и зависимостей между ними резко вырастет.

Это то, о чем иногда рассказывают в докладах бигтехов: когда сделали слишком много микросервисов и связей между ними, так что систему стало трудно развивать.

Хононов предлагает необычный взгляд:

Микросервис — это сервис с маленьким публичным интерфейсом.


Условно, сервис может содержать 100 тысяч строк кода, но наружу выставлять буквально несколько высокоуровневых операций:

- createOrder()
- cancelOrder()
- getOrder()

Поэтому прямой доступ одного сервиса в БД другого сервиса — антипаттерн: база фактически становится огромным публичным интерфейсом.


➡️ Отличия от монолита

Одно из ключевых отличий микросервисной архитектуры от монолита — независимость развертывания, а не размер кодовой базы. Об этом пишут и Ричардсон, и Фаулер, и Ньюман.

Монолит может быть модульным и хорошо спроектированным, но он деплоится всегда целиком. А микросервисы деплоятся отдельно.

При этом если наши микросервисы сильно связаны друг с другом, и релиз выглядит так:

Order v5 требует Payment v7
Payment v7 требует Customer v4,
поэтому вынуждены выкатывать всё вместе

то Ньюман и Фаулер называют это распределенным монолитом.

Кто сталкивался, тот сразу вспомнит такие релизы 😂

Нашла еще несколько статей, и во всех можно проследить повторение нескольких вещей:
🔴независимость изменений и деплоя
🔴слабая связанность
🔴осмысленная бизнес-граница

В итоге, если спросят, что такое микросервис, я бы ответила как-то так:

"Микросервис реализует ограниченную часть бизнес-домена. В идеале он должен быть слабо связан с другими сервисами, развиваться и релизиться независимо от них.
В микросервисной архитектуре нужно следить не только за сложностью каждого отдельного сервиса, но и за сложностью связей между ними".

Забавно, что на собесах мне такой вопрос ни разу не задавали. А вас спрашивали, что такое микросервис?
Untangling Microservices, or Balancing Complexity in Distributed …
The microservices honeymoon period is over. Uber is refactoring thousands of microservices into a more manageable solution [1]; Kelsey Hightower is predicting monoliths are the future [2]; and even …

3.2k 0 30 69 63
Katalog
Kanal va guruhlar katalogi Kanallar to‘plamlari Kanallar qidiruvi Kanal/guruh qo‘shish
Reytinglar
Telegram-kanallar reytingi Telegram-guruhlar reytingi Postlar reytingi Brendlar va shaxslar reytingi
API
Statistika API'si Postlar qidiruvi API'si API Callback
Kanallarimiz
@TGStat @TGStat_Chat @telepulse @TGStatAPI
O‘qish
Академия TGStat Telegram tadqiqoti 2019 Telegram tadqiqoti 2021 Telegram tadqiqoti 2023
Kontaktlar
Справочный центр Qo‘llab-quvvatlash Email Vakansiyalar
Har xil narsalar
Foydalanuvchi shartnomasi Maxfiylik siyosati Ommaviy oferta
Botlarimiz
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot