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

Лекція 151: Огляд фінального проєкту та його цілей

Модуль 5. Spring
Рівень 25 , Лекція 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, і наскільки важливо враховувати горизонтальні аспекти розробки, такі як моніторинг і автоматизація. Крім того, ваш проєкт стане відмінним доповненням до портфоліо, якщо вирішите показати роботодавцю реальний приклад вашої роботи.

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

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