Как рассказать о современной веб-разработке путешественнику во времени из 2007 года +25


image

Привет!

Надеюсь, вам понравится этот новый мир. Он очень отличается от мира 2007 года. Совет: если вы только что взяли ипотеку, вернитесь и отмените ее. Уж поверь мне.

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


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


(Веб)приложения


Возможно, вы видели презентацию iPhone перед тем, как вы вошли в машину времени. Apple является самой крупной и богатой технологической компанией, в основном благодаря iPhone и операционной системе iOS. Google тоже имеет конкурирующую вещь под названием Android, и Microsoft попыталась получить кусочек постоянно растущего пирога с Windows Phone. Но у них это не сработало.

image

Слева: iPhone 3GS от 2008 года. Справа: iPhone X от 2017 года. Нам также пришлось практиковать съемку через плечo.

Мы стали называть программы — приложениями, а некоторые веб-сайты — веб-приложениями. В 2008 году Google выпустил новый браузер под названием «Chrome». Спустя 9 лет он стал самым популярным способом чтобы попасть в Интернет.

Команда Chrome вложила много средств в развитие JavaScript, код становился лучше каждый месяц. Сейчас веб-приложения пишут используя большое количество JavaScript, теперь они напоминают десктопные приложения вашего времени.

Другие крупные компании тоже инвестировали в улучшение JavaScript — в нем появилась поддержка модулей и классов. Мы используем языки программирования, компилируемые в JavaScript, например, TypeScript (от Microsoft, сейчас они классные) или Flow.

В наши дни мы, в основном, используем JavaScript, никто больше не поддерживает Flash. Мы запускаем JavaScript даже на сервере вместо Perl, используя вещь под названием NodeJS. Это звучит проще, чем есть на самом деле.

image

Адаптивный дизайн: тот же веб-сайт по-разному показывают несколько устройств.

Помните Swing, SWT и подобные wxWidgets? Нам пришлось создать подобное для браузера. Появилось несколько новых парадигм UI программирования, которые в основном сосредоточены на компонентах.

Нам нужны методы проектирования, разработки и тестирования, нацеленные на создание адаптивных веб-приложений (термин, используемый для описания веб-сайта, который не выглядит на мобильном телефоне, как фигня). Нам также нужно сделать веб-приложения легковесными — не все пользователи имеют высокую скорость соединения, но у всех есть браузер в карманах.

Чтобы поддерживать это все, появились компонентные фреймворки. Термин является расплывчатым и включает в себя Angular от Google, React от Facebook и Vue от сообщества. Но это лучший термин, который у нас есть.

Кстати, я не уверен, что вы узнаете Facebook из 2007 года. Он разрастался в США в то время, а сейчас он просто огромный. В нем зарегистрировано более миллиарда пользователей. Также Facebook обладает одной из самых больших кодовых баз (codebases) в мире.

Команда разработчиков Facebook пишет много отличного кода и публикует его в Интернете. У них есть своя конференция — F8. Сейчас большинство крупных компаний проводят конференции по разработке.

CSS также должен был развиваться, поскольку новые приложения требуют более сложных макетов. Мы больше не используем таблицы с изображениями. Фреймы тоже устарели. Вместо этого мы создали новые стандарты, такие как CSS Floats, Flexbox и CSS Grid.

Людям пришлось перебирать эти стандарты, и поэтому они создали библиотеки, чтобы они выглядели структурировано, например Bootstrap, Foundation и многие другие. Подобно JavaScript, мы создали языки, которые компилируются в CSS. Они компенсируют некоторые вещи, которые пропускает CSS, например, переменные или модули. Это все еще сложно понять.

Быть потерянным это нормально


Не расстраивайте, если вы в замешательстве. Правда в том, что мы все немного в замешательстве — и все в порядке. На планете сейчас намного больше разработчиков, а технологические компании становятся все более успешными. Некоторое время мы использовали термин «стартап» для описания компаний, которые быстро росли и не знали, что делать. Но даже этот термин устарел.

Данные


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

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

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

Поскольку многие люди установили приложение, Waze получил множество данных о том, как передвигаются автомобили. Они использовали его для разработки программ, которые могли понимать, где есть пробки.

