Рубрика «проектирование систем»

Декомпозиция фич и их приоритезация — это обязательные этапы проектирования продукта. USM – инструмент, который нам в этом помогает. С ним получается работать над продуктом, опираясь на реальные  потребности пользователей и цели бизнеса. Как итог – строим разработку так, чтобы каждая функция, которую создает команда, приносила максимальную пользу. Возможно, вся эта работа покажется простой и быстрой, но чтобы создать продукт, нужный бизнесу и клиентам, имеет смысл выстроить систему и подход, универсальные с точки зрения применения и гибкие с точки зрения адаптации под конкретный запрос. 

Читать полностью »

50 терминов системного дизайна, которые должен знать каждый разработчик - 1

1. Масштабируемость / Scalability

  • Масштабируемость — это способность системы поддерживать возросшую нагрузку путем добавления дополнительных ресурсов
  • Примером является добавление дополнительных серверов для обработки увеличившегося веб-траффика
  • Что такое масштабируемость и как ее достичь?

2. Балансировка нагрузки / Load Balancing

  • Балансировка нагрузки — это разделение входящего сетевого траффика между несколькими серверами для снижения нагрузки на каждый из них (во избежание того, чтобы на один сервер приходилось слишком много траффика)
  • Примером является распределение веб-траффика между несколькими экземплярами EC2 с помощью сервиса AWS Elastic Load Balancer (ELB)
  • Понимание балансировки нагрузки

Читать полностью »

С чем предстоит иметь дело

Прежде чем перейти к главному, кратко обозначу, что конкретно мы в этой статье будем разбирать. Ведь область облачных вычислений настолько велика, что рассказать про все нюансы облаков вряд ли получится. И во многом это даже бессмысленно, так как информации про виртуализацию и проектирование решений в облаке, итак, предостаточно на просторах интернета. Хотя так или иначе виртуализацию мы затронем, когда будем выбирать чем консоль будет управлять (спойлер: Openstack + OVN).

Читать полностью »

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

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

Что это?

Читать полностью »

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


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

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

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

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

Читать полностью »
Система типов — лучший друг программиста - 1

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

Значение в string не лучший тип для записи адреса электронной почты или страны проживания пользователя. Эти значения заслуживают гораздо более богатых и специализированных типов. Мне нужно, чтобы существовал тип данных EmailAddress, который не может быть null. Мне нужна единая точка входа для создания нового объекта этого типа. Он должен валидироваться и нормализироваться перед возвратом нового значения. Мне нужно, чтобы этот тип данных имел полезные методы наподобие .Domain() или .NonAliasValue(), которые бы возвращали для введённого foo+bar@gmail.com значения gmail.com и foo@gmail.com. Эта полезная функциональность должна быть встроена в эти типы. Это обеспечивает безопасность, помогает предотвращать баги и существенно повышает удобство поддержки.
Читать полностью »

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

Я ни в коем случае не считаю, что MongoDB это плохая БД и ее не нужно использовать. Более того, я считаю, что только мои кривые руки завели меня в ситуацию, из которой пришлось выходить переписыванием сервиса под другую БД (ушел на Postgres и кайфую).

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

Читать полностью »

Всем привет! Меня зовут Антон, я системный архитектор отдела разработки курьерских сервисов в Почтатехе. Команда нашего отдела создаёт и развивает цифровые продукты для курьеров Почты России. Мы разрабатываем как производственные системы, так и более уникальные штуки — например, маршрутизатор и мобильную SaaS-платформу, которая позволяет сделать офлайн-приложение для терминалов сбора данных, почтальонов и курьеров.

Читать полностью »

Привет, меня зовут Владимир Кустиков, я — архитектор решений в e-Legion. И сегодня я хотел бы рассказать вам про микросервисы.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js