Обновить
0
Сергей Жуков@devalineread⁠-⁠only

Программист

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

Как перейти от монолита к микросервисам без сложностей и рисков? Четыре проверенных паттерна

Уровень сложностиСредний
Время на прочтение3 мин
Охват и читатели19K

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

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

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

Использование в практике таких паттернов как Strangler Fig Pattern, Parallel Run Pattern, Decorating Collaborator Pattern и Change Data Capture позволяет разработчикам значительно снизить риски и проблемы, возникающие при таком сложном переходе.

Давайте рассмотрим основные концепции этих паттернов.

Читать далее

Как тестировать подписочный экран в мобильном приложении

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели3.1K

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

Подписку мы чаще всего покупаем на подписочном экране (можно еще услышать, что его называют subscreen или paywall). Поэтому сегодня будем тестировать именно его.

Читать далее

90% разработчиков не понимают принцип инверсии зависимостей из SOLID. DIP — это не про абстракции

Время на прочтение4 мин
Охват и читатели107K

Зачастую, когда речь заходит про принцип инверсии зависимостей, можно услышать, что инверсия зависимостей (далее DIP) — это что-то там про зависимость от абстракций, и приводятся примеры, где в качестве «плохого» случая, используются конкретные классы, а в исправленном случае, используются абстрактные классы или интерфейсы. Но такая трактовка принципа в корне неверна.

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

Читать далее

7 основных этапов реагирования на ИТ-инциденты, используя мониторинг Monq

Уровень сложностиСредний
Время на прочтение17 мин
Охват и читатели4.3K

Эффективное реагирование на инциденты — это ключевая задача команды ITOps (IT Operations), которая помогает поддерживать стабильность и безопасность ИТ-инфраструктуры предприятия. Весь процесс состоит из нескольких этапов, каждый из которых играет важную роль в минимизации ущерба, восстановлении работы и предотвращении будущих сбоев. В этой статье разберем сущность каждого этапа, чтобы показать как обеспечить систематизированное и оперативное реагирование на инциденты в ИТ-среде.

Читать далее

Про рабочую тревожность и про то, как с ней справляться

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели12K

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

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

Читать далее

Todo-лист на максималках: разбираем архитектуру крупного приложения

Уровень сложностиСложный
Время на прочтение31 мин
Охват и читатели16K

В этой статье я покажу, как устроена многослойная архитектура крупного реактивного web-приложения, и особенности его запуска под Electron. Материал будет полезен, если вы планируете начать свою разработку, хотите попробовать себя в роли архитектора, вас не пугает Shared Workers, Service Workers или, в конце концов, вы хотите это попробовать или разобраться.

Читать далее

Как спроектировать мобильное приложение маркетплейса за 7 шагов

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели4.9K

Маркетплейсы занимают ключевую роль в цифровой экономике: на площадках проще покупать и продавать. На Wildberries и Ozon пришлось 78% всех заказов в российской электронной торговле за второе полугодие 2023 года, а количество заказов увеличилось до 5,1 млрд.

В этом материале мы рассмотрим основные шаги для запуска мобильного приложения своего маркетплейса. Статья охватывает разные методы разработки — от nocode-платформ до кастомных решений и гибридных подходов с использованием headless CMS. Это поможет выбрать технологии и стратегии для проекта.

Читать далее

Репликация данных с использованием Debezium и Kafka

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

В этой статье мы рассмотрим эволюцию стратегий репликации данных, начиная с ручных подходов и заканчивая автоматизированными решениями, использующими современные технологии, такие как Kafka и Debezium. Ниже описан пример примененный в компании Wildberries.

Читать далее

Перевод CLI-приложения на Python: локализация click и typer с GNU gettext

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

Для регистрации ПО в реестре Минцифры России нужно соблюсти несколько условий, одно из них — наличие русского языка на сайте и в документах. И хотя требований к языку в самом программном обеспечении я не нашёл (может быть, пока), но задача по русификации интерфейса появилась.

Мы в «Тантор Лабс» развиваем корпоративную платформу баз данных Tantor XData, один из её компонентов — CLI (интерфейс командной строки) на Python с библиотекой Typer, которая, в свою очередь, написана поверх Click. Этот инструмент мы и попробуем русифицировать, а в идеале — научимся переводить приложение на разные языки, если потребуется.

В статье рассмотрим концепции и инструменты, применяемые для локализации, включая использование библиотеки gettext в Python, а также стандарты, предоставляемые GNU gettext. Разберём работу с .pot, .po и .mo файлами, а также обработку плюральных форм, учитывающих языковые особенности множественных чисел.

Читать далее

Простой мини-чат на FastApi: Современный интерфейс, вебсокеты и SQLAlchemy с деплоем

Время на прочтение40 мин
Охват и читатели57K

Привет, друзья! Сегодня я подготовил для вас увлекательную практическую статью о создании мини-чата на FastApi. Мы погрузимся в мир вебсокетов, узнаем, зачем они нужны и как применяются в реальных приложениях. Также я продемонстрирую работу с асинхронной SQLAlchemy на примере взаимодействия с базой данных SQLite.

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

