Рубрика «микросервисы»

На прошлой неделе компания CoreOS порадовала очередным Open Source-проектом — zetcd. На самом деле о нём было известно ещё с прошлого года, но теперь состоялся первый релиз, который перевёл продукт в статус бета-тестирования — заявил о готовности продукта к серьёзным испытаниям перед выпуском в мир production. Авторы позиционируют zetcd как готовую замену для ZooKeeper внутри таких распределённых/кластерных решений, как Mesos, Apache Kafka и Apache Drill. Их настрою не препятствует даже тот факт, что etcd предлагает «плоское» хранение ключей-значений против иерархического подхода своего конкурента. Как они к этому пришли?
zetcd от CoreOS: Заменяя ZooKeeper на… хранилище etcd - 1
Читать полностью »

Месяц назад компания Docker на конференции DockerCon 2017 официально представила свой новый Open Source-проект — Moby. Если это просто ещё один дополнительный проект, нужный кому-то, кто работает с Docker… то почему, как заметили внимательные пользователи, основной репозиторий компании в GitHub — docker/docker — стал пересылать на moby/moby?

В чём суть проекта Moby и почему главным репозиторием Docker вдруг стал moby-moby? - 1

Чтобы комплексно разобраться в данном вопросе, начнём с краткого экскурса в новейшую историю развития Docker…Читать полностью »

В минувший понедельник стало известно о доступности видео с конференции DockerCon 2017, прошедшей во второй половине апреля. В одном из прозвучавших там докладов представитель компании Alibaba Cloud (или Aliyun) — подразделения Alibaba Group, специализирующегося на облачных вычислениях, IaaS, PaaS, SaaS и Big Data — рассказал о статистике и историях успеха Docker в Китае.

В этой статье, продолжающей нашу недавнюю публикацию о глобальной статистике по внедрению Docker, собраны наиболее интересные факты из доклада Alibaba Group, основанные на опросе 1000+ пользователей её публичного облака в апреле этого года и известных случаях применения Docker. Но начнём с предыстории «появления» Docker в мире китайских информационных технологий…

Docker в Китае: статистика использования и истории успеха - 1Читать полностью »

15 апреля прошел конкурс «Мисс Россия» 2017. После полной переделки сайта скорость загрузки страниц стала укладываться одну секунду даже в моменты пиковых нагрузок. Наши партнёры из Byndyusoft в лице Александра Бындю (@alexanderbyndyu), архитектора всей системы, рассказали, как им это удалось, поделились деталями переноса платформы в облако, а также рассказали, почему им пришлось поменять всю внутреннюю инфраструктуру проекта.

Как мы «Мисс Россию» на руках переносили - 1

Справка о компании: Byndyusoft — это компания, которая реализует проекты на платформе .NET для различных предметных областей по всему миру.
Читать полностью »

Проблема stateful-приложений в Kubernetes

Конфигурация, запуск и дальнейшее масштабирование приложений и служб осуществляются просто, если речь идёт о случаях, классифицируемых как stateless, т.е. без сохранения данных. Такие сервисы удобно запускать в Kubernetes, пользуясь его стандартными API, потому что всё происходит «из коробки»: по стандартным конфигурациям, без привлечения какой-либо специфики и магии.

Проще говоря, для запуска в кластере из контейнеров ещё пяти копий бэкенда на PHP/Ruby/Python требуется лишь 5 раз поднять новый сервер и скопировать исходники. Поскольку и исходники, и init-скрипт лежат в образе, масштабирование stateless-приложения становится совсем элементарным. Как хорошо известно любителям контейнеров и микросервисной архитектуры, сложности начинаются для приложений категории stateful, т.е. с сохранением данных, таких как базы данных и кэши (MySQL, PostgreSQL, Redis, ElasticSearch, Cassandra…). Это касается как софта, самостоятельно реализующего кворумный кластер (например, Percona XtraDB и Cassandra), так и софта, требующего отдельных управляющих утилит (такого, как Redis, MySQL, PostgreSQL…).

Сложности возникают по той причине, что исходников и запуска сервиса становится не достаточно — нужно выполнить еще некоторые действия. Как минимум — скопировать данные и/или присоединиться к кластеру. А если точнее, то эти сервисы требуют понимания, как их правильно масштабировать, обновлять и переконфигурировать без потери данных и их временной недоступности. Учёт этих потребностей и называется «эксплуатационными знаниями» (operational knowledge).
Читать полностью »

Я стал замечать, что в последнее время в программировании тоже есть своя мода, свои законодатели моды, модные течения и так далее. Вот сейчас модно рассказывать про микросервисы и контейнеры, как возможность простой реализации микросервисов. Хотя, сразу оговорюсь, микросервисы <> контейнеры. Контейнеры имеют гораздо больше сценариев применения, чем реализация микросервисных архитектур. Итак, предлагаю поговорить под катом на тему: «Почему микросервисы и почему сейчас?»

