При прочих равных, для бизнес проектов мы выбираем Java. Обычно используем Spring Framework. Иногда - Google Guice.
Мы часто используем JPA (как Hibernate, так и EclipseLink) для доступа к RDB. Но в последнее время отдаем предпочтение библиотеке Jooq, которая реализует SQL DSL в Java и генерирует модели на основе схемы БД. Она лучше подходит для больших проектов, так как ее работа прозрачнее, а создавать нетривиальные запросы проще.
Мы используем Liquibase для управления структурой базы данных. Стандартный выбор для RDBMS - PostgreSQL. Есть опыт также с Microsoft SQL Server, MySQL/InnoDB и Oracle.
Некоторые проекты требуют NoSQL-решений. У нас есть опыт работы с Mongo, Cassandra и Elastic Stack.
Мы используем Spring Security для авторизации, аутентификации и интеграции со сторонними источниками аутентификации, такими как OAuth, OpenID и т. д.
Spring MVC - наш стандартный выбор для реализации REST API. Однако в настоящее время мы рассматриваем GraphQL и планируем попробовать его как альтернативу REST.
Кроме Java, мы разрабатываем серверную часть на GoLang, когда нужен высокий уровень параллелизма и на C#, когда это требуется.
Текущие проекты разрабатываются с использованием ES6 или TypeScript. Предпочтение отдаем TypeScript, так как он обеспечивает статическую систему типов и позволяет писать более надежные приложения.
Мы предпочитаем использовать VueJS, хотя пишем также и на Angular и React.
Автоматические тесты клиентского кода позволяют тестировать приложения в разных средах. Мы запускаем их после каждого коммита. Наши QA инженеры предпочитают Puppeteer, WebdriverIO и Selenium.
Стандартным инструментом для анализа данных для нас является Python.
Есть опыт работы с такими технологиями, как Spacy, Keras и TensorFlow.
Инструменты, для анализа данных обычно упаковываются внутрь REST сервисов, с целью использования в рамках той или иной бизнес системы.
Мы разрабатываем игры с использованием Unity3d и C#.
Большинство наших игр имеют как клиентскую часть, так и сервер. Для многопользовательских игр в реальном времени мы используем Golang для реализации серверов, поскольку это позволяет реализовывать программное обеспечение с высокой степенью параллелизма простым и естественным образом.
Для однопользовательских игр серверы разрабатываются с использованием того же технологического стека, что и для бизнес-приложений (см. выше).
Мы используем GitLab для хранения наших источников и в качестве CI-сервера. Конвейеры GitLab на основе контейнеров Docker используются для создания, тестирования и развертывания приложений.
Для развертывания приложений мы используем как выделенные сервера так и облака, в частности - Amazon, Digital Ocean, City Cloud, OpenStack, Microsoft Azure.
Мониторинг приложений и серверов осуществляется Zabbix.
Технологии, которые мы не использовали в реальных проектах, но нам интересно это сделать:
Список технологий, которые мы использовали в предыдущих проектах: