Skip to content

Service Dependencies

movitto edited this page Dec 7, 2012 · 1 revision

Service Dependencies

Brainstorming

  • Services should be able to depend on the completion of other services, even if those services exist on another instance
    • This requires that the audrey agent tell the config server when a service is done being configured
      • could make this a conditional thing (i.e., the service could indicate whether the completion status needs to be returned) … but, maybe not … it shouldn’t be up to a service to know if anything else depends on it
      • introduces a new piece of the communication protocol (update the protocol version … need to understand backwards compat issues, if we’re going to deal with them)
        • want to revisit the idea of more structured data instead of our current data format
          • not only are we transmitting “these are the services, and these are the input values for those services”, but now it will be: “these are the services, these are the input values for those services, and these are the other services that need to complete first”
      • The audrey agent should be the service execution controller … it should know when it can and cannot execute a certain service configuration
        • config server will only know what information is available to everyone, not whether a certain service configuration can be executed
    • config server will now have to disseminate not only the returned values from instances, but the service completion status to all other services that care
      • probably need to update the config server storage strategy … need to handle the service-service dependency information … not sure if this requires another storage object
        • might be a good time to revisit the config server storage and model strategy altogether
          • keep it as plain files, but maybe need a better separation of the various parts of an “instance” … right now, all the pieces of an instance are tied up in the instance.rb model object … probably makes a lot of sense to start breaking out the “provided-params”, “required-params”, “base-instance”, etc…