Всем привет, будущие Senior Software Engineers! Последние несколько месяцев я писал несложные статьи, в которых описывал важные части разработки. Сегодня расскажу о своей идее! Я хочу помочь вам получить свою первую работу. Что для этого нужно? Для этого нужно получить опыт. Разобраться, из чего состоят эти самые проекты, на которых работают инженеры и продвигают мир информационных технологий вперед. “Java-проект от А до Я”: пишем реальный проект для портфолио - 1Как это сделать? Нужно что-то написать. А как написать? Нужно послушать человека, который уже это сделал и готов рассказать)))

Цель

Написать проект, который будет совмещать и работу с базами данных, и создание необходимой нам бизнес-логики, и настройку работы по развертыванию проекта, и его тестированию. Что будем писать? Если уже и писать, то писать нужно что-то действительно полезное, чтобы и интерес к работе был и результатом кто-то смог бы воспользоваться. Исходя из этих данных, писать будет телеграм-бота, который будет работать с сайтом 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. Подключение базы данных вместе с версионированием базы данных.
Все эти этапы будут сделаны пошагово, для того, чтобы лучше понять что зачем идет.“Java-проект от А до Я”: пишем реальный проект для портфолио - 4

Будущие итоги

В итоге получим реальный проект, который сможет реализовать каждый, кто будет читать статьи. Прелесть телеграм-бота в том, что можно будет привязать к любому боту этот проект, чтобы не быть зависимым от бота, который будет в статьях. Скажу больше: это только начало JRTB. В будущем можно будет обсуждать/добавлять новую функциональность. Сделать этого бота таким, чтобы он был полезен всем студентам проекта JavaRush. А ощущение того, что твоим творением пользуются другие люди и им нравится, дорогого стоит! А вы, как читатели это серии статей, сможете получить реальный опыт работы на реальном проекте. Традиционно предлагаю подписаться на мой аккаунт на гитхабе, в котором я выкладываю решения и проекты. Вся работа по JRTB будет идти через GitHub, так что советую зарегистрироваться, если еще этого не сделали. Всем спасибо за прочтение, скоро увидимся :)“Java-проект от А до Я”: пишем реальный проект для портфолио - 5