Обновить
77.79

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

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

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

Переход на микросервисную архитектуру

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


Вместо введения


Прошло уже несколько месяцев с момента запуска в продуктив первых микросервисов. И сейчас, на наш взгляд, самое время рассказать о полученном опыте.

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

Основное внимание в статье будет уделено тем глобальным проблемам, с которыми сталкивалась наша команда на протяжении всего проекта.

Эта статья будет первой из многих. И ее цель в первую очередь – ввести в нашу проблематику в контексте перехода на микросервисную архитектуру и плавно подвести к следующим темам, подробно раскрывающим отдельные аспекты перехода.
Читать дальше →

Вначале был монолит: как мы меняем нашу архитектуру, не мешая бизнесу

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


Всем привет! Меня зовут Игорь Наразин, я тим-лид команды в направлении логистики Delivery Club. Хочу рассказать, как мы строим и трансформируем нашу архитектуру и как это влияет на наши процессы в разработке.

Сейчас Delivery Club (как и весь рынок фудтеха) растёт очень быстро, что порождает огромное количество вызовов для технической команды, которые можно обобщить двумя самыми важными критериями:

  • Нужно обеспечивать высокую стабильность и доступность всех частей платформы.
  • Одновременно с этим держать высокий темп разработки новых фич.

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

Но нам удаётся (пока) и то, и другое. О том, как мы это делаем, и пойдет речь далее.
Читать дальше →

Что помогло нам быстро перестроиться на онлайн-торговлю в новых условиях

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

Привет!

Меня зовут Михаил, я заместитель директора по ИТ в компании «Спортмастер». Я хочу поделиться историей о том, как мы справились с трудностями, возникшими во время пандемии.

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

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

Читать далее

Подсказки по микросервисной автоматизации процессов

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

Camunda Microservice Workflow Automation 1


Возможно, ваша компания захочет перейти на архитектуру микросервисов и автоматизировать рабочие процессы (в этом посте блога я не вдаюсь в мотивацию, но вы, возможно, захотите прочитать о 5 Workflow Automation Use Cases You Might Not Have Considered или BizDevOps — the true value proposition of workflow engines). Это ставит вас в ряд со многими нашими клиентами. Как правило, у вас возникнут вопросы:


  • Область применения и границы — какой рабочий процесс вы хотите автоматизировать и как он ложится на несколько микроуслуг, или разраниченный контекст в вашем ландшафте. Я ограничен объемом этого поста, поэтому я не затрону эту тему сегодня, но вы, возможно, захотите прочитать Avoiding the «BPM monolith» when using bounded contexts или Real-Life BPMN.
  • Стек и инструменты — какой движок процессов я могу использовать?
  • Архитектура — я запускаю движок процесса централизованно или децентрализованно?
  • Управление — кто владельцы модели рабочего процесса и как ее развертывать?
  • Операции — как мне сохранить контроль?
Читать дальше →

Путь к Федеративному GraphQL

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

Программисты любят хорошие истории, поэтому надеюсь что пятилетний путь к композитному API с помощью GraphQL в боевой среде (на пике выдающей 110 запросов в секунду при 100мс задержке) будет интересен.

[Если вы спешите, проскрольте ниже к урокам и гляньте на открытый код graphql-schema-registry]

Читать далее

Deutsche Telecom: Разделение монолита c Camunda

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

Deutsche Telecom: Разделение монолита


Узнайте, как Deutsche Telecom перешла от каскадной разработки монолитного приложения к гибкой архитектуре на основе микросервисов.

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

Как мы распилили монолит. Часть 1

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

Привет, меня зовут Ваня. Я решаю архитектурные задачи на фронтенде в Тинькофф Бизнесе и сейчас расскажу вам про одну из них.

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

Приступить к распилу

Micro-frontends. Асинхронный подход к мультикомандной разработке

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

Вы когда нибудь задумывались о том, как в условиях мультикомандной разработки современного продукта избежать задержек из-за синхронизации команд? Далее я поделюсь опытом такой разработки на примере нашей команды Циан.Финансы. Деталями вертикального подхода к разработке и почему мы работаем именно так.

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

Как перестать беспокоиться и начать жить без монолита

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


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

Сегодня как раз такой день. И пусть вы сейчас не у костра, но зато у нас есть история для вас. История о том, как мы начали работать с хранилищем на Tarantool.

Когда-то давным-давно в нашей компании была пара «монолитов» и один на всех «потолок», к которому эти монолиты медленно, но верно приближались, ограничивая полет нашей компании, наше развитие. И было однозначное понимание: однажды мы жестко упремся в этот потолок.
Читать дальше →

Что делать если никто не хочет документировать? Организация документирования микросервисов по минимуму — часть 2

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


Эта статья является продолжением. Первую часть смотри тут


Подход к реализации

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

Что делать, если никто не хочет документировать? Организация документирования микросервисов по минимуму

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


Представьте что у вас команда специалистов, которая по принципу code-first делает систему с множеством бизнес-историй на базе микросервисов. Все люди опытные, всем есть что делать кроме того как писать документации или спецификации на разработанный API. И все изначально знают, что если захотел использовать какой сервис, то надо заглянуть в код и потом спросить в общем чате если что непонятно. Знакомая ситуация не так ли? -))) И в целом все нормально, если бы со временем не росла команда, не росло количество сервисов и функций, не появлялись баги от бизнеса и тестеров, не требовалось предоставлять API для интеграции смежным командам...


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

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

Blue-Green Deployment на минималках

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

В этой статье мы с помощью bash, ssh, docker и nginx организуем бесшовную выкладку веб-приложения. Blue-green deployment — это техника, позволяющая мгновенно обновлять приложение, не отклоняя ни одного запроса. Она является одной из стратегий zero downtime deployment и лучше всего подходит для приложений, у которых один инстанс, но есть возможность загрузить рядом второй, готовый к работе инстанс.


Допустим, у Вас есть веб-приложение, с которым активно работает множество клиентов, и ему совершенно никак нельзя на пару секунд прилечь. А Вам очень нужно выкатить обновление библиотеки, фикс бага или новую крутую фичу. В обычной ситуации, потребуется остановить приложение, заменить его и снова запустить. В случае докера, можно сначала заменить, потом перезапустить, но всё равно будет период, в котором запросы к приложению не обработаются, ведь обычно приложению требуется некоторое время на первоначальную загрузку. А если оно запустится, но окажется неработоспособным? Вот такая задача, давайте её решать минимальными средствами и максимально элегантно.


Disclaimer: Большая часть статьи представлена в экспериментальном формате — в виде записи консольной сессии. Надеюсь, это будет не очень сложно воспринимать, и этот код сам себя документирует в достаточном объёме. Для атмосферности, представьте, что это не просто кодсниппеты, а бумага из "железного" телетайпа.


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

Как мы в 2020 году изобретали процесс разработки, отладки и доставки в прод изменений базы данных

Время на прочтение10 мин
Количество просмотров15K
На дворе 2020 год и фоновым шумом вы уже привыкли слышать: «Кубернетес — это ответ!», «Микросервисы!», «Сервис меш!», «Сесурити полиси!». Все вокруг бегут в светлое будущее.

Подходы в том, что касается баз данных, в нашей компании более консервативны, чем в прикладных приложениях. Крутится база данных у нас не в кубернетесе, а на железе или в виртуалке. Для изменений базы данных процессинга платежных сервисов у нас есть устоявшийся процесс, который включает в себя множество автоматических проверок, большое ревью и релиз с участием DBA. Количество проверок и привлекаемых людей в этом случае негативно влияет на time-to-market. С другой стороны, он отлажен и позволяет надежно вносить изменения в продакшен, минимизируя вероятность что-то сломать. А если что-то сломалось, то нужные люди уже включены в процесс починки. Этот подход делает работу основного сервиса компании стабильнее.

Большинство новых реляционных баз данных для микросервисов мы заводим на PostgreSQL. Отлаженный процесс для Oracle хоть и надёжный, но несет с собой избыточную сложность для маленьких БД. Тащить тяжёлые процессы из прошлого в светлое будущее никто не хочет. Проработкой процесса для светлого будущего заранее никто не занялся. В итоге получили отсутствие стандарта и разножопицу.



Если хотите узнать, к каким проблемам это привело и как мы их порешали, — добро пожаловать под кат.
Читать дальше →

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

Микрофронтенды. Учимся на ошибках

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



Микрофронтенды на iframe


В одной компании взвешенным и обдуманным решением CTO было принято, что микрофронтендам наравне с микросервисами быть, причем сервировать их надо на iframe'ах.
Читать дальше →

Предметно-ориентированная микросервисная архитектура от Uber

Время на прочтение16 мин
Количество просмотров28K
Прим. перев.: недавняя статья от Uber Engineering рассказывает о путешествии этой крупной компании к своей улучшенной версии микросервисной архитектуры. Несмотря на то, что некоторые интернет-пользователи не без причин увидели в новом подходе «всего лишь применение принципов DDD к микросервисам», статья снискала огромный интерес у сообщества разработчиков и других инженеров. А посему — рады представить её русскоязычную версию, подготовленную специально для хабра.



Введение


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

В настоящее время в Uber насчитывается около 2200 критических микросервисов, и мы испытали все достоинства и недостатки этого подхода на себе. В течение последних двух лет Uber пыталась сократить запутанность микросервисного ландшафта, попутно сохранив преимущества данной архитектуры. С помощью этой публикации мы планируем представить наш обобщенный подход к микросервисным архитектурам, получивший название «Domain-Oriented Microservice Architecture» (DOMA).
Читать дальше →

