OpenLiberty / docs

See Open Liberty documentation on https://openliberty.io/docs/
https://openliberty.io/docs/
Other
13 stars 47 forks source link

Fault tolerant microservices (MP17) #336

Closed lauracowen closed 4 years ago

lauracowen commented 5 years ago

Introduce different aspects of fault tolerance in microservices (retry policies, bulkheads, fallback, circuit breakers) with brief example code. Make clear why a developer should care about each - what value does each type of fault tolerance have? - give concrete examples. See https://www.ibm.com/support/knowledgecenter/en/SSEQTP_liberty/com.ibm.websphere.wlp.doc/ae/twlp_microprofile_fault_tolerance.html for some examples. Also see the guides in case they have some better examples you can grab snippets from.

Maybe also mention the interceptor priority (inc change between versions from here https://github.com/OpenLiberty/docs/issues/136#issuecomment-471654257) - may be a footnote - not sure?

Relevant guides:

Spec (may contain some clear descriptions of the different fault tolerance concepts you can use): https://github.com/eclipse/microprofile-fault-tolerance/blob/master/spec/src/main/asciidoc/microprofile-fault-tolerance-spec.asciidoc

dmuelle commented 5 years ago

@lauracowen First draft of new topic is now up at https://draft-openlibertyio.mybluemix.net/docs/ref/general/#building-resilient.html

Can you recommend someone for tech review? Most of the examples are from the spec but it still needs a look.

Also- I included all the information about breaking changes between MPFT 1 & 2 directly in this doc because I didn't think I should link to the commercial liberty page for it (maybe that page should point here once we publish?). Not sure if we need all of that, can revise as necessary.

dmuelle commented 4 years ago

comments from @Emily-Jiang:

Can you add a section on how to use these annotations to solve a real time case such as a time critical situation. In this case, you will use Asynchronous Timeout Fallback etc. Please add some usage on using CompletionStage

Once you have got a CompletionStage, what do you do with it? Obviously you will chain it up and get the result.

You then explain what happens if the completionstage completed with an error or cancelled etc.

lauracowen commented 4 years ago

Feedback:

dmuelle commented 4 years ago

Hi @lauracowen - I think I've addressed all the issues from your comment above. I've also added a brief usage example and Emily ok'd the code snippet I put together for it. There is an issue with the draft site currently but my updated doc is in github at https://github.com/OpenLiberty/docs/blob/draft/ref/general/building-resilient.adoc

dmuelle commented 4 years ago

I also opened an issue for the missing descriptions in the javadoc which is currently under discussion

https://github.com/eclipse/microprofile-fault-tolerance/issues/485

dmuelle commented 4 years ago

draft site finally updated- https://draft-openlibertyio.mybluemix.net/docs/ref/general/#building-resilient.html

dmuelle commented 4 years ago

Doc is published at https://www.openliberty.io/docs/ref/general/#building-resilient.html