Микросервисы для Java программистов. Практическое введение во фреймворки и контейнеры

в 5:29, , рубрики: java, Анализ и проектирование систем, микросервисы, проектирование систем

Перевод книги Кристиана Посты (Christian Posta) Microservices for Java Developers. A Hands-On Introduction to Frameworks & Containers.

ГЛАВА 1. Микросервисы для Java программистов

Чего Вы можете ожидать от этой книги?

Эта книга ориентирована на программистов и архитекторов Java, интересующихся разработкой микросервисов. Мы начнем книгу с высокоуровнего обзора общих принципов и фундаментальных требований, которые должны быть выполнены для успешной реализации микросервисной архитектуры. К сожалению, простое применение современных технологий не решает магическим образом всех проблем присущих распределенным системам. Мы рассмотрим основных игроков и то, что успешные компании сделали, чтобы микросервисы на них работали, включая культуру, организационную структуру и факторы рынка. Затем мы совершим глубокое погружение в несколько Java-фреймворков, используемых в реализации микросервисов. Репозиторий примеров исходных кодов из данной книги расположен на GitHub. Испачкав руки в коде, мы вернемся на воздух и обсудим проблемы развертывания, кластеризации, отказоустойчивости и то, какие решения предлагают Docker и Kubernetes в этих областях. Затем мы снова вернемся к деталям нескольких практических примеров с применением Docker, Kubernetes и NetflixOSS для демонстрации возможностей, которые они придают облачной микросервисной архитектуре. Закончим мы некоторыми положениями, которые мы не можем раскрыть в такой небольшой книге, но которые от этого не становятся менее важными: конфигурирование, протоколирование и непрерывная поставка (CD).

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

Вы работаете на компанию-разработчика ПО

Программное обеспечение действительно «поедает» весь мир. Бизнес понемногу начинает это понимать. Существует два основных двигателя этого феномена: удовлетворение потребностей посредством высококачественных сервисов и быстрая коммодизация технологий. Эта книга имеет, в основном, формат практического руководства с примерами, но прежде чем мы погрузимся в технологии, нам необходимо правильно расставить декорации и понять, кто участвует и какую роль исполняет. В последние годы мы «до тошноты» обсуждали, как сделать бизнес более гибким, однако мы должны полностью разобраться, что это значит. Иначе мы получим очередную банальность, с которой и так все вокруг носятся.

Ценность услуги

На протяжении более чем 100 лет бизнес был сосредоточен на создании продуктов и убеждении покупателей в необходимости потребления этих продуктов: столы, микроволновки, автомобили, обувь, да всё что угодно. Идея, стоящая за всей этой «ведомой производителем» экономикой, происходит из сформулированного Генри Фордом тезиса — «если Вы можете произвести большое количество продукции при малых издержках, то рынок будет практически бесконечным». Для того, чтобы это работало, Вам потребуется несколько односторонних каналов прямого маркетинга в массы, чтобы убедить их в том, что они нуждаются в вашей продукции и их жизнь с ними станет значительно лучше. Практически весь 20-й век эти однонаправленные каналы существовали в форме рекламы на телевидении, в газетах, журналах и на рекламных щитах. Однако, такая ведомая производителем экономика «сложилась» потому, что рынки полностью насытились продукцией (сколько телефонов/автомобилей/телевизоров Вам нужно?). Более того, Интернет вместе с социальными сетями изменяет динамику взаимодействия производителей с потребителями (и что более важно то, как потребители взаимодействуют с производителями).

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

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

Микросервисы для Java программистов. Практическое введение во фреймворки и контейнеры - 1

Постиндустриальные компании начинают понимать, что они должны пестовать свои взаимоотношения с потребителями (используя эти двунаправленные каналы коммуникаций), чтобы понимать, как создать и донести до них ценность как таковую. Для достижения этого компании организуют взаимодействие через службу сервиса, через постоянную оценку удовлетворенности покупателей и обратную связь. Потребители выбирают какой сервис использовать и за какой заплатить в зависимости от того, кто предоставляет большую ценность и удобство. Возмём, например Uber, у которого нет никакого склада или продаваемых продуктов как таковых. Я не получаю никакой пользы от сидения в чьём-либо автомобиле, но обычно я пытаюсь добраться куда-нибудь (на бизнес-встречу, например), что и представляет для меня ценность. В таком контексте Uber и я создаем ценность через моё использование их услуги. Развивая мысль — компании должны сосредоточиться на предоставлении полезных для потребителей услуг, а технологии будут обеспечивать процесс посредством цифровых сервисов.

Коммодизация технологий

Технологии развиваются по схожим с экономикой, биологией и юриспруденцией циклам взрывного роста и стагнации. Это привело к великим новациям таким, как паровой двигатель, телефон и компьютер. Тем не менее, на конкурентных рынках ключевые новации требуют больших инвестиций и скорого внедрения для быстрой капитализации на соответствующем рынке. Это создает еще большую конкуренцию, большие объемы производства и ведет к падению цен, что в конце концов делает ранее инновационную технологию общеупотребительной. По мере коммодизации мы продолжаем развивать инновации и видоизменяться — цикл повторяется. Коммодизация привела нас от мэйнфреймов к персональному компьютеру и к тому, что мы сейчас называем «облачными вычислениями», которые по сути представляют собой общедоступную услугу с практически нулевыми капитальными затратами для потребителя. Поверх облачных вычислений мы теперь развиваем другую новацию в форме цифровых сервисов.

Микросервисы для Java программистов. Практическое введение во фреймворки и контейнеры - 2

Существенную роль в технологических изменениях играет программное обеспечение (ПО) с открытым кодом. Следуя кривой коммодизации, сообщества ПО с открытым кодом это место, где разработчики могут бросить вызов коммерческим компаниям, создавая инновации в программном обеспечении в областях, где однажды был выбор только из «любого черного» (да еще без исходных кодов и с высокой стоимостью лицензии). Отсутствие выбора подталкивает сообщества к созданию таких вещей, как операционные системы (Linux), языки программирования (Go), менеджеры очередей (Apache ActiveMQ) и веб-сервера (httpd). Даже те компании, которые изначально отвергали ПО с открытым кодом начинают постепенно присоединяться, открывая исходные тексты своих технологий и внося свою лепту в существующие сообщества. По мере того, как ПО с открытым кодом и связанная с ним экосистема становятся нормой, мы начинаем наблюдать множество инноваций в программных технологиях, приходящие напрямую из мира открытого ПО (например Apache Spark, Docker и Kubernetes).

Разрушение

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

И этот факт пугает большинство исполнительных и ИТ-директоров. По мере того, как программное обеспечение быстро становится для компаний средством построения цифровых услуг, накопления опыта и приобретения преимущества над другими, многие понимают, что они должны стать разработчиками ПО в своих соответствующих «вертикальных» рынках. Прошли дни тотального ИТ-аутсорсинга и отношения к ИТ, как к общеупотребительной услуге и центру затрат. Чтобы оставаться конкурентоспособными, компаниям нужно принять программное обеспечение как конкурентное преимущество. А чтобы воспользоваться этим конкурентным преимуществом — они сами должны стать организационно гибкими.

Автор: AxianLTD

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js