Incoming Links macro - Linking app rearchitecture

Target release

TBD

Epic

https://appfire.atlassian.net/browse/LINKCLOUD-630

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

Goal

Metric

 

 

 Assumptions

 Milestones

16-Sep202423-Sep30-Sep07-Oct14-Oct21-Oct28-Oct
Gathering Requirements
Review
Implementation
Testing & Release

Investigations, PoC

Active discussions & Review

Implement AWS Lambda

ECS Service Implementation

SQS part, event template

Preparation for release

 Requirements

Requirement

User Story

Importance

Jira Issue

Notes

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

https://appfire.atlassian.net/browse/LINKCLOUD-629

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:

  • page_created

  • page_updated

  • page_restored

  • page_removed

  • page_moved

  • page_copied

  • page_archived

  • page_unarchived

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:

Untitled Diagram2.drawio.png

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

Question

Answer

Date Answered

Do we need to keep links for archived pages?

[most likely no, but…]

 

 Out of Scope

  •