- Build and maintain an ecosystem of microservices;
- Integrate micro-services using an Event-driven Architecture
- Manage a-la-carte deployment
A public github project (no invitation, should be publicly cloneable). Your project MUST comply to the following installation rules:
~ $ git clone http://url/of/your/repository the_project
~ $ cd the_project
the_project $ ./install.sh
- Load dependencies, Compile (if necessary)
the_project $ docker-compose up -d
- build the local images and then start the system on localhost
- consider using Docker conventions to tag your images with an unique
id
the_project $ ./run.sh
- Run the acceptance scenarios associated to your API.
- Be sure that your project run on a clean machine
- Pro Tip: a good
run.sh
should show what's happening during the run (e.g., step by steps, printing valuable. exchanged messages, information messages)
the_project $ ./load.sh
- Run a load test for your system. (mandatory)
- A PDF file named
final.pdf
describing the architecture and the design choices:- Use schemas when relevant
- How the user stories relate to the designed services (e.g., who talks to who, sequence diagrams for valuable interactions)
- Emphasise design choices instead of technical choices;
- Role of the message bus in the architecture (e.g., scalability, exchanged messages)
- in summary, please do read the previous feedback to avoid classical mistakes.
The P.O. is still working on the backlog. Stay updated, new requirements (stories / personas) will appear each Monday.
- Gail, a student who lives in Sophia and often order (junk) food from food trucks;
- Erin, a software developer working in a major company;
- Jordan, restaurant chef;
- Jamie, a coursier;
- As Gail or Erin, I can order my lunch from a restaurant so that the food is delivered to my place;
- As Gail, I can browse the food catalogue by categories so that I can immediately identify my favorite junk food;
- As Erin, I want to know before ordering the estimated time of delivery of the meal so that I can schedule my work around it, and be ready when it arrives.
- As Erin, I can pay directly by credit card on the platform, so that I only have to retrieve my food when delivered;
- As Jordan, I want to access to the order list, so that I can prepare the meal efficiently.
- As Jamie, I want to know the orders that will have to be delivered around me, so that I can choose one and go to the restaurant to begin the course.
- As Jamie, I want to notify that the order has been delivered, so that my account can be credited and the restaurant can be informed.
New personna: Terry, restaurant owner.
- As Jordan, I want the customers to be able to review the meals so that I can improve them according to their feedback;
- As a customer (Gail, Erin), I want to track the geolocation of the coursier in real time, so that I can anticipate when I will eat.
- As Terry, I want to get some statistics (speed, cost) about global delivery time and delivery per coursier.
- As Terry, I can emit a promotional code so that I can attract more customer to my restaurant.
- As Jamie, I want to inform quickly that I can't terminate the course (accident, sick), so that the order can be replaced.
- As Terry, I can emit a promotional code based on my menu contents (e.g., 10% discout for an entry-main course-dessert order), so that I can sell more expensive orders.
- As Gail or Erin, I can follow the position of Jamie in real time, so that the food ETA can be updated automatically.