Как стать автором
Поиск
Написать публикацию
Обновить
87.56

Микросервисы *

Микросервисная архитектура и все что с ней связано

Сначала показывать
Порог рейтинга
Уровень сложности

Очень простой чат-бот для Telegram для самых маленьких

Время на прочтение3 мин
Количество просмотров36K


Есть 100500 способов и инструментов создать простого serverless чат-бота для телеграм. А наш все-равно будет проще, хотя бы по числу кликов в интерфейсе. Сам бот будет написан на Python, а выполнятся будет на serverless движке Swifty.
Читать дальше →

Как мы построили быстрое и надежное хранилище просмотров объявлений

Время на прочтение11 мин
Количество просмотров8.8K
Одна из малозаметных, но важных функций наших сайтов объявлений — сохранение и отображение количества их просмотров. Наши сайты следят за просмотрами объявлений уже больше 10 лет. Техническая реализация функциональности успела несколько раз измениться за это время, и сейчас представляет из себя (микро)сервис на Go, работающий с Redis в качестве кэша и очереди задач, и с MongoDB в качестве персистентного хранилища. Несколько лет назад он научился работать не только с суммой просмотров объявления, но еще и со статистикой за каждый день. А вот делать все это действительно быстро и надежно он научился совсем недавно.

image

В сумме по проектам, сервис обрабатывает ~300 тысяч запросов на чтение и ~9 тысяч запросов на запись в минуту, 99% которых выполняются до 5мс. Это, конечно, не астрономические показатели и не запуск ракет на Марс — но и не такая тривиальная задача, какой может показаться простое хранение чисел. Оказалось, что делать все это, обеспечивая сохранение данных без потерь и чтение согласованных, актуальных значений требует определенных усилий, о которых мы расскажем ниже.
Читать дальше →

Techday Make IT Real — 17 декабря, Москва

Время на прочтение4 мин
Количество просмотров1.9K
Привет, Хабр!

17 декабря (понедельник) мы устраиваем TECHDAY MAKE IT REAL – специально для тех, кто предпочитает красивым речам об инновациях их внедрение.



Формально techday будет разделен на две части: основную программу и активности на тематических площадках.

Список спикеров, программа и ссылка на регистрацию — под катом. Участие бесплатное.
Читать дальше →

Централизованная шина vs Service Mesh: как митап превратить в баттл

Время на прочтение8 мин
Количество просмотров14K
Когда мы поняли, что проводить очередной митап нам будет скучно, то решили превратить его в нечто более остросюжетное. А именно в дуэль, в поединок между двумя интеграционными подходами — ESB и Distributed — честь которых защищали тяжеловесные эксперты. В этом посте расскажем, как шел бой, и узнаем победителя.


Микросервисная архитектура на современном стеке Java-технологий

Время на прочтение11 мин
Количество просмотров69K
У нас были JDK 11, Kotlin, Spring 5 и Spring Boot 2, Gradle 5 с production-ready Kotlin DSL, JUnit 5, а ещё с полдюжины библиотек стека Spring Cloud для Service discovery, создания API gateway, клиентской балансировки, имплементации паттерна Circuit breaker, написания декларативных HTTP клиентов, распределённой трассировки и всего такого. Не то чтобы всё это было нужно для создания микросервисной архитектуры — only just for fun...
Читать дальше →

Make your ideas come app. Serverless приложение — пошаговая инструкция

Время на прочтение7 мин
Количество просмотров5.8K


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

Микросервисы, API и инновации: вся сила API

Время на прочтение9 мин
Количество просмотров11K
Привет всем!



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

Микросервисы на Go с помощью Go kit: Введение

Время на прочтение12 мин
Количество просмотров61K

В этой статье я опишу использование Go kit, набора инструментов и библиотек для создания микросервисов на Go. Эта статья — введение в Go kit. Первая часть в моем блоге, исходный код примеров доступен здесь.

Читать дальше →

Микросервисы. Паттерны разработки и рефакторинга с примерами на языке Java

Время на прочтение7 мин
Количество просмотров21K
Привет, Хабр!

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



Добро пожаловать под кат!
Читать дальше →

Конспект доклада «Что мы знаем о микросервисах» (HL2018, Avito, Вадим Мадисон)

Время на прочтение4 мин
Количество просмотров11K
Привет, %username%!

Совсем недавно закончилась конференция Highload++ (еще раз спасибо всей команде организаторов и olegbunin лично. Было очень круто!).

Накануне конференции Алексей fisher предложил создать инициативную группу «сталкеров» на конференции. Мы, во время докладов, писали небольшие конспекты, которыми обменивались. Некоторые конспекты получились достаточно детальными и подробными.

Сообщество в соц сетях позитивно оценило такой формат, поэтому я (с разрешения) решил опубликовать конспект первого доклада. Если данный формат будет интересен, то я смогу подготовить еще несколько статей.

image
Читать дальше →

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

Время на прочтение5 мин
Количество просмотров7.4K


Компания Zfort Group приняла решение не продлевать корпоративную подписку на Хабре.
Но есть и хорошие новости:


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


Краткая версия дайджестов также останется и на Хабре, но будет публиковаться не в корпоративном блоге Zfort Group, а с аккаунта alexzfort.


Одна из целей, которую мы ставили перед собой — обновить наш сайт, направленный на локальную аудиторию, сделать его быстрым и легким. Дополнить сайт разделами для отображения актуальных новостей компании, анонсов проводимых мероприятий и публикации дайджестов/статей в короткие сроки с максимальной гибкостью и возможностью для расширения.


