-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Event Integrations Structurizr POC #6141
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Event Integrations Structurizr POC #6141
Conversation
This is useful for tweaking visual representations prior to upload
This is a first pass at structure that will undoubtedly evolve. It's likely further systems will be identified and linked in as we go forward
MGibson1
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks like an excellent addition, thank you! Certainly has me thinking about the viability of the root level views I have in bitwarden_system.dsl 😅
I find it hard to follow from diagrams where differences between self host and cloud occur.
I think it's the lack of a consolidating diagram of these two scopes. Documentation talks about an abstraction layer than handles sending of events either to service bus or rabbitmq, does it not make sense to represent that here and present two alternate diagrams depending on environment.
Layout issues
- Server container view has some overlapping relationships (try up/down arrows while the relationship is highlighted with your mouse to move the label's position)
- 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
|
@MGibson1 Pretty large refactor for you. The base server diagram is now 2 filtered views - Cloud and Self-Host. This allows us to show/hide based on if something is tagged "Cloud-Only" of "Self-Host-Only". You'll see it cleans up a lot of the event integration pieces specifically. I also reworked and expanded all of my views and added a few more. I found a way to reference relationships that should make the dynamic views far more extensible. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## poc/structurizr #6141 +/- ##
==================================================
Coverage ? 54.56%
==================================================
Files ? 1921
Lines ? 85403
Branches ? 7635
==================================================
Hits ? 46602
Misses ? 37029
Partials ? 1772 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
New Issues (112)Checkmarx found the following issues in this Pull Request
|
017f9a6 to
46764e0
Compare
…cturizr-event-integrations
|
@brant-livefront, I took the liberty or merging this up with the base branch. If you could review that nothing got super mangled, I think this is g2g and we can move forward with merging the base into main, too |
|
Claude finished @brant-livefront's task in 3m 26s —— View job Review SummaryReviewed PR #6141 - Event Integrations Structurizr documentation. AssessmentThis is comprehensive, accurate architecture documentation for the Event Integrations system. The documentation successfully:
VerificationVerified documentation accuracy against actual implementation:
Changes Since Previous ReviewsRecent commits addressed prior feedback:
FindingsNo issues found. The documentation is accurate, complete, and well-structured. Recommendation: ✅ APPROVED This documentation PR successfully captures the Event Integrations architecture and addresses all previous review feedback. The use of tags and filtered views provides clear separation between Cloud and Self-Hosted deployments, which was a key concern from prior reviews. |
| integrationSlackQueue = server.rabbit_mq.integration_exchange -> server.rabbit_mq.integrationSlackQueue "Subscribes via filter on Slack key" | ||
| integrationWebhookQueue = server.rabbit_mq.integration_exchange -> server.rabbit_mq.integrationWebhookQueue "Subscribes via filter on Webhook key" | ||
| integrationHecQueue = server.rabbit_mq.integration_exchange -> server.rabbit_mq.integrationHecQueue "Subscribes via filter on HEC key" | ||
| integrationSlackRetryQueue = server.rabbit_mq.integrationSlackRetryQueue -> server.rabbit_mq.integrationSlackQueue "DLQ after configured retry timing" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ℹ️ Good use of "DLQ" (Dead Letter Queue) terminology here. Consider adding this expansion in a description field if Structurizr supports it for clarity to readers unfamiliar with the acronym.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These are diagrams, not comprehensive docs (the README is already present for that). I am OK with assuming readers understand DLQ in the name of not cluttering up the diagrams with explanation.
withinfocus
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Few tweaks needed as documented, and we should refresh it with the latest state of the distributed events architecture.
|
I've fixed the typos and gotten everything refreshed as well as moving the event integrations stuff to Dirt (which I added into the structure and main dsl). However I still need to look through and update all of these to the latest (e.g. include Teams, break datadog out to it's own integration, etc). |
|
@MGibson1 @withinfocus This has been updated to reflect all the latest event integration changes. Should be ready for final review. 👍 |
|







🎟️ Tracking
PM-17562
📔 Objective
This PR adds a bunch of Structurizr models, relationships and views to @MGibson1 's POC branch of Structurizr. I followed Matt's pattern for team's managing their local definitions inside of the larger scope to add in documentation for the event integrations work I've been doing. This adds more detail to the big server architecture diagram as well as a number of component level diagrams that illustrate how the different pieces work together in integrations.
I've also ported over the markdown architecture that currently lives in the
src/folder next to the code. I think Structurizr's markdown rendering leaves a lot to be desired, but I wanted to have it there for how it would look in context if we decided to go that direction.To run structurizr locally, Matt has provided the following script to launch a local Docker:
This will run at
http://localhost:8085and let you see all the docs / diagrams.⏰ Reminders before review
🦮 Reviewer guidelines
:+1:) or similar for great changes:memo:) or ℹ️ (:information_source:) for notes or general info:question:) for questions:thinking:) or 💭 (:thought_balloon:) for more open inquiry that's not quite a confirmed issue and could potentially benefit from discussion:art:) for suggestions / improvements:x:) or:warning:) for more significant problems or concerns needing attention:seedling:) or ♻️ (:recycle:) for future improvements or indications of technical debt:pick:) for minor or nitpick changes