Skip to the content.

Iommi Corp - Modernized Customer Experience

Iommi Corp is a global leading provider of mcguffin services and the trading of widgets & doohickeys. Iommi is looking to modernize how their customers can access the range of products & services that Iommi provides, manage their accounts, self service etc.

Iommi Corp is an important Microsoft customer and has reached out to see how CSE can help on a greenfield implementation of this new system in Azure. Iommi Corp is new to the cloud, so are looking for a lot of guidance, and are open to suggestions on architecture & design of the system.

High Level Requirements

The core of what Iommi Corp require is as follows:

Optional Stretch Requirements

The customer is aware that CSE engages fairly short term, so they have some non function areas which can be considered as stretch goals

Note. This has been kept purposefully very ambiguous and open ended, it’s rare for a customer to really come with such un-opinionated scope, however for the purposes of learning it

Whiteboard

Below is an very high level design given to you by one of the team at Iommi Corp. It shows the basic building blocks they want in their system and the interactions.

The red question marks β€˜β“β€™ on the diagram are critical areas for discussion and are technical/architecture decision points

Technical Decision Points

Below is a list of questions that should naturally arise, and should be answered and agreed on. Each is anchored on a particular domain or aspect of the system:

  1. How to expose the API publicly? What form is the API going to take? What scheme will you use (REST, GraphQL, gRPC etc)?
  2. How will you host & run the APIs you are building? What about serverless? What compute & hosting options in Azure will you consider?
  3. What are the APIs going to be written in? what frameworks and tooling will you use?
  4. What will the backend datastore be? What about the use of ORM? Which of the many Azure data & DB services will you select?
  5. What will you use for the legacy interface? What queuing and messaging services in Azure could you use?
  6. The storage of image data (binary blobs), how could we achieve this? What service(s) in Azure could help? What SDKs are available? The customer is also concerned about end users uploading unsuitable/adult images, is there a way we could classify and detect these?
  7. How will the cloud resources be deployed & managed? How can we repeatably deploy environments for developers and other use cases?
  8. How do we run CI and tests in an automated fashion? What are our build artifacts? What do we build and when?
  9. How will automated releases happen? What triggers the release? What is the target environment or platform?

Out Of Scope

The follow aspects can be ignored or worked around:

Hints

If the team are stuck, some concrete details and spec for the system are provided here

Technical Design Hints