Pull to refresh
24
0
Антон Зубарев @aszubarev

User

Send message

Spring Cloud Gateway. Единая точка входа или отказа: путь к non-blocking API gateway

Level of difficultyHard
Reading time20 min
Views13K

Привет, Хабр! Меня зовут Никита Летов, я техлид бэкенд-разработки сервисов дистанционного банковского обслуживания Росбанка для физических лиц, или как модно сейчас говорить, ретейла. В этом посте я расскажу, что такое входная точка в приложение, когда в ней появляется необходимость и какие вообще задачи решает паттерн API Gateway. Мы рассмотрим классический блокирующий подход на примере гейтвея Netflix Zuul 1.x, проблемы, связанные с его эксплуатацией, а также реактивный Spring Cloud Gateway и сложности перехода на него. В заключение сравним два подхода.

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

Как я пытался облегчить работу в поликлинике

Level of difficultyEasy
Reading time5 min
Views11K

Работа врача поистине тяжелая. Для того, чтобы облегчить ее и сделать чуточку проще, попробовал с помощью «No‑code» разработать удобное приложение, по подобию доставки. Что из этого вышло и почему бессмысленно.

Подробнее об опыте
Total votes 25: ↑23 and ↓2+25
Comments23

Пример для иллюстрации принципов SOLID который я (кажется) понял

Level of difficultyMedium
Reading time17 min
Views39K

Это перевод вступления из электронной книги - документа.

Авторы утверждают что:

В этой главе вы увидите, как можно удовлетворить некоторые из распространенных требований корпоративных приложений (приложений для бизнеса), таких как низкая стоимость (простота) сопровождения и тестируемость, применяя слабосвязанный дизайн для вашего приложения. Вы увидите очень простую иллюстрацию этого подхода в примерах кода, которые показывают два разных способа реализации зависимости между классами ManagementController и TenantStore. Вы также увидите, как принципы объектно-ориентированного программирования SOLID связаны с теми же проблемами (имеются ввиду проблемы стоимости сопровождения = исправления ошибок + возможности расширения функциональности и тестируемости).

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

Ory Kratos — коробочный SSO

Level of difficultyMedium
Reading time9 min
Views6.8K

Ory Kratos - современный cloud native сервер идентификации с поддержкой PassKeys, MFA, FIDO2, TOTP, WebAuthn, с возможностью управления профилями, схемами пользователей, входом через внешние сервисы, регистрацией, восстановлением аккаунта, с поддержкой passwordless входа. Написан на Go, headless, API-first.

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

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

Внутренний Я(ндекс)

Level of difficultyEasy
Reading time8 min
Views84K

В этой статье я хочу описать (часть) моего опыта взаимодействия со структурой, именуемой в дальнейшем «яндекс», с точки зрения работника. Опишу собеседования и этап «входа».

Да, уже были статьи про собеседование и даже в эту же структуру, некоторые из них я видел, но не во всём с ними согласен, к тому же конкретно С++ разработчиков я там не видел.

Читать далее
Total votes 397: ↑391 and ↓6+457
Comments288

5 практик тестирования, которые должны быть в вашем CI/CD-процессе

Level of difficultyMedium
Reading time7 min
Views12K

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

Позвольте мне рассказать вам историю...

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

Почему рукописную подпись считают надёжным способом аутентификации (и так ли это на самом деле)

Reading time7 min
Views14K
image

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

Автограф должен подтверждать подлинность документа. Например, в банках сотрудники по-прежнему сравнивают подписи в документах и в паспорте.

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

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

Разумеется, когда встаёт вопрос крупной сделки, нужны дополнительные верифицирующие факторы.

И, кажется, подписи уже отживают своё.
Читать дальше →
Total votes 26: ↑26 and ↓0+26
Comments46

Автоматические бэкапы БД PostgreSQL по расписанию

Level of difficultyEasy
Reading time6 min
Views17K

В этой статье я поделюсь скриптом для создания бэкапов БД PostgreSQL за определенный период (например: 1, 2, 3 дня, 1 неделя, 1 месяц, 6 месяцев, каждый год).
Объясню как запустить скрипт с помощью расписания crontab, покажу как настроить синхронизацию папки с бэкапами с облаком Yandex Disk.

Читать далее
Total votes 7: ↑4 and ↓3+3
Comments82

Архитектура серверного рендеринга для SPA

Level of difficultyEasy
Reading time6 min
Views5.4K

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

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

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

Читать далее
Total votes 17: ↑10 and ↓7+7
Comments3

Как мы научили заводчан строить красивые инженерные отчеты из Jupyter Notebook на Python

Reading time14 min
Views29K

