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

Пользователь

Отправить сообщение

Хороший ретрай, плохой ретрай, или История одного падения

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

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

Меня зовут Денис Исаев, и я работаю в Яндекс Go. Сегодня я поделюсь опытом решения проблем с отказоустойчивостью из-за ретраев. Основано на реальных инцидентах в системе из 800 микросервисов.

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

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

Как приручить событийно-ориентированные микросервисы

Время на прочтение7 мин
Количество просмотров13K
Как приручить событийно-ориентированные микросервисы

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


TL;DR: А вот и нет! Вы столкнетесь с препятствиями связанными с пониманием и управлением потоком событий.


В этой статье я просуммирую свой опыт работы с хореографией микросервисов и укажу на различные препятствия и последствия данного подхода. Я использую типичный пример из бизнеса — процесс “клиентской адаптации” (в зависимости от отрасли, вы могли слышать о нем как об открытии счета). Для представленной очереди событий ниже, я использую Apache Kafka, но не беспокойтесь если используете другой стек, для него будут применимы все те же понятия.

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

Как писать полезные тесты для микросервисов

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

Привет! Меня зовут Гриша и я бэкенд разработчик на .net 

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

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

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

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

Компонентные тесты на .NET 7

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

Всем привет! Меня зовут Александр Кулик, я .NET-разработчик из команды checkout в Тинькофф. Занимаюсь бэкенд-разработкой по интеграции платежных решений, внешних сервисов и созданию собственных разработок для B2B-сферы.

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

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

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

Бизнес-ключ и суррогатный ключ нужны оба

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

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

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

Рациональный подход к декомпозиции систем на модули или микросервисы. Практика

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

В своём прошлом посте я рассказал теорию своего подхода к декомпозиции систем на модули. Теперь пришло время проверить её на практике.

Кэмп - реальный проект, который стоил семизначную сумму для заказчика, выполнялся командой из 12 человек (включая двух бакэндеров) и сейчас запущен в промышленную эксплуатацию. Суммарно на выполнение проекта было затрачено 5500 человеко/часов, из которых 950 - на бакенд.

Что из этого получилось?
Всего голосов 8: ↑5 и ↓3+6
Комментарии2

Одна платформа, чтобы править всеми

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

Привет! Меня зовут Миша, я работаю в Ozon Tech — руковожу направлением базовых сервисов в платформе. Ozon сегодня — это порядка 4000 разработчиков и более 3500 сервисов. Разработка постоянно развивается, количество сервисов увеличивается, и одна из сложных задач — это найти удобный для всех способ управлять тем, что происходит под капотом. 

Для этого мы сделали платформу: это внутренние стандарты, сервисы, процессы, инфраструктура для разработки. Можно сказать, что это такой «сервис для продуктовых разработчиков», который предоставляет удобные инструменты во все команды, обеспечивает единообразие подходов в разных командах, помогает внедрять изменения и новые технологии. Для нас платформа теперь — основа для разработки, на ней строятся все информационные системы, и сложно представить Ozon без неё.

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

Читать далее
Всего голосов 66: ↑64 и ↓2+68
Комментарии41

Как мы тестировали первый в России финансовый маркетплейс

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

Привет! Я Андрей Непряхин, руководитель направления QA в AGIMA. Вот уже год как мы работаем над мобильным приложением платформы Финуслуги, созданной Московской биржей. Это первая и единственная платформа личных финансов в России. За этот год мы освоили целый ряд новых технологий, поняли, как обеспечивать качество крупного финтех-проекта, но главное — научились работать в огромной команде. Как мы сделали процесс тестирования измеримым, а взаимодействие с разработчиками прозрачным — расскажу в этой статье.

Читать далее
Всего голосов 29: ↑25 и ↓4+21
Комментарии4

Оптимизация данных в MS SQL

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

Основная статья Взаимодействие DWH Oracle и MS SQL

Одним из методов для оптимизации обработки, хранения и администрирования данных в базе данных и кубах MS SQL — это процесс создании партицирования данных.

Partitioning (партицирование или по-другому секционирование) —  это разбиение таблицы на несколько частей, а эти части на одну или несколько файловых групп. Партицирование необходимо для целей ускорения доступа чтения или изменения данных и администрирования. Так как выровненный индекс по таблице будет содержаться в каждой условно своей секции, то при чтении или изменении данных будет обращение к конкретной секции и конкретному индексу в этой секции.

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

Пример кода для переноса в таблицу:

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

Проецирование вершин графа в векторное пространство. Часть 1. Разложение матрицы смежности

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

Привет, Хабр! Меня зовут Илья Котов, я Data Scientist в Сбере, участник профессионального сообщества NTA. Эта статья — первая часть небольшого цикла, посвящённого алгоритмам вложения вершин графа в векторное пространство. Сегодня расскажу об алгоритмах, основанных на матричных факторизациях. В качестве примера в статье используется занимательная задача поиска сообществ в графе. Что же, приступим!

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