Микросервисы: Azure Functions — скажи серверу нет - 1
Читать полностью »

Как сделать высоконагруженный сервис, не зная количество нагрузки - 1

На конференции HighLoad++ 2016 Олег Облеухов рассказал о не требующей при росте нагрузки вмешательства администратора архитектуре, которую он спланировал и внедрил в компании InnoGames.

Всем привет. Буквально пару слов обо мне. Меня зовут Олег, до этого я работал в компании «Яндекс», жил в Санкт-Петербурге, замечательном городе. Сейчас я переехал в Германию и работаю в InnoGames. Компания занимается разработкой онлайн-игр. На счету 150 миллионов пользователей — достаточно большая компания, ну, поменьше, чем «Яндекс», конечно. И сегодня мы поговорим с вами о том, как сделать высоконагруженный сервис без данных о нагрузке, не зная её количество.

Прежде чем мы начнем. Теперь вы все знаете обо мне, я хотел бы узнать немножко об аудитории. Поднимите руку те, кто использует Docker на продакшне? Ну треть зала примерно, хорошо. А теперь из тех, кто поднял руку, поднимите те, кто доволен использованием Docker на продакшне? Значительно меньше. А теперь ещё более сложный вопрос. Те, кто доволен использованием Docker на продакшне, поднимите руку те, кто сисадмин или инженер, или еще кто-то не-разработчик. Я вижу троих. Окей.

На самом деле мы не будем сегодня разговаривать о Docker. Но мы будем разговаривать о CRM. Я вам расскажу, что это такое, зачем нам нужна эта система.
Читать полностью »

Микросервисы: опыт использования в нагруженном проекте - 1

На конференции HighLoad++ 2016 руководитель разработки «М-Тех» Вадим Мадисон рассказал о росте от системы, для которой сотня микросервисов казалась огромным числом, до нагруженного проекта, где пара тысяч микросервисов — обыденность.

Тема моего доклада — то, как мы запускали в продакшн микросервисы на достаточно нагруженном проекте. Это некий агрегированный опыт, но поскольку я работаю в компании «M-Tех», то давайте я пару слов расскажу о том, кто мы.

Если коротко, то мы занимаемся видеоотдачей — отдаём видео в реальном времени. Мы являемся видеоплатформой для «НТВ-Плюс» и «Матч ТВ». Это 300 тысяч одновременных пользователей, которые прибегают за 5 минут. Это 300 терабайт контента, который мы отдаем в час. Это такая интересная задача. Как это всё обслужить?

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

События, шины и интеграция данных в непростом мире микросервисов - 1

Валентин Гогичашвили объясняет микросервисы. Перед вами расшифровка доклада с Highload++.

Добрый день, я Валентин Гогичашвили. Все слайды я сделал латиницей, надеюсь не будет проблем. Я из Zalando.

Что такое Zalando? Наверное, вы знаете Lamoda, Zalando был папой Lamoda своё время. Чтобы понять, что такое Zalando, нужно представить Lamoda и увеличить в несколько раз.

Zalando – это магазин шмоток, мы начали продавать обувь, очень хорошую между прочим. Начали расширяться всё больше и больше. Снаружи сайт выглядит очень просто. За 6 лет что я работаю в Zalando и за 8 лет существования — эта компания была одной из самых быстрорастущих в Европе в какое-то время. Шесть лет назад, когда я пришел в Zalando, она росла где-то 100%.
Читать полностью »

Разработка транзакционных микросервисов с помощью Агрегатов, Event Sourcing и CQRS (Часть 2) - 1

Это завершение переводной статьи о разработке транзакционных приложений с использованием микросервисной архитектуры. Начало.

В первой части статьи мы говорили, что основным препятствием при использовании микросервисной архитектуры является то, что модели предметной области (domain model), транзакции и запросы удивительно устойчивы к разделению по функциональному признаку. Было показано, что решение заключается в реализации бизнес-логики каждого сервиса в виде набора DDD-агрегатов. Каждая транзакция обновляет или создает один единственный агрегат. События используются для поддержания целостности данных между агрегатами (и сервисами).

Во второй части статьи мы увидим, что ключевой задачей при использовании событий является атомарное изменение состояния агрегата и одновременная публикация события. Посмотрим, как решить эту проблему с помощью Event Sourcing — используя событийно-ориентированный подход к проектированию бизнес-логики и системы сохранения состояния. После этого опишем, как микросервисная архитектура затрудняет реализацию запросов к базе данных, и как подход, называемый Command Query Responsibility Segregation (CQRS), помогает реализовывать масштабируемые и производительные запросы.
Читать полностью »