Прежде чем говорить про будущее, давайте еще раз вспомним прошлое. Чего хотят разработчики? Писать код. Чего хотят инженеры? Чтобы оно работало.
Ни тем, ни другим не хочется мучаться с серверами, развертыванием, мониторингом и т.д. (Хотя чего это я, может и хочется). Так что же нам дают методики и технологии сегодня, и что они нам могут дать в будущем?
Неоднозначную реакцию общественности вызвала парадигма разработки serverless - якобы приложения без серверов. Если не язвить, что говорят так люди, не знающие, как устроены компьютерные программы, то можно увидеть идею за следующим.
Serverless дает возможность разрабатывать и запускать приложения без предварительной настройки платформы (будь то ОС, веб сервер или сервер приложений). Написал код - прогнал тесты - запаковал - отправил на AWS Lambda. Хочешь на Python, хочешь на Java/JavaScript, хочешь на C#. Та же Lambda вкупе с другими managed сервисами AWS позволяет нам писать полноценные приложения с минимумом компьютеров в обслуживании.
Вот, например, мой любимый интернет магазин плюшевых хомячков. Написали статичный сайт, положили его в S3. Нажали на нем кнопочку “Добавить в корзину”, делается API вызов на Lambda через API Gateway. Lambda отработала, и вы видите цифру “1” напротив вашей корзины. Нажали “Заказать” - отработало. “Оплатить” - отработало. Несколько маленьких программ, выполняющих свою работу, небольшой сайт c JavaScript, S3, чтобы держать там ваш сайтик, и какое-нибудь хранилище - для пользовательских данных, товаров и прочего. Ни одного сервера под непосредственным управлением. Красота.
Далеко не все приложения сегодня могут действовать по-похожему принципу. Автоматизированные банковские системы, ERP/CRM системы и прочие до такого не скоро дойдут. Большие компании тоже - уж слишком много денег и времени вбухано на текущие разработки.
Тем не менее, начало положено. Кто-то сразу смекнул, что из этого можно сделать, кто-то не понял, но на всякий случай “заорал” и написал про NoOps, кто-то поморщился и пошел дальше админить свой сервер Ubuntu. Ну или кластер Kubernetes (кому как нравится).
С другой стороны управление инфраструктурой все больше отодвигается, давая дорогу к управлению приложениями. Немало сил приложил к этому сам Kubernetes, который может расширяться сам, без сторонней помощи инженерных групп. К нему уже придумали Helm - пакетный менеджер для приложений Kubernetes (аналог Universe для DC/OS). Если так дальше пойдет, то кроме Кубера ничего и знать не нужно будет.
Не отстает от прогресса и сам Amazon. Сервис Fargate, который позволяет развертывать Docker приложения на ECS/EKS кластеры без надобности управлять теми самими кластерами, лишает нас необходимости думать о “железной” части. К приложению легко цепляется ELB/ALB/NLB, что дает нам какой-никакой Service Discovery. Просто прелесть.
Что нас ждет дальше? Docker будет потихоньку превращаться из контейнера в своеобразную очень легкую виртуальную машину со своим state, что навсегда уничтожит границы между контейнерной и гипервизорной виртуализацией. Serverless будет находить своих поклонников среди маленьких стартапов, где не хотят тратиться на инженеров-инфраструктурщиков. Архитекторы решений потихоньку переобуются в архитекторов систем, и будут проектировать приложения вместо инфраструктур. Сисадмины будут мониторить и логгировать приложения, а не серверы. Железячники и сетевики, конечно, никуда не денутся (кто-то же сидит в ЦОДах Амазона, Гугла и Микрософта), но количество предложений на рынке труда уменьшится.
А мы с вами будем сидеть на Безусловном Базовом Доходе, потому что наша работа будет не нужна. Имея необходимые средства к существованию, мы посвятим себя науке, искусству и творчеству, пока искусственный интеллект и роботы за нас пишут код, собирают и обслуживают оборудование. Бизнес будет заказывать приложения “голосом” через voice recognition, а бездушная железяка будет их создавать.
Тем и спасемся.
Post #262
892
- ❤ 1