Від першої платформи: на якому програмному забезпеченні краще стартувати бізнесу
І за допомогою якого ПЗ розвиватися далі

За останні кілька десятиліть програмне забезпечення (ПЗ) впевнено увійшло до повсякденного життя та стало невід'ємною частиною соціальної інфраструктури у найрізноманітніших сферах діяльності. Якщо у 1960-ті роки розробка й застосування ПЗ були прерогативою наукових досліджень, то вже через два десятиліття багато комерційних компаній активно впроваджували та використовували програмні продукти у своєму бізнесі, динамічно розвиваючись.
Збільшення попиту на програмне забезпечення, безумовно, сприяло виникненню і часом приголомшливому зростанню індустрії розробки ПЗ (Microsoft, Apple, Adobe та багато інших). Поява глобальної мережі інтернет на стику 80-х і 90-х років минулого століття відкрила принципово нові можливості пошуку, передачі інформації і документообігу для широкого кола людей. І бізнес не став винятком.
На кого рівнятися? Сьогодні складно уявити собі успішну компанію, яка не була б представлена в той або інший спосіб у Всесвітній павутині: від сторінки у соціальних мережах до масштабних корпоративних порталів, які самі по собі є прикладами досить складного програмного забезпечення. «Бум» на ринку мобільних пристроїв у другій половині 2000-х став ще однією великою нішею в ІТ-індустрії – ринок мобільних сервісів та додатків становить левову частку прикладного програмного забезпечення: ось уже кілька років користувачі проводять більше часу за своїми смартфонами / планшетами, ніж за ноутбуками і персональними комп'ютерами.
За період свого існування індустрія комерційного «софта» (англ. Software – програмне забезпечення) пережила безліч злетів та падінь: пошукові гіганти Google і Yahoo, онлайн-рітейлер Amazon, система замовлення таксі Uber, дивовижна трансформація Flickr і багато інших. Розміри й терміни існування програмних продуктів також вражають своєю різноманітністю: від невеликих і дуже динамічно мінливих стартапів до багаторічних банківських систем і колосальних за своїм масштабом онлайн-ресурсів, таких як соціальні мережі.
Що таке «платформа»? Важливою складовою комерційного успіху програмного продукту є платформа, яка використовується для його розробки. Під терміном «платформа» дуже часто мають на увазі мови програмування і відповідний їм інструментарій, а також інфраструктуру для розгортання ПО (хмарні технології, власні дата-центри компаній). У найпростішому і неформальному наближенні для опису платформи використовують лише назви самих мов програмування. Наприклад, флагмани ІТ-індустрії використовують такі мови для розробки своїх систем:
- Facebook: PHP, C ++, Python, Javascript
- Google: Java, Go, Python, C ++, Javascript
- Amazon: Java, C ++, Perl, Javascript
- Microsoft: ASP.NET, Javascript
Будь-яка платформа має переваги й недоліки, а основним критерієм використання інформаційних технологій для бізнесу є ефективність для досягнення комерційного успіху.
Яку платформу вибрати? Розглянемо на прикладі. Компанія планує вкласти гроші у розробку сайту-візитівки або невеликого-інтернет магазину. В такому випадку гарним кандидатом при виборі платформи є так званий LAMP (Linux-Apache-MySQL-PHP): операційна система на основі ядра Linux, веб-сервер Apache, база даних MySQL і мова програмування PHP. Багато «коробкових» рішень для побудови веб-сайтів (WordPress, Drupal, Joomla) використовують під капотом саме LAMP. Простота розробки та підтримки не потребує захмарної кваліфікації ІТ-фахівців, що дозволяє бізнесу отримати кінцевий результат у короткі терміни і за порівняно невисоку вартість.
Однак, даний стек має й низку недоліків, з якими компанія може зіткнутися далеко не відразу. Наприклад, зі зростанням популярності інтернет-магазину компанії зростає й кількість фактичних замовлень, тобто збільшується навантаження на систему (загальна кількість користувачів, частота їх візитів на сайт і т.д.). Через деякий час система упреться у технологічну «стелю» – неможливість подальшого збільшення кількості користувачів, причому пов'язане це буде виключно з технічними причинами, а зовсім не з неправильною стратегією продажів або невдалою рекламною кампанією.
З подібною проблемою свого часу зіткнувся Facebook – існуючі компоненти системи, написані на PHP, працювали повільно, а «викидати» працююче рішення і починати все з нуля було, м'яко кажучи, не найкращим варіантом. В результаті була розроблена нова платформа HHVM (HipHop Virtual Machine), яка фактично перетворює «повільні» програми, написані на мові PHP, на високопродуктивні мовою C ++.
Ряд платформ дозволяють ефективно вирішувати проблеми високого навантаження та масштабованості. Це платформи, що використовують мови програмування Java, Go, C ++, ASP.NET, проте кожна з них має свої «приємні сюрпризи», які обов'язково слід враховувати, особливо якщо ви плануєте розробляти власне програмне забезпечення.
Платформа ASP.NET є прекрасним рішенням, якщо компанія готова впроваджувати комплексне рішення від Microsoft. Інтеграція різних компонентів, доповнення та розширення системи, адміністрування і масштабування відбуваються на ура, але все має свою ціну. Продукти Microsoft прекрасно працюють з іншими продуктами, якщо вони – теж від Microsoft, і все це запускається на серверах Microsoft. Якщо ж виникає необхідність взаємодії / інтеграції з компонентами інших платформ, то найчастіше такі завдання істотно ускладнюють систему, знижують її загальну надійність. Таким чином, розробка з використанням технологічного стека від Microsoft – це окремий всесвіт, в якому програмне забезпечення існує довго і щасливо, але рівно до тих пір, поки йому не треба вийти за межі цього всесвіту.
Іншим істотним недоліком ASP.NET є проблема забезпечення сумісності. Уявіть собі: ПЗ компанії, в яке було вкладено круглу суму, вірою і правдою прослужило кілька років та приносить стабільний зростаючий прибуток, в один день стикається з проблемою відновлення до нової версії платформи. Фактично компанія постає перед вибором: залишатися на поточній версії платформи (що швидко застаріває і схильна до вразливостей) або вкладати додаткові ресурси у зміну й адаптацію програмного забезпечення під нову версію.
У багатьох сферах обидві описані альтернативи є неприйнятними, і тут та допомогу приходить платформа Java, для якої зворотна сумісність є наріжним каменем. Хорошими прикладами програмного забезпечення на цій платформі є банківські системи – великі розподілені додатки, що успішно працюють не одне десятиліття. Програма, написана 10 років тому, буде успішно працювати на самій останній версії платформи Java (JVM – Java Virtual Machine) без необхідності істотних ресурсо- і капіталовкладень. Платформа Java спочатку була спроектована для роботи високонавантажених систем, які налічують мільйони користувачів, і донині успішно справляється з цим завданням. Свідченням тому може послужити активне використання Java такими гігантами ІТ-індустрії, як Google, Twitter і Amazon.
Крім того, сучасний світ розподілених систем має більшу розмаїтість інфраструктурного стека: апаратного забезпечення, операційних систем, рішень віртуалізації, on-premise рішень «під ключ», хмарних технологій. У такому «зоопарку» і неоднорідності систем ключовою властивістю платформи розробки стає переносимість, тобто здатність програмного забезпечення працювати із різними інфраструктурними стеками. Як простий приклад можна навести невеликий додаток, клієнт-банк на Java для персональних комп'ютерів, яке можна успішно запустити як на операційній системі Windows, так і Linux або Mac OS. Але за все доводиться платити, і у разі платформи Java цей вислів варто сприймати буквально – дана платформа є однією з найдорожчих і вимагає дуже високого рівня кваліфікації працюючих з нею ІТ-фахівців.
Що скільки коштує? Як невеликий і дуже спрощений приклад порівняємо частину витрат на розробку проекту, відведену під заробітну плату середньостатистичної команді розробників. Для максимальної простоти встановимо, що склад команди виглядає так:
- 1 молодший розробник (junior software engineer)
- 2 розробника (middle software engineer)
- 2 старших розробника (senior software engineer)
- 1 провідний розробник (lead engineer)
Такий «склад гравців» – класична модель розробки невеликого проекту комерційної ІТ-компанії терміном в 6-8 місяців. Скористаємося даними ресурсу DOU.UA при середньостатистичних окладах розробників (в $):
Junior | Middle | Senior | Lead | |
PHP | 500 | 1500 | 3000 | 4000 |
C#/.NET | 600 | 1800 | 3400 | 4500 |
Java | 800 | 2200 | 3800 | 5000 |
Вважаючи, що проект успішно зданий в 8-місячний термін (що на практиці буває дуже і дуже нечасто), отримуємо такі цифри:
Загальна сума витрат | |
PHP | 108000 |
C#/.NET | 124000 |
Java | 142400 |
Безумовно, розглянутий приклад можна трактувати як повноцінний розрахунок бюджетів проекту, але він дуже наочно демонструє загальну тенденцію різниць платформ.
Таким чином, системний підхід при виборі технологічного стека розробки, що включає фундаментальне розуміння специфіки і стратегії бізнесу, є вагомим, а іноді і визначальним фактором комерційного успіху компанії.
Автори матеріалів OpenMind, як правило, зовнішні експерти та дописувачі, що готують матеріал на замовлення редакції. Але їхня точка зору може не збігатися з точкою зору редакції Mind.
Водночас редакція несе відповідальність за достовірність та відповідність викладеної думки реальності, зокрема, здійснює факт-чекінг наведених тверджень та первинну перевірку автора.
Mind також ретельно вибирає теми та колонки, що можуть бути опубліковані в розділі OpenMind, та опрацьовує їх згідно зі стандартами редакції.