А теперь подробнее о деталях создания обновленного сайта zfort.com.ua

Читать дальше →

Как мы сделали систему для мобильных обходов в СИБУР

Время на прочтение6 мин
Количество просмотров21K
Когда речь идет о слаженной работе любого технически сложного производства, значение безопасности переоценить сложно. А если мы говорим о нефтехимической сфере — тем более. Здесь обеспечение безопасности затрагивает целый комплекс мероприятий: пропускной режим, особо охраняемые периметры, голодные собаки, видеонаблюдение, а также удовлетворительное состояние технических узлов. Именно об этих узлах мы сегодня поговорим.




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

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

Реконсиляция — проверка целостности данных в распределенных системах

Время на прочтение4 мин
Количество просмотров39K


При разработке и использовании распределенных систем перед нами возникает задача контроля целостности и идентичности данных между системами — задача реконсиляции.


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

Читать дальше →

Ближайшие события

Радар технологий: перечень языков, инструментов и платформ, которые прошли через руки Lamoda

Время на прочтение12 мин
Количество просмотров24K
В комментариях к нашей прошлой статье было много вопросов о технологиях, которые мы используем. В этой статье я — Игорь Мосягин, R&D разработчик Lamoda — о них расскажу. Под катом вы найдёте исчерпывающий перечень языков, инструментов, платформ и технологий, которые прошли через наши руки. Фронтенд, бэкенд, БД, брокеры сообщений, кеши и мониторинг, разработка и балансировка — подробный рассказ о том, что мы используем сегодня, а от чего отказались.



Я и мои коллеги готовы подискутировать в комментариях или на стенде компании на HighLoad++ 2018.
Читать дальше →

Паттерн: Сага

Время на прочтение2 мин
Количество просмотров177K

Привет, Хабр! Представляю вашему вниманию перевод статьи "Pattern: Saga" автора Chris Richardson.


Ситуация


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


Например: давайте представим, что мы разрабатываем интернет магазин, где у клиента есть кредитный лимит. Приложение должно гарантировать, что новый заказ не превышает кредитный лимит клиента. Так как Заказы и Клиенты — различные базы данных, то приложение не может использовать локальные ACID транзакции.


Проблема


Как обеспечить согласованность данных между сервисами?


Решение


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


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


Читать дальше →

Тонкая настройка OpenStack под высокой нагрузкой

Время на прочтение6 мин
Количество просмотров9.8K

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



Нагрузка на ядра: было — стало


NAT


В некоторых инстансах мы используем dualstack. Это когда виртуальная машина получает сразу два адреса — IPv4 и IPv6. Сначала мы сделали так, что «плавающий» v4-адрес назначался во внутренней сети через NAT, а v6 машина получала через BGP, но с этим есть пара проблем.


NAT — дополнительный узел в сети, где и без него нужно следить за нормальным распределением нагрузки. Появление NAT в сети почти всегда ведёт к сложностям с отладкой — на хосте один IP, в базе другой, и отследить запрос становится сложно. Начинаются массовые поиски, а разгадка всё равно будет внутри OpenStack.


Ещё NAT не позволяет сделать нормальную сегментацию доступов между проектами. У всех проектов свои подсети, плавающие IP постоянно мигрируют, и с NAT управлять этим становится решительно невозможно. В некоторых инсталляциях говорят об использовании NAT 1 в 1 (внутренний адрес не отличается от внешнего), но это всё равно оставляет лишние звенья в цепочке взаимодействия с внешними сервисами. Мы пришли к мнению, что для нас лучший вариант — это BGP сеть.

Читать дальше →

Пробуем Micronaut или Дорогая, я уменьшил фреймворк

Время на прочтение25 мин
Количество просмотров11K

Пробуем Micronaut или Дорогая, я уменьшил фреймворк


Про фреймворк micronaut я мельком вычитал из дайджест рассылок. Заинтересовался, что за зверь такой. Фреймворк ставится в противовес напичканному всем нужным инструментарием Spring.


Micronaut


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

Читать дальше →

До микросервисов нужно дорасти, а не начинать с них

Время на прочтение6 мин
Количество просмотров52K


Предлагаю поговорить о том, когда нужны микросервисы, а когда нет. Спойлер: это зависит от проекта.

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

Просто так, из-за мнения одного человека или компании вы начинаете сомневаться во всём, что делали в течение многих лет, даже если всё работало отлично.
Читать дальше →

«Референтная модель BIAN» для банковской индустрии или как перестать изобретать велосипед

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

Витрувий, архитектор времен Римской империи
Читать дальше →

Бэкапы Stateful в Kubernetes

Время на прочтение10 мин
Количество просмотров6.6K

Итак, как наверняка все знают, совсем недавно 1-2 октября в Москве в “Инфопространстве” прошёл DevOpsConfRussia2018. Для тех кто не вкурсе, DevOpsConf — профессиональная конференция по интеграции процессов разработки, тестирования и эксплуатации.


Наша компания также приняла участие в этой конференции. Мы являлись её партнерами, представляя компанию на нашем стенде, а также провели небольшой митап. К слову это было первое наше участие в подобном роде деятельности. Первая конференция, первый митап, первый опыт.


О чём мы рассказывали? Митап был на тему “Бэкапы в Kubernetes”.


Скорее всего услышав это название, многие скажут: “А зачем бэкапить в Kubernetes? Его не нужно бэкапить, он же Stateless”.


Читать дальше →