📝 Scenario
As an engineer, I need to extend FinOps hubs safely in order to add new or change existing features to meet specific requirements at scale in a way that can be deployed across many hub instances
💎 Solution
Goal
Build an extensibility model in FinOps hubs that allows customers and partners to extend FinOps hubs without risk of upgrades breaking them.
Summary
The FinOps hubs extensibility model embraces traditional infrastructure as code (IaC) patterns and is enabled via bicep (and eventually terraform) modules. Use of the hub modules is not explicitly required but can save time and avoid conflicts in the future as FinOps hubs evolves.
Open issues
- How can we guarantee that apps maintain the same version of the hub instance?
- Should events follow .NET standards or simplify a bit?
- Microsoft.FinOpsToolkit.Hubs.IngestionManifest.Adding/Added (.NET)
- Microsoft.FinOpsToolkit.Hubs.AddIngestionManifest.Before/After (simpler code, more readable)
- Microsoft.FinOpsToolkit.Hubs.IngestionManifest.Add.Before/After (simpler code, less readable)
Tasks
- Create reusable modules
- Extract Microsoft.FinOpsToolkit.Hubs.Core basics from hub.bicep
- Implement storage retention
- Add eventing
- Microsoft.FinOpsToolkit.Hubs.Core managed exports infrastructure
- Microsoft.FinOpsToolkit.Hubs.RemoteHub
- Microsoft.FinOpsToolkit.Hubs.Analytics
- Microsoft.CostManagement.Exports / Microsoft.FinOpsToolkit.CostManagement app
- Demo IaC setup
🙋♀️ Ask for the community
We could use your help:
- Please vote this issue up (👍) to prioritize it.
- Leave comments to help us solidify the vision.
📝 Scenario
As an engineer, I need to extend FinOps hubs safely in order to add new or change existing features to meet specific requirements at scale in a way that can be deployed across many hub instances
💎 Solution
Goal
Build an extensibility model in FinOps hubs that allows customers and partners to extend FinOps hubs without risk of upgrades breaking them.
Summary
The FinOps hubs extensibility model embraces traditional infrastructure as code (IaC) patterns and is enabled via bicep (and eventually terraform) modules. Use of the hub modules is not explicitly required but can save time and avoid conflicts in the future as FinOps hubs evolves.
Open issues
Tasks
hubIdstringpublisherstringnamespacestringappNamestringdisplayNamestringfeaturesstring array = [ Pipeline, Storage, Vault ]eventsstring arraydataFactoryIdresource IDstorageIdresource IDcontainerstringresourceIdresource IDresourceNameresource namenamestringstoragePathstringfrequencystring (Daily, Monthly)startTimestringdaysnumber arraybeforeEventstringafterEventstringnamestringpropertiesobjecteventstringsecretsobject array (?)vaultIdresource IDnamestringscriptsobject (key-value pair of file names/contents)clusterUridatabaseNameconfigcontaineringestionscontaineringestion_ManifestAddedtrigger (IngestionManifestAddedevent)config_SettingsUpdatedtriggerconfig_DetectChangespipeline that identifies scope changesSettings.UpdatingeventScopes.Adding/edandScopes.Removing/edeventsconfig_DailyDataRefreshtrigger (DataRefreshStartedevent)config_MonthlyDataRefreshtrigger (DataRefreshStartedevent)config_RunBackfillpipelineBackfill.StartedeventDataRefresh.Starting/ed?ingestion_ETL_remoteHubpipelineingestion_PublishToRemoteHubpipelineIngestionManifest.AddedeventIngestiondatabase and run scriptsHubdatabase and run scriptsconfig_InitializeDataExplorerpipelineSettings.Updatedeventingestion_ETL_dataExplorerpipelineingestion_ExecuteETLpipelineIngestionManifest.Addedeventschemascontainermsexportscontainermsexports_ManifestAddedtrigger (ExportManifestAddedevent)msexports_ETL_ingestionpipelinemsexports_ExecuteETLpipelineExportManifestAddedeventconfig_AddExportspipelineScopes.ScopesAddedeventconfig_AddExportspipelineScopes.ScopesRemovedeventconfig_RunBackfillJobpipelineconfig_StartBackfillProcesspipelineconfig_RunExportJobspipelineconfig_StartExportProcesspipeline🙋♀️ Ask for the community
We could use your help: