Работа с проектом и инструменты
Работа с проектом
Работа с проектом будет выстроена аналогично стажировке TopJava:
- В качестве системы контроля версий будет использоваться Git. Согласно принципам 12-факторного приложения, каждый сервис имеет свою собственную кодовую базу и репозиторий
- Перед занятием по каждому сервису будет нужно:
-
Склонировать локально начальный репозиторий сервиса
Первый сервис проекта: menu-service:git clone https://github.com/JavaOPs/menu-service
- По мере прохождения материала последовательно применять в ветке master пронумерованные патчи (Apply patch) из каталога patch проекта menu-service.zip. После применения каждого патча следует делать коммит, чтобы было легче отслеживать изменения в git.
- Открыть готовый проект с уже примененными патчами: menu-service.zip
- По мере прохождения материала откатывать проект на нужное место: Checkout Revision
Если вам нужен доступ с разных компьютеров, можно настроить push в свой репозиторий GitHub/GitLab с условием: репозитории сервисов обязательно должны быть ПРИВАТНЫЕ -
Склонировать локально начальный репозиторий сервиса
- Патчи с заготовкой для домашнего задания имеют в названии PHW (Prepare for HomeWork)
Патчи с решенным домашним заданием в названии имеют HWD (HomeWork Done). - Домашние задания обязательно делать в отдельной ветке (New branch...). Чтобы посмотреть разбор решения ДЗ, необходимо будет переключиться обратно в ветку master и применить соответствующий патч HWD или сделать на него Checkout Revision.
Работа с Gradle
Gradle - система автоматической сборки, построенная на принципах Apache Ant и Apache Maven, но предоставляющая DSL на языках Groovy и Kotlin вместо Maven XML-конфигурации проекта.
Вообще gradlew and gradle/gradle-wrapper.jar можно в репозиторий не коммитить, но они нам понадобятся для GitHub Action, поэтому оставьте их в репозитории.IDEA должна распознать проект и сделать справа Gradle вкладку (проверьте, что Gradle есть у вас в плагинах) В IDEA Gradle Settings... -> Distribution можно:
- Оставить Gradle Wrapper
- Установить Gradle самостоятельно (один Gradle на все проекты):
- Установка (если вручную - просто скачиваем и распаковываем zip)
- Прописываем путь в PATH (для Windows)
- Проверяем:
gradle -v
- Gradle Settings... -> Distribution: выставить в Local Installation и путь к нему
- Difference between using gradlew and gradle
gradle test - запустить тесты (в окне Gradle: Tasks -> verification -> test) gradle build - собрать проект (Tasks -> build -> build) gradle build -x test - собрать проект без тестов gradle tasks - посмотреть все задачи gradle dependencies - посмотреть все зависимостиВнимание: запуск проекта
gradle bootRun
(Tasks -> application -> bootRun) не будет работать, пока мы не пропишем в патче
1_data_layer_5_PHW
настройки коннекта к БД.
Работа с Docker
Для работы современного ПО часто требуется большая настроенная инфраструктура: RDBMS, NoSQL, Kafka, RabbitMQ и др.
Кроме того, концепция микросервисов подразумевает запуск каждого сервиса в изолированной среде, их быстрое поднятие и масштабирование.
Инструмент Docker позволяет «упаковать» приложение со всем его окружением и зависимостями в контейнер,
который может быть развёрнут на любой Linux-системе,
что делает его незаменимым инструментом разработчика. Аналогично GitHub, для контейнеров есть репозиторий DockerHub,
куда можно публиковать свои контейнеры и откуда можно брать готовые контейнеры со стандартным ПО. Таким образом, Docker служит для:
PS: Сейчас Docker Hub работает без дополнительных настроек - разблокировали по геоайпи в России.
В случае проблем есть средства по обходу блокировки: в комментариях, статья
Первое занятие: Menu Service
- Ускорения процесса настройки окружения. Нет нужды в установке сторонних программ вроде PostgreSQL, Redis, Elasticsearch. Они могут быть запущены в контейнерах
- Удобной инкапсуляции приложений, которые можно представить как единый контейнер, а не набор файлов и инструкций развертывания
- Одинакового поведения приложений на локальном компьютере и тестовом/прод-сервере
- Простого и понятного мониторинга
- Легкого масштабирования. Если вы сделали свое приложение правильно, то оно будет готово к масштабированию не только в Docker
- Основы и руководство по Docker
- Основные концепции Docker на официальном сайте
- Цикл статей от RUVDS
- Docker, если бы он был игровой приставкой
- Описание и установка Docker Desktop (GUI). Обязательно для Windows или Mac
- Описание и установка Docker Engine (CLI). Достаточно для большинства Linux
- Особенности установки на Windows:
- Для Windows без поддержки Hyper-V требуется Docker Toolbox, для Windows 10 Pro and Enterprise - Docker Desktop. Если Docker устанавливать через Docker Toolbox, он запускается в VirtualBox, и будет необходимо настраивать проброс портов из VirtualBox на локальную машину, поэтому лучше рассмотреть вариант с Linux или Windows 10+/Docker Desktop. Инструкция по проверке виртуализации и установке на Windows.
- На Windows 10 Home можно поставить Docker Desktop, предварительно установив
WSL2 (Windows Subsystem for Linux)
- Убедитесь, что wsl версии 2: возможно понадобится включить в BIOS виртуализацию (гуглится по материнской плате) и отключить в Windows гипервизор
- Upgrade version from WSL 1 to WSL 2
- Обновление WSL до версии 2
PS: Сейчас Docker Hub работает без дополнительных настроек - разблокировали по геоайпи в России.
В случае проблем есть средства по обходу блокировки: в комментариях, статья