Всем привет, будущие Senior Software Engineers!
Последние несколько месяцев я писал несложные статьи, в которых описывал важные части разработки.
Сегодня расскажу о своей идее! Я хочу помочь вам получить свою первую работу.
Что для этого нужно? Для этого нужно получить опыт. Разобраться, из чего состоят эти самые проекты, на которых работают инженеры и продвигают мир информационных технологий вперед.
Как это сделать? Нужно что-то написать. Поэтому в рамках этой серии материалов мы шаг за шагом напишем своего телеграм-бота (подробности ниже). А заодно — разберемся со стеком технологий, которые необходимы даже начинающему Java-разработчику.
Что такое MVP? Термин, как водится, не наш, но можно найти сносное объяснение на вики. Цитируем:
MVP — это продукт, обладающий минимальными, но достаточными для удовлетворения первых потребностей функциями. Основная задача — получение обратной связи для формирования гипотез дальнейшего развития продукта.
Для нас это описание подходит максимально.
Быстрое описание всего функционала:
Я как пользователь Telegram хочу иметь возможность подписаться на новые статьи в группах и получать уведомления о выходе новых.
Я люблю читать группу История Успеха, она меня мотивирует на то, чтобы продолжать учиться, познавать что-то новое. Я ленивый и не хочу каждый раз заходить и обновлять страницу. Поэтому Я, как программист, хочу облегчить свою жизнь и написать программу, которая присылала бы мне в Телеграме сообщение, что вышла новая статья. Дальше больше: это же не единственная группа, которую я отслеживаю. Я из Харькова, поэтому мне интересно читать статьи, которые там публикуют.
Меня как разработчика этого продукта будет очень интересовать пользуется ли кто-то моей работой, поэтому добавим функциональность для админов, чтобы можно было смотреть статистику работы телеграмм-бота.
Можно ли это сделать? Конечно! Как? Вот это я и покажу цикле статей.![“Java-проект от А до Я”: пишем реальный проект для портфолио - 3]()
![“Java-проект от А до Я”: пишем реальный проект для портфолио - 5]()

Цель
Написать проект, который будет совмещать и работу с базами данных, и создание необходимой нам бизнес-логики, и настройку работы по развертыванию проекта, и его тестированию. Что будем писать? Если уже и писать, то писать нужно что-то действительно полезное, чтобы и интерес к работе был и результатом кто-то смог бы воспользоваться. Исходя из этих данных, писать будет телеграм-бота, который будет работать с сайтом JavaRush. Будет это полезным? Несомненно! Благодаря тому, что телеграм-боты пишутся не так уж сложно, можно получить достаточно быстро рабочий проект, который сможет быть полезным.Сроки разработки
Статьи будут выходить раз в неделю, так что времени будет достаточно для освоения / повторения / написания вопросов, если что будет непонятно. Первые статьи будут тем теоретическим фундаментом, который будем использовать в проекте. А далее — только практика.MVP (минимально жизнеспособный продукт)

Кодовое название
У каждого крутого проекта должно быть кодовое название. Наш не станет исключением, поэтому на данный момент будет такой: JRTB (JavaRush Telegram Bot). Здесь и далее он будет называться так.Какие темы покроем

База данных
Нужно сразу понять, что держать состояние (данные и информацию) в приложении нельзя. Нужно данные хранить в базе данных. Так как информации по ней нет в обучении (насколько я помню :D), я постараюсь восполнить пробелы в знаниях, которые нам будут нужны. Я постараюсь сделать схему базы данных максимально простой, чтобы не было ступора. В эту часть будет входить:- Теория работы с SQL на основе MySQL.
- Инструмент работы с MySQL — MySQL Workbench.
- Версионирование баз данных. Flyway и liquibase.
- Создание схемы базы данных.
- Создание рисунка схемы базы данных.
Git
Статьи по этой теме уже есть. Разумеется, ничего не получится без системы контроля версий. Для начала работы над JRTB нужно разобраться с гитом. Можно самостоятельно, а можно почитать мои статьи на эту тему:Если будет желание, можно еще почитать о стратегиях ветвления, но здесь это не критично и можно пропустить.Maven
Здесь мы поговорим о системе сборки, для чего она нужна, как мы будем ее использовать, на что обратить внимание, правила хорошего тона. Также здесь поговорим о версионировании, как именно мы будем это делать.Docker
Для того, чтобы наша жизнь была проще и легче, а процесс развертывания был максимально простым, будем использовать докер. Для этого поговорим о том, что такое докер, какие есть полезные команды. Сразу хочу сказать, что я пользуюсь докером на уровне пользователя и могу чего-то не знать не уметь)) Так что если кто-то предложит, как сделать работу с докером лучше/проще, я буду только рад этому. В эту часть будет входить:- Теория и практика по Docker’у.
- Создание резервной копии / восстановление данных через докер.
- Настройка нашего проекта, чтобы он крутился в докере.
Bash скрипты
Для автоматизации работы, иногда полезно написать один/два скрипта. Bash скрипты — это скрипты, которые понимают все разработчики в том или иной степени, потому что по сути это работа с командной строкой в линуксе, просто сохраненная в отдельном файле.Создание приложения
Здесь будет весь драйв. На основе предыдущих знаний построим Spring Boot приложение, которое будет содержать объект телеграм-бота. Что здесь будем делать?- Создание полного описания функциональности, которая должна быть.
- Краткое описание того, что такое телеграм-бот.
- Создание Spring Boot приложения.
- Описание работы с Lombok.
- Описание работы с UniRest.
- Внедрение паттерна Command (команда) + работа с созданием собственной аннотации для команд администратора.
- Создание клиента для работы с JavaRush запросами (такие как список групп, список статей в группе), используя UniRest.
- Тестирование. Напишем все возможные тесты, чтобы покрыть наш функционал.
- Настройка системы для проверки качества кода и автоматической сборки на GitHub.
- Подключение базы данных вместе с версионированием базы данных.
Будущие итоги
В итоге получим реальный проект, который сможет реализовать каждый, кто будет читать статьи. Прелесть телеграм-бота в том, что можно будет привязать к любому боту этот проект, чтобы не быть зависимым от бота, который будет в статьях. Скажу больше: это только начало JRTB. В будущем можно будет обсуждать/добавлять новую функциональность. Сделать этого бота таким, чтобы он был полезен всем студентам проекта JavaRush. А ощущение того, что твоим творением пользуются другие люди и им нравится, дорогого стоит! А вы, как читатели это серии статей, сможете получить реальный опыт работы на реальном проекте. Традиционно предлагаю подписаться на мой аккаунт на гитхабе, в котором я выкладываю решения и проекты. Вся работа по JRTB будет идти через GitHub, так что советую зарегистрироваться, если еще этого не сделали. Всем спасибо за прочтение, скоро увидимся :)
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