All,

We've over the years create a VR that largely is stable but we've discussed the 
pain of maintaining, extending, and upgrading VRs both in lists and in 
user-groups and CCC conferences.

On a high-level the pain points are:

  *   It's difficult to debug, investigate VR for operators and support team
  *   Maintaining the VR code, fixing bugs, implementing features is a pain for 
developers; further the xml&json databags based programming model is confusing
  *   Any fix or changes requires a new systemvmtemplate or VR codebase whose 
patching requires restarting the VR or destroying an old VR
  *   No uniform VR programming API (current approach is SSH+databags and 
execute a script), this makes testing VR difficult and QA in isolation is not 
possible
  *   Users forget to register the right systemvmtemplate for a new ACS version 
and upgrades fail
  *   Others (please share yours)?

Among these pain points my colleagues have proposed a PR targeting 4.16 [1] 
that aims to unify systemvmtemplate as a building block that is bundled as part 
of ACS rpm/deb/* packages which CloudStack will automatically seed/register/use 
with which upgrades will be as simple as a yum update or apt-get upgrade. 
Further, my colleagues and I are exploring a live patch API which in near 
future that can patch a running systemvm/VR using systemvm.iso (or deprecate 
systemvm.iso and use ssh/scp to patch?) without requiring to reboot/recreate 
it. Hopefully, this addresses some of those pain points. We request the 
community for your feedback and review/participation in the PR.

Open questions, topics to discuss and gather feedback:

  *   VR programming: Should we explore a new light-weight VR agent that 
provides an API (restful/grpc, or CLI?), some mechanism of live patching VR 
code, packages, and kernel?
  *   Refactoring isolated network and VPC codebases into a unified codebase 
and feature sets (assumption that isolated network are largely a VPC with 
single tier), does it benefit the community, users, and developers?
  *   Underlying OS:
     *   should we consider something other than Debian, any suggestions?
     *   or explore stable/widely used and maintained opensource router 
distributions such as OpenWRT [2] which ships with a UI and CLI/configuration 
system UCI [3]? The cons of the approach are a new dependency and some likely 
missing packages.
     *   In current VR codebase, most of the effort is spent in 
implementing/maintaining router packages/configure codebase which we can get 
rid of by depending on a stable Linux router distro which ships with some 
API/config system. Not choosing an existing router distribution means we 
continue to DIY router programming+config management codebase.
     *   Any other ideas?

Thoughts, feedback?

[1] https://github.com/apache/cloudstack/pull/4329
[2] https://github.com/openwrt/openwrt/graphs/contributors
[3] https://openwrt.org/docs/guide-user/base-system/uci


Regards.

 

Reply via email to