
Микросервисы *
Микросервисная архитектура и все что с ней связано
Микросервисная архитектура на современном стеке Java-технологий
Make your ideas come app. Serverless приложение — пошаговая инструкция

В 2018 году serverless это самый быстрый способ сделать бекенд приложения, даже если вы никогда их не делали. Да, я знаю про бесчисленное множество конструкторов приложений, MBaaS или BaaS, но мне хочется показать, что serverless подходит не только для элементарных приложений, но и для масштабируемых сложносочиненных бекендов, которые не получится сделать на конструкторе.
Микросервисы, API и инновации: вся сила API

Сегодня мы хотели предложить вам перевод программной статьи небезызвестного Майка Амундсена, ведущего архитектора из API Academy. В этом сравнительно небольшом тексте Майк толково рассказывает, зачем требуется уделять особое внимание разработке API, и как API делаются правильно.
Микросервисы на Go с помощью Go kit: Введение
В этой статье я опишу использование Go kit, набора инструментов и библиотек для создания микросервисов на Go. Эта статья — введение в Go kit. Первая часть в моем блоге, исходный код примеров доступен здесь.
Микросервисы. Паттерны разработки и рефакторинга с примерами на языке Java
Мы приступаем к переводу книги Криса Ричардсона "Microservices Patterns. With examples in Java". До премьеры на русском языке еще с полгода, но мы хотели бы предложить вам своеобразный трейлер — немного сокращенный обзор этой книги от Бена Нейдела (Ben Nadel), прочитавшего MEAP-версию. В обзоре активно цитируется текст Kindle-версии Ричардсона.

Добро пожаловать под кат!
Конспект доклада «Что мы знаем о микросервисах» (HL2018, Avito, Вадим Мадисон)
Совсем недавно закончилась конференция Highload++ (еще раз спасибо всей команде организаторов и olegbunin лично. Было очень круто!).
Накануне конференции Алексей fisher предложил создать инициативную группу «сталкеров» на конференции. Мы, во время докладов, писали небольшие конспекты, которыми обменивались. Некоторые конспекты получились достаточно детальными и подробными.
Сообщество в соц сетях позитивно оценило такой формат, поэтому я (с разрешения) решил опубликовать конспект первого доклада. Если данный формат будет интересен, то я смогу подготовить еще несколько статей.

Предпоследний пост

Компания Zfort Group приняла решение не продлевать корпоративную подписку на Хабре.
Но есть и хорошие новости:
Мы бы хотели анонсировать запуск обновленного сайта zfort.com.ua, кратко рассказать о некоторых технических особенностях создания сайта, а также сообщить о решении перенести публикацию дайджестов с Хабра в блог нового сайта. В блоге нашего нового сайта мы продолжим публиковать дайджесты, статьи и анонсировать профессиональные митапы. На все обновления и публикации можно подписаться, чтобы быть в курсе и ничего не пропустить.
Краткая версия дайджестов также останется и на Хабре, но будет публиковаться не в корпоративном блоге Zfort Group, а с аккаунта alexzfort.
Одна из целей, которую мы ставили перед собой — обновить наш сайт, направленный на локальную аудиторию, сделать его быстрым и легким. Дополнить сайт разделами для отображения актуальных новостей компании, анонсов проводимых мероприятий и публикации дайджестов/статей в короткие сроки с максимальной гибкостью и возможностью для расширения.
А теперь подробнее о деталях создания обновленного сайта zfort.com.ua
Как мы сделали систему для мобильных обходов в СИБУР

Сложных механизмов и устройств даже в рамках всего лишь одной площадки множество. Составные вентили и заглушки, насосы, трубопроводы, устройства пожаротушения, электроника — за всем этим надо следить, у каждого узла в нужный момент времени должны быть определенные параметры: давление в трубах, температура узла, степень открытия какой-либо заглушки и тому подобное. Конечно, ряд самых критичных параметров контролируется электроникой, но там, где это сделать автоматически сложно, в игру вступают старые добрые обходы ногами.
Так пока и у нас на объектах — обходчик заканчивает пить чай, берет с собой рацию для связи с коллегами, блокнот для записи возможных найденных дефектов или отклонений от нормы, запасается терпением и хорошим настроением и отправляется в пеший поход по площадке. Если замечает какие-то критичные странности, сообщает о них по рации, после чего принимаются меры для их устранения. А затем, завершив обход, идет на свое рабочее место и еще какое-то время переписывает все обнаруженные косяки в общий отчет. Руками, в бумагу.
Реконсиляция — проверка целостности данных в распределенных системах

При разработке и использовании распределенных систем перед нами возникает задача контроля целостности и идентичности данных между системами — задача реконсиляции.
Требования, которые выставляет заказчик — минимальное время данной операции, поскольку чем раньше расхождение будет найдено, тем легче будет устранить его последствия. Задача заметно усложняется тем, что системы находятся в постоянном движении (~ 100 000 транзакций в час) и добиться 0% расхождений не получится.
Радар технологий: перечень языков, инструментов и платформ, которые прошли через руки Lamoda

Я и мои коллеги готовы подискутировать в комментариях или на стенде компании на HighLoad++ 2018.
Паттерн: Сага
Привет, Хабр! Представляю вашему вниманию перевод статьи "Pattern: Saga" автора Chris Richardson.
Ситуация
Есть приложение, к которому применялся паттерн Database per Service. Теперь у каждого сервиса приложения есть своя собственная база данных. Некоторые бизнес транзакции охватывают сразу несколько сервисов, так что нужен механизм, обеспечивающий согласованность данных между этими сервисами.
Например: давайте представим, что мы разрабатываем интернет магазин, где у клиента есть кредитный лимит. Приложение должно гарантировать, что новый заказ не превышает кредитный лимит клиента. Так как Заказы и Клиенты — различные базы данных, то приложение не может использовать локальные ACID транзакции.
Проблема
Как обеспечить согласованность данных между сервисами?
Решение
Необходимо каждую бизнес транзакцию, которая охватывает несколько сервисов, реализовывать как сагу.
Сага представляет собой набор локальных транзакций. Каждая локальная транзакция обновляет базу данных и публикует сообщение или событие, инициируя следующую локальную транзакцию в саге. Если транзакция завершилась неудачей, например, из-за нарушения бизнес правил, тогда сага запускает компенсирующие транзакции, которые откатывают изменения, сделанные предшествующими локальными транзакциями.

Тонкая настройка OpenStack под высокой нагрузкой
Привет, меня зовут Максим, я системный администратор. Три года назад мы с коллегами начали переводить продукты на микросервисы, а в качестве платформы решили использовать Openstack, и столкнулись с некоторым количеством неочевидных граблей при автоматизации тестовых схем. Этот пост про нюансы настройки OpenStack, которые с трудом находятся на пятой странице выдачи поисковика (а лучше, чтобы легко находились на первой).

Нагрузка на ядра: было — стало
NAT
В некоторых инстансах мы используем dualstack. Это когда виртуальная машина получает сразу два адреса — IPv4 и IPv6. Сначала мы сделали так, что «плавающий» v4-адрес назначался во внутренней сети через NAT, а v6 машина получала через BGP, но с этим есть пара проблем.
NAT — дополнительный узел в сети, где и без него нужно следить за нормальным распределением нагрузки. Появление NAT в сети почти всегда ведёт к сложностям с отладкой — на хосте один IP, в базе другой, и отследить запрос становится сложно. Начинаются массовые поиски, а разгадка всё равно будет внутри OpenStack.
Ещё NAT не позволяет сделать нормальную сегментацию доступов между проектами. У всех проектов свои подсети, плавающие IP постоянно мигрируют, и с NAT управлять этим становится решительно невозможно. В некоторых инсталляциях говорят об использовании NAT 1 в 1 (внутренний адрес не отличается от внешнего), но это всё равно оставляет лишние звенья в цепочке взаимодействия с внешними сервисами. Мы пришли к мнению, что для нас лучший вариант — это BGP сеть.
Ближайшие события
Пробуем Micronaut или Дорогая, я уменьшил фреймворк
Пробуем Micronaut или Дорогая, я уменьшил фреймворк
Про фреймворк micronaut я мельком вычитал из дайджест рассылок. Заинтересовался, что за зверь такой. Фреймворк ставится в противовес напичканному всем нужным инструментарием Spring.

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