Как мы сделали свою AR-платформу для дистанционного обслуживания и ремонта оборудования

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

Меня зовут Антон Федосеев, я – разработчик AR-платформы для видеоконференцсвязи, которой пользуются наши производства. Мы запустили сервис, с помощью которого наши сотрудники могут общаться по видео с коллегами из других регионов, получать онлайн-консультации от экспертов – производителей оборудования (тоже из других регионов), а компания – экономить от 500 тысяч рублей до нескольких миллионов за 1 видеозвонок.



Откуда взялась эта экономия, в чём особенность использования такого сервиса на промышленных объектах, почему мы не обошлись существующими на рынке аналогами и как делали свой продукт – расскажу под катом.
Читать дальше →

Go-swagger как основа взаимодействия микросервисов

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


Здравствуй, NickName! Если ты программист и работаешь с микросервисной архитектурой, то представь, что тебе нужно настроить взаимодействие твоего сервиса А с каким-то новым и ещё неизвестным тебе сервисом Б. Что ты будешь делать в первую очередь?

Если задать такой вопрос 100 программистам из разных компаний, скорее всего, мы получим 100 разных ответов. Кто-то описывает контракты в swagger, кто-то в gRPC просто делает клиенты к своим сервисам без описания контракта. А кто-то и вовсе хранит JSON в гуглодоке :D. В большинстве компаний складывается свой подход к межсервисному взаимодействию на основании каких-либо исторических факторов, компетенций, стека технологий и прочего. Я хочу рассказать, как сервисы в Delivery Club общаются друг с другом и почему мы сделали именно такой выбор. И главное — как мы обеспечиваем актуальность документации с течением времени. Будет много кода!
Читать дальше →

Как мы разрабатывали кроссплатформенную BPMS

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

В НОРБИТ мы занимаемся SRM-решениями. Сегодня расскажем про особенный для нашей команды проект — разработку BPMS-платформы NBT. Мы не просто создали бизнес-решение для заказчика, а разработали собственный продукт с нуля, — всё это подразумевает совершенно другой подход к проектированию, разработке, управлению командой, организации процессов доставки изменений и планирования выпусков. 

В общем, в статье не только красивая КДПВ. Ещё вы узнаете:

  • про наш опыт проектирования микросервисной архитектуры (выбор инструментов, подходов к использованию этих инструментов, а именно абстрагирование их использования);
  • про разработку конструктора бизнес-объектов и внедрение в решение конструктора бизнес-процессов для обеспечения подхода Low-code development;
  • про то, как мы организовали работу над проектом и избавили разработчиков от некоторых рутинных или отвлекающих их аспектов при работе над системой (абстрактные межсервисные взаимодействия, автогенерация кода, атмосфера в команде);
  • и про то, какой мем помогал нам в сложные периоды.

Источник
Читать дальше →

Увидеть истинное лицо продукта и выжить. Данные о пользовательских переходах как повод написать пару новых сервисов

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


В интернете сотни статей о том, какую пользу приносит анализ поведения клиентов. Чаще всего это касается сферы ритейла. От анализа продуктовых корзин, ABC и XYZ анализа до retention-маркетинга и персональных предложений. Различные методики используются уже десятилетиями, алгоритмы продуманы, код написан и отлажен — бери и используй. В нашем случае возникла одна фундаментальная проблема — мы в ISPsystem занимаемся разработкой ПО, а не ритейлом.
Меня зовут Денис и на данный момент я отвечаю за бэкенд аналитических систем в ISPsystem. И это история о том, как мы с моим коллегой Данилом — ответственным за визуализацию данных — попытались посмотреть на наши программные продукты сквозь призму этих знаний. Начнем, как обычно, с истории.

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

Сценарии использования service mesh

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


Прим. перев.: автор это статьи (Luc Perkins) — developer advocate в организации CNCF, являющейся домом для таких Open Source-проектов, как Linkerd, SMI (Service Mesh Interface) и Kuma (кстати, вы тоже задумывались, почему в этом списке нет Istio?..). В очередной раз пытаясь принести в DevOps-сообщество лучшее понимание в модный хайп под названием «service mesh», он приводит 16 характерных возможностей, которые предоставляют подобные решения.

Сегодня service mesh ― одна из самых горячих тем в области программной инженерии (и по праву!). Я считаю эту технологию невероятно перспективной и мечтаю стать свидетелем ее широкого распространения (конечно, когда это имеет смысл). Тем не менее, она до сих пор окружена ореолом таинственности для большинства людей. При этом даже те, кто хорошо знаком с ней, нередко затрудняются сформулировать ее плюсы и что именно она собой представляет (включая и вашего покорного слугу). В статье я попытаюсь исправить ситуацию, перечислив различные сценарии использования «сервисных сеток»*.
Читать дальше →