Почему тяжело писать про хороший код?

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

Всем привет. Меня зовут Гриша Дядиченко, и я технический продюсер. Почему так сложно писать про хороший код? Меня периодически спрашивают, почему я так мало пишу про архитектуру. В то же время я даже среди заказчиков встречаю мнение что “в Unity пишется только плохой код”. Чтож, давайте один раз попробуем, а точнее я попробую показать, почему это очень сложно. Разработаем вместе такую “простую вещь” как инвентарь.

Читать далее
Всего голосов 17: ↑13 и ↓4+12
Комментарии21

Руководство по созданию облачного приложения под Microsoft Azure на основе опенсорсных технологий. Часть 1

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

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

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

Как мы автоматизировали работу с Kafka: через тернии к Cruise Control

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

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

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

Сегодня я поделюсь нашей историей запуска инструмента Kafka Cruise Control от LinkedIn. Наш путь по запуску на наших объёмах был тернист, и получился интересным, почти детективным рассказом. А если вы думаете, как автоматизировать рутинные операции по администрированию Kafka-кластеров, то, уверен, почерпнёте для себя что-то полезное. 

Читать далее
Всего голосов 58: ↑57 и ↓1+60
Комментарии28

Source Generators в действии

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

C# 9 дал долгожданную возможность кодогенерации, интегрированную с компилятором. Тем, кто мечтал избавиться от тысяч строк шаблонного кода или попробовать метапрограммирование, стало проще это сделать.


Ранее Андрей Дятлов TessenR выступил на конференции DotNext с докладом «Source Generators в действии». А теперь, пока мы готовим следующий DotNext, сделали для Хабра текстовую расшифровку его доклада.



Что вообще такое эти Source Generators? Как их использовать? Как предоставить пользователю вашего генератора необходимую гибкость конфигурации и понятные сообщения о возникающих проблемах? Как разобраться, когда что-то пошло не так?


Ответы на все эти и другие вопросы — в тексте.

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

Как хранить сеть дорог в БД для построения маршрута?

Уровень сложностиСложный
Время на прочтение21 мин
Количество просмотров20K

Японцы уже в 2018 году научили немецкий GraphHopper строить маршруты по дорогам хранящимся в PostgreSQL.

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

Надо всего лишь...
Всего голосов 29: ↑29 и ↓0+29
Комментарии18

Алгоритмы сортировки и их производительность

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

Здравствуйте, давно читаю Хабр и все хотел написать кому-нибудь статью, но не знал с чего начать и о чем писать. Но решил что тянуть кота за причинное место. Надо просто взять и написать обзор о чем то что я знаю и что будет просто для начало. Поэтому решил описать алгоритмы сортировки в размере 37 штук. Я понимаю, что на Хабре есть подобные статьи, одна постараюсь их добавить количеством алгоритмов и приведением небольшого числа графиков.

Читать далее
Всего голосов 64: ↑62 и ↓2+74
Комментарии29

Без А/B результат XЗ, или Как построить высоконагруженную платформу А/B-тестов

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

Один из важных вопросов как в нашей жизни, так и в бизнесе, и в IT — вопрос эффективности. Эффективно ли мы планируем наше время, те ли задачи решает бизнес, тот ли код мы оптимизируем? Чтобы ответить на эти вопросы, результат должен обладать главным критерием измеримостью. Измеримость результата новых фич для бизнеса и IT обеспечивает платформа А/B-тестов. О том, как её можно построить, выдерживать большой RPS и при этом не облажаться уронить прод, я расскажу в этой статье. 

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

Читать далее
Всего голосов 93: ↑92 и ↓1+106
Комментарии7

Ты вовсе не мерило всех вещей

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

Вы слышали о «Золотом Правиле»? Нет, не о том, которое можно свести к формуле «У кого золото, тот и правит», а о настоящем «Золотом правиле нравственности» — которое гласит: «Не делайте другим то, что вы не желаете для себя, и поступайте с другими так, как хотели бы, чтобы с вами поступили»?

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

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

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

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

Читать далее
Всего голосов 67: ↑42 и ↓25+32
Комментарии469

Программирование — это про общение

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

Когда выгорание по внутренним (и внешним) причинам достигает максимума, когда тошнит от одного воспоминания о том как выглядит IDE, когда мнится что в седло большой разработки больше не вернутся никогда, но, при всём при этом, вносить свой вклад в развитие индустрии хочется - остаётся одно.

Сменить угол обзора.

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

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

Давайте поговорим об этом
Всего голосов 29: ↑28 и ↓1+34
Комментарии12

Исповедь ничтожества

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

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

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

 P.P.S. Очень много текста внутри. 

Читать далее
Всего голосов 223: ↑211 и ↓12+247
Комментарии385

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность