Giter VIP home page Giter VIP logo

lab2-template's Introduction

Лабораторная работа #2

GitHub Classroom Workflow

Microservices

Формулировка

В рамках второй лабораторной работы по вариантам требуется реализовать систему, состоящую из нескольких взаимодействующих друг с другом сервисов.

Требования

  1. Каждый сервис имеет свое собственное хранилище, если оно ему нужно. Для учебных целей можно использовать одну базу данных, но каждая система работает только со своей схемой. Запросы к другой схеме запрещены.
  2. Для межсервисного взаимодействия использовать HTTP (придерживаться RESTful). Допускается использовать и другие протоколы, например grpc, но это требуется согласовать с преподавателем.
  3. Выделить Gateway Service как единую точку входа и межсервисной коммуникации. Горизонтальные запросы между сервисами делать нельзя.
  4. Код хранить на Github, для сборки использовать Github Actions.
  5. Для автоматических прогонов тестов в файле autograding.json и classroom.yml заменить <variant> на ваш вариант.
  6. Каждый сервис должен быть завернут в docker.
  7. В classroom.yml дописать шаги на сборку, прогон unit-тестов и деплой каждого сервиса на heroku.

Пояснения

  1. Для локальной разработки можно использовать Postgres в docker, для этого нужно запустить docker compose up -d, поднимется контейнер с Postgres 13, будет создана БД services и пользователь program:test. Для создания схем нужно прописать в 20-create-schemas.sh свой вариант задания в переменную VARIANT. После поднятия контейнера будут созданы схемы, описанные в файлах schema-$VARIANT по вариантам.

  2. Горизонтальную коммуникацию между сервисами делать нельзя.

    Services

    Предположим, у нас сервисы UserService, OrderService, WarehouseService и Gateway:

    • На Gateway от пользователя Alex приходит запрос Купить товар с productName: 'Lego Technic 42129.
    • Gateway -> UserService проверяем что пользователь существует и получаем userUid пользователя по login: Alex.
    • Gateway -> WarehouseService получаем itemUid товара по productName и резервируем его для заказа.
    • Gateway -> OrderService с userUid и itemUid и создаем заказ с orderUid.
    • Gateway -> WarehouseService с orderUid и переводим товар itemUid из статуса Зарезервировано в статус Заказан и прописываем ссылку на orderUid.

Прием задания

  1. При получении задания у вас создается fork этого репозитория для вашего пользователя.
  2. После того, как все тесты успешно завершатся, в Github Classroom на Dashboard будет отмечено успешное выполнение тестов.

Варианты заданий

Варианты заданий берутся исходя из формулы: (номер в списке группы - 1) mod 4 + 1.

  1. Flight Booking System
  2. Hotels Booking System
  3. Car Rental System
  4. Library System

lab2-template's People

Contributors

br1kfast avatar romanow avatar wcdbmv avatar volkovaan avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.