Чтобы наш чат мог обслуживать множество пользователей одновременно, мы выполним деплой нашего FastApi приложения. Для этого воспользуемся сервисом Amvera Cloud. Нам нужно будет подготовить файлы приложения, написать код, создать файл с настройками (можно сгенерировать на сайте или скопировать мой код), а затем доставить файлы на сервис. Для доставки можно использовать встроенный терминал или GIT, используя стандартные команды PUSH/PULL.

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

Читать далее

Мутации в микросервисах: применяем Temporal

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели51K

Всем привет!
В прошлой статье была поставлена задача о надёжных мутациях и транзакциях в архитектуре Профи, в этой статье разберём один из вариантов решения — применить workflow-engine Temporal.

Читать далее

Льем из Postgres в Elastic консистентно

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

Предположим, что у нас есть Postgres, Kafka и Elastic. В Postgres живет сущность, например, item.

Иногда возникает необходимость создать поисковый индекс отдельно от основной базы.

Например, если мы не хотим обрушивать поисковый трафик на Postgres мы можем вынести данные из него в Elastic.

И все бы хорошо, если актуальность не требуется - просто запускать крон пересборки индекса в Elastic каждую ночь.

Но что если данные нам нужны актуальные, и ситуация, что через секунду после записи сущности в Postgres запрос на её чтение отдает Not Found - неприемлема?

Читать далее

Как сократить время ответа в 2 раза, добавив одну строку кода

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели69K

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

В этой статье мы поделимся:

1. Описанием, как мы использовали инструменты Jaeger и Grafana для выявления узких мест в производительности, что привело к выявлению критических проблем со сборщиком мусора;

2. Анализом влияния различных настроек сборщика мусора на время ответа, что позволило сократить его вдвое для 99% запросов;

3. Когда и почему стоит рассматривать изменение стандартных настроек сборщика мусора (на примере нашего случая).

Читать далее

Как мы внедрили генеративную модель в объявления на Авто.ру. Доклад Яндекса

Время на прочтение6 мин
Охват и читатели3.5K

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

Переложили выступление ребят в текст для удобства читателей Хабра.

Читать далее

Настройка Nginx multiple reverse proxy для k3s+istio

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели21K

Всем читателям, привет! Хочется поделиться своим опытом по созданию Nginx reverse proxy для интересного кейса.

Есть 1 ip и на него нацелено n доменов
Есть n серверов (за NAT)
Когда пользователь заходит на домен_1 попадает на сервер_1
Когда пользователь заходит на домен_2 попадает на сервер_2
Когда пользователь заходит на домен_n попадает на сервер_n

Читать далее

Сравнение инструментов для генерации thumbnails: imgproxy, thumbor, imaginary, picfit, imageproxy и weserv/images

Время на прочтение5 мин
Охват и читатели8.6K

Жил был один новостной проект. Время шло, одни фичи добавлялись, вторые удалялись... Одной из важнейший фишек была генерация превьюшек к картинкам (thumbnails), а именно - быстрая генерация (до 5 минут) всех thumbnails. Все было хорошо, пока не начали поступать жалобы, что, иногда, генерация не успевает за 5 минут все сделать. Начали "копать" и обнаружили интересную вещь: мы генерим 112 превьюшек к одной картинке. Нашей "радости" не было предела. После небольших дискуссий было решено увеличить maxReplicas до 60 в HPA (проблема возникала когда загружалось больше 80 картинок), так как это самое быстрое и дешевое решение.

Читать далее

Как мы разработали приложение для знакомств в Telegram

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

С уходом Tinder из России и Беларуси открылась довольно широкая ниша для приложений специализирующихся на знакомствах. Некоторые из таких приложений пошли в жестокую монетизацию, высасывая из пришедших бедолаг деньги, не рассчитывая на длительный успех, некоторые заняли свою нишу и ведут себя более скромно. Однако по нашему субъективному мнению не все пользователи тиндер нашли для себя замену и все еще жаждут новых знакомств. Поэтому мы решили ворваться в этот рынок и сделать доступное для всех приложение, где каждый смог бы найти для себя кого‑то интересного. Сейчас все расскажем подробнее.

Читать далее

gRPC: проблемы и решения при переходе с REST

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

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

Привет! Меня зовут Игорь Алексеев и я работаю бэкенд-разработчиком в компании Garage Eight. Некоторое время назад я внедрил gRPC для части своих сервисов. В этой статье поговорим о том, что такое gRPC, сравним его с возможными альтернативами, рассмотрим преимущества gRPC и пробежимся по проблемам, которые возникают почти в каждом проекте, где этот протокол приходится внедрять.

Читать далее

Системный аналитик. Краткий гайд по профессии. Часть 2. Сбор, анализ и документирование требований (UML, BPMN)

Уровень сложностиПростой
Время на прочтение13 мин
Охват и читатели111K

Из этой статьи вы узнаете о типах требований и рассмотрите пример их оформления, познакомитесь с основными методами их сбора, рассмотрите основные типы диаграмм (Use Case, Sequence, State, Class, ER-diagram, BPMN) и инструменты, используемые при их документировании.

Предыдущая статья: Системный аналитик. Краткий гайд по профессии. Часть 1

Читать далее

Микросервисы для тех, кто прикидывается разработчиком. Часть 2

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели31K

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

Читать далее...

Информация

В рейтинге
Не участвует
Откуда
Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Специалист
Средний
Python
Docker
Django
FastAPI
Blockchain
Solidity
JavaScript
Nuxt.js
Безопасность сетей