Файл: Основы алгоритмизации и программирования (рассмотрение критериев выбора средств разработки).pdf
Добавлен: 06.04.2023
Просмотров: 265
Скачиваний: 1
Именно в работе с CMS возникает больше всего непонимание среди конечных заказчиков таких решений. Любая CMS - это тонны готового программного кода, на все случае жизни. В коробочной поставке идут десятки и сотни модулей. Все это очень сильно ограничивает специалистов. Такие решения сильно «тормозят», они абсолютно не гибкие, их очень легко взломать, особенно бесплатные CMS. Еще часто взламывают CMS через модули сторонних разработчиков, в которых есть критические уязвимости, потому что мы никогда не знаем, какого уровня программист писал тот или иной модуль. То есть любая CMS не рассчитана для большого и сложного сайта. Она не могут выдержать большие нагрузки. Это решение не безопасно[5].
- WordPress - некогда блоговый движок, сейчас на ней делаются почти любые сайты, включая магазины. Одна из самых популярных CMS в мире, есть примеры довольно посещаемых сайтов. На ней часто делают информационные сайты, в том числе разные СМИ. Данная система бесплатная.
- Joomla! - CMS общего назначения. Качеством особо не отличается, на ней делают очень маленькие сайты и обычно дешевле всех других вариантов, так как именно с этой CMS начинают учиться многие начинающие программисты. Данная система бесплатная.
- Drupal - это уже CMF для общего назначения, с недавнего времени поставляется со встроенных фреймворком Symfony. Довольно мощная, на ней есть известные сайты, например, официальный сайт Белого Дома. Данная система бесплатная.
- Magento – это самая популярная система управления для интернет-магазинов в мире. Довольно мощная и сложная система, используется в основном на западе.
- PrestaShop - одна из самых популярных CMS для магазинов в мире. Тоже довольно мощная система, используют в основном на западе. Данная система бесплатная.
- OpenCart - еще одна популярная система для интернет-магазинов, но ее больше используют в России, чем на Западе в основном для маленьких и несложных магазинов. Данная система бесплатная.
- 1С-Битрикс - очень распиаренная CMS общего назначения. Имеет очень широкие возможности. На ней часто пытаются делать большие и сложные сайты, а после определенного порога в посещаемости переписывают их на других технологиях. Многие считают, что только эта CMS может интегрироваться с 1С, что не является правдой. Данная система платная [9].
В последние 5 лет очень активно развивают шаблонные решения, которые лучше CMS. Если CMS - это конструктор и его нужно настраивать, то шаблоны - это уже готовые решения под типовые случаи. Например, в каждом городе есть свои рестораны, такси, клиники. Для всех этих типов малого бизнеса нужно примерно одно и тоже. Поэтому, можно просто выбрать готовый тематический шаблон, заменить в нем логотип, цвета и контент. При желании такие шаблоны можно дорабатывать по усмотрению владельца.
Преимущества таких решений в том, что они очень дешевые и их можно запускать моментально. Но при этом, такие решения не учитывают особенностей бизнеса, и конверсия будет не очень высокой.
Есть специальные каталоги шаблонов: TemplateMonster, ThemeForest. Часто встречаются онлайн-конструкторы, в том числе тематические: Wix, PageCloud.
В данном разделе были рассмотрены существующие платформы и фреймворки для разработки веб-приложений. Можно сделать вывод, что для интернет-магазинов лучше выбирать специализированные, а не общие CMS. У каждой из систем есть свои особенности, но все они не предназначены для больших и сложных проектов.
Критерии выбора средств разработки WEB-приложений
Важными критериями при выборе средств разработки WEB-приложений является:
- Размер и тип проекта;
- Сложность проекта;
- Скорость разработки;
- Стоимость специалистов;
- Доступность специалистов;
- Доступные инструменты разработки;
- Наличие готовых решений;
- Гибкость решения;
- Наличие широкого сообщества;
- Отказоустойчивость решения;
- Тренд его развития;
- Наличие подробной документации;
- Стоимость поддержки;
- Требования к нагрузкам;
- Требования к безопасности;
- Кроссплатформенность;
- Возможности интеграции с другими решениями [14].
Выбирая технологию по таким критериям, можно добиться объективного выбора, также сэкономить время и деньги.
От типа проекта часто зависит выбор технологии. Часто можно сказать подойдет уже готовое решение, либо в какую сторону необходимо двигаться.
Проекты бывают разного уровня сложности:
- Простые (визитки, лендинги, простые интернет-магазины, простые приложения) - такие решения обычно делаются на тематических коробочных решениях, CMS или шаблонах.
- Средние (сложные интернет-магазины и маркетплейсы, порталы национального масштаба, разнообразные сервисы, продвинутые приложения) - такие решения обычно делаются на фреимворках.
- Сложные (огромные порталы, социальные сети, инновационные и нетиповые решения) - ядро таких проектов обычно разрабатываются на чистом (нативном) языке программирования.
- По тематике различают: интернет-магазины, доски объявлений, социальные сети. Для большинства популярных тематических решений уже давно есть коробочные продукты и правильнее будет выбрать именно их [5].
В технологиях можно выделить 3 уровня абстракции:
- Чистый язык - это материал, из которого можно сделать все, что угодно. Ограничивают нас только возможности языка. На чистом языке сделаны все крупнейшие сайты мира с посещаемостью в сотни миллионов и миллиарды пользователей, такие как: Instagram, YouTube, Pinterest, Tumblr, Dropbox, Twitter, Facebook, Amazon, Digg, LinkedIn и другие. Более того, крупнейшие проекты в мире даже создают новые технологии для себя, так как уже существующие их не устраивают.
- Фреимворк - это некая среда разработки для программиста с готовыми правилами и инструментами. Фреимворк с одной стороны помогает и ускоряет разработку, а с другой накладывает определенные ограничения. На фреимворках делаются проекты средней сложности с посещаемостью в миллионы.
- CMS - это уже готовое решения, конструктор, в котором мы по частям собираем нужный проект. Его скорее не программируют, а настраивают. Ограничений тут огромное количество, выйти за границы коробки сложно и неэффективно. На CMS делаются простые сайты с посещаемостью до миллиона пользователей в месяц.
Чаще всего один уровень абстракции базируется на другом. То есть на чистом языке делают фреимворки, а на фреимворках делают CMS. Для каждого популярного языка есть много разных фреимворков и CMS.
Сегодня есть огромное количество разных языков программирования, на которых делают сайты. И, более того, на всех популярных языках есть примеры огромных сайтов. Если 10 лет назад, говоря о технологиях больших сайтов, все говорили преимущественно про Java, то сегодня это может быть почти любой язык и утверждать, что сайты делаются на каком-то конкретном языке - стереотип. Это связанно с развитием самих языков, за последнее десятилетие многие сильно продвинулись в развитии и получили широкие возможности. Конечно, каждый язык чем-то отличается и при выборе следует руководствоваться объективными критериями с оглядкой на задачи проекта.
На чистом языке, без использования фреимворков и коробочных решений, пишутся огромные проекты с повышенными требованиями по гибкости, нагрузкам и безопасности. Для таких огромных проектов часто бюджет не играет такого значения, как эффективность. Чем больше проект, тем больше будет требований по гибкости и нагрузкам, а значит, проще писать все с нуля, выделяя на это лучших специалистов, чем если брать какие-то готовые решения, которые непонятно кем писались и непонятно какие проблемы в них скрыты. К примеру, когда речь про небольшой проект с посещаемостью в 10 тыс. человек в день, то будет дешевле сделать его на CMS, которая будет потреблять в 3 раза больше ресурсов сервера, поставить дополнительный сервер за 50$ / мес. и оно будет работать. Когда рассматривают сайт с посещаемостью в 100 млн. пользователей в день, стоимость добавления серверов будет очень дорогой, поэтому проще и дешевле вложить деньги в разработку решения на чистом языке, которое будет оптимальным именно для конкретного проекта.
Чем больше проект, тем больше стек технологий, который в нем используется. В огромных порталах может использоваться сразу несколько языков программирования. Часто один язык может хорошо делать одну задачу, а другой - другую. Такие проекты могут быть на столько огромными, что его части могут работать на разных серверах, с разными доменами (поддоменами) и разными технологиями. Необходимо помнить, что далеко не все технологии совместимы. Самый яркий пример использования разных технологий - Google. Он на столько большой, что разные его части написаны на C/C++, Java, Python, JS и других языках. Более того, Google активно создает новые технологии, как, например, популярный сейчас AngularJS.
Примерами больших сайтов, разработанных на чистых языках программирования, являются:
- PHP: Facebook, Вконтакте, КиноПоиск;
- Python: Instagram, Pinterest, Reddit;
- Ruby: 500px, Groupon, Airbnb;
- Java: Ebay, Amazon, Alibaba;
- C#: Guru, Stack Overflow, Bank of America;
- JS: LinkedIn, Walmart, PayPal.
- Эти примеры отлично показывают, что большие сайты могут быть написаны на разных языках. Почти все большие сайты используются в основе один язык и еще несколько дополнительных. Тоже самое с базами данных: для одних задач могут использоваться реляционные, а для других не реляционные базы, и все это органично сочетается в рамках одного проекта [5].
Выбор технологий зависит от предлагаемой архитектуры проекта. Именно архитектор продумывает основные блоки будущего сайта. Какой язык ляжет к основе, будет ли он нативный или фреймворк, какую систему кэширования выбрать, какие базы данных, как все это связано.
Один из важнейших факторов выбора технологии является стоимость и доступность специалистов, потому что именно это самая затратная часть в любом проекте.
Самым дорогим разработчиком является Java-разработчики. PHP разработчики всегда были самыми дешевым, также на рынке большое предложение специалистов на рынке. Scala как один из новейших и трендовых языков, по этой причине зарплаты веб-разработчиков этого языке достаточно высокие. Еще дорогие JS-разработчики, это связанно с бурным ростом JS в последние годы и растущей популярностью Node.js, а также AngularJS.
Таким образом, если экономить - то PHP специалисты дешевые, а комьюнити большое. Если выбирать самое качественное - то Scala специалисты, которых называют будущем веб-разработки. Но, правда, найти специалистов почти невозможно и наработок просто нет.
Еще важным параметром будет скорость разработки. Ведь важна не только зарплата программистов, но и скорость разработки. Если не учитывать уже существующие наработки, то одним из самых быстрых в разработке будет Python и Ruby, а самый медленный - Java. По этой причине за последние 10 лет почти не вышло новых мегапроектов на Java, зато вышло много проектов на Python.
Выбирая технологию, также необходимо смотреть вперед. Особенно, если речь о большом проекте. Все технологии очень быстро развиваются, выходят все новые и новые версии. Языки сильно меняются каждые 5-7 лет, фреймворки - каждые 2-3 года, а CMS - каждые 1-2 года. Важно выбрать не просто хорошую технологию сегодня, а предугадать тренды развития так, чтобы остаться на коне через несколько лет. Иначе, в конечном счете, придется переписывать проект, что всегда очень проблематично.
Есть всевозможные исследования, которые могут подсказать некоторые статистические выкладки. Например, исследование TIOBE Index показывает интересную статистику (рис. 1).
Рис. 1. Статистика разработки проектов на разных языках в России, исследование TIOBE Index в 2018 году [5]
По результатам разных исследований можно выделить явных лидеров по росту - это JS (версия ES6 и выше) и мультипарадигмальные языки, в частности Scala. Именно Scala считается преемником языка Java и во многом на него похож. Также не плохо себя показывает Python.
Антитренды держат ряд старых языков и PHP. В седьмой версии PHP, исправлены многие серьезные недостатки. Еще многие большие проекты переписываются с Ruby на другие языки, тоже некий антитренд.
Для иллюстрации посмотрим, каких специалистов не хватает в США (рис. 2).
Рис. 2. Статистика разработки проектов на разных языках в США в 2018 году [5]
Данные статистики в США можно считать реальной картиной трендов, которые есть в России.
Безусловно, важный критерий выбора технологии - это стоимость поддержки, о которой мало кто задумывается в начале разработки. Обычно все мыслят категориями стоимости часа поддержки, что в корне неправильно. Важны несколько параметров: стоимость часа, количество часов, официальная поддержка технологии, доступность специалистов, правильный подход к разработке и некоторые другие.
Стоимость часа зависит от зарплаты специалисты, а вот количество часов зависит от самой технологии и качества написания кода. Если решение коробочное, то часов на него может уходить очень много. То есть, с одной стороны, можно сэкономить при разработке первой версии проекта, но после погрязнуть в его постоянной доработке. Хорошо, когда решение популярное и есть официальная документация, но часто выбирают малоизвестные коробочные решения без какой-либо документации - в таких решениям стоимость поддержки будет во много раз выше стоимости самой коробки. То же касается некачественной разработки: в России полностью отсутствует культура проведения технических аудитов готовых решений или его частей. В среднем за 20-40 часов можно проверить почти любое решение и найти его основные минусы. Чем более качественный код, тем легче, а следовательно, и дешевле его поддерживать.
Также следует смотреть на версию языка, фреимворка, CMS. Нужно всегда использовать самую последнюю стабильную версию, чтобы она не устарела до выхода проекта. При появлении новой версии, нужно сразу рассматривать возможность перевода проекта на эту версию. Потому что, если пропустить несколько версий, потом будут проблемы сделать резкое обновление.