SaFi Bank Space : Tech Task Planning

Here is the task list for the potential tech tasks to work on for the tech transition time(around 6 weeks). Please take a look and feel free to comment on it or add more if you think it’s missing.

Task Name

Details

Priority

Notes

Unified error code structure & handling

Create unified error code structure and hide internal API error details
SAF-1275 - [NFR] Generic error messaging Backlog
SM-6979 - Create guideline for unified error structure To Do

MUST HAVE

Data sync with outbox pattern

WIP - Data Exchange Between Database and Kafka

SHOULD HAVE

Have dependency on AlloyDB migration

Flyway migration script version check on CI

A Github action to make sure that new migration script versions of the current PR are greater than the latest one of main branch
STD-49 - A Github action to make sure that new migration script versions of the current PR are greater than the latest one of main branch To Do

SHOULD HAVE

Idempotence handling in micro-services

Use idempotency lib to help to handle Idempotence in every REST API & Kafka consumer

MUST HAVE

DLQ handling in micro-services

SM-5264 - DLQ & Kafka error handling Implementation In Progress

MUST HAVE

Have dependency on Idempotence

Increase observability for system

1.Prometheus monitoring for micro-services
2.Customized dashboard for each micro-services
3.Alert management
4.TM observability stack
5.Temporal metrics, monitoring

MUST HAVE

Strategy for shipping to prod

  1. Prod env management

  2. Deployment strategy

    1. Canary

    2. Blue, Green

    3. ...

  3. Feature Flag management

MUST HAVE

Temporal guideline & enhancement

  1. Guideline for using Temporal

  2. Best practices summary

  3. Common lib & utils for Temporal

  4. Tracing support

  5. Observability support

  6. Performance tuning

    1. Worker setting

    2. Cluster setting

  7. Workflow exception handling (tech debts)

SHOULD HAVE

Adopt Kafka generator

Replace the current micronaut kafka consumer & producer code with Kafka generator lib

MUST HAVE

Distributed transaction support

  1. Guideline for how to handle distributed transaction

  2. Refactor current key business flow distributed transaction support

SHOULD HAVE

Database usage guideline & management

  1. Guideline for dealing with database / postgres

    1. query

    2. pagination

    3. handle index

    4. transaction

    5. ...

  2. Performance enhancement

    1. Read replica

NICE TO HAVE

Database monitoring

Add mornitoring for database

MUST HAVE

Traffic management

  1. Rate limiting for end points (total & per-user)

  2. Retry mechanism

  3. Circuit breakers

  4. Time out

  5. Fault inject & chaos testing

MUST HAVE

Avro logical type consistent usage

  1. Define guideline for how to use logical type in Avro schema

  2. Refactor current schema to be consistent

SHOULD HAVE

Cache usage enhancement

  1. Guideline for how to deal with cache

    1. In-memory cache support

    2. Distributed cache support

  2. Enhance current cache implementation

SHOULD HAVE

Feature Flag

  1. Design strategy for dealing with Feature Flag

  2. Feature flag management in FE & BE

MUST HAVE

IAM lib enhancement

Enhance IAM lib usage to remove duplicated code for handling authorization

MUST HAVE

Posting lib integration

Refactor & integrate with posting lib for dealing with posting message with TM

MUST HAVE

CMS Adoption

Do research and check for suitable CMS tool for us to use.

SHOULD HAVE

NIO & Reactor support

Gradually adopt NIO & Reactor support in our back-end service for better performance
-> Gateway services
-> Manager services
-> Databases..

SHOULD HAVE

Log enhancement

  1. Use common logger jsonInfo function when logging customized payload object

  2. Enhance common logger to support more logging level

  3. AOP based auto logging support

SHOULD HAVE

Log message masking

Need to follow data privacy for log messages

MUST HAVE

gRPC research

Research on gRPC and validate the usage for us to envolve

MUST HAVE

Enhance & refactor micro-service code architecture

The way the code is currently organized makes it difficult to read/maintain. It’s fine for simple services, but gets difficult for complicated services such as the transaction processor manager. We should be using a more domain-driven approach for more complicated services

MUST HAVE

Distributed tracing enhance

  1. Add tracing support with Temporal

  2. Add tracing support with Kotlin coroutine

MUST HAVE

Smart Contract CI/CD pipeline

  1. add CI pipeline for smart contracts

  2. not sure if we should do the CD pipeline because it will update the smart contract and migrate all the existing accounts

  3. SAF-349 - GitHub pipeline for testing and deploying smart contracts Done

  4. https://github.com/SafiBank/SaFiMono/pull/8495

MUST HAVE