Pull to refresh
10
0
Volodymyr Polishchuk @NorthDakota

PHP Developer

Send message

Пережить распродажу на Ozon: хайлоад, сковородки и 38 инфарктов

Reading time 9 min
Views 12K

Мы нечасто задумываемся о том, как работает тот или иной сервис и какой объём работ скрывается за тем, чтобы товар или услуга прибыли к нам вовремя. Взять, например, «чёрную пятницу» и День холостяка в e-com — дни самых больших распродаж. Казалось бы, что там такого? Со стороны может выглядеть, что главное — прогреть аудиторию предложениями разной степени заманчивости и запастись товарами на складах. Конечно, это не так. На деле нескольким дням распродаж предшествует год активной подготовки: от прогнозирования нагрузки и закупки железок до перестройки архитектуры. О том, на что мы обращали внимание и как готовились к высокому сезону, читайте под катом. 

Читать далее
Total votes 54: ↑54 and ↓0 +54
Comments 18

Как мы в hh.ru отправляем пользователям миллиард уведомлений в месяц

Reading time 5 min
Views 5.2K

В hh.ru много пользователей, а уведомлений мы отправляем еще больше: о регистрации, о восстановлении пароля, об изменении статуса услуг, о новых сообщениях и т.д. Одних только email-уведомлений мы отправляем около 900 миллионов в месяц, а ведь есть еще пуши и смс.

Меня зовут Кирилл, я — тимлид команды Bonjour в hh.ru. Сегодня я расскажу как у нас устроены рассылки.

Читать далее
Total votes 18: ↑15 and ↓3 +12
Comments 7

Как работает крупнейший маркетплейс: что у него под капотом

Reading time 7 min
Views 45K

Всем привет, я — Сергей Бобрецов, CTO в Wildberries. 

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

Стоит начать с того, что основным генератором прогресса в WB с самого начала и по сей день является фактор роста. По бизнес-метрикам мы растем примерно х2 каждый год уже много лет, а по техническим (количестуву запросов / транзакций / трафику / объему данных и т. д.) — рост может быть даже быстрее, и это создает множество вызовов: технических, архитектурных и организационных. 

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

Сегодня я хочу рассказать немного про нашу инфраструктуру.

Читать далее
Total votes 69: ↑54 and ↓15 +39
Comments 54

Типовые ошибки менеджера при расширении команды. Гайд – как делать не стоит. Часть II

Reading time 8 min
Views 5.8K

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

Читать далее
Total votes 4: ↑3 and ↓1 +2
Comments 0

История блужданий по документации Haproxy, или на что стоит обратить внимание при его конфигурации

Reading time 8 min
Views 30K
И снова здравствуйте!

В прошлый раз мы рассказывали о выборе инструмента в Ostrovok.ru для решения задачи проксирования большого количества запросов к внешним сервисам, никого при этом не положив. Статья закончилась выбором Haproxy. Сегодня я поделюсь нюансами, с которыми мне пришлось столкнуться при использовании этого решения.


Читать дальше →
Total votes 24: ↑24 and ↓0 +24
Comments 3

Kubernetes tips & tricks: особенности выполнения graceful shutdown в NGINX и PHP-FPM

Reading time 8 min
Views 18K
Типовое условие при реализации CI/CD в Kubernetes: приложение должно уметь перед полной остановкой не принимать новые клиентские запросы, а самое главное — успешно завершать уже существующие.



Соблюдение такого условия позволяет достичь нулевого простоя во время деплоя. Однако, даже при использовании очень популярных связок (вроде NGINX и PHP-FPM) можно столкнуться со сложностями, которые приведут к всплеску ошибок при каждом деплое…
Читать дальше →
Total votes 45: ↑45 and ↓0 +45
Comments 6

GraphQL и почти все-все-все. Часть 1:)

Reading time 4 min
Views 9.7K


Введение:


Все чаще слышу об использовании GraphQL, но так как последнее время все рабочее время уходило на Xamarin + GRPC + ASP.NET Core, технология казалась для меня загадочно манящей и очень не известной, потому решил опробовать ее на нескольких языках, чтобы увидеть какие плюсы и минусы в разных подходах. Начать решил с родного и любимого C# + Hot Chocolate, но планирую так же попробовать Typescript + Prisma, Kotlin + graphql-kotlin, и возможно что-то другое.
Поехали
Total votes 6: ↑6 and ↓0 +6
Comments 1

