Узел, Go, Java, C # или Elixir
?Вы хотите сделать веб-приложение и задаетесь вопросом, какая платформа лучше подходит, если у нее когда-нибудь должно быть большое количество пользователей...
Часто можно увидеть, как появляется пост разработчика, объясняющий, почему он отказывается от языка X и переписывает свое веб-приложение на язык Y. Для другого это наоборот, он переписывает свое приложение от Y в X. Это редко случается для локальных или мобильных приложений. Выбор языка разработки более важен в Сети, поэтому мне показалось полезным провести это исследование на различных платформах в моде, с достоинствами и недостатками каждой и для какого вида приложения они подходят лучше всего. Это должно помочь избежать переписывания кода после нескольких месяцев разработки...
Для какого типа приложения?
- Это платформа для творчества. Динамизм JavaScript предоставляет уникальные возможности для создания новых функций.
- Приложение, отвечающее на события, легче реализовать в JavaScript (симуляция, робототехника).
- Приложения реального времени используют асинхронный режим. Например, интернет-сайт для обсуждения.
- Приложения с большим количеством обменов, входов-выходов.
- Не подходит для сайта, к которому пользователи обращаются с большим спросом к процессору сервера, например для обработки изображений или звука.
Преимущества
- Большинство программистов знают язык JavaScript, поэтому запуск проекта происходит немедленно и упрощенно, так как язык интерфейса одинаков. Это избавляет от разных рассуждений о бэкенде и фронтенде.
- Многие языки компилируются в JavaScript и поэтому могут работать на Node, если у тебя есть другой язык предрасположенности.
- Легко включать модули с NPM, которым могут завидовать другие платформы вроде ROR.
- Используя фреймворк вроде Express, можно разработать и выложить приложение в онлайн за несколько минут...
- Можно писать BD-запросы на JavaScript, а не SQL (проще) без депаизации.
- То же самое касается данных JSON, которые часто встречаются в Сети.
- Многоядерные процессоры доступны с помощью кластерного модуля .
Неудобства
- Среда постоянно меняется, любимый фреймворк сегодня сменится другим через несколько месяцев... Но ничто не мешает продолжать с теми же инструментами.
- Режим, ориентированный на события с циклом обработки, является проблемой для сайта, поскольку при злоупотреблении клиентами замедляется работа всего сайта. Однако эти излишки нагрузки можно контролировать с помощью специализированных инструментов.
- Упрекаем спагетти-код с калбэками... У них нет ничего обязательного, код легко написать иначе с названными функциями, это вопрос стиля. Однако проблема сохраняется при использовании стороннего кода.
- Поведение на большой нагрузке может быть сложно оценить.
Какие известные сайты используют Node.js?
- MySpace с Express. Это позволяет ему легко создавать новые функции.
- Yahoo использует его там, где он подходит наряду с другими языками .
- Пайпал заменил Java на Node.js, показав лучший результат.
- Ancestry.com построен полностью на Node (100M req/day).
- Netflix.com. Его блог рассказывает, как он решил проблему значительной нагрузки.
- Groupon перенесла свои сайты с Ruby, Java и PHP на уникальное решение Node.js, плюс API Gofer и Node cached.
- Twitter в 2017 году перенесла свой мобильный бизнес на Node Express React PWA (Прогрессивное веб-приложение ).
- Uber управляет доступностью водителей и клиентов с помощью Node.
Для какого типа приложения?
- Для обычных веб-сервисов или приложений.
- Когда хочется набирать разработчиков без опыта.
- Когда первым фактором является производительность.
- Когда исходный код очень важен и его нужно часто менять.
- Особенно подходит для облачного программного обеспечения или связанного с ним .
Преимущества
- Полный и эффективный набор инструментов разработки.
- Простой язык для совместной работы и обслуживания кода.
- Очень быстрая компиляция.
- Мало памяти.
- Конкуренция строится на языке.
- Не нужно устанавливать такое время, как у Java, достаточно только программы.
- Сайт языка очень удобен. Она не имеет ничего общего с другими.
Неудобства
- Язык довольно ограничен, стоит ожидать ввода больше кода, чем с другими. Это делает его скучным.
- Для приложения могут отсутствовать библиотеки.
Какие известные сайты его используют ?
- Google - первый пользователь.
- Докер.
Для какого типа приложения?
- Все традиционные приложения, которые используют базы данных и общаются со многими клиентами.
- Когда вы хотите быть уверены, что у вас есть все полезные библиотеки и серверные фреймворки, такие как те, которые предоставляет Apache.
- Чтобы больше шансов найти опытных разработчиков.
Преимущества
- Для работы крупных веб-сайтов, в том числе фонда Apache, на Java было разработано множество открытых инструментов.
- Инструменты профилирования и отладки даже в кластере машин.
- Огромная библиотека.
- Многопоточность делает сессии независимыми и избегает блокировки друг друга. Однако для этого требуется больше ресурсов.
- Может работать в распределенном режиме (например, Erlang).
- Может работать в асинхронном режиме (например, Node) с помощью модуля Vert.x .
Неудобства
- Возможно, именно эта платформа требует больше всего материальных ресурсов. Невозможно установить Java на любом сервере.
- Познакомиться со Scala сложнее, чем с другими языками. Что касается Java, то это очень многословно и перейти от идеи к реализации сложнее.
Какие известные сайты его используют?
- Twitter использует Scala.
- Все сайты, которые используют Hadoop от Apache, в том числе Facebook, также используют Java.
- Java экстра распространен как бэкенд веб-сайтов, используя инструменты Apache или нет.
Для какого типа приложения?
- Сайт языка рекомендует это для электронной коммерции, банков, телекоммуникаций, мессенджеров и подобных приложений.
- Подходит для обычных веб-приложений, когда вы уверены, что у вас очень много пользователей.
- Когда очень много пользователей подключены одновременно и взаимодействуют косвенно (на одних и тех же объектах).
Преимущества
- Умеет управлять очень большим количеством пользователей .
- Также специализируется на распределенных системах с отказоустойчивостью. Отказоустойчивость является одним из основных принципов.
- Коллекторский гараж без перерывов на продолжающиеся приложения.
- Интегрированная база данных Mnesia для сложных цепей (не для документов).
Неудобства
- Меньше библиотек, чем остальных.
- Язык Erlang медленный - но платформа в целом компенсирует этот недостаток.
- Община сокращена. Это приводит к нехватке документации и поддержки.
Какие известные сайты его используют?
- Whatsapp была написана на эрланге. Количество пользователей приближается к миллиарду .
Для какого типа приложения?
- Изначально платформа для Windows была сделана носимой для работы в облаке с любой ОС. Поэтому он подходит для онлайн-приложений любого типа, работающих в облаке.
- .NET Native компилирует приложения AOT, которые подходят для мобильных приложений.
Преимущества
- Компилятор Roslyn и среда выполнения CoreCLR работают с открытым исходным кодом.
- Исполнение интерпретировано JIT или скомпилировано AOT.
- Visual Studio обеспечивает очень полную среду разработки и может производить приложения для Windows, Linux или Mac на одной и той же станции.
- Можно установить разные версии .NET на одном сервере, в контейнерах, и таким образом протестировать новую версию перед заменой предыдущей.
Неудобства
- Для приложений, уже разработанных для .NET Framework, перенос на .NET Core не является немедленным, часть кода должна быть переписана.
- Не хватает многих библиотек и средств разработки не на уровне .NET (в 2016 году).
Какие известные сайты его используют ?
- StackOverflow, сайт вопросов для разработчиков основан на .NET и Dapper.
Для какого типа приложения?
- Немногие стартапы используют PHP для работы веб-приложения. Это скорее язык любительских сайтов. Но типичная версия языка, Hack, могла выдержать большую аудиторию и PHP 7 тоже.
- Это самое экономичное, когда на хостинге, и поэтому он подходит для сайта с ограниченными целями.
Преимущества
- PHP легко установить с помощью сервера Apache.
- Он доступен всем хостингам.
- Его функциональная библиотека почти универсальна, а фреймворки вроде Laravel предоставляют готовые среды приложений.
- Он предназначен для взаимодействия с базами и данными.
- Ему не нужен шаблон для построения страниц, язык - это шаблон.
Неудобства
- Язык, производный от старых инструментов командной строки, деревенский и несогласованный.
- PHP был очень небезопасен, вплоть до версии 7, которая теперь требует использовать mysqli вместо mysql.
Какие известные сайты его используют ?
- Facebook был построен на PHP, но теперь использует Hack, производный язык. Кроме того, Facebook также использует множество инструментов для управления значительной нагрузкой.
- Википедия основана на PHP, но это меньше приложение, чем сервер страниц. То же самое и с Wordpress.com.
- Dailymotion перенесла свой 10-летний PHP-код на PHP 7 после испытания HHVM. PHP 7 обеспечивает такую же производительность и более простую миграцию.
- Tumblr мигрировал с PHP 5 на PHP 7 в 2015 году .
Заключение
Можно заметить, что крупнейшие сайты могут без проблем использовать одно из пяти решений. Иногда они отказываются от одной платформы в пользу другой и это не всегда в пользу одной и той же. Это показывает, что лучшая платформа зависит прежде всего от приложения, которое хочется реализовать.
Примечание: Ruby On Rails описывается на странице на языке Ruby. Есть и другие платформы, которые я не цитировал из-за их неудобств (масштабируемость, медлительность, сложность отладки, незащищенность .