In an Archimate diagram, would Kafka be an application component or a system software according to the specification? The literature gives contradictory information:
-
Kafka as system software: for example: “In the Archimate, Kafka
would be categorized as “system software”. System software represents
software that provides or contributes to an environment for storing,
executing, and using software or data deployed within it. It’s a
specialization of a node that models the software environment in
which artifacts run”. -
Kafka as application component: most authors consider Kafka as
application component, for example: “In the context of ArchiMate,
Kafka would typically be considered an “application component”. An
application component represents an encapsulation of application
functionality aligned to implementation structure, which is modular
and replaceable. It can include not only reusable software components
but also complete software applications, sub-applications, or
information systems. So, Kafka, being a self-contained unit that
encapsulates behavior and data, aligns with the definition of an
application component. Its behavior would be modeled explicitly
through relationships to behavior elements.” -
Kafka as application component and system component: some
authors recommend using an application component and relate Kafka as system
software with Realization-relationship to it. -
When I look at examples for system software Archimate specification, it mentions “OS, JEE Application Servers, DBMS, Workflow Engines, and
Communication Middleware”. For my understanding, Kafka has very much
in common with Communication Middleware (producers write into topics, consumers write from them) and DBMS (especially if used with fact events). Then it would by a system software.
What is the best choice and why?