Описание приложения
Сделаем систему инвентаризации для инструментов. Простое приложение, но главное доведем его до прототипа. Позже сделаем омниканальность в виде дополнительного бота в телеграмме, чтобы можно было не только в браузере мурыжить его.
Выбор стека
Преамбула
Все на свете знать не реально, поэтому лучший стек это тот, который вы знаете. К этому подходу обычно приходят долго и через ошибки и страдания. Всегда хочется сделать какую-нибудь вандервафлю с ассинхронкой, безопасностью, функциональным программированием, сервисами кэширования, настроенной репликацией, чтобы легко было горизонтально масштабировать, а нагрузка автоматически регулировалась технологией — обратного давления и тп.
Выкиньте нахрен эту чушь из головы. Лучший сервис не тот, что использует лучшие технологии, а тот, что для начала работает. Сконцентрируйтесь на MVP (Minimum Viable Product), вы не MVP (Most Valuable Player) в программировании, пока что.
Поскольку я разработчик преимущественно на Java и клал я на ваш JavaScript, то очевидно что фреймворки такие как Vie, Angular и либа React JS отпадают, как очень сложные и требующие изучения огромного количества технологий и патернов проектирования. Например, я знаю MVC паттерн и мне комфортно и привычно, в React JS вообще такого нет. Ранее я уже реализовывал трехзвенную архитектуру, где использовал React JS, Spring Boot (Java 17), Postgres. И оказалось что доработать Frontend это очень сложно — слишком много нюансов! Подумайте об этом когда в следующий раз будете думать что фронтенд разработчики это легкая профессия. Когда вы утыкаетесь в Security и в Пагинацию на React Js это непередаваемые ощущения.
Frontend (UI)
В качестве UI будет выступать Back =)
Технология шаблонизаторов Teamleaf подготовит у нас на сервере все необходимые файлики для отображения в браузере у клиента. Сравним с React JS
Какие минусы и плюсы Teamleaf относительно React JS:
- Медленнее, так как вся обработка на сервере, а не у клиента, но зато SEO лучше, так как посковым системам легче сканировать HTML контент
- React JS очень сложен в обучении, но дает офигенную гибкость, переиспользование компонентов и для России это самый востребованный подход для фронта, но Teamleaf имеет простой синтаксис почти один в один с HTML поэтому приложение будет работать, а не останется лишь нереализованной фантазией
Backend
Теперь касаемо Бэкенд, хотя Teamleaf это тоже часть Бэкенда, но не суть.
Spring Boot это единственный для меня выбор, тут как говорится выбора особо нет — а тупо стандарт де-факто.
Касаемо версий Java. 8 — старье, 11 — неплохо, но тоже старье, 17 заебок, 21ая — сомнительно, но ок. Надо выбирать из версий LTS они имеют долгосрочную поддержку, поэтому другие версии не рассматриваю. Всё сводится к вопросу 17 или 21 ая? Тут я выберу 17ую, просто потому что я с ней работаю ежедневно и мне в падлу переключатся на 21ую вот такой ответ.
БД
Касаемо БД выбора тоже особо нет… только Postgres — это де-факто стандарт
Начиная с Postgres 12, вышедшей в 2019 году, СУБД Postgres заимела великолепный синтаксис для работы с json и jsonb (бинарный json) синтаксис и теперь по сути это не просто реляционная СУБД, а и NO-SQL бд. Это киллер фича. А ещё это OpenSource проект в отличии от Oracle, MySql, Ms SQL Server. Вообщем все плюсы — поэтому все компании в России мигрируют на Postgres.
Выбор подхода
Использовать TDD это подход, когда сначала пишем тесты, потом код — считаю избыточным и замороченным. Он обычно не работает так, как хочется в реальном проекте, особенно в быстроизменяющемся.
Поскольку концепция приложения не проработана, то такой подход идет нафиг.
А вот подход Design First с использованием RESTfull приложения и автоматических проверок OpenApi спецификации это крутяк.
Написание тестов оставим на потом, так как очень много изменений будет в процессе разработки.
Вместо Confluence будет ReadMe файлы в GitHub, как у линукса. Вместо Jira думал взять Trello, но там функционал слишком далек от кода, изначально хотел использовать Яндекс Tрекер, но они сделали его платным.
Для хранения кода буду использовать GitLab, чтобы задействовать потом в нем CI/CD. Но GitLab не .com, а с установкой у себя на серваке. Так же там по сути есть Wiki, аналог Confluence, но намного проще. Ведь хороший проект можно описать в ReadMe файле 😉
GitLab это Open Source проект в отличии от GitHub, которым сейчас руководят Майки.
Подробнее что такое GitLab для маленьких и тупых
Как установить GitLab на Ubuntu тачку
По сути GitLab закрывает
1. Хранение кода
2. MR (запросы на слияния ветов к git с проверкой кода другим разработчиком)
3. CI/CD (не надо отдельно ставить Jenkins)
4. Wiki (простенькая, но работает)
5. Трекер задач! Это очень важный момент, так как трекер задач сейчас как грязи, но нормального обычно нет.
Изначально думал по трекеру задач зафигачить Readmine, он хоть и старый как г мамонта, но свои функции выполняет на ура — есть иерархия, приоритеты, роли пользователей — удобно!
Вот инструкция как обновить интерфейс в Readmine плагинами
Вот список распространенных баг-трекеров:
- Jira
- Bugzilla
- Mantis
- OpenProject (на основе Readmine, но за бабосики)
- Readmine
Ну и конечно же GitLab, чему я очень рад =)
Вот хороший ролик, как пользоваться баг трекерами
В описании к видеоролику выше ссылки на другие баг трекеры!