Pull to refresh
19
0
Vladimir @mvs

Creator, founder, developer

Send message

Headless eCommerce на Laravel: Погружение в модульную архитектуру

Level of difficultyMedium
Reading time8 min
Views8.3K

Привет, Habr! Меня зовут Тальгат Хайруллов, я руководитель команды разработки в компании CS-Cart. В статье расскажу, как мы поверх Laravel реализовали фреймворк для быстрой и гибкой разработки API продукта с модульной архитектурой.

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

Читать далее

Изучение мидлварей в Laravel 11

Level of difficultyEasy
Reading time4 min
Views12K

Выход Laravel 11 намечен на первый квартал 2024-го года, что может произойти уже в следующем месяце.

Я начинаю новый проект, и поскольку дата выхода очень близка, решил взглянуть на то что изменится в новом крупном обновлении. Помню как пол года назад прочитал в Laravel News статью о том, что Http Kernel уходит в небытие, и не придал этому особого значения.

Когда я создал проект с помощью команды laravel new project --dev, я был очень удивлён тем, насколько уменьшился размер проекта. Было очень удивительно видеть пустую папку config (можно опубликовать файлы конфигурации при помощи команды php artisan config:publish)!

И, конечно же, там нет Http Kernel. Итак... как же добавить или изменить мидлвари? До Laravel 11 ядро Http Kernel, располагающееся по пути app/Http/Kernel.php,было местом хранения всей конфигурации для мидлварей. Также до Laravel 11 не было необходимости трогать руками файл bootstrap/app.php, если только Вы не использовали фреймворк Lumen. Однако в новой версии его нужно...

Трогать мидлвари

Использование Symfony / PHP (II)

Level of difficultyMedium
Reading time7 min
Views7K

Привет! Я, Андрей, Symfony разработчик - мы делаем сайты. Каждый день мы тратим много ресурсов на администрирование и базовые настройки проектов. В этой статье я продолжаю делиться опытом, как можно адаптировать фреймворк Symfony под свои нужды. Сегодня я расскажу как мы работаем с базой данных и Doctrine. Поехали

Читать далее

Использование Symfony / PHP

Level of difficultyMedium
Reading time11 min
Views12K

Привет! Я, Андрей, Symfony разработчик - мы делаем сайты. Каждый день у нас уходит много ресурсов на администрирование и базовые настройки проектов. В этой статье поделюсь опытом, как можно адаптировать фреймворк Symfony для оптимизации таких затрат, какие настройки мы проводим для обеспечения быстрого функционирования, и как мы взаимодействуем с REST клиентами. Поехали.

Поехали

Проектирование БД рекомендательной системы по подходу DB-first

Level of difficultyEasy
Reading time9 min
Views4.7K

В данной статье мы рассмотрим проектирование системы по подходу DB-first и то, какие проблемы он помогает не просто решить, а устранить как явление.

Читать далее

SQL HowTo: итоги по строкам и столбцам «в одно действие»

Level of difficultyMedium
Reading time4 min
Views17K

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

Читать далее

У нас есть должность «бадди» — приятеля, который поможет во всём

Reading time5 min
Views5.4K
image

«Дмитрий, помогите, пожалуйста, у меня не открывается рабочий стол. Уже половина десятого, а я ещё не залогинилась. Что мне делать? Как быть? Меня уволят».

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

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

Короче, адаптироваться. На это уходит какое-то время.

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

Легче обратиться к приятелю.

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

Кто такие бадди? Сотрудники, которые готовы помочь адаптироваться. Это не про руководство или наставничество, а про поддержку и комфорт.

Сейчас я расскажу, какую роль играют бадди в нашей системе онбординга.
Читать дальше →

Проблемы согласованности данных в микросервисах и их решение

Level of difficultyEasy
Reading time14 min
Views19K

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

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

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

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

Читать далее

Symfony под капотом: Symfony Messenger и механизм повторной обработки сообщений при ошибках

Level of difficultyMedium
Reading time12 min
Views7.8K

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

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

Читать далее

Как один российский банк пытался запустить бренд-медиа об ИИ. Нечеловеческая комедия в 3 частях

Level of difficultyEasy
Reading time11 min
Views5.6K

Привет, я журналист и редактор с 16-летним опытом работы в крупных российских СМИ, в основном, в сфере ИТ и экономики/бизнеса, в т.ч. банковского ИТ. В моём активе из профильных изданий опыт работы в CNews, РБК, «Секрете фирмы», «Ведомостях», а также запуск бренд-медиа (бизнес/экономика) в холдинге VK в качестве шеф-редактора.  

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

