Pull to refresh
5
-1
Александр @alex_mayak

Frontend-разработчик

Send message

Клеточная архитектура

Level of difficultyEasy
Reading time5 min
Views4.7K

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

Основная цель такого разделения — минимизация радиуса поражения при возникновении сбоев и упрощение масштабирования системы.

Читать далее
Total votes 11: ↑9.5 and ↓1.5+8
Comments12

Проектирование отказоустойчивости IT-систем

Reading time11 min
Views19K

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

Что такое отказоустойчивость и стабильность?

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

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

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

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

22 метрики для маркетплейса и что с ними делать — американский опыт глазами российского Менеджера продукта

Level of difficultyMedium
Reading time12 min
Views2.3K

Я Илья Пухов, Старший менеджер продукта в маркетплейсе Детского мира, до этого PM в Авито и основатель маркетплейса Гильдия Квестов. Статья основана на воркшопе по метрикам маркетплейсов CPO Outdoorsy и ветерана индустрии Колина Гардинера (1). Я дополнил материал основываясь на моем профессиональном опыте, и знанях из лекций значимых авторов в этой области. Например Елены Серегиной из Яндекса и Ильи Красинского. Постарался заполнить пробелы и создать полноценное руководство. Кое-где с комментариями из российской практики.

Читать далее
Total votes 11: ↑9 and ↓2+7
Comments9

Неочевидные минусы позиции тимлида

Reading time4 min
Views21K


Я встречал достаточно большое количество материала по тому, как стать team lead-разработчиком, зачем это делать и т. д., в то время как, говоря про минусы, упоминают в основном об увеличении количества созвонов/общения с людьми. Я попробую описать те моменты, про которые обычно не говорят.

Последние 6 лет я работаю backend team lead. В основном это проектная разработка, но с продуктами тоже приходилось работать.

Минусы под катом.
Total votes 55: ↑50 and ↓5+45
Comments93

Паттерн Outbox: как не растерять сообщения в микросервисной архитектуре

Reading time8 min
Views54K

Привет! Меня зовут Михаил Боровиков, я тимлид команды, которая отвечает за систему процессинга заказов Lamoda — Orders Management. Эта система, словно «сердце» Lamoda, через которое проходит самый важный для бизнеса шаг — оформление заказа.

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

Для решения этой проблемы мы выбрали паттерн Outbox. И в этой статье я расскажу, что он из себя представляет, как мы его применили, почему пошли по пути at-least-once и не положились на работу одного брокера сообщений.

Читать далее
Total votes 31: ↑29 and ↓2+27
Comments27

Debouncer: практический пример использования замыкания

Level of difficultyEasy
Reading time3 min
Views8.5K

Что такое дебаунсер?

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

Практическое применение

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

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

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

Читать далее
Total votes 8: ↑5 and ↓3+2
Comments15

Ленивые бесконечные списки на основе Deferrable Views

Level of difficultyMedium
Reading time5 min
Views2.7K

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

В статье рассмотрим, как сделать бесконечные ленивые списки на основе Deferrable Views, недавно появившихся в Angular 17 и затронем некоторые моменты оптимизации предлагаемого подхода. Статья содержит примеры кода и демонстрационное приложение, показывающее применение Deferrable Views для решения задачи.

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

Как нефункциональные требования влияют на архитектуру

Reading time8 min
Views8.8K

Привет, Хабр, меня зовут Светлана Уварова, я — ведущий системный архитектор в МТС.

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

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

Руководство для тимлидов: планирование, Agile и вот это всё

Level of difficultyEasy
Reading time10 min
Views16K

Смотрели фильм «Люди в чёрном»? В нём множество запоминающихся реплик и моментов, смешных и поучительных. В одной из сцен агенты попали в затруднительную ситуацию и не могли понять, какой следующий шаг в расследовании им нужно сделать. Тогда один сказал, что нужно съесть пирог, он поможет.

Меня зовут Сергей Иванов, я из «ВКонтакте для бизнеса», и сегодня предлагаю вам присесть поудобнее и съесть пирог вместе со мной.

Съесть пирог
Total votes 37: ↑34 and ↓3+31
Comments6

10 фактов, которые разработчики ПО должны знать про обучение

Reading time26 min
Views7.2K

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

Читать далее
Total votes 28: ↑26 and ↓2+24
Comments3

Figma to Frontend: как мы автоматически синхронизируем дизайн и код

Level of difficultyMedium
Reading time7 min
Views21K

Меня зовут Анастасия Кабалкина, я Head of design в VK Tech. В этой статье расскажу, как мы синхронизировали треть нашей дизайн-системы за счет автоматической генерации дизайн-токенов и компонентов.

Читать далее
Total votes 47: ↑44 and ↓3+41
Comments9

System Design 101

Level of difficultyMedium
Reading time42 min
Views73K



О сложных системах простыми словами.


В шпаргалке на высоком уровне рассматриваются такие вещи, как протоколы коммуникации, DevOps, CI/CD, архитектурные паттерны, базы данных, кэширование, микросервисы (и монолиты), платежные системы, Git, облачные сервисы etc. Особую ценность представляют диаграммы — рекомендую уделить им пристальное внимание. Полагаю, шпаргалка будет интересна всем, кто хоть как-то связан с разработкой программного обеспечения и, прежде всего, веб-приложений. Буду признателен за помощь в уточнении/исправлении понятий, терминологии, логики/алгоритмов работы систем (в рамках того, что по этому поводу содержится в оригинале), а также в обнаружении очепяток.


Выражаю благодарность Анне Неустроевой за помощь в редактировании материала.


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


System Design (сборник на английском языке).

Читать дальше →
Total votes 79: ↑79 and ↓0+79
Comments17

«Плывите, сосиски»: гайд по командной работе

Level of difficultyEasy
Reading time34 min
Views3.8K

Привет всем! Мы с командой студентов в рамках одной из дисциплин написали небольшое руководство по командной работе под названием «Плывите, сосиски». Хотя мы так и не завершили его, в документе содержится несколько потенциально полезных ситуаций, рекомендаций и советов.

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

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

Читать далее
Total votes 20: ↑16 and ↓4+12
Comments3

Angular на стероидах: наращиваем производительность при помощи WebAssembly

Reading time9 min
Views3.8K
В этом посте продемонстрировано, как с лёгкостью использовать WebAssembly внутри приложения, написанного на Angular. Иногда в приложении на Angular требуется выполнить задачу, которая в JavaScript завершается не слишком быстро. Конечно, можно переписать алгоритм на другом языке, например, AssemblyScript и Rust — и код станет эффективнее. Затем можно скомпилировать получившиеся фрагменты кода в файле WASM и потоком передать двоичные данные в приложение, чтобы можно было вызывать из него функции WASM. Бывает и так, что разработчику не удаётся найти в реестре NPM опенсорсные библиотеки, нужные для решения задачи. В таком случае можно написать пакет не на JS, а на каком-нибудь другом языке, затем скомпилировать этот пакет в WASM и опубликовать код WASM в реестре NPM. Angular-разработчики устанавливают новый пакет как зависимость и выполняют WASM-функции внутри приложения.

В следующем демонстрационном примере я напишу на AssemblyScript несколько функций для работы с простыми числами, а затем опубликую файл индекса в формате WASM. Затем скопирую файл WASM в приложение Angular, потоком отправлю двоичные данные через WebAssembly API и, наконец, стану вызывать эти функции, чтобы с их помощью выполнять различные действия над простыми числами.
Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments1

Анимация в браузерах и как с ней работать

Level of difficultyMedium
Reading time10 min
Views4.9K

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

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

Меня зовут Сергей Чикуёнок. Я ведущий разработчик в ОК. В этом материале я расскажу об основных этапах работы с анимацией для браузеров, ключевых сложностях и вариантах их нативной оптимизации. 

Читать далее
Total votes 43: ↑43 and ↓0+43
Comments8

Шпаргалка для алгособеса — алгоритмическая сложность, структуры данных, методы сортировки и Дейкстра

Level of difficultyMedium
Reading time33 min
Views97K

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

Так уж повелось, что любой уважающий себя работодатель перенимает передовые^✻ методики FAANG — по этой причине практически во всех IT-собесах есть она: секция алгоритмов. Кто-то ей рад, кто-то не очень, но секция есть и уходить пока не планирует. Поэтому нужно закатать рукава и достойно встретить суровую реальность.

Читать далее
Total votes 216: ↑214 and ↓2+212
Comments77

Как получить повышение. Взгляд глазами руководителя

Level of difficultyEasy
Reading time8 min
Views66K
Новый год — это не только праздник/отдых/премии и вот это вот все, нужное подчеркнуть; это еще и старт нового промоушен-периода, когда вы можете претендовать на повышение грейда или увеличение зарплаты.

В моем отделе (B2В Product Design, хотя это сейчас неважно) 25 человек. Непосредственно я руковожу не линейными сотрудниками, а тимлидами команд, но суть в том, что по каждому из коллег в мои задачи входит распределение премий, повышение зарплат и назначение новых грейдов.

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

И я не зря публикую этот пост в самом начале года: во-первых, в разных компаниях промоушен-периоды проходят в разные сроки, начиная в том числе прямо с зимы; во-вторых, чем раньше вы выберете правильную тактику, тем больше у вас шансов на успех.


(Моя любимая команда. И тут, кстати, не все))
Читать дальше →
Total votes 135: ↑63 and ↓72-9
Comments294

Подборка книг для менеджеров и тимлидов, которые развивают команды в России

Level of difficultyEasy
Reading time7 min
Views11K

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

Вся подборка основана на рекомендациях Оксаны Нечитайловой, руководителя отдела сервисного дизайна продуктов YADRO, — в IT-сфере она уже 15 лет и имеет богатый опыт управления командами и построения процессов. Каждую книгу подборки Оксана сопроводила развернутыми комментариями, которые помогут вам понять, стоит ли вам тратить на нее время.

Читать далее
Total votes 26: ↑23 and ↓3+20
Comments10

Нужно ли разработчикам проектирование?

Level of difficultyMedium
Reading time7 min
Views8.3K

Такие схемы на проектах готовят наши архитекторы. Достаточно ли их чтобы оценить состав и сложность каждого модуля, объем и трудоемкость работ в целом. Поможет ли такая схема при планировании работ?

В статье рассуждение о том что могло бы помочь.

Читать далее
Total votes 11: ↑11 and ↓0+11
Comments21

Четыре способа оптимизации ПО

Level of difficultyMedium
Reading time13 min
Views13K

Преждевременная оптимизация может оказаться корнем всех зол, а запоздалая — корнем безысходности. Каким бы быстрым ни становилось аппаратное обеспечение, мы находим способы писать медленные программы. И зачастую проявляется это не сразу. Пользователи могут годами не обращать внимания на проблему в производительности ПО, пока она не становится очевидной, что порой происходит в течение одного дня.
Читать дальше →
Total votes 67: ↑62 and ↓5+57
Comments12
1
23 ...

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity