Files
server/docs/dirt/event_integrations/relationships.dsl
Brant DeBow e096056258 Event Integrations Structurizr POC (#6141)
- Event Integrations Structurizr POC

- Diagram updates with PR suggestions

- Removed architecture documents and references to them

- Added RabbitME detailed view

- Added Events component view

- Reworked the main server view into two filtered views: Cloud and Self-Hosted.

- Added tags "Cloud-Only" and "Self-Hosted-Only" to remove models / relationships that don't apply

- Refactored how we build the dynamic views to be more extensible

* Re-home event integrations to Dirt; Address Claude feedback / typos

* Update diagrams (models/views/relationships) to reflect current state of Event Integrations

* Fixed typos and suggestions from Claude

* Fixed a few more minor notes from Claude

---------

Co-authored-by: Matt Gibson <mgibson@bitwarden.com>
Co-authored-by: Justin Baur <19896123+justindbaur@users.noreply.github.com>
Co-authored-by: Matt Bishop <mbishop@bitwarden.com>
2025-12-29 17:22:25 -05:00

116 lines
12 KiB
Plaintext

# Top Level event publishing
server.api -> server.azure_service_bus.event_topic "Sends events to"
server.events -> server.azure_service_bus.event_topic "Sends events to"
server.identity -> server.azure_service_bus.event_topic "Sends events to"
server.sso -> server.azure_service_bus.event_topic "Sends events to"
server.scim -> server.azure_service_bus.event_topic "Sends events to"
server.api -> server.rabbit_mq.event_exchange "Sends events to"
server.events -> server.rabbit_mq.event_exchange "Sends events to"
server.identity -> server.rabbit_mq.event_exchange "Sends events to"
server.sso -> server.rabbit_mq.event_exchange "Sends events to"
server.scim -> server.rabbit_mq.event_exchange "Sends events to"
# Azure Service Bus topics, subscriptions, and routing
eventsWriteSub = server.azure_service_bus.event_topic -> server.azure_service_bus.eventsWriteSub "Subscribes via fan-out"
eventsDatadogSub = server.azure_service_bus.event_topic -> server.azure_service_bus.eventsDatadogSub "Subscribes via fan-out"
eventsHecSub = server.azure_service_bus.event_topic -> server.azure_service_bus.eventsHecSub "Subscribes via fan-out"
eventsSlackSub = server.azure_service_bus.event_topic -> server.azure_service_bus.eventsSlackSub "Subscribes via fan-out"
eventsTeamsSub = server.azure_service_bus.event_topic -> server.azure_service_bus.eventsTeamsSub "Subscribes via fan-out"
eventsWebhookSub = server.azure_service_bus.event_topic -> server.azure_service_bus.eventsWebhookSub "Subscribes via fan-out"
integrationDatadogSub = server.azure_service_bus.integration_topic -> server.azure_service_bus.integrationDatadogSub "Subscribes via filter on Datadog key"
integrationHecSub = server.azure_service_bus.integration_topic -> server.azure_service_bus.integrationHecSub "Subscribes via filter on HEC key"
integrationSlackSub = server.azure_service_bus.integration_topic -> server.azure_service_bus.integrationSlackSub "Subscribes via filter on Slack key"
integrationTeamsSub = server.azure_service_bus.integration_topic -> server.azure_service_bus.integrationTeamsSub "Subscribes via filter on Teams key"
integrationWebhookSub = server.azure_service_bus.integration_topic -> server.azure_service_bus.integrationWebhookSub "Subscribes via filter on Webhook key"
eventsWriteListener = server.events_processor.event_listener -> server.azure_service_bus.eventsWriteSub "Listens to"
eventsWriteDelegate = server.events_processor.event_listener -> server.events_processor.event_repository_handler "Delegates to"
eventsDatadogListener = server.events_processor.event_listener -> server.azure_service_bus.eventsDatadogSub "Listens to"
eventsHecListener = server.events_processor.event_listener -> server.azure_service_bus.eventsHecSub "Listens to"
eventsSlackListener = server.events_processor.event_listener -> server.azure_service_bus.eventsSlackSub "Listens to"
eventsTeamsListener = server.events_processor.event_listener -> server.azure_service_bus.eventsTeamsSub "Listens to"
eventsWebhookListener = server.events_processor.event_listener -> server.azure_service_bus.eventsWebhookSub "Listens to"
eventsIntegrationHandlerDelegate = server.events_processor.event_listener -> server.events_processor.event_integration_handler "Delegates to"
eventIntegrationHandlerPublish = server.events_processor.event_integration_handler -> server.azure_service_bus.integration_topic "Publishes To"
eventIntegrationHandlerCache = server.events_processor.event_integration_handler -> server.events_processor.event_integrations_extended_cache "Fetches configurations from"
eventIntegrationHandlerDatabase = server.events_processor.event_integration_handler -> server.database "Fetches template details from"
cacheDatabaseFetch = server.events_processor.event_integrations_extended_cache -> server.database "Fetches configurations from"
eventIntegrationHandlerFilter = server.events_processor.event_integration_handler -> server.events_processor.integration_filter_service "Runs filters"
eventRepositoryDatabase = server.events_processor.event_repository_handler -> server.database "Writes events to"
integrationSlackListener = server.events_processor.integration_listener -> server.azure_service_bus.integrationSlackSub "Listens to"
integrationSlackDelegate = server.events_processor.integration_listener -> server.events_processor.slack_integration_handler "Delegates to"
integrationWebhookListener = server.events_processor.integration_listener -> server.azure_service_bus.integrationWebhookSub "Listens to"
integrationWebhookDelegate = server.events_processor.integration_listener -> server.events_processor.webhook_integration_handler "Delegates to"
integrationHecListener = server.events_processor.integration_listener -> server.azure_service_bus.integrationHecSub "Listens to"
integrationDatadogListener = server.events_processor.integration_listener -> server.azure_service_bus.integrationDatadogSub "Listens to"
integrationDatadogDelegate = server.events_processor.integration_listener -> server.events_processor.datadog_integration_handler "Delegates to"
integrationTeamsListener = server.events_processor.integration_listener -> server.azure_service_bus.integrationTeamsSub "Listens to"
integrationTeamsDelegate = server.events_processor.integration_listener -> server.events_processor.teams_integration_handler "Delegates to"
# RabbitMQ exchanges, queues, and routing
eventsWriteQueue = server.rabbit_mq.event_exchange -> server.rabbit_mq.eventsWriteQueue "Subscribes via fan-out"
eventsDatadogQueue = server.rabbit_mq.event_exchange -> server.rabbit_mq.eventsDatadogQueue "Subscribes via fan-out"
eventsHecQueue = server.rabbit_mq.event_exchange -> server.rabbit_mq.eventsHecQueue "Subscribes via fan-out"
eventsSlackQueue = server.rabbit_mq.event_exchange -> server.rabbit_mq.eventsSlackQueue "Subscribes via fan-out"
eventsTeamsQueue = server.rabbit_mq.event_exchange -> server.rabbit_mq.eventsTeamsQueue "Subscribes via fan-out"
eventsWebhookQueue = server.rabbit_mq.event_exchange -> server.rabbit_mq.eventsWebhookQueue "Subscribes via fan-out"
integrationDatadogQueue = server.rabbit_mq.integration_exchange -> server.rabbit_mq.integrationDatadogQueue "Subscribes via filter on Datadog key"
integrationHecQueue = server.rabbit_mq.integration_exchange -> server.rabbit_mq.integrationHecQueue "Subscribes via filter on HEC key"
integrationSlackQueue = server.rabbit_mq.integration_exchange -> server.rabbit_mq.integrationSlackQueue "Subscribes via filter on Slack key"
integrationTeamsQueue = server.rabbit_mq.integration_exchange -> server.rabbit_mq.integrationTeamsQueue "Subscribes via filter on Teams key"
integrationWebhookQueue = server.rabbit_mq.integration_exchange -> server.rabbit_mq.integrationWebhookQueue "Subscribes via filter on Webhook key"
integrationDatadogRetryQueue = server.rabbit_mq.integrationDatadogRetryQueue -> server.rabbit_mq.integrationDatadogQueue "DLQ after configured retry timing"
integrationHecRetryQueue = server.rabbit_mq.integrationHecRetryQueue -> server.rabbit_mq.integrationHecQueue "DLQ after configured retry timing"
integrationSlackRetryQueue = server.rabbit_mq.integrationSlackRetryQueue -> server.rabbit_mq.integrationSlackQueue "DLQ after configured retry timing"
integrationTeamsRetryQueue = server.rabbit_mq.integrationTeamsRetryQueue -> server.rabbit_mq.integrationTeamsQueue "DLQ after configured retry timing"
integrationWebhookRetryQueue = server.rabbit_mq.integrationWebhookRetryQueue -> server.rabbit_mq.integrationWebhookQueue "DLQ after configured retry timing"
eventsWriteListener_events = server.events.event_listener -> server.rabbit_mq.eventsWriteQueue "Listens to"
eventsDatadogListener_events = server.events.event_listener -> server.rabbit_mq.eventsDatadogQueue "Listens to"
eventsHecListener_events = server.events.event_listener -> server.rabbit_mq.eventsHecQueue "Listens to"
eventsSlackListener_events = server.events.event_listener -> server.rabbit_mq.eventsSlackQueue "Listens to"
eventsTeamsListener_events = server.events.event_listener -> server.rabbit_mq.eventsTeamsQueue "Listens to"
eventsWebhookListener_events = server.events.event_listener -> server.rabbit_mq.eventsWebhookQueue "Listens to"
eventsWriteDelegate_events = server.events.event_listener -> server.events.event_repository_handler "Delegates to"
eventRepositoryDatabase_events = server.events.event_repository_handler -> server.database "Writes events to" tags "Self-Hosted-Only"
eventsIntegrationHandlerDelegate_events = server.events.event_listener -> server.events.event_integration_handler "Delegates to"
eventIntegrationHandlerDatabase_events = server.events.event_integration_handler -> server.database "Fetches template details from"
cacheDatabaseFetch_events = server.events.event_integrations_extended_cache -> server.database "Fetches configurations from" tags "Self-Hosted-Only"
eventIntegrationHandlerCache_events = server.events.event_integration_handler -> server.events.event_integrations_extended_cache "Fetches configurations from"
eventIntegrationHandlerFilter_events = server.events.event_integration_handler -> server.events.integration_filter_service "Runs filters"
eventIntegrationHandlerPublish_events = server.events.event_integration_handler -> server.rabbit_mq.integration_exchange "Publishes To"
integrationSlackListener_events = server.events.integration_listener -> server.rabbit_mq.integrationSlackQueue "Listens to"
integrationWebhookListener_events = server.events.integration_listener -> server.rabbit_mq.integrationWebhookQueue "Listens to"
integrationHecListener_events = server.events.integration_listener -> server.rabbit_mq.integrationHecQueue "Listens to"
integrationDatadogListener_events = server.events.integration_listener -> server.rabbit_mq.integrationDatadogQueue "Listens to"
integrationTeamsListener_events = server.events.integration_listener -> server.rabbit_mq.integrationTeamsQueue "Listens to"
integrationSlackDelegate_events = server.events.integration_listener -> server.events.slack_integration_handler "Delegates to"
integrationTeamsDelegate_events = server.events.integration_listener -> server.events.teams_integration_handler "Delegates to"
integrationDatadogDelegate_events = server.events.integration_listener -> server.events.datadog_integration_handler "Delegates to"
integrationWebhookDelegate_events = server.events.integration_listener -> server.events.webhook_integration_handler "Delegates to"
# External Services
slackToSlackService = server.events_processor.slack_integration_handler -> server.events_processor.slack_service "Uses"
slackServiceToSlack = server.events_processor.slack_service -> external_services.slack "Publishes configured events to"
teamsToTeamsService = server.events_processor.teams_integration_handler -> server.events_processor.teams_service "Uses"
teamsServiceToTeams = server.events_processor.teams_service -> external_services.teams "Publishes configured events to"
webhookHandlerHttpClient = server.events_processor.webhook_integration_handler -> server.events_processor.http_client "Uses"
datadogHandlerHttpClient = server.events_processor.datadog_integration_handler -> server.events_processor.http_client "Uses"
httpToCrowdstrike = server.events_processor.http_client -> external_services.crowdstrike "Publishes configured events to"
httpToDatadog = server.events_processor.http_client -> external_services.datadog "Publishes configured events to"
httpToSplunk = server.events_processor.http_client -> external_services.splunk "Publishes configured events to"
slackToSlackService_events = server.events.slack_integration_handler -> server.events.slack_service "Uses" tags "Self-Hosted-Only"
slackServiceToSlack_events = server.events.slack_service -> external_services.slack "Publishes configured events to" tags "Self-Hosted-Only"
teamsToTeamsService_events = server.events.teams_integration_handler -> server.events.teams_service "Uses" tags "Self-Hosted-Only"
teamsServiceToTeams_events = server.events.teams_service -> external_services.teams "Publishes configured events to" tags "Self-Hosted-Only"
webhookHandlerHttpClient_events = server.events.webhook_integration_handler -> server.events.http_client "Uses" tags "Self-Hosted-Only"
datadogHandlerHttpClient_events = server.events.datadog_integration_handler -> server.events.http_client "Uses" tags "Self-Hosted-Only"
httpToCrowdstrike_events = server.events.http_client -> external_services.crowdstrike "Publishes configured events to" tags "Self-Hosted-Only"
httpToDatadog_events = server.events.http_client -> external_services.datadog "Publishes configured events to" tags "Self-Hosted-Only"
httpToSplunk_events = server.events.http_client -> external_services.splunk "Publishes configured events to" tags "Self-Hosted-Only"