В раздумьях об ARMагеддоне
Привет, Хабр! Меня зовут Сергей Минаев, я руководитель направления администрирования веб-сервисов в компании «Спортмастер».
И пока весь мир обсуждает, насколько удачным получился процессор Apple M1, и действительно ли можно верить бенчмаркам, я и мои инженеры погрузились в раздумья о грядущем.
Мы сидели и курили, начинался новый день, а из головы все никак не уходили мысли о том, что произошло. Нет, мы не обсуждали возможное крушение Intel, мы не думали о том, что будет дальше делать AMD с x86, не думали про Вендекапец. Мы пытались и все еще пытаемся понять, насколько изменит веб-разработку новый продукт от Apple.
Давайте вернемся в » давным-давно, в далекой галактике» и вспомним про различные архитектуры процессоров, и почему они остались на обочине истории.
В начале было слово. Потом двойное слово
Когда компьютеры были такими же большими, как и деревья, а x86 был маленьким, как трава, основную работу проводили на «больших компьютерах», и никто особо сильно не воспринимал всерьез IBM PC. Но тут произошла революция номер раз — появился 80386. Появился защищенный режим, можно было адресовать 4Гб памяти…, но все это на самом деле не имеет никакого значения. Значение имеют цена и распространённость. В какой-то момент x86 благодаря Microsoft очень малоизвестной компании начал завоевывать рынок персональных компьютеров, которые можно было покупать домой. А там, где множество, там и появляется подручный, привычный и любимый инструмент. Именно таким инструментом стал x86, под который начали писать очень много ПО, и это ПО писали на самом x86.
Да, был рынок больших и тяжелых DEC Alpha, PowerPC, MIPS, SPARC. Компьютеры Apple на Motorolla/PowerPC мы пока что обходим стороной. Но самое важное происходило на уровне персоналок: x86 был привычным и распространённым инструментом, с каждым поколением увеличивалась производительность, а доступность была выше, чем у других архитектур. Все это привело к тому, что критическая масса ПО получила распространение именно под x86, хороший пример тому — постепенный отказ Microsoft от архитектур Alpha, MIPS и PowerPC в Windows NT 4.0
Постепенно x86 начал врываться в серверный сегмент, где раньше царили PowerPC, MIPS, IA64. Со временем архитекторы стали отказываться от кастомных архитектур, на рынке серверов стал доминировать x86 (уже amd64), а такие гиганты как PowerPC и SPARC перешли в очень нишевый рынок. MIPS ушел в роутеры, от PA-RISC отказались ради IA64, а IA64 нашел свой айсберг.
Да что уж говорить про серверный сегмент, если даже игровые приставки ушли от PowerPC/Cell к x86 и… ARM.
Добро пожаловать в новый дивный мир. Или не пожаловать…
Мысленно переместимся в середину 2000: доллар по 29, Apple заявляет о переходе с IBM PowerPC на Intel x86. Быстрее, выше, сильнее. Появляется транслятор Rosetta, который призван облегчить переход с одной архитектуры на другую. О разработке на MacBook тогда особо никто не думал, поэтому получалась мир-дружба-жвачка.
Теперь мы перемещаемся в 2007 год, когда Apple представила свой первый iPhone на Samsung 32-bit RISC ARM. Это эпохальное время для ARM. Процессоры этой архитектуры и раньше использовались в КПК, но устройства этого формата были прерогативой инженеров и гиков. Если вспомнить вагон метро того времени, то мало у кого можно было увидеть КПК, а если он и бросался в глаза, то вызывал интерес. А кого сейчас можно удивить смартфоном? Мобильные устройства полностью вошли в нашу жизнь. Сейчас рынок C/C++ или Assembler очень узкий, а вот мобильному разработчику практически все двери открыты. Да, под Android собирается Java, под iOS — Swift. Но все это работает на ARM.
У ARM очень много преимуществ, я не думаю, что необходимо останавливаться на технических данных, потому как самое главное — распространённость и привычка. Привычка как пользователей, так и разработки.
А между тем, ARM прорывается в мир приставок: Nintendo и nVidia начинают использовать эту архитектуру.
Прошлое — забыто, будущее — закрыто, настоящее — даровано
Теперь перейдем в наше время. Этот год очень богат на события, поэтому я думаю, что смена архитектуры у Apple прошла, конечно же, заметно, но вот отголоски бэкграунда мы получим чуть позже.
В какой-то момент ноутбуки Apple стали не просто символом моды, они стали рабочим инструментом, притом что самое важное — привычным инструментом разработчика. Мы часто слышим от кандидатов «дайте мне MacBook или я буду программировать на своем». Разработчик (веб, мобила) и MacBook — практически неделимы.
И вот на этом моменте начинается самое интересное: компания, у которой не такая и большая рыночная доля, но у которой есть инструмент, к которому привыкли и на котором по разным оценкам создается 90–95% кода для веба, меняет архитектуру процессора в своем продукте.
Вернемся в прошлое, где-то в 1985–1995 годы. В чем было преимущество x86: цена-доступность, привычка, растущее количество ПО и разработка ПО. Сейчас ноутбуки на Apple M1 продаются дешевле, чем на Intel Core. Разработчики сильно привыкли к Macbook, а если ARM версия дешевле x86, то ее в основном и будут покупать. А покупать ее будут и из-за цены, и из-за того, что по тестам она быстрее, и из-за того, что живет от зарядки больше. И вообще — это суперновый Macbook!
И если с мобильной разработкой все более-менее понятно, в ней мало что изменится, то с вебом, возможно, начнется непонятное.
Пользователи новых MacBook будут работать на ARM, а писать код под x86. Да, есть Rosetta 2, да Docker пока не готов под M1. Но это все пока. Появятся оптимизированные версии под M1, разработчики, скорее всего, будут использовать образы ARM. Той же Java для работы нужна JVM, которая компилируется под конкретную архитектуру процессора. И когда-то возникнет так нами любимое «У меня локально все работает, это что-то у вас с сервером!».
И в заключение
Мы не уверены, что будет так, как мы предполагаем. Возможно, Rosetta 2 будет жить постоянно, возможно, придумают что-то еще, возможно, Apple откажется от M1 (или империя Intel/AMD нанесет ответный удар).
Но пока что мы поискали по ящикам, нашли Raspberry Pi 4 и начали тестировать Docker на ARM. А заодно прошлись по всем нашим базовым образам в корпоративном Registry и посмотрели, можно ли их пересобрать под ARM.
VMware начинает портировать ESXi на ARM, Kubernetes уже существует в ARM-версии, у Amazon улучшаются ARM-инстансы, а в интернете часто пишут, что гегемонии x86 наступает конец.
Может быть, это все зря, но мы уже думаем про возможность и целесообразность использования серверов на ARM-архитектуре. Лучше об этом подумать сейчас, чтобы не оказаться в догоняющих и на обочине истории.