Все потоки
Поиск
Написать публикацию
Обновить
42.7

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

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

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

Общие принципы интеграций систем. SA для самых маленьких

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров16K

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

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

Протокол — это набор правил и стандартов, определяющих, как данные передаются и обрабатываются в сети.

Так вот, клиент и сервер взаимодействуют с помощью стандартных протоколов, таких как HTTP, FTP или более низкоуровневых — TCP или UDP. Протокол обычно выбирается под тип услуги, которую оказывают сервера...

Читать далее

Реализация Триггеров TSQL на Python

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

В прошлой статье (https://habr.com/ru/articles/819931/) я рассказал про общую структуру проекта, про работу Kafka с CDC для получения данных из базы. Теперь пришло время поговорить про саму реализацию триггеров на Python. Как говорилось в предыдущей статье, мы будем реализовывать только триггеры Before (Instead Of останутся в базе без изменений). Итак, что же нам необходимо предусмотреть при разработке?

Читать далее

Автоскейлинг микросервисов с HPA в Kubernetes

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

Сегодня микросервисы требуют постоянного стремления к автоматизации и оптимизации. В этой статье рассмотрим такой инструмент в Kubernetes, как Horizontal Pod Autoscaler или сокращенно HPA.

Читать далее

Поднимаем поиск по коду

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров2.9K

Всем привет!

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

Читать далее

Распределенные транзакции для самых маленьких

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров19K

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

Читать далее

Под капотом облаков. Строим облачную консоль. Часть 1. Знакомство

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров1.9K

Привет, Хабр!

Это моя первая публикация из цикла статей про проектирование и разработку облачной консоли, с помощью которого пользователи могут гибко управлять инфраструктурой.

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

Думаю, многие из любознательных читателей этой статьи знакомы или сталкивались с такими понятиями, как "облачный провайдер” и "виртуализация".

А вы когда-нибудь задумывались, как происходит создание виртуальных машин в среде виртуализации, когда вы нажимаете на кнопку в консоли AWS? Или как реализуется заказ кластеров Kubernetes и дальнейший контроль жизненного цикла этого продукта: от биллинга услуги до управления доступом и ведения системы аудита?

Если я смог вам заинтересовать, то добро пожаловать под кат.

Читать далее

Управление временем контейнера с помощью docker-compose и faketime

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров5.1K

Периодически при тестировании микросервисов приходится сталкиваться с необходимостью изменения времени для проверки работы того или иного функционала. Это может быть функционал, который срабатывает по “тику” cron или применение системного времени как одного из условий обработки/хранения/передачи данных тестируемым микросервисом.  

Когда микросервис разворачивается в Docker, время контейнера берется  из системного времени хост машины. Что делать если нам нужно протестировать работу микросервиса в граничных значениях даты-времени?

Читать далее

Создание микросервисов на Java с Dropwizard

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров3K

Dropwizard — это комплексный фреймворк, созданный с целью упростить разработку RESTful веб‑сервисов, объединяя в себе множество проверенных временем библиотек и инструментов.

Читать далее

Asp.Net приложение и многое другое вместе с ним (1 часть)

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров4.7K

Asp.Net + nginx + kafka + docker + docker-compose + postgersql. Или как из обычного шаблона прийти к такому гибриду.

Читать далее

Тестируем в микросервисах: TaaS и пять шлюзов качества

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров8K

Всем привет! Меня зовут Андрей Петухов, я техлид команды Testing Experience AvitoTech, занимаюсь разработкой систем тестирования в Авито. В этой статье рассказываю, как мы организовывали у себя процесс тестирования в условиях микросервисной архитектуры. Ниже вы узнаете о том, как применять Testing as a Service (TaaS), зачем нужны шлюзы качества и как все это помогло тестировщикам сосредоточиться.   

Читать далее

Микросервисы на Go: Как заставить систему работать на тебя

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров12K

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

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

Читать далее

Микросервисы для тех, кто прикидывается разработчиком. Часть 1

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров29K

«Скажите, какие основные преимущества микросервисов и почему?». Вероятно, это самых популярный вопрос последних 6–10 лет на любом собеседовании для бэкенд разработчика. Каким-то чудом он даже обогнал: «Назовите три принципа ООП» и «Чем отличается класс от объекта».

Читать далее

Поднимаем динамические окружения (фича-стенды) для stateless- и stateful-сервисов

Уровень сложностиПростой
Время на прочтение14 мин
Количество просмотров6.5K

На связи Игорь Латкин, управляющий партнер и системный архитектор в KTS

Мы на своём опыте разобрались в развертывании stateless- и stateful-сервисов, и теперь хотим поделиться с вами. Мы в KTS не раз создавали подобные инфраструктуры, перепробовали разные решения и выясняли, как построить эффективные процессы.

Сегодня мы поговорим о динамических окружениях (фича-стендах) для stateless- и stateful-сервисов, обсудим особенности и проблемы, которые могут возникнуть и возникали у нас.

Читать далее

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

Kubernetes становится вендоронезависимым после изменения 1,5 млн. строк кода

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

В июле 2024 вышла версия Kubernetes 1.31, в которой были окончательно устранены встроенные интеграции облачных провайдеров.

Начиная с версии Kubernetes v1.7, проект Kubernetes преследовал амбициозную цель удаления встроенных интеграций облачных провайдеров. Хотя эти интеграции сыграли важную роль в раннем развитии и росте Kubernetes, их удаление было обусловлено двумя ключевыми факторами: растущей сложностью поддержания собственной поддержки для каждого облачного провайдера в миллионах строк кода Go и желанием сделать Kubernetes по-настоящему независимой от поставщика платформой.

После многих релизов, все интеграции облачных провайдеров были успешно перенесены из основного репозитория Kubernetes во внешние плагины. В дополнение к достижению первоначальных целей, удалось значительно оптимизировать Kubernetes, удалив около 1,5 миллионов строк кода и уменьшив двоичные размеры основных компонентов примерно на 40%.

Эта миграция была сложной и длительной из-за многочисленных затронутых компонентов и критических путей кода, которые полагались на встроенные интеграции для пяти первоначальных поставщиков облачных услуг: Google Cloud, AWS, Azure, OpenStack и vSphere. Для успешного завершения этой миграции пришлось построить четыре новые подсистемы с нуля:

Читать далее

Хореография, оркестрация и Event Driven Orchestration

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров15K

Рассмотрим очередной популярный подход к проектированию систем для управления и координации выполнения бизнес-задач или процессов на основе событий. В общем случае это микс Хореографии и Оркестрации. Рассмотрим их подробнее.

Читать далее

Как построить эффективную стратегию мониторинга с высокой наблюдаемостью

Уровень сложностиПростой
Время на прочтение14 мин
Количество просмотров11K


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

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

Как обеспечить масштабируемость проекта со старта и подстроить CI/CD под свои цели? Основано на реальных событиях

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров2.9K

Привет, Хабр. На связи Михаил, я бэкенд-разработчик в Clevertec. Моя работа связана с проектом, который начинался с создания личного кабинета клиента и развился в экосистему, растущую вместе с бизнесом. На его примере я расскажу, как можно изменять подход к CI/CD, чтобы не тормозить рост проекта и оптимизировать работу команды.

Читать далее

Проблемы терминологии — loose coupling and high cohesion

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров2.1K

Есть время собирать камни, и есть время разбрасывать. Рано или поздно, специализируясь в какой то области, например в корпоративной архитектуре, человек начинает не только и не столько стремиться к получению знаний, необходимых для ориентирования в своей области, но и делиться накопленным обобщениями. Или опытом (сыном ошибок трудных). Не миновал этот этап и меня.

Начну с «исправления имен» как базы для совершенствования (меткое наблюдение конфуцианства) на примере того, как у нас переводится базовый принцип построения микросервисной архитектуры: «low coupling and high cohession». И как понимание терминологии помогает отличить профанов, изображающих с помощью птичьего языка некое знание, от действительно понимающих суть людей.

Прежде чем переходить к качественному переводу нужно понять контекст и суть термина в исходном языке. Если кратко low coupling это про то, что изменения 1 микросервисе по возможности не должны приводить к масштабным изменениям смежных и далее по цепочке микросервисов. А high cohesion говорит нам о том, что микросервис должен целостно закрывать явно выделенный кусок бизнес контекста. т. е. чтобы изменение бизнес контекста, требующее ИТ доработок в идеале (недостижимом как горизонт), приводило к доработке одного микросервиса. т. е. микросервис не настолько мал, чтобы бизнес задача была сильно больше его, и не настолько зависим от смежников, чтобы любая задача требовала перелопачивания всего ИТ ландшафта.

Собственно в этом суть микросервисной архитектуры, когда в микросервис упаковывается самодостаточный функционал, который можно относительно независимо развивать отдельной командой, с отдельным артефактом поставки и т. д. Где то здесь должны звучать буквы DDD. Но не будем — DDD слишком обширная тема, для небольшой заметки.

Читать далее

Провести интеграционное тестирование микросервисов и выжить (несмотря на legacy)

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров8.5K

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

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

Меня зовут Катя Назмеева, сейчас я тестирую бэк в Lamoda Tech. В статье я предложу стратегии для успешного проведения интеграционного тестирования микросервисов и расскажу про инструменты, которые могут облегчить этот процесс. Обсудим, как организовать все таким образом, чтобы интеграционное тестирование не создавало задержек в новых релизах — и не заставляло QA страдать.

Читать далее

Внедрение поисковой системы в крупное CRM-решение: наш опыт

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров735

Один из наших длительных проектов — это крупное многопользовательское SaaS-решение (CRM-система) основанное на микросервисной архитектуре и развернутое в облаке Azure. Изначально это был MVP, где все части (сервисы, базы данных и т. д.) располагались на одной виртуальной машине. Со временем проект вырос в облачное распределенное решение с множеством веб- и мобильных клиентов. 

В этой статье мы расскажем, как решили одну из проблем, с которой столкнулись в процессе разработки.

Читать далее