backstage / community-plugins

Community plugins for Backstage
Apache License 2.0
157 stars 181 forks source link

🔌 Plugin: Compute Capacity Plugin #257

Closed dzolotusky closed 1 month ago

dzolotusky commented 3 years ago

Summary

A plugin for managing compute resources like virtual machines. Ideally, this plugin should have an opinionated UI for managing compute and performing common operations like Power On, Power Off, Reboot, Provision, Destroy, etc. and an extensible backend model that would allow it to operate any type of machine and add additional custom operations.

Context

The plugin only needs to have support for 1 or 2 machine types shipping with it, but ideally, "any type of machine" would actually be extensible enough to support almost anything. For example: Cloud VMs like EC2, GCE, Azure VMs, etc. Private Cloud VMs like VMware vSphere, KVM, etc. Physical Machines like Dell iDrac, HP iLO, etc.

Though, all of these machine types would be managed from the same UI in the same plugin and the only difference would be in the code that integrated this plugin with the API calls to the machines.

freben commented 3 years ago

Awesome, I've been looking forward to this!

One interesting challenge is how to map catalog entities to their corresponding cloud resources. For context for other readers: At Spotify, entities have a dedicated role property, which is a unique key that maps (one or more) components to their role in the larger ecosystem, and this maps to several different runtime aspects, one of which is capacity allocations. Interestingly, the internal legacy catalog also has functionality for managing this mapping.

Do you already at this point have some ideas on how this could be handled in the open source world, especially in a multi cloud scenario? Could it be the case that the capacity plugin would need to hold the API for mapping components to resource spaces? Would components still have a human written key of some sorts entered into them, and would that be in the form of a labelling scheme (different labels for different providers?) or something else?

Can capacity even be modeled as an entity of the Resource kind - such as a "compute cluster"?

dzolotusky commented 3 years ago

I'm not sure that I understand the question correctly. I read "how to map catalog entities to their corresponding cloud resources" to mean how we map a VM like "vm-1" to the actual VM in the cloud like "AWS EC2 i-12345678". Though, when you added the concept of role from Spotify, it seemed to me like you were getting into something a bit different.

freben commented 3 years ago

@dzolotusky Not quite - I mean that, given some frontend view, it will have knowledge of the entity yaml data essentially. Given that data, how will it form queries to another system, such that the system knows what VMs to show in the list? That is, what is the linkage from an entity of type "service", to a list of VMs in a cloud provider?

dzolotusky commented 3 years ago

OK, I understand what you're saying now and the connection to role makes sense to me. Though, I don't have an answer at the moment.

stale[bot] commented 3 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

OrkoHunter commented 3 years ago

Re-opening since plugin suggestion issues are now exempt from stalebot.

b3ondaDam27 commented 2 years ago

Hi. I don't know if anyone is still working on this idea but I was thinking about doing something similar. I don't know anything really about code or programming, but do want to learn and plan to once I get my money situated. Regardless of that though, I was hoping maybe I could bounce my idea off of individuals who do have coding and programming knowledge.

github-actions[bot] commented 1 month ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.