С первой платформы: на каком программном обеспечении лучше стартовать бизнесу

С первой платформы: на каком программном обеспечении лучше стартовать бизнесу

И с помощью какого ПО развиваться дальше

Цей текст також доступний українською
С первой платформы: на каком программном обеспечении лучше стартовать бизнесу
Фото: Shutterstock

Сисадминский анекдот:
- Папа, а почему солнце восходит на востоке а заходит на западе?
- А что, всегда так получается?
- Да папа.
- Ты проверял? Работает?
- Да, каждый раз.
- Работает – не трогай! Ничего не трогай!

За последние несколько десятилетий программное обеспечение (ПО) прочно вошло в повседневную жизнь и стало неотъемлемой частью социальной инфраструктуры в самых различных сферах деятельности. Если в 1960-е годы разработка и применение ПО было прерогативой научных исследований, то уже спустя два десятилетия многие динамично развивающиеся коммерческие компании активно внедряли и использовали программные продукты в своем бизнесе.

Увеличение спроса на программное обеспечение, безусловно, способствовало возникновению и порой ошеломляющему росту индустрии разработки ПО (Microsoft, Apple, Adobe и многие другие). Появление глобальной сети интернет на стыке 80-х и 90-х прошлого века открыло принципиально новые возможности поиска, передачи информации и документооборота для широкого круга людей. И бизнес не стал исключением.

На кого равняться? Сегодня сложно представить себе успешную компанию, которая не была бы представлена тем или иным способом во Всемирной паутине: от странички в социальных сетях до масштабных корпоративных порталов, которые сами по себе являются примерами довольно сложного программного обеспечения. Бум на рынке мобильных устройств во второй половине 2000-х стал еще одной большой нишей в IТ-индустрии – рынок мобильных сервисов и приложений составляет львиную долю прикладного программного обеспечения: вот уже несколько лет пользователи проводят больше времени за своими смартфонами/планшетами, чем за ноутбуками и персональными компьютерами.

За период существования индустрия коммерческого «софта» (англ. software – программное обеспечение) пережила множество взлетов и падений: поисковые гиганты Google и Yahoo, онлайн-ритейлер Amazon, система заказа такси Uber, удивительная трансформация Flickr и многие другие. Размеры и сроки существования программных продуктов также поражают своим разнообразием: от небольших и очень динамично меняющихся стартапов до многолетних банковских систем и колоссальных по своему масштабу онлайн-ресурсов, таких как социальные сети.

Что такое «платформа»? Немаловажной составляющей коммерческого успеха программного продукта является платформа, используемая для его разработки. Под термином «платформа» очень часто подразумевают языки программирования и соответствующий им инструментарий, а также инфраструктуру для развертывания ПО (облачные технологии, собственные дата-центры компаний). В самом простом и неформальном приближении для описания платформы используют лишь название самих языков программирования. К примеру, флагманы IТ-индустрии используют следующие языки для разработки своих систем:

  • 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. Простота разработки и поддержки не требует заоблачной квалификации IТ-специалистов, что позволяет бизнесу получить конечный результат в короткие сроки и за сравнительно невысокую стоимость.

Однако, данный стек имеет и ряд недостатков, с которыми компания может столкнуться далеко не сразу. Например, с ростом популярности интернет-магазина компании растет и количество фактических заказов, т.е. увеличивается нагрузка на систему (общее количество пользователей, частота их визита на сайт и т.д.). Через некоторое время система упрется в технологический «потолок» – невозможность дальнейшего увеличения количества пользователей, причем, связано это будет исключительно с техническими причинами, а вовсе не неправильной стратегией продаж или неудачной рекламной кампанией.

С подобной проблемой в свое время столкнулся 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 такими гигантами IТ-индустрии как 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)

Такой «состав игроков» – классическая модель разработки небольшого проекта коммерческой IТ-компании сроком в 6-8 месяцев. Воспользуемся данными ресурса DOU.UA о среднестатистических окладах разработчиков (в долларах США):

Junior Middle Senior Lead
PHP 500 1500 3000 4000
C#/.NET 600 1800 3400 4500
Java 800 2200 3800 5000

Полагая, что проект успешно сдан в восьмимесячный срок (что на практике бывает весьма и весьма нечасто), получаем следующие цифры:

Общая сумма затрат
PHP 108000
C#/.NET 124000
Java 142400

Безусловно, рассмотренный пример нельзя трактовать как полноценный расчет бюджетов проекта, но он весьма наглядно демонстрирует общую тенденцию разниц платформ.

Таким образом, системный подход при выборе технологического стека разработки, включающий фундаментальное понимание специфики и стратегии бизнеса, является весомым, а иногда и определяющим фактором коммерческого успеха компании.

Авторы материалов OpenMind, как правило, внешние эксперты и специалисты, которые готовят материал по заказу редакции. Но их точка зрения может не совпадать с точкой зрения редакции Mind.

В то же время редакция несёт ответственность за достоверность и соответствие реальности изложенной мысли, в частности, осуществляет факт-чекинг приведенных утверждений и первичную проверку автора.

Mind также тщательно выбирает темы и колонки, которые могут быть опубликованы в разделе OpenMind, и обрабатывает их в соответствии со стандартами редакции.

У випадку, якщо ви знайшли помилку, виділіть її мишкою і натисніть Ctrl + Enter, щоб повідомити про це редакцію. Або надішліть, будь-ласка, на пошту [email protected]
Проект использует файлы cookie сервисов Mind. Это необходимо для его нормальной работы и анализа трафика.ПодробнееХорошо, понятно