Skip to content

Expand on rolling update recommendations, best practices - #27382

Merged
raboof merged 7 commits into
akka:masterfrom
helena:enhance-rolling-updates
Jul 25, 2019
Merged

Expand on rolling update recommendations, best practices#27382
raboof merged 7 commits into
akka:masterfrom
helena:enhance-rolling-updates

Conversation

@helena

@helena helena commented Jul 18, 2019

Copy link
Copy Markdown
Contributor

#27192

Relates to #27342 where there's the start of a section if we want to add it, I'll point it out in comments.

The configuration from existing nodes should pass the @ref:[Cluster Configuration Compatibility Checks](#cluster-configuration-compatibility-check).
Find out more about coexisting and @ref:[untyped to typed](../typed/coexisting.md#untyped-to-typed).

### With Cluster Sharding and Persistence

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This section related to and could be updated with #27342. And samples from @patriknw's work in akka/akka-samples#110 linked when merged.

@akka-ci akka-ci added validating PR is currently being validated by Jenkins tested PR that was successfully built and tested by Jenkins and removed validating PR is currently being validated by Jenkins labels Jul 18, 2019
@akka-ci

akka-ci commented Jul 19, 2019

Copy link
Copy Markdown

Test PASSed.

@raboof raboof left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Really great to have these docs in more detail! Added some comments here and there.

Comment thread akka-docs/src/main/paradox/additional/deploy.md
Comment thread akka-docs/src/main/paradox/additional/rolling-updates.md Outdated
Comment thread akka-docs/src/main/paradox/additional/rolling-updates.md Outdated
Comment thread akka-docs/src/main/paradox/additional/rolling-updates.md Outdated
Comment thread akka-docs/src/main/paradox/additional/rolling-updates.md Outdated
Comment thread akka-docs/src/main/paradox/additional/rolling-updates.md Outdated
Comment thread akka-docs/src/main/paradox/additional/rolling-updates.md Outdated
@helena

helena commented Jul 22, 2019

Copy link
Copy Markdown
Contributor Author

Thanks @raboof, suggestions pushed.

@akka-ci akka-ci added validating PR is currently being validated by Jenkins and removed tested PR that was successfully built and tested by Jenkins labels Jul 22, 2019
@helena
helena force-pushed the enhance-rolling-updates branch from b95acb9 to 7db54ca Compare July 22, 2019 23:03
@akka-ci akka-ci added tested PR that was successfully built and tested by Jenkins and removed validating PR is currently being validated by Jenkins labels Jul 22, 2019
@akka-ci

akka-ci commented Jul 22, 2019

Copy link
Copy Markdown

Test PASSed.

1 similar comment
@akka-ci

akka-ci commented Jul 22, 2019

Copy link
Copy Markdown

Test PASSed.

Comment thread akka-docs/src/main/paradox/additional/rolling-updates.md Outdated

@jrudolph jrudolph left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great to see this section expanded. Comments below.

There are many more application specific aspects for serialization changes during rolling upgrades to consider.
For example, whether to allow dropped messages or tear down the TCP connection when the manifest is unknown.

* When some message loss during a rolling upgrade is acceptable versus a full shutdown and restart, assuming the application recovers afterwards

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's not quite clear to me what these bullets refer to. Is it in relation to "many more application specific aspects" above?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes. That is pre-existing content.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The bullets just feel a bit thrown together without any obvious connection to previous paragraph. Is it an explanation or a recommendation or a choice for the user? I can somehow puzzle together what is meant but if you read it for the first time, you'll probably be confused.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed, this is now clarified and pushed.

Comment thread akka-docs/src/main/paradox/additional/rolling-updates.md Outdated
Comment thread akka-docs/src/main/paradox/additional/rolling-updates.md Outdated
Comment thread akka-docs/src/main/paradox/additional/rolling-updates.md Outdated
Comment thread akka-docs/src/main/paradox/additional/rolling-updates.md Outdated
Comment thread akka-docs/src/main/paradox/additional/rolling-updates.md Outdated
Comment thread akka-docs/src/main/paradox/additional/rolling-updates.md Outdated
Comment thread akka-docs/src/main/paradox/additional/rolling-updates.md Outdated
In Akka, rolling updates are typically used for a stateful Akka Cluster where you can't run two separate clusters in
parallel during the update, for example in blue green deployments.

For rolling updates related to Akka dependency version upgrades and the migration guides, please see

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Might be worth an extra section below with some basic information similar to the other ones.

@helena helena Jul 24, 2019

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would but Patrik wanted to be sure we do not duplicate content here, and I fear adding basic info like that would possibly do that.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It could be the same style as the other sections below with general information / explanations + links.

Comment thread akka-docs/src/main/paradox/additional/rolling-updates.md Outdated
@raboof raboof added the 2 - pick next Used to mark issues which are next up in the queue to be worked on. The tag is non-binding label Jul 24, 2019
@akka-ci akka-ci added validating PR is currently being validated by Jenkins and removed tested PR that was successfully built and tested by Jenkins labels Jul 24, 2019
@helena
helena force-pushed the enhance-rolling-updates branch from ac865eb to d6d5de5 Compare July 24, 2019 13:19
@helena

helena commented Jul 24, 2019

Copy link
Copy Markdown
Contributor Author

@jrudolph I think I've updated all of your suggestions, thanks! And answered all questions I hope.

Comment thread akka-docs/src/main/paradox/additional/rolling-updates.md Outdated
@akka-ci akka-ci added tested PR that was successfully built and tested by Jenkins and removed validating PR is currently being validated by Jenkins labels Jul 24, 2019
@akka-ci

akka-ci commented Jul 24, 2019

Copy link
Copy Markdown

Test PASSed.

@akka-ci akka-ci added the validating PR is currently being validated by Jenkins label Jul 24, 2019
@akka-ci akka-ci added tested PR that was successfully built and tested by Jenkins and removed tested PR that was successfully built and tested by Jenkins validating PR is currently being validated by Jenkins labels Jul 24, 2019
@akka-ci

akka-ci commented Jul 24, 2019

Copy link
Copy Markdown

Test PASSed.

1 similar comment
@akka-ci

akka-ci commented Jul 24, 2019

Copy link
Copy Markdown

Test PASSed.

@jrudolph jrudolph left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Few more comments

split brain during network partitions.

Additionally, [Cluster Bootstrap](https://doc.akka.io/docs/akka-management/current/bootstrap/index.html#rolling-updates)
can be leveraged during rolling updates for joining and downing nodes in the cluster.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does bootstrap help during downing as well? Or is it just for rejoining?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jrudolph yes there is quite a lot of information here related to rolls https://doc.akka.io/docs/akka-management/current/bootstrap/index.html#rolling-updates

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Clarified and pushed if you can take another look, LMK what you think.

Comment thread akka-docs/src/main/paradox/additional/rolling-updates.md Outdated
## Cluster Configuration Compatibility Checks

During rolling updates the configuration from existing nodes should pass the Cluster configuration compatibility checks.
For example, when migrating from Classic to Typed Clusters, a two step approach is possible:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't understand this recommendation and how it applies to the migration to typed actors.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Aha, accidentally found the answer while just closing another tab: it's about migrating sharded entities from untyped to typed. That should probably be clarified (see #26718 (comment)).

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That is where it is from, yes.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added.

In Akka, rolling updates are typically used for a stateful Akka Cluster where you can't run two separate clusters in
parallel during the update, for example in blue green deployments.

For rolling updates related to Akka dependency version upgrades and the migration guides, please see

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It could be the same style as the other sections below with general information / explanations + links.

There are many more application specific aspects for serialization changes during rolling upgrades to consider.
For example, whether to allow dropped messages or tear down the TCP connection when the manifest is unknown.

* When some message loss during a rolling upgrade is acceptable versus a full shutdown and restart, assuming the application recovers afterwards

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The bullets just feel a bit thrown together without any obvious connection to previous paragraph. Is it an explanation or a recommendation or a choice for the user? I can somehow puzzle together what is meant but if you read it for the first time, you'll probably be confused.

@akka-ci akka-ci added validating PR is currently being validated by Jenkins tested PR that was successfully built and tested by Jenkins and removed tested PR that was successfully built and tested by Jenkins validating PR is currently being validated by Jenkins labels Jul 24, 2019
@akka-ci

akka-ci commented Jul 24, 2019

Copy link
Copy Markdown

Test PASSed.

@akka-ci akka-ci added validating PR is currently being validated by Jenkins and removed tested PR that was successfully built and tested by Jenkins labels Jul 24, 2019
@akka-ci akka-ci added tested PR that was successfully built and tested by Jenkins and removed validating PR is currently being validated by Jenkins labels Jul 24, 2019
@akka-ci

akka-ci commented Jul 24, 2019

Copy link
Copy Markdown

Test PASSed.

1 similar comment
@akka-ci

akka-ci commented Jul 24, 2019

Copy link
Copy Markdown

Test PASSed.

@helena helena changed the title Expand on rolling update recommendations, best practices #27192 Expand on rolling update recommendations, best practices Jul 24, 2019

@jrudolph jrudolph left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, good to have more content and links here!

@raboof
raboof merged commit ba23848 into akka:master Jul 25, 2019
@raboof raboof added this to the 2.6.0-M5 milestone Jul 25, 2019
johanandren pushed a commit to johanandren/akka that referenced this pull request Aug 28, 2019
@helena
helena deleted the enhance-rolling-updates branch September 4, 2019 14:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

2 - pick next Used to mark issues which are next up in the queue to be worked on. The tag is non-binding tested PR that was successfully built and tested by Jenkins

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants