Как стать автором
Обновить
33
0
Махмуд @Maxmyd

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

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

Собираем данные из сотни микросервисов, или Как мы разобрали Ozon на кубики, а потом собрали заново

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

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

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

Продукт, который мы разработали, вряд ли когда-нибудь станет open-source-проектом, так как он слишком зависит от специфики инфраструктуры Ozon Tech. Но основные принципы могут быть полезны при проектировании похожих систем.

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

Сегментация сети для самых маленьких

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

Цель статьи: показать базовый подход к сегментации сети компании при разработке новых либо модернизации текущих автоматизированных систем.

1. Основные уровни сетевой архитектуры: DMZ, APP, DB;

2. Правила межсервисного взаимодействия.

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

Это база: нюансы работы с Redis. Часть 1

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

Привет! Меня зовут Петр и мы в компании Nixys очень любим Redis. Эта база используется, если не на каждом нашем проекте, то на подавляющем большинстве. Мы работали как с разными инсталляциями Redis, так и с разными версиями, вплоть до самых дремучих, вроде 2.2. Несмотря на то, что в Интернете очень много статей и докладов по этой БД, мы в своей практике достаточно часто встречаемся с непониманием некоторых основных концепций Redis и со стороны разработчиков, и со стороны системных администраторов.

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

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

Как потратить дни, чтобы сэкономить секунды: продвинутые коммиты в GitLab

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

Коммит изменения в GitLab — фоновый и рутинный процесс, на который никто не закладывает рабочего времени. Но в нем есть действия, которые съедают 18 секунд при каждом коммите. 10 коммитов — уже 3 минуты за день и 15 — за неделю. Да, немного, но на это тратится внимание. К тому же, за эти 15 минут можно сделать что-то полезное или просто выпить кофе и дать мозгу отдохнуть.

Мы в Selectel нашли способ, как упростить коммиты в GitLab и добавить им информативности — описания прямиком из Jira. Любите автоматизировать рутинные задачки? Тогда добро пожаловать под кат.
Читать дальше →
Всего голосов 26: ↑24 и ↓2+32
Комментарии17

Записки технического руководителя проектов

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

Статья была написана мной в 2020 году, после запуска в прод очередной платформы, построенной на микросервисной архитектуре с целью зафиксировать выученные уроки с точки зрения технического руководителя проекта. В проектах участвовало со стороны подрядчика более 300 человек технических специалистов - разработчиков, тестировщиков, аналитиков и др. Поэтому можно сказать, что проекты были достаточно крупными и значимыми.. Теперь уже многие компании - участники проекта либо свернули бизнес в РФ, либо поменяли бренд, а разработанные системы находятся в эксплуатации. Микросервисная архитектура давно не является новой архитектурной парадигмой. Но я думаю, что статья все еще актуальна, как и многие выученные уроки . 

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

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

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

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

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

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

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

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

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

Поднимаем кластер PostgreSQL в Docker и Testcontainers

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

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

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

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

Настройка Hibernate Envers

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

Настройка Аудирования и Журналирования в java проекте.

Hibernate Envers не так прост как кажется, но мы всё настроим и кастомизируем.

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

Измеряем команду с JIRA и Grafana: sprint reports, грейдирование и не только

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

Всем привет! Меня зовут Дмитрий Шкилёв, я тимлид команды Teachers Platform. Мы занимаемся личным кабинетом преподавателя и внутренними ресурсами, которые необходимы для обеспечения работы преподавателей. 

Сегодня хотелось бы поговорить про такую не очень популярную историю, как измерение показателей команды разработки. За рамками статьи хочу оставить, почему необходимо измерять что-либо в работе команды — это тема для отдельного рассказа. Также тут вы не найдёте готовых рецептов для построения бордов в Grafana, но зато получите всё необходимое, чтобы начать их делать самостоятельно. Цель статьи — поделиться, как с минимумом инструментов измерять интересующие тимлида показатели.

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

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

Как завести счета в Казахстане и получить платежные дебетовые карточки менее чем за одну неделю

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

Задавайте вопросы под постом, друзья, и я постараюсь ответить на ваши комментарии (по делу).

Предисловие

Мы разберем, как завести счета в Казахстане и сделать рабочие карточки Visa и Mastercard в различных банках. Вы узнаете, зачем я поехал в соседнюю страну, к чему это привело, как по приезде взаимодействовать с финансовой системой наиболее быстро и эффективно, и что для этого требуется.

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

Зачем?

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

Читать далее
Всего голосов 39: ↑30 и ↓9+29
Комментарии104

Безопасность REST API от А до ПИ

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

Введение


Умение реализовать грамотное REST API — полезный навык в наше время, т.к. все больше сервисов предоставляют свои возможности с помощью API. Но разработка REST API не ограничивается реализацией HTTP запросов в определенном стиле и формированием ответов в соответствии со спецификацией. Задача обеспечения безопасности REST API не так очевидна, как, например, обеспечение безопасности баз данных, но ее необходимость не менее важна.
В настоящее время многие онлайн системы с помощью API передают приватные данные пользователей, такие как медицинские или финансовые. Текущая же ситуация с безопасностью в веб-приложениях весьма печальна: по данным Comnews порядка 70% содержат кри­тичес­кие уязвимости. Поэтому всем, кто участвует в проектировании, реализации и тестировании онлайн систем, важно иметь общую картину по существующим угрозам и способам обеспечения безопасности как всей системы, так и используемого REST API.

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

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

Запуск фоновых задач в asp.net core

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

Небольшой обзор стандартных средств запуска бэкграунд-задач в аспнет приложениях — что есть, чем отличается, как пользоваться. Встроенный механизм запуска таких задач строится вокруг интерфейса IHostedService и метода-расширения для IServiceCollection — AddHostedService. Но есть несколько способов реализовать фоновые задачи через этот механизм (и ещё несколько неочевидных моментов поведения этого механизма).

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

220 платежей в секунду: выдержать нельзя упасть

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

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

Я разрабатываю сервисы в команде платежей Ozon. Мы много времени уделяем тому, чтобы все транзакции были обработаны корректно, даже если речь идёт о нагрузке в 2к платежей в минуту (именно столько у нас было в пике в период ноябрьских распродаж). Кстати, сейчас, по результатам нагрузочного тестирования, мы выдерживаем 13к платежей в минуту.

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

Читать далее
Всего голосов 22: ↑20 и ↓2+24
Комментарии9

Основы Elasticsearch

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

Elasticsearch — поисковый движок с json rest api, использующий Lucene и написанный на Java. Описание всех преимуществ этого движка доступно на официальном сайте. Далее по тексту будем называть Elasticsearch как ES.


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


В этой статье я расскажу про основы ES на примере индексации постов блога. Покажу как фильтровать, сортировать и искать документы.

Читать дальше →
Всего голосов 39: ↑38 и ↓1+37
Комментарии78

Как мы настроили поиск с помощью Elasticsearch и Logstash по данным MSSQL

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

Делимся подробностями, как мы сделали хороший поиск по закрытой корпоративной соцсети в условиях, когда:


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


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


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


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

«Звезда» в команде – преимущество или постепенный упадок?

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

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

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

«Здорово!», скажете вы, и я с вами согласен. Однако всегда надо помнить, что уникальный специалист, это не только Подарок, но и Бомба замедленного действия.

Почему, «бомба»? Про это я и расскажу в этой заметке.

Читать далее
Всего голосов 27: ↑12 и ↓15+7
Комментарии83

Умный дом с нуля своими руками или путешествие длиною в год

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