Пять проблем неидеального тимлида (и семь спасительных решений). Как тимлиду не пострадать от стокгольмского синдрома

Reading time 4 min
Views 5.3K

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

Обсудили волнующую многих тему на нашем митапе с Захаром Овчаровым (Respona front-end team-lead, Toptal senior front-end developer). Встреча прошла перед конференцией IT-People Conf в Казани и вызвала интересную дискуссию. Полная версия обсуждений в нашем видео. 

Дисклеймер от Захара: все персонажи выдуманы, все действия нереальны, автор не несет никакой ответственности за ваши действия, поэтому действуйте на свой страх и риск;) 

Внезапно для себя вместо фронтенд-разработчика я стал тимлидом. Казалось бы, ничего страшного. Но как результат — огромная куча проблем.

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

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

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

Что такое SDLC? Этапы, методология и процессы жизненного цикла программного обеспечения

Reading time 7 min
Views 242K
Цитируя автора книги Managing Information Technology Projects Джеймса Тейлора, «жизненный цикл проекта охватывает всю деятельность проекта». Задачей же разработки ПО является выполнение требований продукта. Если вы хотите научиться создавать и выпускать высококачественное ПО, вам придется следовать плану. Со слов Тейлора, вашей целью должен стать всесторонний анализ деятельности проекта и контроля каждого этапа его разработки. Вот только с чего именно начать?

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

Принципы работы SDLC и почему им пользуются


На диаграмме ниже можно ознакомиться с шестью основными этапами SDLC.



В целом, SDLC это такой замкнутый цикл, в котором каждый этап влияет на действия в последующих и дает перспективные указания на будущее. Для получения ответов на конкретные вопросы и обеспечения согласованности вашего процесса разработки все шесть этапов стараются эффективно и последовательно друг на друга влиять.
Читать дальше →
Total votes 9: ↑8 and ↓1 +7
Comments 1

С чего начинается Elasticsearch

Reading time 14 min
Views 214K

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


Самое первое и главное заблуждение — "нужен поиск, так бери эластик!". Но в действительности, если вам нужен шустрый поиск для небольшого или даже вполне себе крупного проекта, вам стоит разобраться в теме поподробней и вы откажетесь от использования именно этой системы.

Читать дальше →
Total votes 51: ↑50 and ↓1 +49
Comments 44

Девять граблей Elasticsearch, на которые я наступил

Reading time 7 min
Views 72K
Автор иллюстрации — Anton Gudim


«Подготовленный человек тоже наступает на грабли.
Но с другой стороны — там, где ручка.»


Elasticsearch — прекрасный инструмент, но каждый инструмент требует не только настройки и ухода, но и внимания к мелочам. Некоторые — незначительны и лежат на поверхности, а другие спрятаны так глубоко, что на поиск уйдет не один день, не один десяток кружек кофе и не один километр нервов. В этой статье расскажу про девять замечательных граблей в настройке эластика, на которые я наступил.
Давайте приступим
Total votes 59: ↑58 and ↓1 +57
Comments 69

Представляем онлайн-самоучитель по Kubernetes и деплою с werf для разработчиков

Reading time 3 min
Views 12K

Рады представить новую версию онлайн-самоучителя по werf, нашей CI/CD-утилите с открытым кодом!

Общая идея самоучителя — познакомить разработчиков с Kubernetes, показав на простых приложениях (готовы примеры для Ruby on Rails, Node.js и Laravel), как можно развертывать приложения в K8s с помощью werf. Это отличная возможность быстро освоить практические основы K8s без погружения в его объемную теоретическую базу. Если вы еще не решили, как провести новогодние каникулы с пользой, — вот вам идея.

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

30 сентября: Let's Encrypt и конец срока действия IdenTrust DST Root CA X3

Reading time 7 min
Views 238K

30 сентября 2021 14:01:15 GMT оканчивается срок действия корневого сертификата IdenTrust DST Root CA X3.

