6.20M
Категория: ИнтернетИнтернет

Проект SMarket

1.

Курсовой проект
SMarket
Проект ПЕРЕЗАПУСК

2.

Описание проекта
• Проект SMarket представляет
повседневного спроса.
собой
интернет-магазин
товаров
• Платформа имеет удобный интерфейс, где все товары разделены по
категориям.
• Благодаря простой навигации,
определиться с выбором товара.
пользователю
не
составит
труда

3.

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

4.

Проект SMarket

5.

Панель администратора

6.

Техническая часть
Интернет-магазин SMarket - проект, основанный на микросервисной
архитектуре. Каждый микросервис выполняет определённый функционал.
Проект включает в себя пять сервисов взаимосвязанных между собой
через REST, а также через брокер сообщений Apache Kafka.
• Сервис обеспечивающий работу с товарами (Stock-Service)
• Сервис отвечающий за ценообразование товаров (Price-Service)

7.

• Сервис обеспечивающий работу с авторизацией пользователей (User-Service)
• Фронтовое приложение для вывода товаров (Market-Front-App)
• Фронтовое приложения для администрирования цен, добавления/удаления
товаров (Admin-Front-App)

8.

Stock-service
• Spring Boot приложение с подключением к базе данных PostgreSQL .
• Сервис хранит описание товаров: цена, название, категория, количество,
производитель и др. Позволяет создавать, редактировать,
резервировать, удалять товары, получать информацию о товарах.
• Подключение к базе данных происходит через стандарт JDBC. Структура
базы данных создается при помощи Liquibase.
• Данный сервис использует программного брокера сообщений Apache
Kafka для оперативного уведомления об удалении, добавлении,
изменении состояния товара.

9.

API сервиса
• GET /stock/item?itemId={itemId}
• GET /stock/item/all/byCategory?categoryId={categoryId}
• GET /stock/сategory/all
• GET /stock/item/all
• POST /stock/item
• POST /stock/reserve?itemId={itemId}&count={count}
• POST /stock/unreserve?itemId={itemId}&count={count}
• PUT /stock/item
• DELETE /stock/item?itemId={itemId}
Ссылка на репозиторий:
https://gitlab.com/martynets.aleksandr/stock-service

10.

Price-service
• Сервис отвечающий за ценообразование товаров.
• Spring Boot приложение с подключением к базе данных PostgreSQL с
использованием библиотеки Hibernate.
• Структура базы данных создается при помощи Liquibase.
• Данный сервис использует программного брокера сообщений Apache
Kafka для оперативного уведомления об удалении, добавлении,
изменении состояния цены на товар.

11.

API сервиса
• GET /price?itemId={itemId} (возвращает цену с заданным ID товара )
• DELETE /price?itemId={itemId} (удаляет цену с заданным ID товара)
• PUT /price?itemId={itemId} (обновляет цену с заданным ID товара)
• POST /price/create (создает новую цену товара в БД)
• PUT /price/all (обновляет цены списка товаров)
• GET /price/all (возвращает цены списка товаров)
Ссылка на репозиторий:
https://gitlab.com/martynets.aleksandr/price-service

12.

User-service
• Сервис представляет собой Spring Boot приложение, которое
обеспечивает работу с учётными записями пользователей.
• Информация о пользователях хранится в базе данных PostgreSQL.
Взаимодействие с базой данных осуществляется посредством Spring
Data.

13.

API сервиса
• GET /auth/user/byUserId?userId={userId}
• GET /auth/user/byLogin?login={login}
• DELETE /auth/user/user?userId={userId}
• POST /auth/user
• PUT /auth/user
• GET /auth/user/all
• GET /auth/user/all/byRoles?roles={roles}
Ссылка на репозиторий:
https://gitlab.com/martynets.aleksandr/user-service

14.

Market-front-app
• Фронтовое приложение реализует пользовательский интерфейс и
позволяет клиенту ознакомиться со списком товаров. Источником
данных является stock-service и price-service, взаимодействие
осуществляется через REST.
• Данный сервис оперативно реагирует на изменение списка товаров и
цен на них;

15.

