The Potential of Agent Architectures
Alexander Assink explains how agents, small distributed applications that demonstrate autonomous behavior, could aid the development of IoT.
Join the DZone community and get the full member experience.Join For Free
Agents have existed already for a long time. In software engineering, they are small distributed applications that demonstrate some form of autonomous behavior. Also today's trends in distributed architectures such as blockchain and micro services can be viewed from an Agent perspective. Intelligent Agents can add more autonomy and contextual awareness to these concepts. Agent Architectures lay the foundation for such Intelligent Agents to also collaborate with each other.
The Internet of Things (IoT) for example is where Intelligent Agents could provide a more immersive experience. Today, the IoT mostly sends data up in verticals towards the Cloud for complex processing. As both software and hardware continues to evolve, 'data gravity' may bring some these processes back to the devices. In the IoT of tomorrow, horizontal value between devices and across industries could be uncovered using Intelligent Agents.
Agents Versus (Micro)Services
The following picture shows an example of a Multi Agent System. At the top you see Agents that interact like common (Micro)Services do. The key different here is that Agents also collaborate to make more sense of their Environment, trying to sense and influence it together.
When viewed top-down, Agents and (Micro)Services share some similar architectural characteristics. The difference is in how they fulfill these characteristics in order to address different challenges:
- MicroServices are the foundation of a distributed architecture where change is expected in the form of code changes (focused on small services enabling a highly decoupled system).
- Agents are the foundation of a distributed architecture where change is expected in the form of contextual changes (focused on collaboration and percieving its dynamic environment).
Below I tried to outline some similar characteristics, while also indicating how they differ while implementing these characteristics.
Agents are the foundation of a distributed architecture where change is expected in the form of contextual changes.
Already we see 'smart' Applications and 'smart' Services emerging. These are often comprised of common Services that use the computing power and data in the Cloud with for example Predictive Analytics and Machine Learning to provide a more intelligent response. You could argue that these are Intelligent Agents that already work 'undercover' in todays architectures. In the transition from todays architectures to future Agent Architectures, we could refer to these as 'Secret Agents'.
An Intelligent Agent eventually may not be dependent anymore on the Cloud data and computing power. This is also where the concept of 'data gravity' comes into the picture. Eventually the data will already be real-time processed where it was first discovered and adds the most value. This is when we will see the true Agents start to emerge and expose themselves.
A key difference between (Micro)Services and Agents is the contextual behavior that an Agent can demonstrate. An Agent is goal-driven, and tries to fulfill its goals by making decisions based upon various factors such as knowledge of its own capabilities, its connected environment, and other agents that are present at a given time. In other words, it aims to understand its context and based upon that decides what is the best way to achieve its goals.
The most commonly mentioned Agent characteristics I’ve somewhat simplified and listed below.
Agents are goal-driven and try to understand its connected environment, based upon that they take contextual and intelligent decisions.
Types of Agents
Agents decide which actions to take that in turn lead to goals achieved and new inputs to process. Agents are often categorized into two groups.
The Reflex Agent is quite similar to the (Micro)Services that we are already familliar with. It demonstrates the characteristics of an Agent, but in terms of intelligence it is not very different from a common Service. It can be implemented using programming logic and rules.
The model-based Agent has a better understanding of its context, and maintains a model of the world around itself in order to make decisions. The control-logic can often be further broken down into two cycles: deliberation (what to do) and planning or means-end reasoning (how to do it).
As factors change in its dynamic environment, the interpreter of a Model-Based Agent may revise its plans and goals. Common interpreters can be implemented using programming logic and rule engines, but more intelligent interpreters require processing of semantic data and ontologies.
Agents can vary from simple Reflex Agents to complex Model-Based Agents that use semantic data and ontologies.
Beliefs, Desires, and Intentions
I don’t go into detail on more ‘human-like’ Agents but I like to briefly point out the BDI model. This can be used for advanced Model-Based Agents that use concepts of human practical reasoning in terms of Beliefs, Desires, and Intentions (BDI). In software development, it could be viewed as follows:
A framework based on for example BDI can help to implement Cognitive Agents that align software processing more with our human way of thinking.
The Beliefs, Desires, and Intentions (BDI) model can be used for software frameworks that implement Cognitive Agents.
Agents are coming?
Agents are already emerging in various solutions as what I like to call 'Secret Agents'. Once Intelligent Agents will find there place in the IT landscape, and continue to converge with trends like Micro Services, IoT, Machine Learning, AI, and what else the future brings, I really start to wonder how tomorrows IT landscape will look like?
Opinions expressed by DZone contributors are their own.