Как стать автором
Обновить
3
0
Боря Фролов @donRumatta

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

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

Best Practices по подключению к сторонним API в проекте

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

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

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

Узнать лучшие практики
Всего голосов 27: ↑26 и ↓1+25
Комментарии6

Сложность алгоритмов. Разбор Big O

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

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

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

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

Паттерн Circuit Breaker

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

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

Каждая секунда простоя может стоить компании целое состояние, важно иметь надежные механизмы защиты от сбоев. Здесь и приходит на помощь паттерн Circuit Breaker.

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

Этот паттерн основывается на трех основных состояниях: закрытое, открытое и полуоткрытое.

Читать далее
Всего голосов 20: ↑17 и ↓3+14
Комментарии0

История облачного переезда: как мы отказались от гибридного деплоя и полюбили Terraform

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

Привет, меня зовут Максим Качинский, я ведущий DevOps-инженер в компании RocketData. Более 6 лет мы развиваем одноимённую платформу для управления репутацией — за это время она выросла с монолитного MVP на единственном сервере до 15+ микросервисов с пятью разными видами баз данных. И всё это в гибридной инфраструктуре. 

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

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

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

Идея небольшого дополнительного механизма для контейнера внедрения зависимостей

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Основы полнотекстового поиска в ElasticSearch. Часть первая

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

Привет! Меня зовут Глеб, я разработчик команды продукта «Сервис персонализации» в SM Lab. В цикле из трех постов я расскажу про основы полнотекстового поиска в Elasticsearch.

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

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

Итак, начнём с самых базовых понятий.

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

Blue-Green и Canary деплойменты в микросервисах

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

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

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

База знаний веб-разработчика: прокачиваем навыки владения CSS

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

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

На базовом уровне

Цель: Помнить все свойства в CSS. Достигается примерно за 300 часов

Что изучать?

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

Docker: заметки веб-разработчика. Итерация третья

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


Привет, друзья! Продолжаю делиться с вами заметками о Docker.


Заметки состоят из 4 частей: 2 теоретических и 2 практических. Если быть более конкретным:



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


Репозиторий с кодом приложения.


Если вам это интересно, прошу под кат.

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

Конфигурация сущностей в EF Core

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

Почти каждый (ну или почти каждый) разработчик слышал про такую технологию программирования, как ORM (англ. Oblect-Relational Mapping) или, если по-русски - объектно-реляционное отображение. Данная технология связывает базы данных с концепциями объектно-ориентированного программирования и, благодаря ей, многие разработчики уже стали забывать о работе с базами данных в чистом виде, например, создавая структуру данных непосредственно в СУБД.
Платформа .NET имеет кросплатформенную реализацию технологии ORM - Entity Framework Core (далее EF Core). С помощью данной технологии мы в принципе можем абстрагироваться от особенностей работы конкретной СУБД и в большинстве случаев, не подвергая модификации код нашего продукта перейти на любую другую СУБД.
Существует несколько вариантов конфигурирования сущностей, о которых мы и будем говорить в данной статье.

Дальнейшее рассмотрение способов конфигурирования подразумевает, что Вы уже знакомы с EF Core и можете поднять самый простой проект работающий с СУБД, использующий данную технологию.
Итак, давайте рассмотрим способы, как можно сконфигурировать сущности и отношения между ними.

Читать далее
Всего голосов 5: ↑2 и ↓3-1
Комментарии26

Версионирование API в ASP.Net Core

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

Поддерживая существующие уже какое-то время Web API проекты, мы нередко сталкиваемся с проблемой устаревания логики методов контроллеров и необходимостью ее изменения в соответствии с новыми требованиями. Но, как правило, на момент возникновения такой необходимости, уже существует определенное число сервисов, использующих текущую реализацию наших API, и не нуждающихся в ее модернизации. Более того, такие сервисы могут легко «сломаться» при изменении используемых ими API.

Для решения такого рода проблем в ASP.Net Core существует механизм версионирования API – когда контроллеры и их методы могут существовать одновременно в разных версиях. В таком случае, те сервисы, которым достаточно существующего состояния используемых ими API, могут продолжать использовать определенные версии этих API, а для сервисов, которые требуют модернизации логики контроллеров, мы можем создавать новые параллельные версии, и все эти версии могут работать в нашем проекте одновременно.

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

RabbitMQ в ASP.NET Core. Быстрый старт

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

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

RabbitMQ держит сообщения в очереди (Queue), которая является именованным буфером, хранящим адресованные ему сообщения.

Программа, посылающая сообщения в очередь RabbitMQ, называется поставщиком (Producer).

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

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

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

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

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

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

Читать далее
Всего голосов 49: ↑31 и ↓18+13
Комментарии53

Как LINQ, только быстрый и без аллокаций

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

Кому не нравится LINQ в C#? Встроенная и уже достаточно старая фича языка C# и рантайма .NET.

Но можем ли мы сделать более эффективную версию LINQ, чтобы и быстрее, и не кушало памяти? Давайте попробуем!

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

Да что это такое, ваше качество кода?

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

Салют, коллеги.

Лично я, очень люблю поговорить про качество, поддерживаемость и выразительность кода (эти умные слова, часто звучат на код ревью)

К сожалению, такие разговоры часто и быстро скатываются в холивар. Но, кажется, я нашел способ "вести разговоры о высоком без боли".

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

Читать далее
Всего голосов 13: ↑12 и ↓1+11
Комментарии38

Где и как применять low-code платформы

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

Разговоры о программировании без программистов идут постоянно. За последние 14 лет моей работы в IT идёт уже вторая волна любви к low-code решениям. Если вы дольше наблюдаете IT-рынок, то наверняка вспомните ещё пару подъёмов этой темы. Я побуду в роли критика low-code платформ, но, заодно, опишу способ применения low-code платформы, при котором это применение будет эффективно и оправдано.

Читать далее
Всего голосов 23: ↑21 и ↓2+19
Комментарии78

Преодоление сложности в самом сердце DDD

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

Эта статья является переводом материала «Tackling Complexity in the Heart of DDD».

Давайте проведем небольшой эксперимент: попробуем объяснить суть предметно-ориентированного проектирования (DDD) тому, кто понятия об этом не имеет. Это, особенно если делать кратко, непросто. Ограниченные контексты, сущности, события домена, объекты значений, домены, агрегаты, репозитории… с чего начать?

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

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

GraphQL: как сделать бэкенд приложения экономнее и быстрее

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

Самый распространённый стандарт для обмена информацией внутри приложений — это REST API. Его все любят, но знают, что он не идеален. В этой статье обсудим его альтернативу — GraphQL. Мы расскажем, в чём преимущество GraphQL, как выглядят запросы и с чего начать.

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

Информация

В рейтинге
Не участвует
Откуда
Курск, Курская обл., Россия
Дата рождения
Зарегистрирован
Активность