API сервиса
• GET market/category/all
• GET market/item/all/byCategory?categoryId={categoryId}
Ссылка на репозиторий:
https://gitlab.com/martynets.aleksandr/market-front-app

16.

Admin-front-app
• Фронтовое
приложения
для
администрирования
цен,
добавления/удаления товаров. Источником данных является stockservice и price-service, взаимодействие осуществляется через REST.
• Данный сервис оперативно реагирует на изменение списка товаров и
цен на них, вычитывая сообщения из Apache Kafka;
• Вход в административную панель осуществляется с использованием
Spring Security.

17.

API сервиса
• GET admin/item/all
• PUT admin/item/price?itemId={itemId}&price={price}
• DELETE admin/item/price?itemId={itemId}
• POST admin/item
Ссылка на репозиторий:
https://gitlab.com/martynets.alesandr/smarket-admin/-/tree/develop/admin-front-app

18.

Архитектура
Kafka
market-front-app
Item
Cache
Price
Cache
Kafka
Hibernate
JDBC
Item
stock-service
SMarket
Kafka
admin-front-app
Item
Cache
Spring
Data
User
user-service
Spring Security
Price
Cache
price-service
Kafka
Price

19.

Используемые технологии
• JDBC
• Liquibase
• Kafka
• JUnit
• Mockito
• Git

20.

• Spring Boot
• Spring MVC
• Spring Rest Template
• Spring Data
• Spring Security
• Hibernate

21.

Команда проекта
Куратор проекта:
Мартынец Александр
Участники:
Адамов Алексей
Ефремов Сергей
Землянигин Сергей
Мазуров Александр
Минакова Ольга
Солобаев Александр
Тарновский Филипп

22.

Адамов Алексей Александрович
Работаю в Сбере с 2013 года. В блоке Технологий с 2015 года.
Своим достижением в работе считаю переход в автоматизацию в роли разработчика
благодаря курсу Перезагрузка.
Люблю активный отдых.
Землянигин Сергей Александрович
Образование высшее (не профильное)
Разработчик PL\SQL

23.

Тарновский Филипп Владимирович
Изучаю Java больше года, на данный момент завершаю обучение по корпоративной
программе переподготовки Сбербанка “Школа Java Developer”
Разрабатываю сервис хранения данных о товарах (Spring Boot, MVC, Security, Hibernate,
Kafka, Postgres) для электронного магазина.
Для stock-service мной разработан контроллер сервиса, сервис для работы с продуктами,
а так же реализовано взаимодействие с price-service через брокер сообщений
Ефремов Сергей Владимирович
МФТИ, полгода в Сбере системный аналитик, senior sql developer в прошлом.
Мазуров Александр Павлович
В Сбере 10 лет. Разработкой занимаюсь последние 4 года.
На данный момент основная специализация – разработка RPA алгоритмов

24.

Минакова Ольга Михайловна
7 месяцев работы в Сбере.
Без опыта разработки с нуля, но есть небольшой опыт программирования/доработках
Солобаев Александр Павлович
Поволжский Государственный Университет Телекоммуникаций и Информатики,
информатика и вычислительная техника
Последние 11 месяцев занимаю должность ведущего инженера. В обязанности входит:
-Full stack разработка в АС Автоматизация производственной деятельности МЦТП
(ФП Рабочее место инженера и ФП Инструменты качества)
-Построение процессов CI/CD
-Разработка архитектуры сервисов приложения

25.

Участие в проекте «SMarket»
Stock-service
Тарновский Филипп, Землянигин Сергей команда Stock-service
получает и обрабатывает CRUD запросы от фронта через REST. Включает в себя БД
PostgreSQL
общается с сервисом price-service посредством брокера сообщений Kafcka.
совместная разработка концепции сервиса и его реализация на framework Spring Boot
проектирование БД PostgreSQL и реализация с использованием системы управления
версиями БД Liquibase
написание Unit-тестов
реализация логгирования работы сервиса

26.

Price-service
Мазуров Александр ответственный за Price сервис
Реализовано API для
записи/изменения/удаления цен по ID из таблицы БД
получает цену товара по заданному ID
Реализовано
создание структуры БД при помощи Liquibas
Работа с kafka для оперативного уведомления об удалении, добавлении, изменении
состояния цены на товар

27.

User-service
Ефремов Сергей
ответственен за подключение spring security и Kafka к user service.
Минакова Ольга
API для
записи/изменения/удаления пользователей из таблицы PostgreSQL
получения списка всех пользователей и списка пользователей по их ролям / получения
данных пользователя по его логину
авторизация пользователя с выдачей токена
Реализация слоя бизнес логики и доступа к данным:
шифрование пароля для хранения в таблице
создание токена и помещение его в кафку
логирование работы методов и исключительных ситуаций

28.

Market-front-app
Солобаев Александр ответственный за разработку сервиса
Разработка клиентской части проекта, приложение client-frontend-app.
Приложение написано на TypeScript с применением reactJs, reduxJs и material UI kit. Сервис
взаимодействует с Stock и Price сервисами по REST и позволяет просматривать каталог
товаров, добавлять их в корзину и производить резервирование товара.
Приложение упаковано в дистрибутив на базе docker-образа NGINX 1.20 и может
управляться оркестраторами Kubernetes или RHOS.
Архитектура проекта позволяет легко и быстро масштабировать реплики приложения для
увеличения его стабильности и производительности

29.

Admin-front-app
Адамов Алексей
Разрабатывал свой микро сервис. Активно участвовал в обсуждении проекта
Реализовал фронтовое приложение для администрирования цен, добавления и удаления
товаров.
Источником данных является stock-service и price-service, взаимодействие осуществляется
через REST
Данный сервис оперативно реагирует на изменение списка товар и цен на них, вычитывая
сообщения из Apache Kafka
Вход в административную панель осуществляется с использованием Spring Security.
Источником данных является user-service

30.

О проекте ПЕРЕЗАГРУЗКА
Минакова Ольга:
Отличная организация процесса обучения. Лекции подаются простым, понятным языком.
Отдельный плюс за большое количество практических заданий.
Преподаватели дали не только лекции, но и поделились тонкостями и секретами разработки.
Приятно общаться с профессионалами и энтузиастами своего дела. Александр, как куратор,
очень помог с финальным проектом. Ему отдельная благодарность.
Александр, Антон, вы лучшие! Спасибо за курс!
Солобаев Александр:
Дружеская атмосфера, ламповые практикумы.
Особая благодарность Александру, спасибо!
Ефремов Сергей
Замечательный проект, немного напряжённое выполнение проектного задания

31.

Адамов Алексей:
Данный проект попал на глаза случайно, среди прочих рассылок. По итогу - проект помог круто
изменить свою карьеру.
Благодаря проекту Перезапуск я работаю в прекрасной команде, занимаюсь по настоящему
интересной работой. Улучшил материальное положение!
Хочу выразить благодарность составителям и кураторам данного курса.
Не представляю, есть ли за пределами сбера, такие шикарные условия бесплатного для
сотрудника обучения и саморазвития.
Нашим преподавателям Александру и Антону хочу от души сказать большое человеческое
СПАСИБО за прекрасную работу, ответственность и интересный творческий подход к решению
задач на практических занятиях.
Желаю Вам и дальше с таким энтузиазмом учить новых студентов!

32.

Мазуров Александр:
Курс очень понравился, много узнал, полученные знания буду использовать в работе. Буду
рекомендовать курс коллегам.
Тарновский Филипп
Проект «Перезагрузка» помог мне значительно улучшить мои навыки в разработке Java
приложений, позволил посмотреть на работу с брокерами сообщений со стороны
разработчика. Потребовалось не мало усилий, чтобы дойти до конца, но оно того стоило.
В данный момент я уже вижу как приобретенный опыт помогает мне в работе. Во время
обучения мне удалось познакомиться с интересными людьми, а опыт работы в команде
позволил прочувствовать дух настоящей разработки
Землянигин Сергей
Проект "Перезагрузка" сделал для меня разработку на JAVA более осмысленной, но работы в
этом направлении предстоит еще много.

33.

СПАСИБО ЗА
ВНИМАНИЕ!
English     Русский Правила