Это событие достойно вашего внимания по той причине, что после наступления этого момента ряд устаревших систем перестанут доверять сертификатам, выпущенным центром сертификации Let’s Encrypt. С учётом того, что на текущий момент Let's Encrypt предоставляет бесплатные криптографические сертификаты примерно для 250 миллионов доменных имен, а "устаревшие системы" - это порой системы возрастом всего 5-6 лет, вряд ли окончание срока действия сертификата DST Root CA X3 пройдёт для всех гладко и незаметно. В чём причина, кого конкретно это затронет, и что можно сделать?

Читать далее
Total votes 103: ↑102 and ↓1 +101
Comments 245

Тонкая настройка балансировки нагрузки

Reading time 22 min
Views 46K
В этой статье речь пойдет о балансировке нагрузки в веб-проектах. Многие считают, что решение этой задачи в распределении нагрузки между серверами — чем точнее, тем лучше. Но мы же знаем, что это не совсем так. Стабильность работы системы куда важнее с точки зрения бизнеса.



Маленький минутрый пик в 84 RPS «пятисоток» — это пять тысяч ошибок, которые получили реальные пользователи. Это много и это очень важно. Необходимо искать причины, проводить работу над ошибками и стараться впредь не допускать подобных ситуаций.

Николай Сивко (NikolaySivko) в своем докладе на RootConf 2018 рассказал о тонких и пока не очень популярных аспектах балансировки нагрузки:

  • когда повторять запрос (retries);
  • как выбрать значения для таймаутов;
  • как не убить нижележащие серверы в момент аварии/перегрузки;
  • нужны ли health checks;
  • как обрабатывать «мерцающие» проблемы.

Под катом расшифровка этого доклада.

Total votes 51: ↑49 and ↓2 +47
Comments 17

Apache Kafka: основы технологии

Reading time 9 min
Views 351K

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


Статья подготовлена на основе открытого занятия из видеокурса по Apache Kafka. Авторы — Анатолий Солдатов, Lead Engineer в Авито, и Александр Миронов, Infrastructure Engineer в Stripe. Базовые темы курса доступны на Youtube.

Total votes 29: ↑29 and ↓0 +29
Comments 10

MikroTik: L2VPN = EoIP + WireGuard (часть 1)

Reading time 5 min
Views 27K

Как позиционируют WireGuard это быстрый VPN нового поколения, в котором реализована современная криптография. Он изначально разрабатывался как более простая и удобная альтернатива существующим VPN.

Ну что, давайте протестируем данный протокол на примере Mikrotik. Возьмем версию прошивки Mikrotik RouterOS 7.1rc2 и протестируем.

Сделаем не просто связность, а реализуем схему: центральный офис + 2 удаленных офиса, все это на "серых" адресах, L2VPN (Ethernet over IP over WireGuard – нужно больше over) и подружим с CISCO.

Читать далее
Total votes 17: ↑16 and ↓1 +15
Comments 31

Правила умного дома

Reading time 7 min
Views 37K

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

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

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

Автоматизация на Home Assistant
Total votes 22: ↑17 and ↓5 +12
Comments 151

Удобная и долгожданная: поддержка enum в PHP 8.1

Reading time 7 min
Views 9.8K

В PHP 8.1 наконец-то добавили встроенную поддержку перечислений — enum. Под катом — перевод статьи блогера и PHP разработчика ​​Брента с обзором новых возможностей, дополнениям и комментариями разработчиков о том, что они думают о поддержке перечислений в PHP 8.1.

Как реализованы перечисления →
Total votes 17: ↑13 and ↓4 +9
Comments 8

Создаем Конечный Автомат на PHP

Reading time 6 min
Views 12K

Конечный Автомат (State Machine), также называемый Automata (да, как и игра), - это концепция для разработки, организации рабочих и технологических процессов с учетом текущего «состояния» какой-то задачи, изменения её состояний и, по возможности, для автоматизации процесса.

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

Читать далее
Total votes 17: ↑13 and ↓4 +9
Comments 11

Information

Rating
Does not participate
Location
Abazë, Durres, Албания
Date of birth
Registered
Activity