Pull to refresh
60
0.8
Send message

Архитектура на основе событий в Rust

Level of difficultyEasy
Reading time5 min
Views2.1K

Сегодня мы рассмотрим, как реализовать так называемую event-driven архитектуру с использованием Rust.

Архитектура на основе событий (event-driven architecture, EDA) — это подход к созданию систем, где взаимодействие между компонентами системы происходит с помощью событий. Все это позволяет развязывать компоненты друг от друга и повышать их независимость, что, в свою очередь, увеличивает масштабируемость и гибкость системы.

Читать далее
Total votes 12: ↑10 and ↓2+13
Comments1

Правда ли, что Dubbo — это как gRPC, но из Китая?

Level of difficultyEasy
Reading time8 min
Views3.4K

Всем привет! На связи Максим Чудновский и Александр Козлов, мы занимаемся развитием интеграционной платформы Synapse. Это сloud-native децентрализованная платформа для интеграции и оркестрации микросервисов, которая разрабатывается в СберТехе.

Сегодня есть множество протоколов, обеспечивающих эффективную коммуникацию между различными компонентами приложений и систем. Два ярких представителя таких технологий — Dubbo и gRPC, которые, по мнению некоторых экспертов, имеют поразительное сходство. Но действительно ли они так уж похожи?

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

Читать далее
Total votes 22: ↑20 and ↓2+28
Comments5

Забытая история Java: версия Патрика Ноутона

Level of difficultyEasy
Reading time44 min
Views4.8K

Патрик Ноутон — первоклассный специалист из Sun Microsystems, являющийся одним из создателей Star7 и Java.

Именно он был инициатором запуска проекта (причём через конфликт с руководством Sun и критику их работы, находясь на грани увольнения), который привел к появлению Java.

Если бы Патрику позволили уволиться и перейти в NeXT, возглавляемую Стивом Джобсом, как он того хотел, то языка Java, не существовало бы.

Данный текст, опубликованный им 18 марта 1996 г., позволяет взглянуть в прошлое на “лихие” 90-е, когда Sun пыталась оседлать перспективные направления, связанные с компьютерами, сетями и сопутствующими технологиями.

Но Патрика не запомнят, как одного из компьютерных гениев, работавших в Sun над Java. А все потому, что на пике своей карьеры в возрасте 34 лет в конце 1999 г. он потеряет всё: семью, престижную работу, бо́льшую часть состояния и репутацию. Причиной тому будет поимка его ФБР и обвинение в педофилии.

Но до этого переломного события еще около трех лет; успех и востребованность начинают кружить голову и кажется, что вся жизнь впереди…

Узнать темное прошлое Java
Total votes 15: ↑14 and ↓1+16
Comments10

И опыт, сын ошибок трудных: обрабатываем ошибки в Spring Boot

Level of difficultyHard
Reading time17 min
Views6.5K

Долгое время разрабатывая микросервисы в разных командах, я сталкивался с типовой задачей: созданием максимально информативного ответа на запрос, когда произошла какая-то ошибка. Особенно это актуально для систем с пользовательским фронтендом, большим количеством интеграций или систем, которые представляют свой API как продукт. Во многих случаях это решалось выдачей сообщения «Ошибка системы» с HTTP-кодом 500. Из раза в раз меня не покидало ощущение, что решению этой задачи не уделяется должного внимания и времени. В текущем проекте нам пришлось пройти все круги ада, изменить несколько подходов и реализаций. И здесь я постарался описать, как это было, и сформулировать выводы, которые мы сделали на каждом шаге решения проблемы.

Читать далее
Total votes 8: ↑7 and ↓1+8
Comments11

Создание полного Fast-API сервиса с фронтендом и деплоем за полчаса

Level of difficultyEasy
Reading time15 min
Views19K

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

После этого мы выполним деплой этого приложения, чтобы любой пользователь мог им воспользоваться.

Читать далее
Total votes 19: ↑17 and ↓2+19
Comments7

4 тысячи заметок?! Как я веду личную базу знаний в Obsidian

Reading time6 min
Views57K

В моей базе знаний 4 000 заметок.

Да, у меня немного съехала крыша на этой теме. Но решение создать систему для ведения заметок три года назад — пока что лучшая из моих интеллектуальных инвестиций. В этом посте хочу поделиться, зачем я это делаю, в каком формате и какие полезные практические кейсы для себя нашел. Тема бездонная, на самом деле. Можете взять часть идей и развить у себя.

Читать далее
Total votes 52: ↑45 and ↓7+50
Comments108

Давайте сделаем крупное приложение на Flask (язык Python)

Reading time18 min
Views19K

На Хабре я часто вижу статьи о реализации тех или иных фич на Python-фреймворках. Я объединил все эти фичи в реальный проект с открытым исходным кодом, чтобы у вас сложилась целостная картина. Мы с вами создадим UX/UI на Figma, напишем фронтенд на HTML, CSS, SASS, Bootstrap и JavaScript, создадим ER-диаграмму в MySQL Workbench, напишем бекэнд на Flask, создадим регистрацию через социальные сети OAuth 2.0 в один клик, используем брокер сообщений и асинхронную очередь Celery для отправки писем на электронную почту, сделаем WYSIWYG-редактор, реализуем полнотекстовый поиск Elasticsearch, закешируем Redis, покроем тестами pytest и запустим в Docker-контейнерах, поговорим о многопроцессности для WSGI-шлюза Gunicorn.

Читать далее
Total votes 19: ↑19 and ↓0+25
Comments43

Дизайн встраиваемой базы данных для ANN запросов: MusyaDB

Level of difficultyHard
Reading time23 min
Views3.8K

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

Читать далее
Total votes 19: ↑19 and ↓0+23
Comments2

Как синхронизировать потоки в Java

Level of difficultyEasy
Reading time6 min
Views3.8K

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

Всё начинается с потребности в быстродействии и масштабируемости. C несколькими потоками можно обрабатывать больше операций одновременно.

В этой статье мы рассмотрим, как синхронизировать потоки в Java.

Читать далее
Total votes 15: ↑12 and ↓3+13
Comments9

Эволюция конечных автоматов в бэкенд-разработке

Level of difficultyMedium
Reading time6 min
Views7.4K

Привет! Меня зовут Павел, я программист-эксперт в отделе разработки серверных решений ЮMoney. Сегодня расскажу и покажу, как менялись наши конечные автоматы в бэкенде — как от большого страшного монстра с файлами классов по 1000+ строк мы пришли к красивым визуальным диаграммам, которые понимают не только разработчики, но и сотрудники других отделов.

Читать далее
Total votes 15: ↑14 and ↓1+17
Comments15

Xv6: увеличим размер страниц виртуальной памяти с 4Кб до 2Мб

Level of difficultyMedium
Reading time8 min
Views2.2K

Научим xv6 работать с виртуальными страницами размера 2 Мб, узнаем, как компоновщик создает образ памяти программы и научим файловую систему xv6 справляться с большими файлами.

Пример: Пусть программа занимает 4 Мб памяти. Размер страницы - 4 Кб. Программа займет (1024 * 1024 * 4) / (1024 * 4) = 1024 страницы памяти. ОС избавит процессор от лишней работы, если увеличит размер страницы до 2 Мб - тогда программа займет 2 страницы.

Читать далее
Total votes 8: ↑8 and ↓0+10
Comments0

Спиральная динамика — как эволюционирует команда

Reading time14 min
Views9.3K

• Как отношения внутри команды влияют на достижение цели?
• Из-за чего сильные сотрудники могут не уживаться в коллективе?
• Как сделать команду привлекательной для новичков?
• Через какие этапы становления проходит команда?
• Какие кризисы связаны с переходом на новый этап?
• Как история IBM и Apple демонстрируют уровни спиральной динамики?

В этой статье я постарался интересно и вдумчиво разобраться в модели эволюционного развития организаций — спиральной динамике.

Читать далее
Total votes 30: ↑24 and ↓6+21
Comments14

7 основных способов оптимизировать кеширование в Spring Boot

Level of difficultyEasy
Reading time10 min
Views9.7K

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

В новом переводе от команды Spring АйО вы узнаете про 7 основных техник оптимизации кеширования в Spring Boot, которые могут помочь значительно улучшить производительность. От выбора идеальных кандидатов для кеширования до реализации асинхронного кеша и мониторинга метрик кеша.

Читать далее
Total votes 21: ↑20 and ↓1+22
Comments3

Как работать с Git и Gitflow: разбираемся на примерах

Reading time6 min
Views13K

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

Меня зовут Николай Пискунов — я руководитель направления Big Data, и в блоге beeline cloud я делюсь практическими советами по программированию. В этой статье погрузимся в увлекательный мир Git и узнаем, как он поможет эффективно управлять версиями наших проектов.

Читать далее
Total votes 21: ↑12 and ↓9+6
Comments8

Создание собственного API на Python (FastAPI): Router и асинхронные запросы в PostgreSQL (SQLAlchemy)

Level of difficultyMedium
Reading time35 min
Views10K

Друзья, приветствую! Если вы читали мои прошлые статьи из серии «Создание собственного API на Python (FastAPI) и повторяли за мной, то сейчас вы готовы к полноценной интеграции PostgreSQL в ваше API.

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

Читать далее
Total votes 7: ↑6 and ↓1+7
Comments15

Пробы на роль Архитектора. Акт I: вступление

Level of difficultyMedium
Reading time7 min
Views14K

Я тут наткнулся на старую почту с приглашением на собеседование. С пожелтевшими гифками в подписи и просроченным сургучом сертификатов. Дело давнее, пандемийное, так что, думаю, можно рассказывать. Я один не смотрю на сроки NDA, когда подписываю? На всякий случай стоит обезличить и переделать. Тем более, что бонуса за продвижения бренда нет, а наказание всегда найдётся. Так что у нас тут анонимный клуб найма лиц похожих на архитекторов.

Читать далее
Total votes 51: ↑50 and ↓1+59
Comments5

Устойчивость микросервисных Spring приложений: роль аннотации @Transactional в предотвращении утечки соединений

Level of difficultyEasy
Reading time5 min
Views6.1K

В новом переводе от команды Spring АйО вы узнаете, как аннотация @Transactional помогла решить проблему с утечкой соединений и обеспечила стабильность системы.

Читать далее
Total votes 13: ↑11 and ↓2+11
Comments22

Liquibase + Spring Boot: настройка и написание миграций баз данных

Level of difficultyEasy
Reading time11 min
Views7.6K

Написание скриптов миграции трудоёмкий процесс. И если есть возможность это дело автоматизировать – этим нужно пользоваться!

В этом гайде я расскажу как подключить и настроить Liquibase в Spring Boot приложении, сгенерировать скрипты инициализации и миграции схемы БД, а также дополнить уже существующие changelog файлы новыми скриптами миграции вместе с Amplicode!

Читать далее
Total votes 13: ↑11 and ↓2+10
Comments16

Введение в Docker и Kubernetes: основы контейнерных технологий. Часть 1

Level of difficultyEasy
Reading time7 min
Views28K

Docker и Kubernetes — два инструмента, которые прочно вошли в арсенал современных разработчиков. Хотите разобраться в основах контейнеризации и оркестрации? Наша статья поможет вам в этом, раскрывая ключевые концепции и принципы работы этих технологий.

Читать далее
Total votes 15: ↑12 and ↓3+10
Comments17

Микросервисы в представлении среднего разработчика, и как всё на самом деле

Level of difficultyMedium
Reading time11 min
Views62K

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

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

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

погрузиться в микросервисы
Total votes 236: ↑232 and ↓4+260
Comments207

Information

Rating
1,741-st
Registered
Activity