Death By A Thousand Microservices

Залишу як є. Без власного відгуку.

The Church of Complexity

There is a pretty well-known sketch in which an engineer is explaining to the project manager how an overly complicated maze of microservices works in order to get a user’s birthday — and fails to do so anyway. The scene accurately describes the absurdity of the state of the current tech culture. We laugh, and yet bringing this up in a serious conversation is tantamount to professional heresy, rendering you borderline un-hirable.

renegadeotter.com/...​ousand-microservices.html

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Зараз багато де використовують кубер тому, що розробникам так простіше.
Так, розробникам простіше запустити контейнер десь у себе та працювати з ним.

Ми зекономили 15 тисяч доларів на місяць на серверну інфраструктуру розмістивши наші додатки у кубері.
Але найняли трьох сеньорів, щоб впоратися з кубером :)

Безумовно, є проекти де кубер доречний. Але багато розробників прагнуть досягнути ідеалу. І може вийти мікросервіс для зеленої кнопки, окремий для червоної, ... потім щось таке що слідкує, щоб кнопки коректно працювали, тому ми створили ще 10-к додаткових сервісів, щоб контролювати все. А потім шукаємо експерта, котрий допоможе нам розібратися, чому воно інколи падає :)

Тобто як справжні буддисти. Ціль не має значення, тільки шлях вартий уваги. :)

Ми найняли одного девопса щоб усе налаштував, навіщо вам три сіньори для куберу?

Стаття просто базує.
Ось свіжий приклад.
Пет-проєкт, для перевірки чи є світло дома: dou.ua/forums/topic/41353
Код: github.com/p1v2/eSvitlo = AWS, Lambda, Python = майже 1000 рядків коду
Функціонал: Бот сповіщує чи є світло в телеграм

Що робимо. Викидуємо AWS та лямди, переписуємо на Фрактал
Код: github.com/...​ElectricityApplication.cs = Fractal = 100 рядків коду (в x10 разів меньше)

Функціонал: Його більше, карта з точками де є світло на карті, можливість зареєструвати нову точку для моніторинга світла, перегляд наявних точок,
сповіщення через телеграм, все через веб інтерфейс
fraplat.com/jupiter/Electricity

Висновок1:
Якщо код схлопується (а він саме схлопується) в 10-100 разів,
доцільність використання мікросервісів під великим питанням.

Висновок2: Цей проєкт дуже простий. Але є складніший проєкт, десь на 300-350 таблиць і
там .... 6 тисяч рядків коду. На все. На сотню веб скрінів.

Це як інфляційна теорія створення всесвіту, тільки навпаки.
З майже нічого створили Death By A Thousand Microservices
а потім розвернули час навпаки, та просто схлопнули complexity майже до початку.
Може так трапитись, що на все вистачить кілька сотень функціональних виразів над правильною документоорієнтованою субд.

Підкажіть будь-ласка, а де можна подивитись на 6к рядків коду для 350 таблиць? Цікавить як там зроблена авторизація, синхронізація, скільки витримує паралельних запитів і інше

Підкажіть будь-ласка, а де можна подивитись на 6к рядків коду для 350 таблиць

Нажаль, саме цей код не опенсорц. Але приблизно розміри та функціонал ви можете оцінити по, хочаб, системі прав. 12 розділів в системі, 4 ролі, до сотні кнопок меню, на кожну відкривається доволі складна форма з своїм функціоналом
fraplat.com/MatrixPermissions.xlsx

Швидкодія саме цього проєкту була описана в цій статті в розділі Peformance
dou.ua/forums/topic/44975

Але є один проєкт, який я вважаю доволі «дорослим». Це портал Fractal Platform. На сьогодні він моделює функціональність Jira, Slack, має свій блог. У нього інтегровані засоби для деплою та моніторингу програм Fractal Cloud, а також безліч звітів, портал для навчання та проходження іспитів студентами. Усе це навантажує складну систему прав на 12 розділів. Весь UI перекладено 7 мовами. Загальна доменна модель, за оцінками, перевищує 300-350 реляційних таблиць.

Із якою швидкістю має працювати такий застосунок? На це питання складно відповісти, але сьогодні це близько 100 мс на завантаження будь-якої сторінки. А на розігрітому кеші час падає до 12-15 мс.

Для розуміння, 12 мс на відкриття сторінки, це фрейм часу за який мозок (фізіологічно) дозволяє собі міняти події місцями. Тож, інколи (звісно не завжди) складається кумедне враження, що форма відкривається ще до того як ти нажав кнопку.

Щодо відкритих сорців, є ще такий проєкт. MVP на youtube
Всі подробиці описані тут.
dou.ua/...​rums/topic/44975/#2694913
Дизайну там нажаль нема ніякого,
але функціоналу досить багато і це десь 500 рядків коду.

Підписатись на коментарі