Вас приветствует Николай, добро пожаловать на мой персональный сайт 🙂

Сайт доступен по-русски и in English. Он демонстрирует способность проектировать и воплощать сложные Java веб-проекты с нуля, используя глубокие фундаментальные знания современных веб-технологий и лучших инженерных практик. Это результат отличного образования и более чем 20-летнего непрерывного опыта в области проектирования и разработки программных решений для различных заказчиков, включая крупнейшие мировые корпорации. Мне можно написать по электронной :етчоп показать адрес. Хорошего дня!

Демо-архитектура магазина

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

Модель описания архитектуры

[наверх]

Архитектура проекта оформлена на языке Structurizr и визуализирована с помощью Structurizr Site Generatr в рамках модели C4, где имеется 4 уровня детализации архитектуры:

  • контекст - показывает интеграции программной системы с другими системами
  • контейнеры - показывает, из чего состоит программная система
  • компоненты - показывает, из чего состоит контейнер
  • код - показывает процессы (см. пример)

В описаниях REST API, с целью уменьшения «визуального шума», не указаны HTTP-статусы ответов, общие для всех операций:

  • 401 - из-за отсутствия аутентификации пользователь неизвестен (для операций, недоступных анонимным пользователям)
  • 403 - аутентификация валидна, но текущий пользователь не имеет прав на выполнение конкретной операции
  • 400 - неверные данные в запросе, например отсутствует обязательный параметр, неверный формат даты и т.п.
  • 500 - внутренняя ошибка сервера

Цвет фона элементов

[наверх]

  • зелёный - клиенты, приложения на стороне клиента и запросы от них
  • синий - приложения на стороне сервера и запросы от них
  • коричневый - элементы серверной инфраструктуры и запросы от них
  • оранжевый - базы данных и запросы к ним
  • серый - внешние системы («третьи стороны»)

Общий вид

[наверх]

Здесь представлены все программные системы, включая внешние. Клик на любом элементе либо выбор в меню слева (кроме внешних систем) показывает его составные части, если есть.

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

  • плавно менять масштаб изображения колёсиком мыши
  • перемещать изображение мышью, удерживая её левую клавишу нажатой
  • скачать диаграмму в форматах: PNG (растровый) / SVG (векторный) / PUML (язык описания диаграмм)

Общий вид Общий вид Защищённый периметр сервера Приложения сервера(Backend) Реализуют бизнес-логику. Сервис статическихресурсов Отдаёт публичные файлы:JS, CSS, картинки. Сервисаутентификации Keycloak Реляционная базаданных Postgres Бизнес-аналитика Хранит и визуализируетсобытия. Брокер сообщений Kafka Кэш Redis Агрегатор логов Плюс полнотекстовыйпоиск любых данных. Агрегатор метрик Собирает и визуализируетметрики. Файловоехранилище MinIO Эмуляторemail-сервиса FakeSMTP SMS-сервис TODO - выбратьпоставщика Email-сервис TODO - выбратьпоставщика Входной шлюзсервера Балансирует нагрузку. Обычныйпользователь Авторизованный либоанонимный. Привилегированныйпользователь Сотрудник магазина либоадминистратор системы. Приложения клиента(Frontend) Интерфейс для работы ссервисами. Получаетбизнес-события Собирает логи Зеркалят данные издругих БД дляполнотекст. поиска[через Kafka] Собирает метрики Хранит метрикискорости[SQL] Хранит метаданные[SQL] Использует Использует Вызывают[REST] Проксируетаутентификацию[OAuth2] Хранит учётныезаписипользователей[SQL] Проксируетприложения сервера[REST] Проксируетстатические ресурсы[HTTP] Валидируют токендоступа[OpenID Connect] Кэшируют данные Отправляют иполучаютбизнес-события и пр. Посылают SMS[REST] Посылают письма(продакшн)[SMTP] Посылают письма(тестовые)[SMTP] Хранят файлы[AWS S3] Хранят данные[SQL]
Общий вид

0650e2da