JavaRush /Курсы /Модуль 5. Spring /Лекция 151: Обзор финального проекта и его целей

Лекция 151: Обзор финального проекта и его целей

Модуль 5. Spring
16 уровень , 0 лекция
Открыта

Мы прошли долгий и увлекательный путь в изучении Spring Framework и связанных с ним технологий. Вначале мы изучили основы Spring: IoC-контейнер, внедрение зависимостей (DI) и различные способы работы с Spring Beans. Затем мы углубились в мир Spring Boot, где познакомились с конфигурацией приложений, автоконфигурацией, настройкой YAML и встроенными инструментами для повышения удобства разработки. Мы отточили навыки работы с базами данных через Spring Data JPA, научились управлять транзакциями, осваивали тонкости безопасности через Spring Security и создавали REST API.

Позже мы сконцентрировались на практических аспектах разработки с использованием Spring Boot: от разработки полноценных приложений до построения и тестирования микросервисов. Мы также интегрировали Apache Kafka, изучили событийно-ориентированную архитектуру, микросервисные паттерны и такие важные инструменты, как API Gateway, Service Discovery, и другие.

Теперь настало время воплотить все эти знания в жизнь! Сегодня мы начнем разработку нашего финального проекта, который станет кульминацией вашего путешествия по Spring.


1. Описание проекта

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

Итак, наш проект — это полноценное Spring-приложение с богатым набором функционала: REST API, безопасность, работа с базой данных, логирование, мониторинг, а также настройка CI/CD для деплоя.

Цель проекта — симуляция реального жизненного сценария, где вы создаете продукт от изначального проектирования до развертывания.

Наше приложение будет включать такие составляющие:

  • REST API: пользователи смогут взаимодействовать с вашим приложением через удобные HTTP-запросы.
  • Безопасность: мы будем использовать Spring Security и JWT для защиты данных приложения.
  • Работа с базой данных: данные пользователей и бизнес-логика будут храниться в базе данных, управляемой через Spring Data JPA.
  • Логирование и мониторинг: настроим логирование с использованием централизованных систем вроде ELK и мониторинг через Spring Boot Actuator.
  • CI/CD: простое развертывание приложения с использованием Docker и инструментов CI/CD.

Область применения приложения

Наше приложение будет симулировать управление задачами (Task Manager). Это веб-приложение позволит пользователям создавать учетные записи, добавлять задачи, обновлять их статус, удалять их и сортировать по определенным критериям.

Примерный сценарий использования:

  1. Пользователь регистрируется и аутентифицируется в системе.
  2. Создает список задач с описанием, статусом и дедлайнами.
  3. Выполняет действия с задачами: обновление, удаление и просмотр.
  4. Наблюдает за статистикой задач (например, сколько выполнено за неделю).

2. Требования к проекту

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

Функциональные требования

  1. Пользователь должен иметь возможность зарегистрироваться и войти в систему.
  2. Система должна поддерживать CRUD-операции (создание, чтение, обновление, удаление) для задач.
  3. Должна быть возможность фильтровать задачи по статусу или срокам выполнения.
  4. REST API должно быть защищено аутентификацией и авторизацией.
  5. Приложение должно предоставлять метрики о состоянии системы.

Нефункциональные требования

  1. Приложение должно быть масштабируемым и отказоустойчивым.
  2. Должен быть логирован каждый запрос для последующего анализа.
  3. База данных должна быть оптимизирована для хранения большого количества задач.
  4. CI/CD пайплайн должен обеспечивать автоматическую сборку и деплой приложения.

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


3. Определение плана реализации

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

Фазы проекта

  1. Проектирование архитектуры
    • Мы определим стили архитектуры, взаимодействие между компонентами, а также ключевые модули приложения.
  2. Создание базы данных и API
    • Проектируем структуру базы данных, создаем JPA-сущности и реализуем CRUD-операции через репозитории.
    • Разрабатываем REST API, чтобы клиенты могли создавать, обновлять и удалять задачи.
  3. Реализация безопасности
    • Добавляем аутентификацию и авторизацию через Spring Security и JWT.
  4. Мониторинг и логирование
    • Интегрируем Spring Boot Actuator для мониторинга и ELK-стек для логирования.
  5. Автоматизация с использованием CI/CD
    • Настраиваем пайплайн для сборки, тестирования и деплоя приложения в контейнерах Docker.

Контрольные точки

Чтобы проект шел по плану, мы введем ключевые контрольные точки:

  • Готовность архитектуры и базы данных.
  • Реализация API и базовых CRUD-операций.
  • Настройка безопасности.
  • Логирование и мониторинг.
  • Успешный запуск через Docker и CI/CD пайплайн.

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

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

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

Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