0

I am implementing a business process that performs 6 steps e.g.

  1. The Service Orchestrator consumes an event from an SNS (or Standard Publish-Subscribe service) Topic
  2. Using the message consumed from Step 1, The Orchestrator makes an HTTP call to Service A using an HTTP web client like Spring resttemplate. Service A returns a postcode to The Orchestrator
  3. Then, The Orchestrator makes another HTTP call to Service D with the postcode from Step 2, and Service D returns the user organization
  4. Then, The Orchestrator makes another HTTP call to Service C with an event name and gets a response with template details
  5. Then, The Orchestrator makes another HTTP call to Service B with the User ID and gets a response of User GUID
  6. Then, The Orchestrator makes the final HTTP call to A Task Service with details from Services B, C and D as request parameters.

For steps 1-6 (which are direct HTTP calls using a web client), I would like to use a service orchestration approach using an event-based architecture with pub/sub and queues etc, and using a cloud-first approach. Also, I would be using Amazon-Managed-Workflows-for-Apache-Airflow for workflow orchestration.

My question: Will my event-based design below suffice for a scalable and performant solution to the business problem?

Problem:

Below is the design of a direct HTTP call based design to realise the business flow

AWS Services and Event-based Architect Design

Below is my initial event based orchestration design to realise the business flow

Mega
  • 1,304
  • 5
  • 22
  • 37
  • What's the expected latency for each step? If this is a streaming application, Airflow is probably not the right tool for the job – RNHTTR Aug 13 '23 at 02:27
  • Thanks for the response RNHTTR. It is not a streaming application and we have not discussed latency etc. But, I have put together a design which I will try to share the photo. – Mega Aug 13 '23 at 18:18
  • Please, see the updated problem in the diagram and work-in-progress design. I will like some feedback to improve the design, please. Thanks – Mega Aug 13 '23 at 22:14
  • Airflow seems like a reasonably solution IMO – RNHTTR Aug 15 '23 at 14:01
  • Thanks a lot, I need to consider retries and dead letter scenarios as well. Also, at which point to apply the retries e.g. in the airflow task or adapter service or the actual downstream service being invoked by the adapter service? Do you have any comments on those? – Mega Aug 16 '23 at 22:08
  • Airflow has a built-in retry mechanism. Airflow could talk to the adapter service, e.g. via [SimpleHttpOperatr](https://airflow.apache.org/docs/apache-airflow-providers-http/stable/operators.html#simplehttpoperator) – RNHTTR Aug 17 '23 at 22:12

0 Answers0