Читать далее

Сколько нужно ядер cpu, чтобы выдержать 30k+ rps?

Level of difficultyMedium
Reading time6 min
Views10K

Меня зовут Вадим Ивахин, я техлид в Vi.Tech — это IT-дочка ВсеИнструменты.ру.

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

Читать далее

Про локацию в профиле

Level of difficultyEasy
Reading time3 min
Views9K

У меня многолетний опыт удаленной работы из разных локаций мира от привычных фрилансерских островов Юго-Восточной Азии до мировых столиц вроде Лондона. В этой заметке я хочу рассказать о своих наблюдениях. И показать, насколько сильно локация влияет на возможности в go global!

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

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

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

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

2️⃣ Или например на второй год странствий немало талантливых дизайн-агентств мск/спб планирует переезд в Барселону. Про быт нет вопросов: считаю этот город лучшим в мире для жизни. 

Но делать свое агентство барселонским - это значит:

а/ Задать невысокие ожидания по чеку: для американского бизнеса что Барселона, что Верона, что Лиссабона - примерно одно и то же. Читай: "в Европе закажем подешевле". А чеки побольше будут уходить тем, кто переехал в Лондон, Нью-Йорк, Долину или хотя бы в Дублин.

Читать далее

Solutions architect, который не пишет код

Level of difficultyMedium
Reading time4 min
Views6.9K

В данной статье рассматривается профстандарт архитектора ПО (06.003).

Чем он занимается и как им стать.

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

Читать далее

Backend Driven UI с точки зрения бэкенда: к чему готовиться, если вы решили на него перейти

Reading time10 min
Views12K

Многим знаком подход Backend Driven UI. С его помощью можно создавать новые страницы, запускать А/B-тесты, легко менять флоу в любое время и сразу на всех платформах. И при этом не надо долго и мучительно перевыкатывать приложение.

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

Читать далее

Зачем банкам менять интерфейсы, и как это сделать, если вы тоже хотите

Level of difficultyMedium
Reading time8 min
Views4.3K

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

Финтех давно перестал быть чем-то исключительным, став доступнее для широкой аудитории. Управление личными финансами, инвестиции, а в b2b — выполнение рабочих задач, превратились в рутину, наравне с вызовом такси или заказом продуктов. Любой из этих сервисов вносит лепту в формирование представления о «хорошем сервисе».

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

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

Читать далее

Асинхронный API First

Level of difficultyEasy
Reading time17 min
Views15K

API-First — один из популярных подходов к проектированию серверных приложений. Для обеспечения этого подхода создано множество программных продуктов. Однако сложно найти продукт, который поможет реализовать этот подход для серверных приложений, использующих брокеры сообщений в качестве средства интеграции —  такие, как Apache Kafka, RabbitMQ, Apache ActiveMQ. Мы решили это исправить и представляем вам свое решение AxenAPI.

Читать далее

Сервисы: строим масштабируемые и гибкие приложения с помощью чистой архитектуры

Level of difficultyMedium
Reading time10 min
Views5.5K

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

Изменение API вы можете встретить в разных кейсах. От изменение протоколов взаимодействия с сетью до изменения нативных API биометрией.

Узнай как сделать приложение масштабируемым и не наступать на грабли!

Читай и не наступай на грабли ?

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

Reading time11 min
Views24K

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

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

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

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

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

Читать далее

Многоуровневая группировка в SQL: Grouping sets

Level of difficultyMedium
Reading time3 min
Views18K

Описан основной принцип работы конструкции Grouping sets в SQL на примере. Статья будет полезна для тех, кто хочет быстро разобраться с основными принципами группировки с использованием Grouping sets.

Читать далее

Вы кто такие, я вас не знаю, или Как мы делаем JWT-аутентификацию

Level of difficultyMedium
Reading time11 min
Views87K

Привет! Меня зовут Данил, я backend-разработчик в Doubletapp. Почти во всех наших проектах есть пользователи, которые могут войти в систему. А значит, нам почти всегда нужна авторизация. Мы используем авторизацию, построенную на JSON Web Token. Она отлично сочетает в себе простоту реализации и безопасность для приложений.

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

Путеводитель:

Что такое JSON Web Token?
Использование и реализация
Простая реализация JWT
Access и refresh tokens
Как отозвать токены
Доступ с нескольких устройств
Удаление старых данных
Резюмируем

Читать далее

Information

Rating
Does not participate
Date of birth
Registered
Activity