Предлагаю поговорить о том, когда нужны микросервисы, а когда нет. Спойлер: это зависит от проекта.
У нас, разработчиков программного обеспечения, довольно интересная профессия. Мы можем спокойно кодировать целыми днями, а затем прочитать статью о чём-то — и она подвергает сомнению всю нашу работу, потому что какой-нибудь Netflix сказал XYZ.
Просто так, из-за мнения одного человека или компании вы начинаете сомневаться во всём, что делали в течение многих лет, даже если всё работало отлично.
«Референтная модель BIAN» для банковской индустрии или как перестать изобретать велосипед
Так как я заметил, что ты, Цезарь, уже много построил и продолжаешь строительство, я разработал определенные правила, чтобы ты сам смог оценить качество как уже существующих, так и будущих зданий.
Витрувий, архитектор времен Римской империи
Бэкапы Stateful в Kubernetes
Итак, как наверняка все знают, совсем недавно 1-2 октября в Москве в “Инфопространстве” прошёл DevOpsConfRussia2018. Для тех кто не вкурсе, DevOpsConf — профессиональная конференция по интеграции процессов разработки, тестирования и эксплуатации.
Наша компания также приняла участие в этой конференции. Мы являлись её партнерами, представляя компанию на нашем стенде, а также провели небольшой митап. К слову это было первое наше участие в подобном роде деятельности. Первая конференция, первый митап, первый опыт.
О чём мы рассказывали? Митап был на тему “Бэкапы в Kubernetes”.
Скорее всего услышав это название, многие скажут: “А зачем бэкапить в Kubernetes? Его не нужно бэкапить, он же Stateless”.

Целостность данных в микросервисной архитектуре — как её обеспечить без распределенных транзакций и жёсткой связности
Всем привет. Как вы, возможно, знаете, раньше я все больше писал и рассказывал про хранилища, Vertica, хранилища больших данных и прочие аналитические вещи. Сейчас в область моей ответственности упали и все остальные базы, не только аналитические, но и OLTP (PostgreSQL), и NOSQL (MongoDB, Redis, Tarantool).
Эта ситуация позволила мне взглянуть на организацию, имеющую несколько баз данных, как на организацию, имеющую одну распределенную гетерогенную (разнородную) базу. Единую распределенную гетерогенную базу, состоящую из кучи PostgreSQL, Redis-ов и Монг… И, возможно, из одной-двух баз Vertica.
Работа этой единой распределенной базы порождает кучу интересных задач. Прежде всего, с точки зрения бизнеса важно, чтобы с данными, движущимися по такой базе, все было нормально. Я специально не использую здесь термин целостность, consistency, т.к. термин это сложный, и в разных нюансах рассмотрения СУБД (ACID и CAP теорема) он имеет разный смысл.
Ситуация с распределенной базой обостряется, если компания пытается перейти на микросервисную архитектуру. Под катом я рассказываю, как обеспечить целостность данных в микросервисной архитектуре без распределенных транзакций и жесткой связности. (А в самом конце объясняю, почему выбрал для статьи такую иллюстрацию).

Доклады про битву CI и CD, оркестрацию и секреты OpenStack
27 сентября мы провели второй митап «Орки тут» — про оркестрацию, автоматизацию и полевое применение CI/CD. В этом посте полные видео и таймкоды с важными местами из трех докладов.

Темы такие:
- Environment as a Service — про эксплуатацию и секреты настройки OpenStack
- Pod, Cloud and two Smoking Hubs — про масштабирование Selenium-фермы
- CI vs CD: гонка вооружений — про то, как «воевали» CI и CD в Яндекс.Деньгах
Эволюция декомпозиции: от Linux-серверов до Kubernetes
Что так притягивает разработчиков в микросервисах? За ними нет никакой революционной технологии, преимущества перед монолитом достаточно спорные. Только легкость, с которой современные инструменты разработки и развёртывания позволяют создать системы для запуска на тысячах серверов. Предлагаем проследить путь к настоящему моменту, когда разработка и развёртывание такой распределённой системы возможно силами одного разработчика. О том, как эволюционировали технологии виртуализации, какую роль сыграли Linux-контейнеры, Docker и Kubernetes, рассказывает Александр Трехлебов holonavt, корпоративный архитектор Промсвязьбанка, занимается разработкой ПО больше 15 лет. Начинал с C++, затем перешел на Java. В последнее время разрабатывал банковсковский бэкенд на платформе Spring Cloud.

Вклад авторов
offiziellen 453.0Captain_Jack 260.0ph_piter 175.2badcasedaily1 170.0jirfag 152.0KIVagant 150.0MaxRokatansky 127.8sokolov_maksim 108.0dbraincloud 106.4Wimbo 90.0