Merge Maestro++ into PCS
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