arcade-services icon indicating copy to clipboard operation
arcade-services copied to clipboard

Merge Maestro++ into PCS

Open premun opened this issue 1 year ago • 0 comments

Motivation

The Maestro++ and PCS services are similar in what they're doing:

  • Both have the same connectivity (GitHub, AzDO, BAR, ..)
  • Both have similar capabilities (opening PRs, working with git, ..)

The reason we have 2 different services is that Service Fabric (where Maestro++ runs) was unsuitable for the VMR code flow requirements (disk size, process life cycle, ..).

With 2 services, it increases the compliancy and maintenance burden on our team, complicates some of the scenarios (Maestro and PCS both asynchronously communicating) and makes implementation of new features difficult (SF is hard to debug, dual-service architecture is complicated). Together with the latest security push, the requirements incur more potentially throwaway work on our team than it will cost to merge these services.

This Epic is about merging the logic of Maestro++ into PCS and deprecating the Maestro++ Service Fabric cluster.

Goals and milestones

  • [ ] Port frontend and backend Maestro++ services into PCS
  • [ ] Switch traffic and dependency flow execution to PCS

Rough roadmap of the work

graph LR
    Queues(Add support for Azure Queues)
    Redis(Implement a Redis cache)
    Api(Migrate API controllers)
    JobPoC(Container Job POC for Cron replacement)
    Actors(Port SubscriptionActorService)
    Switch(Switch to using the migrated service in Prod)
    Cleanup(Clean-up old Maestro)
    BarViz(Migrate BarViz)
    DependencyUpdater(Port DependencyUpdater)
    Feedcleaner(Port Feedcleaner to PCS)
    FeatureSwitch(Add feature switch for Maestro / PCS)
    ProdEnv(Add Production Environment)

    Redis-->Actors
    Queues-->Actors
    Redis-->DependencyUpdater
    Queues-->DependencyUpdater
    Redis-->Feedcleaner
    Queues-->Feedcleaner
    Api-->BarViz

    JobPoC-->DependencyUpdater
    JobPoC-->Feedcleaner

    ProdEnv-->Switch
    DependencyUpdater-->Switch
    Feedcleaner-->Switch
    Actors-->Switch
    BarViz-->Switch
    FeatureSwitch-->Switch

    Switch-->Cleanup

    classDef big fill:#DD8888,stroke:black,stroke-width:3px
    class BarViz,Actors,ProdEnv big;

(items in red are the most complicated parts of the effort

premun avatar Aug 07 '24 09:08 premun