Incoming Links macro - Linking app rearchitecture
Target release | TBD |
---|---|
Epic | |
Document status | DRAFT |
Document owner | @Lava Kumar Dukanam |
Engineering Manager | @Lava Kumar Dukanam |
Architect | @Volodymyr Pryimak |
Engineering Team | @Volodymyr Pryimak @Mohit Varma @Durgaprasad Jamanjyothi |
Technical writers | @Karina Zoin |
QA |
|
Objective
There are plenty of bugs from customers that existing logic is not working well.
https://appfire.atlassian.net/browse/SUPPORT-181891
https://appfire.atlassian.net/browse/SUPPORT-182594
https://appfire.atlassian.net/browse/SUPPORT-184988
https://appfire.atlassian.net/browse/SUPPORT-182743
https://appfire.atlassian.net/browse/SUPPORT-182983
https://appfire.atlassian.net/browse/SUPPORT-189821
https://appfire.atlassian.net/browse/SUPPORT-189957
https://appfire.atlassian.net/browse/LINKCLOUD-627
Success metrics
Goal | Metric |
---|---|
|
|
Assumptions
Milestones
Requirements
Requirement | User Story | Importance | Jira Issue | Notes |
---|---|---|---|---|
We would like to use FUSE for SQS registration. | Need to implement a new feature on the FUSE side for supporting SQS registration without EventBridge | HIGH | As a temporal workaround we can create it manually. | |
Implement Lambda webhooks handler. | Most of the events will be handled using lambdas but some of them(app installed & uninstalled) should be redirected to the SQS. | HIGH |
| Update page relations based on the following events(confluence webhooks) on the backend side:
|
Implement ECS service. | Need to scan all Confluence pages and update link references. | HIGH |
| Background job must scan all confluence pages since the last re-index date if exists and update page relations. |
New design high level architecture:
Lambda webhooks handler
This is an entry point for the whole scheme and there two key ideas.
[1] When we receive page content related updates
Page content related webhooks that we plan to support: page_created , page_updated, page_restored, page_removed, page_moved, page_copied, page_archived, page_unarchived
we need to check a content of a page and identify external links and if there any we need to update storage through a REST API.
[2] Long running events
When we receive: connect_addon_enabled & connect_addon_disabled events, we need to send them to SQS.
Event example:
{
key: 'net.customware.confluence.plugin.linking',
clientKey: 'f...8',
publicKey: 'MIIBI...AB',
serverVersion: '6452',
pluginsVersion: '1000.0.0.df206a1a35d4',
baseUrl: 'https://appfire-supercat.atlassian.net/wiki',
productType: 'confluence',
description: 'Atlassian Confluence at https://appfire-supercat.atlassian.net/wiki',
eventType: 'enabled',
displayUrl: 'https://appfire-supercat.atlassian.net/wiki'
}
ECS service
The idea is to perform whole Confluence content reindex for our API & data access. We need it in order to make page links accessible through a REST API.
SO, when users add page link macro our app can easily gather all needed links for a specific page.
Open Questions
Question | Answer | Date Answered |
---|---|---|
Do we need to keep links for archived pages? | [most likely no, but…] |