Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Minimalistic production deployment setup / config #252

Open
nickvcb opened this issue Jul 16, 2019 · 4 comments
Open

Minimalistic production deployment setup / config #252

nickvcb opened this issue Jul 16, 2019 · 4 comments

Comments

@nickvcb
Copy link

nickvcb commented Jul 16, 2019

What is the recommended Akka cluster setup for deployment Baker in production if scalability was not an immediate requirement?

For discussion with @nikolakasev my understanding is

  1. For journal used to store the process events have choice between : in-memory or with a backing store like Cassandra
    In-memory journal implies that the process events are not persisted between runs.

"A single node is never a good idea, and you’d want at least three (majority rule)."

  1. Cluster node/JVM count: at least three (majority rule)

Please advise if correct and if there are more considerations.

/cc @SemanticBeeng

@VledicFranco
Copy link
Contributor

In my opinion, the main 2 reasons you want a cluster is for scalability and resilience, if you don't require scalability (though you would almost get it by default because you only need to add new nodes) but you still require resilence (if nodes go down the recipe instances self-heal by respawning on another node) then you still need a backing store like Cassandra, otherwise recipe instance "rehydration" cannot happen.

If you don't need that kind of resilience even, then I would recommend just running in 1 machine with the default local configuration, so no Akka cluster and only local storage., the same configuration that you probably have for your tests.

@VledicFranco
Copy link
Contributor

The Baker 3.0 documentation page (which we are working on right now) will have more about this :)

@SemanticBeeng
Copy link

SemanticBeeng commented Jul 16, 2019

no Akka cluster and only local storage

In the current platform am building we rely on Baker (Akka persistence) for distributed process state management :

  • resuming execution of a process from any node in the deployment
  • reading Akka persistence journal from any node with "persistence query"
    etc.

For that we need cluster setup, correct?
In my understanding, the "single writer principle" is necessary for (used by) Baker and needs a cluster based setup.

If am wrong then please advise when a cluster becomes necessary from standpoint of distributed state management?

@VledicFranco
Copy link
Contributor

You are completely correct. Hence the recommendation is to configure journaling to use Cassandra. It is the store we've used for production systems and have worked great

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants