diff --git a/assets/diagram.md b/assets/diagram.md new file mode 100644 index 0000000..64ff8a7 --- /dev/null +++ b/assets/diagram.md @@ -0,0 +1,23 @@ +```mermaid +sequenceDiagram + participant consumer as API Consumer + participant APIGW as API Gateway + participant API as Lambda + participant SQS + participant Handler as Handler Lambda + participant SQSDLQ As SQS Dead letter queue + + consumer ->> APIGW: POST /order + APIGW ->> API: Route request to API Lambda + note right of API: Validate request parameters + break when request validation fails + API ->> consumer: Return HTTP 400 error + end + API ->> SQS: Post message to SQS for eventual processing + API ->> consumer: Return HTTP 201 success, order created + SQS ->> Handler: Lambda event source polling for visible messages on SQS Queue + note right of Handler: Process order, this may be a resource intensive or flakey process which cannot be completed in the initial API request + break when order handling fails 3 times + Handler ->> SQSDLQ: Add order SQS message to dead letter queue + end +``` \ No newline at end of file diff --git a/assets/diagram.png b/assets/diagram.png new file mode 100644 index 0000000..6bf9302 Binary files /dev/null and b/assets/diagram.png differ diff --git a/readme.md b/readme.md index eef5ca8..1f99cb8 100644 --- a/readme.md +++ b/readme.md @@ -3,30 +3,9 @@ This is an example project shell of an AWS Architecture utilitsing the Serverless Framework with AWS Lambda written in TypeScript. -Architecture: - -```mermaid -sequenceDiagram - participant consumer as API Consumer - participant APIGW as API Gateway - participant API as Lambda - participant SQS - participant Handler as Handler Lambda - participant SQSDQL As SQS Dead letter queue - consumer->>APIGW: POST /order - APIGW->>API: Route request to API Lambda - note right of API: Validate request parameters - break when request validation fails - API->>consumer: Return HTTP 400 error - end - API ->> SQS: Post message to SQS for eventual processing - API->>consumer: Return HTTP 201 success, order created - SQS->>Handler: Lambda event source polling for visible messages on SQS Queue - note right of Handler: Process order, this may be a resource intensive or flakey process which cannot be completed in the initial API request - break when order handling fails 3 times - Handler->>SQSDQL: Add order SQS message to dead letter queue - end -``` +## Architecture: + +![Sequence diagram](assets/diagram.png) ## Installation