Skip to content

Lab3 - Microservices Architecture

Microservices Architecture

Download PDF

Download TP3

Introduction

A software company (INSATix) wants to build a forecast and planning solution (F&P) for a fashion retailer, to help them predict their future sales and figure out which goods are needed for each store, location, channel on any given day, in order to be able to order the right amount to fulfill the demand. Then comes the "planning" side of the solution, where retail planners can benefit from the best planning strategies and use both these strategies and the generated forecast in order to plan a compelling assortment of products with the right choice count, depth and breadth; or how to build optimized price and promotional strategies.

The team (UI, backend and data engineers) of INSATix has already held multiple meetings with the client in order to figure out the functional and non-functional requirements of this solution and they have agreed that there needs to be 3 applications: 2 web applications (One for forecasting and one for planning) and another headless application.

Functional requirements

  • Forecast Application:
    • The client can choose a given store, day and product and visualize the forecast of its sales at any date within a 1 year interval before and after the current date.
    • The client can choose a given store, day and product and visualize how many items should be provisioned to fulfill the future demand.
    • In some situations, the client can choose to “override” the value of the forecast and submit it.
    • The client can also select a product and correct some of its historical sale units, then ask to trigger a real time forecast for it.
    • The client can view an aggregated view of the sales or forecast across weeks or months.
    • The client can visualize the products and their descriptions, the stores and their descriptions, etc …
  • Planning Application:

    • Use the generated forecast to break down financial budgets into categories and stores.
    • Use the generated forecast to create plans for more accurate product assortment decisions.
    • Use the generated forecast to create plans for appropriate promotional strategies, etc …
  • Headless Application:

    • The client will be sending batches of structured CSV files (historical sales of 2 years, list of products, stores, etc ...) on a weekly basis (presumably during the weekend). The solution should be able to process these huge amounts of data in order to generate forecasts and plans (results will be persisted into a storage layer). During that time, both web applications will be down as we are writing into the database. Once the batch finishes, both applications will be up again and the users should be able to query and view the new results that have been generated by this batch.
  • Common use cases:
    • Authentication/Authorization: Each user should be authenticated before accessing either of the 2 web applications. Note that users can be forecasters, planners, and some of them can be both.

Non Functional requirements & Other constraints

  • The UI needs to be highly responsive, especially when dealing with repetitive user actions that may trigger some heavy calculations.
  • This is the first time that INSATix builds an F&P application so the solution will definitely need to be modified to fix bugs and/or improve performance, etc...
  • INSATix is not only trying to build an F&P solution for this retailer, but as the forecast and planning features can be interesting for any other retailer, the team is also thinking about building a product that can easily be configured for future retailers without having to build a custom solution for each client.
  • We need to have the forecast and planning applications to be independently deployed.
  • A secure communication between the forecast and planning applications should be ensured, as well as between the applications and database layer.

Questions

  • Choose and explain the appropriate architecture for the described solution.
  • Use different UML diagrams to represent several views of these systems.
  • Emphasize your design choices for every non functional requirement and constraint.
  • Propose some key technologies to use and explain why.

Last update: 2022-10-10