Як вимірюється масштабованість програмного забезпечення?


21

Мене попросили зробити невелику технічну презентацію щодо конкретної масштабованості додатків. Додаток розроблено за допомогою Java, Spring MVC, Hibernate. У мене є доступ до вихідного коду програми.

Як я можу виміряти масштабованість програмного забезпечення (використовуючи джерела) та які показники мені потрібно дотримуватися під час вимірювання масштабованості програмного забезпечення?

Відповіді:


8

Я б почав з читання статті з Вікіпедії на цю тему.

Коротше кажучи, масштабованість - це те, як зростає продуктивність системи, додаючи більше ресурсів або, як альтернатива, як збільшується використання ресурсів із збільшенням навантаження . Наприклад, скільки одночасних користувачів може обробляти ваш сайт, поки час відгуку не перевищить 0,3 секунди? Це ж питання після подвоєння доступної оперативної пам’яті / диска / процесора / тощо. Напевно, ви можете використовувати свої знання про внутрішні програми, щоб визначити, які параметри варто перевірити.

Налаштуйте тестовий стенд із серверною машиною та одним або кількома клієнтськими машинами. Використовуйте якийсь інструмент, щоб обмежити кількість ресурсів, доступних для сервера (наприклад ulimit) або запустити якусь заважаючу програму на сервері. Виміряйте, як сервер обробляє запити клієнта. Повторіть вищесказане, поступово збільшуючи / зменшуючи навантаження, що перешкоджає / наявні ресурси. В кінці ви отримуєте n-мірний простір з крапками в ньому. Можливо, буде простіше змінювати лише один параметр одночасно, фіксуючи всі інші за деяким типовим значенням (або парою значень). У цьому випадку ви можете представити результат у вигляді групи двовимірних графіків з продуктивністю сервера (наприклад, кількістю користувачів / запитів) на одній осі та використанням / наявністю ресурсів на іншій.

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

Якщо ви вимірюєте всю програму, вам зазвичай не потрібен вихідний код. Однак, можливо, вам буде цікаво виміряти якусь конкретну частину коду (наприклад, лише DB або UI). Тоді ви можете використовувати вихідний код, щоб викрити лише цей модуль для вимірювань та запустити свої тести. Це називається мікро-орієнтиром .

Якщо ви шукаєте приклади, їх багато в академічних статтях. Шукайте науковця google для оцінки ефективності + бажані умови.


1

Масштабованість насправді не є кількісно вимірюваною властивістю для реальних програм.

На практиці масштабованість - це можливість підтримувати навантаження, які збільшуються в різних вимірах.

Для початку додаток підтримує зростаючу завантаженість роботи наявними апаратними ресурсами. Але є різні точки, де ви потрапляєте на межі; наприклад, об'єм пам'яті, кількість ядер, суперечки в структурах даних, пропускна здатність бази даних тощо. Кожен раз, коли ви досягаєте однієї з цих меж, ви повинні використовувати інший підхід до підтримки зростаючого навантаження. Масштабованість полягає в тому, як довго ви можете продовжувати збільшувати навантаження, перш ніж потрапити на непереборний ліміт, або вам потрібно здійснити капітальний перегляд.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.