Блокчейн, ИИ, бессерверные вычисления: ТОП-10 технологий 2018
Как блокчейн, NLP, ИИ, машинное обучение, бессерверные вычисления и другие инновационные технологии изменят жизнь разработчиков в 2018 году?
Разработчики должны с нетерпением ждать возможностей, которые откроет 2018 год, потому что такие технологии, как блокчейн, чат-боты, бессерверные вычисления и машинное обучение созрели для действительно серьёзных проектов. В то же время многие разработчики думают, как обеспечить высокую функциональность без ущерба для производительности и безопасности. Но на этом фронте тоже есть хорошие новости.
1. Технологии блокчейн всё чаще будут использоваться в бизнесе
Всё больше компаний начали понимать, что, используя блокчейн-транзакции в своих системах, можно достичь гораздо большей надёжности и эффективности. В следующем году разработчики будут внедрять множество вариантов использования blockchain в отношении финансовых услуг и производств. Blockchain - это технология, которая обеспечивает эффективные и безопасные транзакции между организациями. Она отлично подходит для бизнеса, так как помогает исключить посредников на уровне денежных переводов.
Предположим, предприятие заказывает продукцию у иностранного производителя. Эти продукты проходят через транспортную компанию, таможню, через ещё одну транспортную компанию, и только потом доходят до покупателя. Сегодня проверка и согласование каждого шага преимущественно происходит с помощью электронной почты, электронных таблиц и включает в себя огромное количество дополнительных процессов. Технология blockchain сводит участие людей во всех этих процессах к минимуму посредством записи всех обновлений, как только та или иная транзакция подтверждена.
2. Чат-боты будут беседовать с клиентами и сотрудниками на постоянной основе
Люди устали от необходимости использовать несколько мобильных приложений для выполнения одной и той же работы. Например, три разных приложения разных авиакомпаний, и в каждом из них свой способ регистрации и покупки билетов. Лучше всего обеспечить ту же функциональность, но через самое популярное приложение на вашем телефоне - мессенджер. Для его использования пользователю не требуется никакой подготовки. Благодаря достижениям в области искусственного интеллекта и обработки естественного языка люди будут использовать Facebook Messenger, Slack, WeChat, WhatsApp или голосовой помощник (например, Amazon Alexa или Google Home), чтобы задавать вопросы и получать ответы от чат-ботов.
Используя новые облачные сервисы, разработчики смогут быстро создавать ботов, которые понимают намерение клиента, поддерживают разговор и разумно реагируют, тем самым упрощая интеграцию с back-end системами. Представьте себе, что вы сфотографировали платье, которое увидели в фильме, и передали изображение боту своего любимого магазина одежды, который использует распознавание изображений и ИИ, чтобы порекомендовать похожие платья. Для сотрудников компаний боты также могут быть очень полезными в таких задачах, как напоминание о количестве оставшихся дней отпуска или оформление заказов. Более того, разработчики имеют возможность сначала протестировать ботов на своих сотрудниках и только потом выпускать их в свет.
3. Кнопки исчезнут. Искусственный интеллект заменит ваш интерфейс
Искусственный интеллект станет пользовательским интерфейсом. Это означает, что синхронная модель запроса-ответа приложений и сервисов постепенно исчезнет. У смартфонов по-прежнему «низкий IQ», потому что вам нужно сначала взять смартфон, запустить приложение, попросить его что-то сделать и только после этого получить ответ. Приложения нового поколения будут инициировать взаимодействие посредством push-уведомлений. Мы можем шагнуть еще дальше и представить, что приложение, бот или виртуальный личный помощник, использующий искусственный интеллект, будут знать, что делать, когда и как. И просто будут делать это. Например:
Приложение, которое следит за вашим расходами наблюдает за тем, какие транзакции вы подтверждаете, и затем начинает автоматически подтверждать 99% ваших транзакций, только изредка сообщая вам о тех, которые кажутся подозрительными
Разработчики должны определить, какие данные действительно важны для бизнес-приложений, как отслеживать шаблоны транзакций, в каких бизнес-решениях такой инициативный ИИ будет наиболее полезен, и начать экспериментировать. Встроенный ИИ может предсказать, что вам нужно, предоставить нужную информацию в нужное время, а также автоматизировать многие задачи, которые сегодня вы выполняете вручную.
4. Машинное обучение станет более узконаправленным
Машинное обучение переходит из области размытой науки о данных в разработку обычных приложений. Это происходит как из-за подготовки к этому популярных платформ, так и потому, что машинное обучение полезно при анализе больших наборов данных.
Но чтобы быть эффективным, приложение должно быть обучено в среде, для которой предназначено. Она должна включать в себя наборы данных, которые приложение будет анализировать, и некоторые ответы на вопросы. Например, приложение, предназначенное для выявления аномального поведения пользователей в целях безопасности, будет сильно отличаться от приложения, созданного для оптимизации роботов на фабрике.
Разработчикам необходимо будет больше знать о конкретных случаях использования приложения, чтобы понять, какие данные нужно собирать, какие алгоритмы машинного обучения применять и на каких вопросах тренировать приложение. Разработчикам также необходимо оценивать, подходит ли приложение для конкретной области проекта, учитывая тот факт, что требуется большое количество данных обучения.
Используя машинное обучение, разработчики смогут создавать интеллектуальные приложения для предоставления рекомендаций, прогнозирования результатов или принятия решений.
5. DevOps превратится в NoOps
Проблема DevOps заключается в том, что разработчики тратят 60% своего времени на ops-сторону вопроса, тем самым сокращая время на саму разработку. Им также необходимо все время интегрировать в свои проекты инструменты, заниматься их поддержкой и обновлять по мере того, как появляются новые решения. Практически каждый разработчик занимается непрерывной интеграцией (CI), и лишь немногие непрерывной поставкой (CD). Поэтому разработчики будут настаивать на использовании облачных сервисов, что поможет им в 2018 уделять больше времени непосредственной разработке. Это потребует еще больше автоматизации со стороны настоящих CICD.
Сервис Docker предоставляет кроссплатформенность и множество инструментов для гибкой разработки. Если вы используете в своем проекте контейнеры, то в момент, когда вы закоммитите изменения в Git, сборка по умолчанию будет образом Docker'a с уже интегрированным новым кодом. Кроме того этот образ автоматически пушится в регистр Docker'a, а контейнер разворачивается из образа в среду тестирования(dev-test). От разработчиков требуют, чтобы они поставляли нововведения быстрее и чаще, и DevOps в скором позволит освободить больше времени на разработку.
6. Open source и развитие облачных сервисов
Open source остается одним из лучших двигателей инноваций, но их реализация и поддержка часто вызывает определенные трудности. Например:
- Вы хотите создать платформу управляющую потоками данных или событий (streaming data/event management platform), и вы обращаетесь к Kafka. Как только вы начинаете использовать Kafk'у, вам необходимо настраивать дополнительные узлы и поддерживать баланс нагрузки на большие кластеры Kafk'и, обновлять по мере выхода новых обновлений и интегрировать эти нововведения в свой проект.
- Вы хотите использовать Kubernetes для оркестровки контейнеров. Но вместо того, чтобы вы заботились об обновлениях, backup'ах, восстановлениях и патчах, платформа должна брать на себя эти задачи. Обновления для Kubernetes выходят каждые шесть недель, так что ваша платформа должна удовлетворять стратегии rolling deployment и самовосстановления.
- Вы хотите использовать Cassandra для NoSQL баз данных. Тогда вам нужно, чтобы ваша платформа поддерживала backup (инкрементальный или полный для каждой схемы), систему патчей и кластеров, масштабирование и наконец высокую доступность кластеров Cassandra.
Поэтому разработчики все больше будут искать помощи у облачных сервисов, которые смогут взять на себя все проблемы, связанные с быстрым развитием open source решений, а сами смогут уделять больше внимания эксплуатационным и управленческим аспектам данных технологий.
7. Бессерверные вычисления и архитектуры
То, к чему призывают нас бессерверные вычисления, очевидно: когда возникает потребность в том, чтобы мой код выполнялся на основе определенного события, создается инфраструктура, мой код развертывается и выполняется, и я плачу только за время выполнения моего кода.
Что же из себя представляют бессерверные вычисления? Из Amazon:
Бессерверные вычисления позволяют создавать и запускать приложения и сервисы, не заботясь о серверах.
Предположим, вы хотите построить функцию бронирования поездок, чтобы забронировать или отменить рейсы, отели, прокат автомобилей. Каждое из этих действий может быть создано как бессерверные вычисления (функции), написанные на разных языках: Java, Ruby, JavaScript, Python. Не существует сервера приложения, который запускается с кодом. Скорее, функции создаются и выполняются только тогда, когда это необходимо. Так и работают бессерверные вычисления.
Для разработчиков создавать бессерверные функции для выполнения сложных транзакций - это отдельная проблема: описывать соединение этих функций, отлаживать распределенные транзакции и определять, как при отказе одной функции в цепочке создавать компенсирующие транзакции для отмены несоответствующих изменений. В этом случае облачные сервисы и инструменты с открытым исходным кодом, такие как проект FN, помогают разработчикам легко управлять программированием, составлением, отладкой и управлением жизненным циклом бессерверных функций, а также деплоить и тестировать их на ноутбуке, on-prem сервере или в любом облаке. Ключевой момент здесь - это выборать бессерверные платформы, обеспечивающие максимальную портативность.
8. Распространение контейнеров
Контейнеры станут привычным инструментом для разработки и тестирования приложений. Благодаря open source инновациям в 2018 году от них стоит ожидать улучшения безопасности, управляемости, мониторинга и отладки. Контейнеры играют ключевую роль во многих современных тенденциях, включая архитектуры микросервисов, облачные приложения, бессерверные функции и DevOps.
Конечно же контейнеры нужны не везде. Например, интеграционная или мобильная PaaS – это платформы более высокого уровня, и они сами по себе уже содержат контейнеры, что является исключением, которое только доказывает правило.
Также политика лицензирования дорогостоящего коммерческого программного обеспечения должна будет учитывать распространение контейнеров, что, конечно же, повлияет на его ценообразование.
9. Программное обеспечение станет способно само себя поддерживать
Команды разработчиков и техподдержки утопают в различных данных из журналов, баз данных, пользовательского опыта и так далее. При этом все эти данные разрознены, поэтому человеку не так то-просто структурировать их, чтобы они могли принести пользу. Кроме того, разработчики тратят очень много времени, чтобы рассказать команде техподдержки обо всех подводных камнях приложения.
Объединение всех этих данных в один репозиторий и применение вычислительных возможностей, машинного обучения и целевых алгоритмов позволит службам управления облачными системами значительно упрощать мониторинг производительности, журналов учёта и так далее. Эти облачные сервисы будут наблюдать за транзакциями и изучать топологию сервера, связанную с ними. На основе этих знаний сервисы смогут обнаруживать аномалии и сообщать о них разработчикам, указывая основную причину проблем с конкретной транзакцией.
10. Высокоавтоматизированные решения по обеспечению безопасности и соответствия требованиям
Разработчики часто воспринимают безопасность и соответствие требованиям как чью-то работу. Поэтому появление комплексных режимов безопасности, основанных на машинном обучении, поможет согласовать эти условия с быстрыми темпами развития технологий. В частности, высокоавтоматизированная киберзащита будет устранять потенциальные риски безопасности в процессе разработки и при этом автоматически адаптировать профиль безопасности компании к текущим изменениям приложения и другим условиям (выявление атак, устранение уязвимостей, постоянная оценка соответствия).
В конечном итоге более строгий подход к обеспечению безопасности на протяжении цикла DevOps будет только плюсом для всех: разработчиков, специалистов по безопасности и конечных пользователей.