Как стать автором
Обновить

Webpack Module Federation — микрофронтенд на современных технологиях

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

Привет, Хабр! В Netcracker мы уже давно используем микрофронтендную архитектуру, и с 2017 года начали разрабатывать собственный платформенный инструмент построения микрофронтендов.

Недавно на митапе мы показывали, как делать сложные приложения, разрабатываемые разными командами в разных релизных циклах и даже технологиях. В режиме live coding соединили Angular, React и Vue в одном SPA. Было много вопросов про Webpack Module federation. Поскольку мы уже переходим на этот фреймворк, здесь мы поделимся наработками, как сделать Angular host application + React/Angular/Vue microfrontends с возможностью независимого версионирования зависимостей.

Давайте рассмотрим на рабочем прототипе!
Всего голосов 8: ↑8 и ↓0+8
Комментарии6

Envoy как универсальный сетевой примитив

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

В октябре прошлого года мои коллеги представили на EnvoyCon доклад "Построение гибкой подсистемы компрессии в Envoy". Вот он ниже



Судя по статистике сегодняшней статьи от SergeAx, тема компрессии сетевого трафика оказалась интересной многим. В связи с чем я немедленно возжелал вселенской славы и решил кратко пересказать содержание доклада. Тем более, что он не только о компрессии, но и том, как можно упростить сопровождение сетевой подсистемы как backend'а, так и мобильного frontend'а.

Всего голосов 14: ↑10 и ↓4+6
Комментарии4

Отложенные задачи в рамках микро-сервисной архитектуры

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

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

Для решения такой задачи было создано очередное решение под названием Trigger Hook. Принципиальная схема работы показана на рисунке 1. На схеме показано, что происходит с заданиями в течения всего их жизненного цикла. Смена цвета означает смену статуса задачи.

Читать далее
Всего голосов 27: ↑25 и ↓2+23
Комментарии17

GraphQL на Rust

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

В этой статье я покажу как создать GraphQL сервер, используя Rust и его экосистему; будут приведены примеры реализации наиболее часто встречающихся задач при разработке GraphQL API. В итоге API трёх микросервисов будут объединены в единую точку доступа с помощью Apollo Server и Apollo Federation. Это позволит клиентам запрашивать данные одновременно из нескольких источников без необходимости знать какие данные приходят из какого сервиса.

Читать далее
Всего голосов 27: ↑26 и ↓1+25
Комментарии41

С чего начать писать микросервис на C++

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

Около 3х лет занимаюсь разработкой микросервисов, однако изначального понимания подходящего стека технологий у меня не было. Испробовал множество различных подходов(одними из которых были OpenDDS и apache-thrift), но в конце концов остановился на RestApi.

RestApi общается по средствам HTTP-запросов, которые в свою очередь представляют структуру данных из заголовков и тела запроса передаваемые через сокет. Первым на что я обратил внимание это boost/asio который предоставляет tcp-сокеты, но тут возникают сложности с объемами разработки:

Читать далее
Всего голосов 15: ↑9 и ↓6+3
Комментарии20

Липкие сессии для самых маленьких [Часть 1]

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

Липкие сессии (Sticky-session) — это особый вид балансировки нагрузки, при которой трафик поступает на один определенный сервер группы. Как правило, перед группой серверов находится балансировщик нагрузки (Nginx, HAProxy), который и устанавливает правила распределения трафика на доступные сервера.

В первой части цикла мы посмотрим как создавать липкие сессии с помощью Nginx. Во второй же части разберем создание подобной балансировки средствами Kubernetes.

Вляпаться
Всего голосов 29: ↑29 и ↓0+29
Комментарии10

Разочарованы в IT? RPA как основа IT архитектуры, которая победит Микросервисы

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

Уже прошло несколько десятилетий под эгидой развития IT технологий, но мы по-прежнему повсеместно сталкиваемся с косяками в IT системах, например: В продуктовом магазине на кассе не смогли пробить товар; В отделении почты не удалось отправить посылку; В интернет-магазине не работает форма онлайн-оплаты; В пиццерии не удается оформить онлайн-заказ. И так далее..

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

Очень интересно - читать далее
Всего голосов 24: ↑1 и ↓23-22
Комментарии39

О мифологии миграции монолита в облака

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

Около десяти лет назад микросервисы получили первое признание. С тех пор масса фирм воспользовалась услугами облачных провайдеров и перенесла свои сервисы к ним. А некоторые из них даже успели разочароваться в облачных технологиях и вернулись к традиционной схеме монолита (или почти к ней). 

Эта статья - не попытка уговорить вас на перенос вашего монолита в облако или отговорить от этого. Это попытка описать мифы по поводу такого переноса. 

Читать далее
Всего голосов 9: ↑7 и ↓2+5
Комментарии0

Как готовить микрофронтенды в Webpack 5

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

Всем привет, меня зовут Иван и я фронтенд-разработчик из компании DexSys.

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

Начнём с того, что ребята с Хабра (@artemu78, @dfuse, @Katsuba) уже писали про Module Federation, так что, моя статья - это не что-то уникальное и прорывное. Скорее, это шишки, костыли и велосипеды, которые полезно знать тем, кто собирается использовать данную технологию.

Читать далее
Всего голосов 10: ↑8 и ↓2+6
Комментарии12

Антипаттерны деплоя в Kubernetes. Часть 1

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

В предыдущей статье 10 Docker anti-patterns мы рассказали о популярных ошибках при создании образов контейнеров. Однако создание образов для вашего приложения - это только половина дела. Вам нужен способ развёртывания этих контейнеров в производственной среде. Использование кластеров Kubernetes для решения этой задачи уже стало стандартом.

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

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

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

Читать далее
Всего голосов 16: ↑15 и ↓1+14
Комментарии1

Введение в gRPC на Rust

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

В статье будет показано как создать gRPC сервер и клиент на Rust. Для большей наглядности клиент будет также Telegram ботом. В итоге будет получена следующая архитектура:



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

Читать дальше →
Всего голосов 15: ↑15 и ↓0+15
Комментарии0

Отказоустойчивое взаимодействие с внешними сервисами

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

В этой статье я расскажу про то, как можно организовать отказоустойчивое взаимодействие с внешними сервисами. Тема актуальная, очень часто из-за недоступности какого-то одного компонента может пострадать вся система.

О чем статья:

•  Синхронное и асинхронное взаимодействие; 

•  Зависимость доступности от использования синхронного взаимодействия;

•  Способы избавления от синхронного взаимодействия;

•  Избавление от синхронного взаимодействия с внешними сервисами в PHP.

Читать далее
Всего голосов 15: ↑15 и ↓0+15
Комментарии2

Как делать большие изменения на бэкенде: доклады от спикеров из Wrike, Яндекс.Денег и Nexign

Время на прочтение1 мин
Количество просмотров3.9K
image

13 сентября в офисе Wrike прошел бэкенд-митап, посвященный глобальным изменениям в продукте. Поговорили о глобальном рефакторинге, смене методологии разработки на лету, унификации в проектах и микросервисах.

Для тех, кто не смог прийти, мы публикуем видеозаписи докладов.
Смотреть
Всего голосов 10: ↑9 и ↓1+8
Комментарии2

Consumer-Driven Contracts как способ развития сервиса

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

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


От переводчика


Что это


Это перевод статьи, описывающей шаблон Consumer-Driven Contracts (CDC).
Оригинал опубликован на сайте Мартина Фаулера за авторством Яна Робинсона.


Зачем это


В микросервисной архитектуре зависимости между сервисами являются источником проблем. Шаблон CDC помогает решать эти проблемы способом, устраивающим и разработчиков сервиса, и его потребителей. Фаулер ссылается на Consumer-Driven Contracts в своей ключевой статье по микросервисной архитектуре: Microservices.


Для кого это


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

Читать дальше →
Всего голосов 9: ↑8 и ↓1+7
Комментарии2

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

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

Витрувий, архитектор времен Римской империи
Читать дальше →
Всего голосов 8: ↑7 и ↓1+6
Комментарии6

Самодокументированные микросервисы (ArangoDB + swagger)

Время на прочтение5 мин
Количество просмотров5.6K
Поддержание документации к микросервисам в актуальном состоянии по прежнему требует предельной дисциплины при разработке, ну и больших трудозарат. Очень разумный подход к созданию документации предлагает, например, GraphQL, где документация неразрывно связана с программным кодом и этим гарантируется 100% соответствие документации и документируемых сервисов. Однако, непривычность подхода GraphQL для разработчиков, привыкших к REST-API, все еще затрудняет продвижение этой технологии в практическую разработку приложений. Тут же можно вспомнить и SOAP, который уже давно решил проблему соответствия документации и сервисов, но из-за переусложненности не прижился в широких массах разработчиков.

Хотелось бы найти такой стек технологий для разработки микросервисов, который обеспечил такую же самодокументируемость программного кода при разработке «традиционных» REST-API микросервисов. И он, как оказалось, уже существует.
Читать дальше →
Всего голосов 5: ↑5 и ↓0+5
Комментарии1

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

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

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

Читать дальше →
Всего голосов 20: ↑19 и ↓1+18
Комментарии7

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

Время на прочтение11 мин
Количество просмотров64K
У нас были 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...
Читать дальше →
Всего голосов 7: ↑7 и ↓0+7
Комментарии8

Микросервисы. Унификация и почему это так важно. Часть 1 — Конфигурация

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


Введение


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

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

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

Всех заинтересовавшихся прошу под кат.
Читать дальше →
Всего голосов 7: ↑5 и ↓2+3
Комментарии0

Monolith to microservices. Infrastructure point of view

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


I'd like to share my story about migration monolith application into microservices. Please, keep in mind that it was during 2012 — 2014. It is transcription of my presentation at dotnetconf(RU). I'm going to share a story about changing every part of the infrastructure.

Read more →
Всего голосов 10: ↑8 и ↓2+6
Комментарии0