Данную статью пишу для думающих, стоит оно того или нет и начинающих построение своего умного дома, надеюсь она поможет сделать вам свой выбор. Для тех кто думает я не программист у меня ничего не получится, я тоже, хотя имею техническое (теплоэнергетик) образование, но никогда не работал в IT, не знаю не одного языка программирования. Дорогу осилит идущий. Начнем с рассуждений что такое умный дом, поверьте на слово он не решит все ваших бытовых и семейных проблем, но точно сделает жизнь немного комфортней. Что такое умный дом в моем представлении год назад: 1. Красивый планшет со схемой дома весящий на стане в прихожей с которого можно управлять всем в доме; 2. Управление всем чем можно голосом. Откровение через год планшет не нужен, так как бегать со второго этажа на первый что бы по управлять неудобно. Что бы хорошо работало голосовое управление, требуется установка умной колонки в каждую комнату, когда их две это одно. А когда значительно больше вопрос. Сейчас для меня умный дом это то, что работает само без моего участия, и не требует управления. Все о чем пойдет речь далее сделано мною лично, может можно сделать по другому, может проще и лучше. Но таков путь.

Читать далее
Всего голосов 35: ↑28 и ↓7+29
Комментарии154

Использование Identity Server 4 в Net Core 3.0

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

Введение


На одном из моих поддерживаемых проектов недавно встала задача проанализировать возможность миграции с .NET фреймворка 4.5 на .Net Core по случаю необходимости рефакторинга и разгребания большого количества накопившегося технического долга. Выбор пал на целевую платформу .NET Core 3.0, так как, судя по утверждению разработчиков от Microsoft, с появлением релиза версии 3.0, необходимые шаги при миграции legacy кода уменьшатся в несколько раз. Особенно нас в нем привлекли планы выхода EntityFramework 6.3 для .Net Core т.е. большую часть кода, основанную на EF 6.2, можно будет оставить «как есть» в мигрированном проекте на net core.


С уровнем данных, вроде, стало понятно, однако, еще одной большой частью по переносу кода остался уровень безопасности, который, к сожалению, после беглых выводов аудита придется почти полностью выкинуть и переписать с нуля. Благо, на проекте уже использовалась часть ASP NET Identity, в виде хранения пользователей и других приделанных сбоку «велосипедов».


Тут возникает логичный вопрос: если в security часть придется вносить много изменений, почему бы сразу же не внедрить подходы, рекомендуемые в виде промышленных стандартов, а именно: подвести приложение под использование Open Id connect и OAuth посредством фреймворка IdentityServer4.

Читать дальше →
Всего голосов 21: ↑20 и ↓1+19
Комментарии5

Разработка Chrome Extension вместе с Angular CLI

Время на прочтение3 мин
Количество просмотров4.9K
Разработкой расширений к Chrome я занимаюсь давно и за это время я прошел целый путь от Greasemonkey юзер-скриптов до полноценного Angular-приложения в оболочке chrome-extension. Моя задача в том, что я патчу некоторые уже работающие сайты, чтобы изменить их функционал и автоматизировать некоторые процессы на этих сайтах. Иногда моё приложение разрастается до больших масштабов и поддерживать plain-js расширение становится сложно (в приложении много настроек, CRUD функционала и тд). И тут на помощь приходит Angular.

В этой статье я расскажу вам как я подружил Chrome Extension и Angular CLI, и наладил процесс разработки, а также с какими трудностями я сталкивался и как их решал.
Читать дальше →
Всего голосов 8: ↑7 и ↓1+6
Комментарии1

Почему уходят разработчики: 8 причин

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


Есть такая фраза «Как бы хорошо вы ни воспитывали ребенка, ему все равно будет что сказать своему психоаналитику». То же самое можно сказать и про работу с сотрудниками. Как бы хорошо у вас ни было работать в компании, вашим сотрудникам будет что сказать о причинах ухода на собеседовании — это нормально. Но риски всегда можно минимизировать, а жизнь сотрудника в рамках компании — увеличить.

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

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

Неналаженные рабочие процессы


Лидер нашей подборки. Встречается более чем в 60% причин при смене работы. Особенность в том, что это достаточно широкое понятие, которое включает в себя ошибки менеджмента, недостатки программного обеспечения, нехватку специалистов для реализации поставленных задач.
Читать дальше →
Всего голосов 77: ↑62 и ↓15+47
Комментарии88

Информация

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