Удивительно, насколько быстро развивается мир ИТ в настоящее время. Шутка о том, что фреймворк javascript выпускается каждый день, уже не актуален только для JS. Сообщения в блоге под заголовком Топ-10‹ разместите здесь свой домен ›фреймворки для изучения в 202x, такие как сообщение от гуру JavaScript Эрика Эллиотта, появляются как грибы.

Кроме того, такие компании, как Thoughtworks и Gartner, делятся своими выводами в Technology Radars и Gartner Hype Cycle for Emerging Technologies. Такие технические радары не только выявляют наиболее востребованные навыки инженеров-программистов, но и дают рекомендации по возникающим инновациям, которые открывают рыночные возможности для бизнеса.

В ИТ-ландшафте есть десятки областей, четыре из которых - инфраструктура, серверная часть, интерфейс и машинное обучение - я хотел бы выделить и изучить более подробно.

Инфраструктура - это место, где работают приложения, и разработчики обычно воспринимают это как должное. В условиях процветания культуры DevOps команды берут на себя ответственность не только за доставку кода, но также за его развертывание и мониторинг, а также за выполнение задач обслуживания.

Однако им скорее не нужно выбирать хостинг-провайдера и настраивать «голое железо». В прошлом подготовка и настройка машин были далеко не прелестями - я смотрю на вас, Ansible - но сегодня есть больше тем, которые нужно охватить, например, безопасность, управление сертификатами, конвейеры CI / CD и, конечно же, множество облачных технологий. связанные проблемы.

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

Хранение инструкций по настройке инфраструктуры в репозитории исходного кода не только позволяет повторить процесс настройки в автоматическом режиме, но и знакомит с известными разработчиками практиками, такими как обзоры кода и история версий.

Конвейер как код - это кодификация инструкций CI и CD, отвечающих за создание, тестирование и развертывание приложения. Примеры, с которыми мы работаем ежедневно: Jenkins или GitLab CI / CD.

Политика безопасности как код, как вы догадались, ребята, заключается в декларировании проблем, связанных с безопасностью, в коде. Либо за счет использования целых платформ, таких как Istio, либо более легкого механизма правил под названием OpenPolicyAgent, оценивающего удобочитаемые инструкции авторизации.

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

И последнее, но не менее важное: есть Код как код ... шучу, нет ... пока.

Имея установленную защиту, вы можете протестировать ее с помощью инструментов статического анализа, таких как tfsec, предназначенный для скриптов Terraform. Для основных облачных провайдеров ScoutSuite сканирует правила контроля доступа, такие как роли, разрешения, а также правила брандмауэра и группы безопасности.

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

Хотя k8s хорошо известен, существует множество инструментов, упрощающих общие административные задачи. k9s - интерфейс командной строки с пользовательским интерфейсом наверху, которого вам точно не хватало. Lens - бесплатная IDE с открытым исходным кодом для управления кластером Kubernetes. kind - для запуска локальных кластеров k8s в целях тестирования или как часть конвейера CI. Для решения CD, работающего в k8s, ArgoCD выглядит очень многообещающим, поскольку приложения развертываются в желаемом состоянии (как указано в репозитории git). Изменения состояния регистрируются и автоматически применяются в целевой среде.

Наконец, наше приложение развернуто и попало под нагрузку. Как разработчик вы еще не закончили, потому что наверняка реализовали агрегирование журналов, отслеживание и сбор показателей, не так ли? Итак, вы уже знакомы с Сыщиком или Джагером, Прометеем и Графаной, Грейлогом или стеком (B) ELK. Есть новый парень, сочетающий в себе все эти функции, под названием OpenTelemetry. Это платформа, предоставляющая агентов, сервисы и API для сбора и обслуживания показателей, трассировки и журналов.

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

  • MeiliSearch - упрощенный подход к полнотекстовому поиску с опечатками,
  • mkcert - упрощение тестирования, требующего локально доверенных SSL-сертификатов между службами,

и скромное введение в шлюзы API с

  • Gloo в качестве примера,

прочтите мой пост о тенденциях в инфраструктурном ландшафте.

… Тенденции развития

Набирает обороты GraphQL - подход к унификации предлагаемого API. Ответственность за принятие решения о том, какие данные ему нужны взамен, лежит на клиенте. Когда вызывается конкретный метод, настольные или веб-клиенты могут запрашивать полный набор данных, таких как ценник, короткие и длинные описания, а также изображения и комментарии, тогда как мобильное приложение может хотеть получать только эскизы и более короткое описание.

Я писал в блоге о GraphQL в одном из моих проектов на основе SpringBoot и получил неплохой опыт работы с этим. Чтобы сделать еще один шаг, включите GraphQL Inspector в свой конвейер CI, чтобы повысить качество схемы GraphQl.

Если вы следите за новостями о Kafka, вы, возможно, видели обмен аргументами между разработчиками Confluent и Pulsar. Я тоже присоединился к партии, и мне очень интересно, как дальше будет развиваться обе системы обмена сообщениями. Это приводит нас к микросервисам. Разработчики JavaScript, а точнее разработчики Node.js, получили новый инструмент для построения такой архитектуры - NestJS.

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

… Тенденции развития

Фронтенд-разработка ничем не выделяется. У него также есть свои микросервисы - так называемые Микро-интерфейсы. Также поощряются все виды тестов: сквозные с Cypress, компонентные тесты с Testing-Library и визуальные регрессионные тесты с BackstopJS.

Если вы ищете инструмент сборки, который работает быстрее в повседневной работе из-за разукрупненной разработки, а также в продукте благодаря оптимизации, примененной к пакетам, или вам просто наскучили Yeoman, Grunt, Gulp и Webpack, тогда Снежный покров - ваш друг. Он мгновенно отображает изменения в браузере, тогда как производственные сборки используют такие методы, как минимизация кода, разбиение кода и встряхивание дерева, и это лишь некоторые из них.

Наконец, большинство из нас, разработчиков, используют IDE. Парное программирование в удаленной среде никогда не было приятным занятием. Обычно в SoftwareMill мы используем решение для совместного использования экрана, такое как Slack или Zoom. С GitPod, похоже, произошел прорыв. И в списке функций есть гораздо больше, чем просто совместное использование вашей текущей среды разработки. Это полноценная среда IDE, работающая в облаке, которая избавляет вас от необходимости настраивать - а иногда и вовсе портить - свой локальный компьютер.

Я рассмотрел эти и еще несколько связанных тем в своем сообщении о тенденциях в разработке серверных и внешних интерфейсов.

… Инструменты

Последнее, что я затронул, - это Машинное обучение.

Я уже писал о том, как ML достигает более широкой аудитории, выпуская API более высокого уровня, такие как Keras и fast.ai. Более того, если у вас есть большой опыт работы с разработчиками, вы обнаружите, что некоторые хорошо известные практики и техники проникают в мир машинного обучения.

Подобно git, вы найдете DVC, систему контроля версий, адаптированную к потребностям машинного обучения, например, для хранения больших наборов данных. Ветвление используется для тестирования и сравнения различных моделей (также зарегистрированных в репо), а не для разработки новых функций, которые предполагается позже объединить в мастер. Что касается непрерывной доставки, вы найдете похожую технику под названием Непрерывная доставка для машинного обучения (CD4ML), цель которой не только развернуть окончательную модель и автоматизировать вышеупомянутое сравнение различных ветвей, но и также масштабируйте базовое оборудование в соответствии с различными потребностями в обучении и эксплуатации моделей машинного обучения.

Говоря о сравнениях, которые на самом деле являются экспериментами, существует инструмент под названием Marquez для сбора, агрегирования и визуализации метаданных наборов данных. Для отслеживания экспериментов вы можете выбрать между Neptune.ai, Comet и MLflow.

Однажды мой коллега сказал мне:

Кому нужен отладчик, если писать правильные алгоритмы.

Правильно. Для остальных из нас отладчики очень полезны, когда вы думаете, что знаете лучше, и в любом случае это полезный выход из обычного окна IDE (если это не происходит слишком часто). В мире машинного обучения Manifold дает представление о том, какие модели дают неточный результат и чем они отличаются.

Для любопытных вы найдете гораздо больше информации, например, прорыв в НЛП с помощью ERNIE, несколько удивительных примеров того, что уже сегодня возможно с сетями GAN (например, в рисунок ниже).

а вот несколько примечаний о других инструментах в моем сообщении о тенденциях в машинном обучении.

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

  • Прежде всего, вы обретете уверенность в том, как вы выполняете свою работу, поскольку некоторые из упомянутых инструментов, методов, платформ и фреймворков уже являются частью вашего набора навыков.
  • Для менее известных технологий это дает вам представление о том, во что инвестировать. Как и в случае с любыми другими инвестициями, существует определенный риск, поэтому радары - это способ его минимизировать.
  • И, наконец, самое главное - не беспокойтесь, если вы обнаружите, что краткие описания недостаточно информативны, чтобы понять, какую основную (бизнес) ценность дает тот или иной инструмент.

Я придумал это сообщение в блоге, чтобы дать вам немного больше информации, чем просто короткий абзац с веб-сайта проекта или файла README.md, и много боролся. Особенно там, где мне не комфортно.

Прочтите их все: