Search
Write a publication
Pull to refresh
37
0.8
Send message

Асинхронные микросервисы на Python

Level of difficultyEasy
Reading time8 min
Views17K

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

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

Читать далее

Реализация итоговой согласованности. Разбор библиотеки event-outbox

Level of difficultyMedium
Reading time15 min
Views2.7K

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

Читать далее

Дзэн в искусстве программирования

Level of difficultyEasy
Reading time7 min
Views3K

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

Читать далее

Возможно, микросервисы вам не нужны

Level of difficultyEasy
Reading time7 min
Views21K

Писать эту статью было весело. Многие наверняка её захейтят, но …

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

Сегодня микросервисы очень популярны. Это прекрасный архитектурный стиль, который помогает масштабировать систему и саму организацию. Их используют многие успешные компании (Netflix, Spotify и прочие). Поэтому вполне нормально, что большинство организаций уже применяют или планируют начать применять этот стиль. Однако не все учитывают сопутствующие затраты.
Читать дальше →

Transactional Outbox: от идеи до open-source

Level of difficultyMedium
Reading time16 min
Views21K

Привет! На связи Миша Меркушин. Я тимлид команды Ruby Platform, ответственной за разработку внутренних библиотек и улучшение архитектуры микросервисов на Ruby в СберМаркете. Эта статья про архитектурный паттерн Outbox и инструмент, который мы создали и итерационно развивали внутри команды и лишь недавно «выпустили» его в мир. Он решает проблему обеспечения надежной и согласованной отправки сообщений из приложения, гарантируя, что сообщение будет отправлено после успешного завершения транзакции базы данных.

Читать далее

Кратко про класс CompletableFuture в Java

Level of difficultyEasy
Reading time5 min
Views16K

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

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

CompletableFuture — это класс в пакете java.util.concurrent, предоставляющий возможности для асинхронного программирования. Он поддерживает выполнение задач в фоновом режиме, цепочки задач, обработку исключений и многое другое.

Читать далее

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

Level of difficultyMedium
Reading time14 min
Views14K

По мнению Артема Закируллина*, одна из фундаментальных проблем, с которой сталкиваются разработчики при анализе кода – высокая когнитивная нагрузка. Это не абстрактное, а реальное ограничение возможностей, которое стоит времени и денег. На чтение и понимание кода, тратится больше времени, чем на его написание. Поэтому, разработчику нужно постоянно задаваться вопросом: не пишет ли он код, чтение которого создает чрезмерную когнитивную нагрузку?

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

*Обращаем ваше внимание, что позиция автора может не всегда совпадать с мнением МойОфис.

Читать далее

MapStruct — смаппь меня, если сможешь

Level of difficultyEasy
Reading time15 min
Views41K

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

Читать далее

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

Reading time10 min
Views2.4K

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

Читать далее

Разделяемость данных между микросервисами

Reading time7 min
Views5.5K
image


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

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

Заметаем рутину под ковёр. Шаблон Step Builder в Java

Level of difficultyMedium
Reading time12 min
Views5.1K

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

Читать далее

Комбинированная авторизация в Spring Security: Социальные сети и логин через username/password

Level of difficultyMedium
Reading time7 min
Views6.7K

Привет! Меня зовут Данекер, я Fullstack-разработчик (Java, Angular). В этой статье я хочу поделиться с вами, как реализовать комбинированную авторизацию в Spring Security, используя примеры авторизации через социальные сети, такие как GitHub, а также традиционный логин через username/password. Мы рассмотрим процесс настройки и интеграции обоих методов, чтобы ваши пользователи могли выбирать наиболее удобный для них способ входа в систему. Надеюсь, это руководство будет полезным и поможет вам упростить процесс аутентификации в вашем приложении. Если у вас возникнут вопросы, буду рад ответить на них в комментариях. Также приветствую обратную связь от более опытных и искушённых разработчиков.

Читать далее

Экономика Средиземья (что звенит в карманцах у хоббитов)

Reading time19 min
Views38K
Сэр Джон Рональд Руэл Толкин придумал мир Арды, в котором уживались разные расы и народы.

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

Если во вселенной Звёздных войн, о которой мы писали ранее, хозяйственная составляющая была прописана достаточно чётко, то в случае Средиземья многое можно интерпретировать с разных точек зрения. Был ли Шир социалистической, либертарианской или распределённой экономикой? Почему эльфы предпочитали бартер и не очень доверяли деньгам? Как магия влияла на экономику народов? Как Смауг разорял города, расположенные около Одинокой горы, и почему Торин Дубощит, возможно, поступал правильно, не спеша делиться гномьими сокровищами с другими народами?

И что всё-таки звенит в карманцах у хоббитов?

image
Нельзя просто так взять и описать экономику Средиземья
Читать дальше →

Джун Ха: ход конём из поэта в великие математики

Level of difficultyEasy
Reading time5 min
Views2.5K

В 2022 году Джун Ха был награжден медалью Филдса  за революционный вклад в области комбинаторики, особенно за мосты, которые он построил между комбинаторикой и алгебраической геометрией. Сложно поверить, что человек, получивший медаль за выдающиеся открытия в математике, раньше совершенно её не любил, и вообще мечтал стать поэтом. Возможно, мир никогда не узнал бы этого выдающегося математика, если бы не… шахматы. А именно, задачи на ход коня. Вот как всё было.

Читать далее

Генерация OpenAPI из Spring Boot MVC

Level of difficultyMedium
Reading time7 min
Views16K

В этой статье посмотрим, насколько хороша генерация в OpenAPI из Spring MVC (спойлер — довольно хороша), какие есть подводные камни и костыли, чтобы с ними справится.

Наше API будет включать:
— валидацию тела и параметров с помощью JSR-303 
— различные коды ответа с помощью ControllerAdvice и без него
— работа с Page и Pageable
— авторизация запросов

Читать далее

Мастерим многопоточность: техники и инструменты для Java-разработчиков. Часть 1

Level of difficultyMedium
Reading time29 min
Views16K

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

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

Читать далее

Как начать писать на Java в VSCode

Level of difficultyEasy
Reading time11 min
Views49K

Давайте признаемся: подавляющее большинство пишет Java код, используя JetBrains IntelliJ IDEA Ultimate. Да, это отличная IDE. Для нее есть большое количество расширений, среда очень тесно интегрируется с Spring Framework и знает его особенности.

Тогда зачем пробовать что‑то другое?

Привет, Хабр! Меня зовут Константин Шибков, я Java‑разработчик в CDEK.

В какой‑то мере все Java‑разработчики стали заложниками IDEA. Она так привычна, что нет желания пробовать другое. Ведь всё такое удобное и знакомое за столько лет использования.

Но если у вас есть трудности с доступом к Ultimate версии, а Community вариант не достаточно функционален — самое время попробовать современную альтернативу — Visual Studio Code.

В статье делюсь опытом подготовки среды разработки и изучения вопроса: «А можно ли перейти на VSCode?».

Перейти на VSCode

Как Фёдор Михайлович Достоевский и Фридрих Ницше повлияли на мировоззрение Дарта Вейдера

Level of difficultyEasy
Reading time12 min
Views8.7K

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

Читать далее

Разбираем на винтики учебный процессор TOY

Reading time11 min
Views3.6K

А давайте возьмём простейший процессор и напишем его эмулятор на Python. Будем кормить его бинарниками и дебажить.

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

Читать далее

Information

Rating
3,183-rd
Registered
Activity