Теперь, когда вы открываете Waze на своем телефоне, вы в реальном времени видите пробки на карте и можете выбрать другой маршрут.

С тех пор Waze был куплен Google. Это часто случается со стартапами.

image


Кто-то использует Waze, чтобы добраться куда-нибудь. Другие пользователи Waze показаны как забавные значки.

Перед Data Science возникли три основные проблемы: хранение данных, понимание данных и использование данных. Мы преуспели во всех этих областях. Давайте рассмотрим каждую область отдельно.

Хранение данных


Сейчас нам нужно хранить намного больше информации, а затем выяснить, какая часть этой информации важная. Нам стало нужно изобретать новые базы данных. MySQL и PostgreSQL не подходят для хранения терабайт данных (еще это называется «Big Data»).

Крупные, первые интернет компании, как правило, сталкивались с этими проблемами, и поэтому они были на шаг впереди в развитии технологий. В большинстве случаев технологии сначала использовались внутри компании, а затем становились общедоступными.

Было движение, которое мы назвали NoSQL. Этот новый класс баз данных принял некоторое из конвенций традиционных реляционных баз данных и развернул их.

Существует Hadoop, который отвечает за то, как данные хранятся на многочисленных компьютерах. Он определяет способ обработки данных MapReduce (вдохновленный статьей из Google — крупные компании пишут хорошие научные статьи в эти дни).

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

И у нас есть MongoDB, база данных, которую легко установить и использовать для прототипирования приложений. В 2017 году мы рассматриваем технологии так же, как десять лет назад относились к поп-звездам — ??мы ревностно защищаем некоторые из них и ненавидим других. MongoDB — как группа Nickelback — принадлежит к последней группе.

Обучение


image

Собака, сфотографированная через Prisma, приложение, которое использует машинное обучение, чтобы сделать обычные фотографии похожими на известные произведения искусства. Больше нет Photoshop Plastic Wrap.

В области «понимания данных» большая часть внимания была сосредоточена в области Машинного Обучения. Было много новых методов, от наивной классификации до глубокого обучения, которые теперь находятся в наборе инструментов Data Scientist. Они в основном пишут на Python и работают вместе с разработчиками для того, чтобы использовать машинное обучение где это только возможно.

Например, с помощью Data Scientists многие веб-приложения используют A / B-тестирование. Этот метод обслуживает две несколько разные версии приложения для разных, но похожих групп пользователей. Он используется, чтобы увидеть, какая версия лучше подходит аудитории, будь то регистрация или покупка.

Многие крупные компании, такие как Airbnb (произносится как аир-би-энд-би), Uber и Netflix, одновременно проводят сотни и тысячи тестов A / B, чтобы убедиться, что их пользователи получают лучший опыт использования их приложения. Netflix — это приложение, в котором люди могут смотреть телевизионные шоу на всех своих устройствах. ? \ _ (?) _ / ?

Микросервисы и облака


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

Это трудно достичь в традиционном центре обработки данных, поэтому у замечательных инженеров Netflix используются виртуальные машины. Помните Amazon Web Services, который был запущен в 2006 году? Тогда они начали предлагать Elastic Cloud Compute, известный как EC2, чтобы помочь людям получить виртуальные компьютеры в центрах обработки данных Amazon.

Сегодня у них почти 80 подобных услуг, все они созданы для быстрого роста компаний. Раньше у нас было модное название — «The Cloud» — но этот термин так же расплывчив как NoSQL.

image

Это список услуг, которые вы можете найти в облаке Amazon. Он все еще растет.

Google и Microsoft предлагают свои собственные облака, создавая рынок для облачных сервисов. И когда умные люди конкурируют друг с другом, происходят всевозможные сумасшедшие инновации.

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

Теперь мы используем инструменты управления конфигурацией, такие как Puppet, Chef и Ansible для автоматизации наших серверов. Вы пишите код на таких языках, как Ruby, и серверы обеспечивают вам необходимую конфигурацию. Если требуется изменение, вы редактируете конфигурации, а затем обновляете серверы. Больше нет SSH.

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

