├── .gitignore ├── LICENSE.adoc ├── Makefile ├── Order_Service_Canvas.docx ├── README.adoc ├── blank-canvas.adoc └── order-service-example-canvas.adoc /.gitignore: -------------------------------------------------------------------------------- 1 | pdfs/ 2 | html/ 3 | -------------------------------------------------------------------------------- /LICENSE.adoc: -------------------------------------------------------------------------------- 1 | 2 | Copyright (c) 2019 Chris Richardson Consulting Inc. All rights reserved 3 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | all : pdfs $(patsubst %.adoc,pdfs/%.pdf,$(wildcard *.adoc)) $(patsubst %.adoc,html/%.html,$(wildcard *.adoc)) 2 | 3 | pdfs : 4 | mkdir -p pdfs 5 | 6 | html : 7 | mkdir -p html 8 | 9 | pdfs/%.pdf : %.adoc 10 | asciidoctor-pdf $< -o $@ 11 | 12 | html/%.html : %.adoc 13 | asciidoctor $< -o $@ 14 | -------------------------------------------------------------------------------- /Order_Service_Canvas.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cer/microservice-canvas/a4cf512635601ce838ada85f990e6edb84440761/Order_Service_Canvas.docx -------------------------------------------------------------------------------- /README.adoc: -------------------------------------------------------------------------------- 1 | # Examples of the microservice canvas 2 | 3 | ## About the microservice canvas 4 | 5 | The microservice canvas is a very convenient way to document a (micro)service. 6 | To learn more about the microservice canvas please see this http://chrisrichardson.net/post/microservices/general/2019/02/27/microservice-canvas.html[blog post]. 7 | 8 | ## Formats 9 | 10 | The canvas is available in the following formats: 11 | 12 | * link:order-service-example-canvas.adoc[Asciidoc] 13 | * link:Order_Service_Canvas.docx[Word] 14 | * https://docs.google.com/document/d/1GM9ziaa5yOJsHJRa_Cnhvnugl3oOBmjs3rMM3p0Ialk/edit?usp=sharing[Google Doc] 15 | 16 | ## Tools 17 | 18 | Take a look at this https://github.com/microservice-canvas/microservice-canvas-tools/[library for generating a canvas] for a running service. 19 | 20 | ## Example microservice canvas 21 | 22 | This microservice canvas describes the `Order Service`, which is part of the https://github.com/microservices-patterns/ftgo-application/[FTGO application] - my https://microservices.io/book[book's] example application. 23 | 24 | image::http://chrisrichardson.net/i/posts/Order_Service_Canvas.png[] 25 | 26 | Copyright (c) 2020 Chris Richardson Consulting Inc. All rights reserved 27 | -------------------------------------------------------------------------------- /blank-canvas.adoc: -------------------------------------------------------------------------------- 1 | = Blank canvas 2 | Chris Richardson 3 | Copyright (c) 2020 Chris Richardson Consulting Inc. All rights reserved 4 | 5 | 6 | [cols="8*"] 7 | |=== 8 | 3+a| Name: 5+a| 9 | 10 | 3+a| *Description:* 11 | 5+a| 12 | 13 | 14 | 15 | 8+a| *Capabilities* 16 | 8+a| 17 | 18 | 8+| *Service API* 19 | 3+| Commands 3+| Queries 2+| Events Published 20 | 3+a| 21 | 3+a| 22 | 2+a| 23 | 24 | 3+| Non-functional requirements 5+a| 25 | 26 | 8+| *Observability* 27 | 8+| Key metrics 28 | 8+a| 29 | 30 | 4+| Health check endpoint 31 | 4+| 32 | 33 | 8+| *Implementation* 34 | 8+| Domain Model 35 | 8+a| 36 | 8+| *Dependencies* 37 | 4+| Invokes 4+| Subscribes to 38 | 39 | 4+a| 40 | 41 | 4+a| 42 | 43 | |=== 44 | -------------------------------------------------------------------------------- /order-service-example-canvas.adoc: -------------------------------------------------------------------------------- 1 | = Order Service canvas 2 | Chris Richardson 3 | Copyright (c) 2019 Chris Richardson Consulting Inc. All rights reserved 4 | 5 | 6 | This canvas describes the `Order Service`, which is part of the https://github.com/microservices-patterns/ftgo-application/[FTGO application]. 7 | 8 | [cols="8*"] 9 | |=== 10 | 3+a| Name: 5+a| Order Service 11 | 12 | 3+a| *Description:* 13 | 5+a| 14 | 15 | The Order Service provides an API for creating, revising, and cancelling orders. 16 | 17 | 8+a| *Capabilities* 18 | 8+a| 19 | Order Management 20 | 8+| *Service API* 21 | 3+| Commands 3+| Queries 2+| Events Published 22 | 3+a| Synchronous: 23 | 24 | * createOrder() 25 | * reviseOrder() 26 | * cancelOrder() 27 | 28 | Asynchronous: 29 | 30 | * N/A 31 | 32 | 3+a| getOrder() 2+a| Order event channel: 33 | 34 | * Order Created 35 | * Order Authorized 36 | * Order Revised 37 | * Order Cancelled 38 | * ... 39 | 40 | 3+| Non-functional requirements 5+a| 41 | 42 | * 99.95% availability 43 | * 1000 orders/second 44 | 45 | 8+| *Observability* 46 | 8+| Key metrics 47 | 8+a| 48 | 49 | * placed_orders 50 | * approved_orders 51 | * rejected_orders 52 | * ... 53 | 54 | 4+| Health check endpoint 55 | 4+| /actuator/health 56 | 57 | 58 | 59 | 8+| *Implementation* 60 | 8+| Domain Model 61 | 8+a| * Order aggregate 62 | 8+| *Dependencies* 63 | 4+| Invokes 4+| Subscribes to 64 | 4+a| 65 | 66 | Consumer Service: 67 | 68 | * validateOrder() 69 | 70 | Kitchen service: 71 | 72 | * createTicket() 73 | * confirmCreateTicket() 74 | * cancelCreateTicket() 75 | 76 | Accounting Service 77 | 78 | * authorize() 79 | 80 | 4+a| Restaurant Service 81 | 82 | * Restaurant Created event 83 | * Restaurant Menu Revised event 84 | 85 | Saga reply channels: 86 | 87 | * Create Order Saga 88 | * Revise Order Saga 89 | * Cancel Order Saga 90 | 91 | |=== 92 | --------------------------------------------------------------------------------