On Aug 19, 2019 Stacey On IOT posted on three different version of IOT. Where she discussed Consumer, Enterprise, and Industrial use cases. I was going to post, but did not. Stacey followed up today with another post with user feedback and the idea of adding two more use cases for Military and Healthcare.
Across these now five different use cases what is common approach that could be used? An approach that have been using to look at some other systems is a combination of hexagonal architecture, ports and adapters and domain driven design. Ok. Lost all of you there.
The hexagonal architecture divides a system into several loosely-coupled interchangeable components, such as the application core, the database, the user interface, test scripts and interfaces with other systems. This approach is an alternative to the traditional layered architecture.
The main idea of Ports & Adapters is to define the structure of an application so that it could be run by different kinds of clients (humans, tests cases, other applications,…), and it could be tested in isolation from external devices of the real world that the application depends on (databases, servers, other applications, …).
Domain-driven design is predicated on the following goals:
placing the project's primary focus on the core domain and domain logic;
basing complex designs on a model of the domain;
initiating a creative collaboration between technical and domain experts to iteratively refine a conceptual model that addresses particular domain problems.
OK still lost you. The use cases of consumer, industrial, enterprise, military and healthcare are domains that are at the center of the architecture. The interaction with IOT and users is what drives the ports and adapters to the domain core, then gets passed on to ports and adapters for the infrastructure. This same system design can treat of the different uses as simply different iterations of the same design approach.
This is a complex topic, but can be elegantly simple. But explaining the simplicity takes a lot more words. :-)