Стендап Сьогодні 📢 Канал в Telegram @stendap_sogodni

🤖🚫 AI-free content. This post is 100% written by a human, as is everything on my blog. Enjoy!

21.04.2023

Мінімальний масштаб сервісів

Байдуже, наскільки мало навантаження є на сервіс або мікросервіс — в мене є базовий стандарт, нижче якого “живі” продукти не мають спускатись.

Перше — будь-який сервіс повинен мати цілий CPU. Проблема не в тому, що дробового CPU вам не вистачить — багато сервісів ніколи не здіймаються вище за 10% використання CPU. Проблема в тому, що, за моїм досвідом, дробовий час CPU - це абстракція. Він не забезпечується надійно та рівномірно, та в непередбачуваний момент сервіс може не отримати свою долю. (що ззовні спостерігається як затримка) Тому, тільки цілий CPU, або декілька. Чи потрібні декілька? Залежить від того, наскільки сервіс здатний до паралелізації. Якщо паралелізація досягається шляхом створення декількох процесів — як роблять сервери додатків Ruby - то є наступне питання — робити одну репліку з декількома CPU, або багато реплік з єдиним CPU?

Друге — будь-який сервіс повинен бути запущеним принаймні у двох екземплярах. Знов-таки, питання не в навантаженні. Просто, якщо сервіс відвалиться через одну з безлічі причин — памʼять закінчилась, трапилась критична помилка, якісь довготривалі запити зайняли всю чергу — то треба мати резерв. Більше копій — більше надійності, але одна додаткова копія нескінченно надійніша ніж жодної.