Common Needs
[ Back to Top ]
Each part of the Walrus collection of utilities is going to need certain common functionality. Some of these are:
- Introspection: learn about machines, clouds, and other setup parameters.
- Querying: ability to dispatch queries to any system (or set of systems) by any parameters. Async is a plus here.
- Security: communications over SSL, authentication, ensuring that any commands that are sent in are allowed to be run.
- Configuration: don't worry about how configuration is stored, just get/set values and let the Framework deal with the rest.
- Scheduling: ability to schedule tasks to run at certain times. This should be tied in with Querying - ability to schedule tasks to run anywhere.
- Atomicity: some tasks will need to run only once per (global, cloud, tag, system) and we need to be able to ensure that.
- Durability: tasks need to be done at some point. If they're not getting done there is an underlying reason that needs to be addressed.
Configuration
One thing that has to be determined is whether or not Walrus will support configuration file formats like people are used to. I.e., will you be able to define monitoring tasks, clouds, and the like in some configuration file? Or will it all be done in a UI and stored in a database?
I'm a big fan of using a database. It seems a good approach for a variety of reasons, not least of which is that it will help prevent people from messing things up inside of a configuration file. Learning curve is much lower if there's an intuitive UI that people can get used to.
Downside is the development time, but that isn't really a problem. Walrus is going to require a good amount of development time to make it happen in a successful manner - that's fine.