Была у нас тут история, когда легкий перфекционизм помог привести в порядок конструкторскую документацию и регулярно экономить инженерам кучу дней на прохождение бюрократических процедур. В ее основе – создание системы управления расчетными данными и переход от трудночитаемых и трудноинтегрируемых отчетов Mathcad к гибкой связке Jupyter Notebook с Python и Teamcenter. Но основной рассказ будет про то, как преобразовывать и экспортировать математические формулы, таблицы и другие элементы из Jupyter в красивый и удобный вид.

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

Мой опыт собеседования в Google [оффер на L5]

Level of difficultyEasy
Reading time8 min
Views55K

Предупреждение: я не смогу привести в статье конкретные вопросы из-за подписанного соглашения о неразглашении (NDA).

Работая в лондонском офисе Facebook в команде Instagram*, я начал задумываться о возвращении в Индию. В ноябре 2022 года со мной связался рекрутер Google. Он сообщил об открытии в Бангалоре должности уровня L5 и спросил, интересно ли мне это.

Так как я уже раздумывал о переезде в Индию, то ранее собеседовался в Google, но мне предложили более низкую должность (L4), чем я хотел; потом я устроился в META* на уровень E5.

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

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

На этот раз в процессе подготовки возникла уникальная для меня сложность — счастливое пополнение в моей семье, дочка. За моё внимание боролись подгузники и кодинг, было очень сложно выделить время на сосредоточенную подготовку! У меня было примерно 25-30 дней на освоение и искусства ухода за ребёнком, и прохождения собеседования.
Читать дальше →
Total votes 62: ↑58 and ↓4+82
Comments95

Как мы делали подсказки в продукте для корпоративного поиска на базе Elasticsearch

Reading time3 min
Views3K

Казалось бы поисковые подсказки (автокомплит) простая и понятная вещь, реализованная во множестве проектов и работающая из коробки. 

Как бы не так. 

Под катом расскажем про существующие подходы, их ограничения, и как мы вышли из положения для реализации подсказок в продукте для корпоративного поиска Content AI Intelligent Search

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

В поисках идеальной СУБД: обзор Postgres Pro, Jatoba и Tantor

Level of difficultyEasy
Reading time18 min
Views10K

Выбор подходящей системы управления базами данных (СУБД) для корпоративного использования всегда был непростой задачей, а в условиях необходимости импортозамещения этот выбор приобретает критическую значимость для многих организаций.

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

Бесплатный PostgreSQL тоже звучит заманчиво, но не забывайте, что придется потратить время на его настройку и, возможно, даже на внесение изменений в исходный код, если вам потребуется больше мощностей. И еще один момент – качественная поддержка. Если возникнут проблемы, кто вам поможет их решить? В общем, выбор СУБД – дело серьезное!

Читать далее
Total votes 17: ↑4 and ↓13-7
Comments27

Прекратите клепать базы данных

Reading time15 min
Views63K

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

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

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

Читать далее
Total votes 37: ↑31 and ↓6+37
Comments45

Компоновка аннотаций в Spring

Reading time6 min
Views8.8K

Привет Хабр! Совсем недавно, в процессе разработки на Spring я столкнулся с невероятным количеством бойлерплейт-кода в аннотациях. Решение сделать с этим что-то было принято мгновенно и вот что из этого вышло...

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

Организуем High Availability PostgreSQL

Reading time7 min
Views19K

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

Читать далее
Total votes 17: ↑14 and ↓3+14
Comments28

Мапы в Go: уровень Pro

Reading time16 min
Views24K

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

Читать далее
Total votes 14: ↑12 and ↓2+15
Comments11

Проектируйте правильно

Level of difficultyHard
Reading time11 min
Views18K

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

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

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

Читать далее
Total votes 22: ↑20 and ↓2+26
Comments5

Мастерство многопоточности: Превращаем Java в шедевр параллельного программирования

Level of difficultyEasy
Reading time4 min
Views16K

Всем привет! В этой статье я бы хотел поверхностно пройтись по многопоточности в Java, объяснить, где она используется и зачем нужна.Приятного прочтения!

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

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

Читать далее
Total votes 34: ↑2 and ↓32-30
Comments10

Моя любимая задача для собеседований по программированию

Level of difficultyMedium
Reading time9 min
Views99K

В сети есть уйма постов и видео, где разбираются ответы на вопросы LeetCode. Но обычно рассмотрение в них происходит с позиции соискателя, а не работодателя. В этой же статье я приведу разбор собственной задачи по программированию, которую использовал при приёме людей на работу в Amazon, Google и Microsoft.
Читать дальше →
Total votes 100: ↑95 and ↓5+121
Comments170

Information

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

Specialization

Backend Developer, Software Architect
Lead
Git
SQL
Docker
Python
Django
RabbitMQ
Kubernetes
Database
Designing application architecture
Creating project architecture