Мы начали с виртуальных машин, используя такие инструменты, как Vagrant, чтобы их автоматизировать. Тогда мы получили контейнеры Linux и, в конечном итоге, Docker. Мы нашли способ запустить Linux на наших MacBooks без запуска виртуальной машины, которая разделяет некоторые из операций, связанных с ОС.

Используя Docker, мы могли бы создать описания систем, которые точно соответствовали тому, что мы использовали при производстве. Разработчики называли эти описания «image» (образ) и запускали свои приложения в нескольких виртуальных экземплярах, называемых контейнерами.

image

Кстати, многим нравится MacBook. И это конференция по Windows 10.

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

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

Существуют также языки, такие как Scala и Clojure, которые позволяют использовать виртуальную машину Java и все связанные библиотеки. Веб-сайт, такой как AirBnB, запускает сотни микросервисов, используя несколько языков программирования и баз данных.

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

В результате есть такие инструменты, как Apache Kafka, Google PubSub и RabbitMQ, которые нацелены на помощь компьютерам, которые много сообщаются друг с другом. Kafka был создан LinkedIn, социальной сетью, где люди рекламируют свою профессиональную жизнь. Позднее, он стал проектом с открытым исходным кодом.

Способы создания программного обеспечения


Сложность, создаваемая фреймворками оркестрации (orchestration frameworks), в основном предназначена для более крупных команд. Помните — в настоящее время у нас больше людей создают программное обеспечение, чем когда-либо прежде, и каждый программист хочет отправить свой код сразу. Если у вас есть компания с сотнями разработчиков, работающих вместе над веб-сайтом, вам нужно убедиться, что им не нужно координировать свои релизы.

Поэтому мы создаем программное обеспечение в небольших командах. У команд обычно есть некоторые навыки DevOps, и участники знают достаточно об операциях, чтобы иметь возможность размещать свое программное обеспечение. Они используют некоторую форму Agile-процесса, где они выпускают программное обеспечение непрерывно в коротких промежутках. Организации также экспериментируют с другими формами иерархии, такими как Squads, Chapters, Tribes и Guilds, такой как Spotify (это новая музыкальная потоковая служба).

Все эти проекты (и многие другие, о которых упоминалось ранее) разрабатываются публично сообществом людей. Иногда они спонсируются компанией. В большинстве случаев разработка происходит на веб-сайте GitHub. Там люди могут разговаривать о программном обеспечении, публиковать его и одобрять другие публикации, отвечая image emoji. Emoji (эмодзи) — особый символ, который мы теперь используем, чтобы выразить эмоции, такие как «абсолютное согласие». :-)

Сейчас существует много других сообществ, и все они экспериментируют со способами создания программного обеспечения в открытом доступе. Например, фреймворк под названием EmberJS использует community-driven цикл релиза, рассчитанный на 6 недель. Другие языки и популярные программы с открытым исходным кодом (как GitLab или Visual Studio Code, редактор кода от Microsoft) обновляются с периодичностью в месяц, так что изменения не затрагивают абсолютно всё. Пакеты меняются понемногу с каждым релизом.

Споры о выборе редакторов кода до сих пор существуют. Мы пишем наш код в десктопных приложениях, которые запускают браузер, который показывает текстовое поле. И это здорово. Это работает очень хорошо (улучшается с каждым выпуском) и хорошо настраивается. У них даже есть поддержка режима VIM!

image

RailsGirls — это инициатива, которая открывает миру веб-разработку для многих женщин. Здесь участники семинара в городе София, Болгария, показываю Friday Hug — популярный жест в сообществе Ruby.

Конференции проводятся по каждой теме. Они клевые, и они повсюду. Сходите на одну и вы увидите абсолютно разных людей! Оглянитесь вокруг, заведите знакомства, вдохновляйтесь, говорите. Можно сходить на шоу algorave — то, что они делают с музыкой, изображениями и кодом, захватывает дух.

Это еще не все


У нас стало больше разработчиков, софта, и инноваций. Надеюсь, вы все еще так же в восторге от компьютеров — у вас есть все основания.

Давай давай-ка выпьем еще парочку Club Mate и я расскажу тебе о биткойне. Также, если хочешь знать, в США новый президент.




К сожалению, не доступен сервер mySQL