JavaRush /Java блог /Random UA /Пишемо реальний проект для портфоліо - "Java-проект від А...
Roman Beekeeper
35 рівень

Пишемо реальний проект для портфоліо - "Java-проект від А до Я"

Стаття з групи Random UA
Всім привіт, майбутні Senior Software Engineers ! Останні кілька місяців я писав нескладні статті, де описував важливі частини розробки. Сьогодні розповім про свою ідею! Я хочу допомогти вам отримати свою першу роботу. Що для цього потрібно? Для цього необхідно отримати досвід. Розібратися, з чого складаються ці самі проекти, на яких працюють інженери та просувають світ інформаційних технологій уперед.

Усі матеріали серії:

"Java-проект від А до Я": пишемо реальний проект для портфоліо - 1Як це зробити? Треба щось написати. Тому в рамках цієї серії матеріалів ми крок за кроком напишемо свого телеграм-бота (подробиці нижче). А заразом — розберемося зі стеком технологій, які необхідні навіть Java-розробнику-початківцю.

Ціль

Написати проект, який поєднуватиме і роботу з базами даних, і створення необхідної нам бізнес-логіки, і налаштування роботи з розгортання проекту та його тестування. Що писатимемо? Якщо вже й писати, то писати треба щось справді корисне, щоб і інтерес до роботи був і результатом хтось міг би скористатися. Виходячи з цих даних, писатиме телеграм-бота, який працюватиме з сайтом JavaRush. Чи буде це корисним? Безперечно! Завдяки тому, що телеграм-боти пишуться не так уже й складно, можна отримати досить швидко робочий проект, який зможе бути корисним.

Терміни розробки

Статті будуть виходити раз на тиждень, тому часу буде достатньо для освоєння / повторення / написання питань, якщо що буде незрозуміло. Перші статті будуть тим теоретичним фундаментом, який використовуватимемо у проекті. А далі – лише практика.

MVP (мінімально життєздатний продукт)

"Java-проект від А до Я": пишемо реальний проект для портфоліо - 2Що таке MVP? Термін, як водиться, не наш, але можна знайти стерпне пояснення на вікі . Цитуємо: MVP - це продукт, що володіє мінімальними, але достатніми для задоволення перших потреб функціями. Основне завдання - отримання зворотний зв'язок для формування гіпотез подальшого розвитку продукту. Для нас цей опис підходить максимально. Швидкий опис всього функціоналу: Я, як користувач Telegram, хочу мати можливість підписатися на нові статті в групах і отримувати повідомлення про вихід нових. Я люблю читати групу «Історія Успіху» , вона мене мотивує на те, щоб продовжувати вчитися, пізнавати щось нове. Я лінивий і не хочу щоразу заходити та оновлювати сторінку. Тому Я як програміст хочу полегшити своє життя і написати програму, яка надсилала б мені в Телеграмі повідомлення, що вийшла нова стаття. Далі більше: це ж не єдина група, яку я відстежую. Я з Харкова, тож мені цікаво читати статті, які там публікують. Мене як розробника цього продукту буде дуже цікавити чи хтось користується моєю роботою, тому додамо функціональність для адмінів, щоб можна було дивитися статистику роботи телеграм-бота. Чи можна це зробити? Звичайно! Як? Ось це я і покажу цикл статей.

Кодова назва

Кожен крутий проект має мати кодову назву. Наш не стане винятком, тому зараз буде такий: JRTB (JavaRush Telegram Bot). Тут і далі він називатиметься так.

Які теми покриємо

"Java-проект від А до Я": пишемо реальний проект для портфоліо - 3

База даних

Потрібно відразу зрозуміти, що тримати стан (дані та інформацію) у додатку не можна. Потрібно зберігати дані в базі даних. Так як інформації про неї немає в навчанні (наскільки я пам'ятаю :D), я постараюся заповнити прогалини у знаннях, які нам будуть потрібні. Я постараюся зробити схему бази даних максимально простою, щоб не було ступору. У цю частину входитиме:
  1. Теорія роботи з SQL з урахуванням MySQL.
  2. Інструмент роботи з MySQL - MySQL Workbench.
  3. Версіонування баз даних. Flyway та liquibase.
  4. Створення схеми бази даних.
  5. Створення малюнка схеми бази даних.

Git

Статті з цієї теми вже є. Очевидно, нічого не вийде без системи контролю версій. Для початку роботи над JRTB потрібно розібратися із гітом. Можна самостійно, а можна почитати мої статті на цю тему: Якщо буде бажання, можна ще почитати про стратегії розгалуження, але це не критично і можна пропустити.

Maven

Тут ми поговоримо про систему складання, для чого вона потрібна, як ми її використовуватимемо, на що звернути увагу, правила гарного тону. Також тут поговоримо про версіонування, як саме ми це робитимемо.

Docker

Для того, щоб наше життя було простішим і легшим, а процес розгортання був максимально простим, будемо використовувати докер. Для цього поговоримо про те, що таке докер, які корисні команди. Відразу хочу сказати, що я користуюся докером на рівні користувача і можу чогось не знати не вміти)) Так що якщо хтось запропонує, як зробити роботу з докером краще/простіше, я буду радий цьому. У цю частину входитиме:
  1. Теорія та практика з Docker'у.
  2. Створення резервної копії/відновлення даних через докер.
  3. Налаштуйте наш проект, щоб він крутився в докері.

Bash скрипти

Для автоматизації роботи іноді корисно написати один/два скрипти. Bash скрипти - це скрипти, які розуміють всі розробники в тому чи іншому ступені, тому що по суті це робота з командним рядком у лінуксі, просто збережена в окремому файлі.

Створення програми

Тут буде весь драйв. На основі попередніх знань побудуємо Spring Boot додаток, який міститиме об'єкт телеграм-бота. Що тут робитимемо?
  1. Створення повного опису функціональності, що має бути.
  2. Короткий опис того, що таке телеграм-бот.
  3. Створення Spring Boot програми.
  4. Опис роботи з Lombok.
  5. Опис роботи з UniRest.
  6. Впровадження патерну Command (команда) + робота зі створенням власної інструкції для команд адміністратора.
  7. Створення клієнта для роботи з JavaRush запитами (такі як список груп, список статей групи), використовуючи UniRest.
  8. Тестування. Напишемо всі можливі тести, щоби покрити наш функціонал.
  9. Налаштування системи для перевірки якості коду та автоматичного збирання на GitHub.
  10. Підключення бази даних разом із версіонуванням бази даних.
Всі ці етапи будуть зроблені покроково, щоб краще зрозуміти що навіщо йде.

Майбутні підсумки

У результаті отримаємо реальний проект, який зможе реалізувати кожен, хто читатиме статті. Принадність телеграм-бота в тому, що можна буде прив'язати до будь-якого бота цей проект, щоб не бути залежним від бота, який буде у статтях. Скажу більше: це лише початок JRTB. У майбутньому можна буде обговорювати/додавати нову функціональність. Зробити цей бот таким, щоб він був корисний всім студентам проекту JavaRush. А відчуття того, що твоїм творінням користуються інші люди і їм подобається, дороге! А ви, як читачі серії статей, зможете отримати реальний досвід роботи на реальному проекті. Традиційно пропоную підписатися на мій аккаунт на гітхабі, в якому я викладаю рішення та проекти. Вся робота з JRTB буде йти через GitHub, тому раджу зареєструватися, якщо ще цього не зробабо. Всім дякую за прочитання, скоро побачимося :)"Java-проект від А до Я": пишемо реальний проект для портфоліо - 5
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