В нынешнем году трендами ИТ-менеджмента являются «API как полноправные продукты», безсерверные архитектуры и «legacy in a box» (унаследованные системы, упакованные в образ виртуальной машины или контейнера), говорится в ежегодном отчете компании ThoughtWorks по зарождающимся технологиям.

Отчет охватывает большую группу техник, языков, фреймворков, инструментов и платформ. Я имел возможность расширить свой кругозор в беседе с Майком Мэйсоном, глобальным директором ThoughtWorks по технологии, который поделился своими представлениями о том, в каком направлении сегодня развивается мир корпоративных разработок.

Машинное обучение оказывает огромное влияние на деятельность корпоративных разработчиков, говорит Мэйсон: «Машинное обучение находится на взлете благодаря совместному действию ряда сил. Во-первых, развернувшаяся в последние годы активная реклама больших данных внушила организациям, что они располагают огромными массивами данных, которые могут представлять ценность и которые нельзя выбрасывать. Эти данные образуют фундамент для полезного применения машинного обучения». Кроме того, произошло то, что Мэйсон называет демократизацией алгоритмов: «Google выпустила TensorFlow как систему с открытым исходным кодом, так что теперь любой может построить модель машинного обучения, обучить ее, используя облако или ферму GPU, и быстро ее перевести на мобильный телефон пользователя».

Тем не менее, продолжает он, не стоит надеяться, что в обозримом будущем машинное обучение станет помогать разработчикам в их собственных трудах: «С высокоуровневыми языками было много попыток, в которых разработчики хотели просто объяснять свои намерения, чтобы машинное обучение или искусственный интеллект волшебным образом рождали соответствующий код. До практического применения этих методов еще очень далеко».

В то же время Мэйсон указывает на «другие проблемы разработок, которые трудны, но могут стать легче благодаря машинному обучению». В качестве примера он приводит ситуацию, когда разработчикам «противостоит имеющийся комплекс корпоративных систем — со сложными взаимодействиями между системами и компонентами, сложными связями и схемами доступа к данным и так далее. Разбирая эти системы и применяя затем машинное обучение, мы смогли бы разобраться в сути дел и улучшить корпоративную архитектуру — „эта система является горячей точкой“, „эта система не особо используется“, „эти две системы всегда ведут себя взаимосвязанно и, может быть, лучше сделать из них одну“ и так далее».

Несколько удивляет, что в отчете ThoughtWorks слово «облако» упоминается всего лишь несколько раз, хотя ясно, что внедрение этого способа вычислений повсеместно расширяется. По словам Мэйсона, это связано с тем, что облако сегодня уже используется везде и для всевозможных целей. «Облако де-факто служит стандартом вычислений независимо от того, какая при этом действует форма инфраструктуры, публичная (Amazon, Microsoft, IBM или др.), частная (Pivotal Cloud Foundry, Red Hat OpenShift) или частное облако в заказном варианте».

Хотя облака и стали вездесущими, в обозримой перспективе не стоит ожидать, что это уменьшит потребности в кодировании внутри организаций, добавляет Мэйсон. «Дискуссии „создавать самим или покупать“ существовали всегда, и они продолжаются, хотя покупка может означать и использование сервиса со стороны. Также есть масса продуктов для машинного обучения и искусственного интеллекта, которые доступны через API, и организации может быть выгоднее интегрировать один их них, чем пытаться создавать ту же функциональность своими силами».

В ряде случаев «продукт домашней разработки может работать хуже, так как основанные на данных сервисы лучше всего работают, когда они умеют оперировать с большими хранилищами данных из более чем одного источника, так что сервис машинного обучения от Google может давать лучшие результаты, чем домашняя версия».

Однако самые главные преимущества заключаются в том, что «облако открывает больше возможностей, а используя сервисы и API, разработчики могут выстраивать более амбициозные решения, так как в этом случае они стоят на плечах гигантов».

Мэйсон также прокомментировал рост использования микросервисов и контейнеров, которые «оказывают огромное влияние на корпоративные системы». Он сообщил, что клиенты его компании «почти во всех случаях хотят внедрять микросервисы и интересно, что это влечет за собой не только технические, но и организационные перемены. Мы видим тенденцию, что крупные технологические управленцы из Кремниевой долины нередко перебираются в более традиционные организации и затем перестраивают их ИТ в „модель Amazon“. Это модель небольших независимых групп „two-pizza team“ (выражение основателя Amazon.com Джеффа Безоса, который говорил, что численность группы должна быть максимум такой, чтобы ее можно было накормить двумя порциями пиццы), нацеленных и наделенных полномочиями единственно на повышение ключевых показателей эффективности (KPI) бизнеса».

По словам Мэйсона, важность модели two-pizza team «определяется не столько размерами групп, сколько их полномочиями в отношении KPI. Это означает ваше право владения своим ПО по принципу „вы это сделали и вы с этим работаете“ и вашу свободу в выборе путей взаимодействия с другими группами, включая, например, такие вещи, как „API в виде продукта“ или отношение к другим частям организации, как если бы они были вашими пользователями, хотя бы и внутренними. Чтобы реализовать на практике такие стили поведения и взаимодействия, по идее требуются микросервисы плюс контейнеры, плюс платформы с самообслуживанием, так что, на наш взгляд, эти вещи тесно взаимосвязаны».

Последний отчет ThoughtWorks рекомендует список технологий и решений, которые в ближайший год стоит запланировать либо к внедрению, либо к внимательному рассмотрению и апробации.

Техники

Внедрение:

  • Конвейеры как код

Апробация:

  • API как продукт
  • Отвязка управления секретами от исходного кода НОВОЕ
  • Хранение персональной информации на территориях стран Европы
  • Legacy in a box НОВОЕ
  • Lightweight Architecture Decision Records (техника захвата архитектурных решений)
  • Progressive Web Applications НОВОЕ
  • Прототипирование интерфейсов в InVision и Sketch НОВОЕ
  • Безсерверная архитектура

Платформы

Внедрение:

  • HSTS
  • Linux Security Modules

Апробация:

  • Apache Mesos
  • Auth0
  • AWS Device Farm НОВОЕ
  • AWS Lambda
  • OpenTracing НОВОЕ
  • Использование Unity помимо игр

Инструменты

Внедрение:

  • fastlane
  • Grafana

Апробация:

  • Airflow НОВОЕ
  • Cake and Fake НОВОЕ
  • Galen
  • HashiCorp Vault
  • Pa11y
  • Scikit-learn
  • Serverless Framework НОВОЕ
  • Talisman
  • Terraform

Языки и фреймворки

Внедрение:

  • Ember.js
  • Python 3
  • ReactiveX
  • Redux

Апробация:

  • Avro НОВОЕ
  • Elixir
  • Enzyme
  • Hangfire НОВОЕ
  • Nightwatch НОВОЕ
  • Phoenix
  • Quick and Nimble
  • Vue.js