# 5. Event driven communication Date: 2021-10-18 ## Status Accepted ## Context The TAPAS system will be implemented following the Microservices architecture. Each service encapsulates a different bounded context with different functional and non-functional requirements. The TAPAS system could either be implemented as Synchronous Microservices or Event-Driven Microservices. ## Decision The TAPAS system could either be implemented as Event-Driven Microservices. Event-driven asynchronous communication suits the TAPAS system better than synchronous communication. This will facilitate looser coupling between services. Scalability, one of the system's top 3 driving architectural characteristics, will be positively impacted as individual services can be scaled up and down as needed. Responsiveness (another of the system's driving architectural characteristics) will also improve as services do not need to wait for other services to respond before responding themselves. ## Consequences Asynchronous communication makes error handling more complex. At this moment in time we do not see this coming a problem. However, if the error handling becomes overly complex, then we might need to implement the workflow event pattern in order to combat this increased complexity.