В Moddix мы провели последнюю неделю, исследуя, какая платформа будет лучшим подходом для нового высоконагруженного микросервиса, который мы разработаем в ближайшие месяцы. Мы подумали, что было бы интересно поделиться нашим процессом определения платформы, которую мы будем использовать. Чтобы определить, какую платформу мы предпочитаем, мы решили сравнить три-четыре конкурирующих языка в трех измерениях. Скорость, кривая обучения, совместимость с нашей командой разработчиков и готовность к будущему. Мы рассмотрим эти параметры именно в таком порядке. Однако здесь следует упомянуть одну вещь. До сих пор мы сами не проводили никаких тестов, а вместо этого решили сканировать Интернет, чтобы найти тесты и опыт разработчиков со всего мира. Эта статья, вероятно, будет продолжена некоторыми реальными тестами на двух или трех наиболее интересных платформах для нашей организации.

Были и другие мета-сравнения, но я чувствовал, что им не хватало некоторых обратных ссылок, чтобы заявить о своих претензиях:

Скорость

Глядя на скорость языков, следует выделить одну вещь. Пока мы сами не проводили никаких тестов. Мы решили собрать несколько тестов и посмотреть, что мы можем извлечь из них. Мы обнаружили несколько интересных результатов:

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

Я намеренно не включил какие-либо ресурсы скорости для PHP и NodeJS, потому что, как известно, их сложно сравнивать простым способом. Если вам нужна дополнительная информация о том, почему я решил оставить это, вы можете проверить последний ресурс в разделе совместимости.

Наконец, это сводится к следующему списку:

  • Go +++
  • NodeJS ++
  • Python +
  • PHP 7+

Кривая обучения и совместимость

В настоящее время большинство наших сотрудников являются опытными разработчиками PHP или JavaScript. Кроме того, есть некоторый опыт работы с Python. С этой точки зрения очевидно, что использование PHP или внедрение NodeJS в качестве нового сервиса - это путь к прогрессу. Однако потом я наткнулся на следующие две статьи:

В которой автор обсуждает разочарование после использования NodeJS в производственной среде в течение целого года. Основываясь на подробных объяснениях автора, мы предполагаем, что кривая обучения NodeJS может быть более крутой, чем у Go. Наконец, одной из приятных особенностей Go является то, что он поставляется со стандартизованным форматером. Как упоминают сами создатели Go, он позволяет разработчикам тратить меньше времени на «религиозные войны» по поводу правильного синтаксиса кода.

С учетом их опыта короткий список с точки зрения обучения и совместимости выглядит примерно так:

  • PHP 7 +++
  • Python +
  • NodeJS +
  • Go +

Готовность к будущему

Глядя на будущую готовность каждой из этих платформ, похоже, что Go - явный соперник. Tiobe показывает огромный рост популярности го за последний год или около того. С другой стороны, похоже, что NodeJS никуда не денется. В то время как Python и PHP имеют наследие не менее двадцати лет.

  • Go +++
  • NodeJS ++
  • Python ++
  • PHP 7+

Заключение

На данный момент мы пришли к выводу, что мы, вероятно, предпочтем Go или NodeJS в качестве API сервиса, который мы создадим в ближайшие месяцы. Следующим шагом является то, что мы проведем несколько тестов, чтобы определить, какой язык лучше всего соответствует нашим потребностям. Поскольку мы стремимся разработать высоконагруженный API, кажется, было бы лучше разработать тест, который вращается вокруг выборки и вставки данных в базу данных под давлением.