Skip to content

Distributed cluster management tool #486

Description

@LaurentRDC

There are a few issues with Cloud Haskell today that I think are showstoppers. The three that come to mind are:

  • Peer discovery must be hand-rolled. distributed-process-simplelocalnet improves somewhat on this, but multicast isn't supported in cloud environments such as AWS, Azure, and GCP;
  • A cluster must effectively run the same binary at this time to use spawn. Cluster version upgrades must be hand-rolled;
  • Cluster management (e.g. resource provisioning) must be hand-rolled.

Inspired by other tools such as Keter, I propose the creation of a toolkit that addresses these issues all at once.

The toolkit would have two parts.
The first is an agent that runs as a separate Cloud Haskell Process on every Node. This agent has an understanding of the underlying infrastructure (from Cloud or other, more bespoke environments), such that it can do peer discovery (via e.g. DNS), as well as peer registration needed to be discovered.
The second part of this toolkit is a command-line tool that allows to manage a cluster. The command-line tool interacts with the node agents to:

  • Deploy applications;
  • Query status;
  • Perform system migrations from version to version, using the attached agent for inter-version communication;

I think that having a toolkit like this would be a huge improvement for productivity, and remove much of the friction in getting started with Cloud Haskell.

I am putting this on my (ever growing) list of things to do, but if someone is really keen on getting this to work, I'm happy to provide support!

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions