https://habrahabr.ru/company/jugru/blog/329218/- Разработка веб-сайтов
- JavaScript
- Блог компании JUG.ru Group
Интернет меняется. Появляются новые технологии, готовящие революцию самого предназначения веба и способа его использования. Интернет без серверов? В оффлайн-режиме? Непосвященные решат, что это бред и пойдут вызывать скорую. Для всех остальных Slobodan Stojanovic поразмышляет над будущим интернет-технологий.
Slobodan – программист-предприниматель из Белграда, последние 5 лет работает CTO в компании Cloud Horizon, которая создает веб-приложения для американских стартапов. Является фанатом JavaScript и новейших интернет-технологий: чатботы, Serverless, web-assembly.
— Какие технологии в современном вебе, на ваш взгляд, уже устарели и тормозят его развитие?
Slobodan Stojanovic: Как написал Дуглас Адамс в «Автостопом по Галактике»: «Подводя итоги итогов всех итогов: люди – это проблема.» Есть вещи, которые устарели, потому что веб развивается очень быстро, и они тормозят нас. Но опять же, когда вы посещаете веб-сайт, созданный более чем 20 лет назад, например,
Space Jam official website, вы видите всю мощь интернета — даже после 20 лет бурного развития старые штучки по-прежнему актуальны.
Да, есть устаревшие вещи, но прелесть веб-разработки в том, что вы можете просто использовать только то, что нужно вашей целевой аудитории. Например, WebVR является крутой новой технологией, но в здравом уме вы не будете создавать на ее основе сайт для банка или госучреждения.
— Некоторые считают, что web 3.0 – это «интернет вещей», некоторые – сетевой «искусственный интеллект». А что для Вас Web 3.0?
Slobodan Stojanovic: Сложный вопрос. Сложно предугадать, куда в будущем повернет человеческая мысль. В настоящее время сеть наконец-то может поддерживать серьезные приложения, а не только веб-сайты. Кроме того, как мы видим, WebVR и подобные вещи могут принести в интернет новые интересные возможности. И, наконец, через несколько месяцев мы увидим, насколько большое влияние окажет технология web assembly на саму сеть.
Интернет вещей и «искусственный интеллект» определенно окажут большое влияние. Но мне все еще сложно увидеть, насколько велико оно может быть и насколько быстро эти новшества могут стать основными технологиями.
— Появление Serverless-технологий – это какое-то нишевое движение или революционное событие в Сети? В чем их преимущества, для каких актуальных задач они подходят?
Slobodan Stojanovic: Это революционное событие. Не только для интернета, но и для технологий в целом.
Сейчас serverless – все еще большое модное слово, но за ним есть многообещающая технология, которая может стать столь же важной, как облака сейчас. Прошло всего несколько лет, и все используют облачные вычисления, потому что держать собственные серверы нет смысла, если вы не инфраструктурная компания или не такая большая, как Facebook.
Serverless – это всего лишь шаг вперед. Облака показали нам, что не обязательно владеть серверами как физическими машинами. Serverless учит нас, что в большинстве случаев должны не думать о серверах и масштабировании, а сосредоточиться на нашей бизнес-логике.
Представьте себе, что вы можете использовать каждый из «микросервисов» вашего приложения, будь то платежи, управление пользователями, новостной бюллетень, как полностью независимую функцию, которая может «упасть», не повредив приложение целиком. И представьте, что каждая из этих служб может масштабироваться независимо. То есть если никто не использует генерацию PDF-файлов, эта служба неактивна, но если многие пользователи решили воспользоваться этим сервисом, она мгновенно масштабируется для его поддержки.
И, наконец, представьте, что вы платите только за те сервисы, которые используются, и только за время, когда они действительно использовались. Это и есть Serverless.
Отмечу, что Serverless требуется немного другая архитектура наших приложений. Они должны иметь событийную структуру и не использовать информацию о состоянии (stateless).
— Почему именно сейчас, когда интернет-покрытие стало более-менее обширным, такое внимание к асинхронным веб-технологиям – это и Websockets, и Offline. Меняется способ потребления?
Slobodan Stojanovic: Да, это звучит парадоксально: у нас есть подключение к интернету почти везде, но мы пытаемся сделать приложения доступными в автономном режиме. Но если вы потратите некоторое время на размышления, то поймете, что это вовсе не парадокс.
Во-первых, интернет везде? Ну, может быть, если вы находитесь в крупных городах Европы или Северной Америки.
Во-вторых, Offline — это разве только оффлайновый доступ к контенту? Не совсем. Offline помогает с кешированием и тому подобным. Таким образом, Offline — это больше, чем автономный контент, он может улучшить работу веб-приложений в целом.
Веб-приложения развиваются, и вместе с ними эволюционирует то, как мы взаимодействуем с ними. Websockets и p2p соединения становятся все более стабильными, а общение в режиме реального времени происходит практически повсеместно.
— Как на развитие технологий реагируют языки веб-разработки? Есть ли в них явные ограничения, мешающие развитию? Нужны ли новые языки программирования, тот же Dart? Что они должны уметь делать, чем не могут похвастаться классические языки?
Slobodan Stojanovic: Мне вполне хватает JavaScript с Node.js. Конечно, некоторые новые языки могут решить некоторые новые проблемы, но важнее понять проблему, которую вы пытаетесь решить, чем иметь новый язык программирования.
Время от времени я люблю пробовать новые языки и смотреть новые идеи, но не думаю, что у нас есть настолько серьезные проблемы, которые может исправить только новый язык.
— Можете на практическом примере показать, как, например, можно значительно сократить объем кода при использовании новых языков программирования?
Slobodan Stojanovic: На самом деле, нет. Важнее другое: некоторые старые языки развиваются, поэтому теперь мы можем использовать синтаксис ES6+ в JavaScript и писать какие-то обычные конструкции, используя значительно меньше кода. Для других вещей существуют библиотеки и фреймворки. Компьютеры тоже эволюционируют, поэтому немного больше нулей и единиц в конечном итоге не сильно влияют на компьютер. За исключением особых случаев, когда используется все возможное для повышения производительности.
— Какие фреймворки для веб-разработки, мобильной разработки Вы считаете передовыми и крайне нужными для JS-разработчиков? Какими пользуетесь сами?
Slobodan Stojanovic: Мне нравится JavaScript, так как в нем многое можно сделать без фреймворка. И кажется, что до сих пор для него нет больших фреймворков, как в некоторых других языках.
Разумеется, React и Angular являются самыми популярными, но они больше похожи на библиотеки, чем на полноценные фреймворки. То же самое для node.js, express и hapi, но классные, но совсем небольшие, не похожие на огромные фреймворки, которые умеют делать все.
Вот некоторые вещи, которые я использую в своей повседневной работе:
Claudia.js — библиотека, которая упрощает работу с Serverless приложениями на AWS. В нем есть библиотеки API и создания ботов.
Hapi.js — один из лучших фреймворков для node.js, но в последние несколько месяцев я в основном занимаются разверткой Serverless приложений, так что теперь он мне не требуется.
Коа — еще один фреймворк, который всегда на шаг впереди других. Он поддерживает async / await.
React — на данный момент моя любимая библиотека для одностраничных приложений. В нем существует множество инструментов, способных помочь создать модульную внешнюю часть, которую можно легко масштабировать и изменять. Это может быть очень востребовано в ситуации, когда вы создаете приложение для стартапа, которое должно начинаться с MVP и быстро масштабироваться в зависимости от обратной связи, полученной от клиентов.
— Какие задачи надо будет решать разработчикам в Web 3.0? Как подготовиться к этим задачам, за чем следить? Какие ресурсы посоветуете?
Slobodan Stojanovic: Разработчики всегда хорошо разбираются в технических проблемах, это наша работа. Но самая большая задача, которая должна быть решена, не связана с Web 3.0 или какой-либо конкретной категорией. Эта задача — понять бизнес-перспективу проекта, над которым вы работаете. Потому что продукты могут существовать только как композиция из потребностей бизнеса, проектирования и разработки. Наша задача как разработчиков – сделать последнюю часть настолько хорошо, насколько это возможно, плюс также понять, что первые две части достаточно хороши.
С технической точки зрения нам просто нужно продолжать делать то, что мы делаем лучше всего — создавать потрясающие приложения и все время учиться новому. Наша работа должна быть одновременно и веселой, и серьезной.
Глубже погрузиться в мир severless-технологий можно, посмотрев запись выступления Слободана на HolyJS 2016 Moscow: «Dr. Strangelove or: How I learned to Love the Serverless Chatbots».
Не менее интересным будет новый доклад 8 1/2 things about serverless (with Node.js) на новой HolyJS 2017 Piter которая пройдет 2-3 июня в Санкт-Петербуге.