Global API Deployments with CloudHub and AWS Route 53 (Part 1 of 2)

Global organizations require global IT infrastructure to support their processes, and APIs are no exceptions to this requirement. In Part 1 of this blog post series, we will walk through the prerequisites and fictional business requirements of ACME Inc. to frame our discussion.


Table of Contents

Prerequisites
Business requirements

Prerequisites

  • MuleSoft Anypoint Platform
  • You can request a free trial account by clicking here. Make sure to use a fictional username, for example including today's date, to ensure there are no clashes with existing or future usernames.
  • AWS Account with an AWS Route 53 Hosted Zone
  • Throughout the series, we will reference to the vanity domain api.acme.com. If you want to recreate the steps below, you will also have to create a Hosted Zone with your own domain.

Business requirements

We will use the following fictional company and fictional business requirements to guide us through the process.

Since 2019, ACME Inc. is an avid user of the the MuleSoft Anypoint Platform for all their API, integration and API Management use cases. In June 2023, the Center for Enablement (C4E) started developing a new Orders API, based on the below API Sepcifcation, which allows their customers to integrate their applications with ACME Inc. to get and create orders directly, in turn improving their customer's processes. The team is now looking to set up and expand the platform to allow them to deploy the new API on a global scale.

    #%RAML 1.0
title: Orders API

/orders:
  get:
    responses:
      200:
        body:
          application/json:
            type: object
            properties:
              id:
                type: id
              createdAt:
                type: datetime
                example: 2023-08-03T17:16:24Z
              status:
                type: status
              items:
                type: array
                items:
                  - orderLineItem
              region:
                type: string
                enum:
                  - deu-c1
                  - usa-e1
                  - au-s1
                example: deu-c1

types:
  id:
    type: string
    example: 4a04dc1c-1cf7-4f45-8e52-e03967790192
  status:
    type: string
    enum:
      - transit
      - delivered
    example: transit
  orderLineItem:
    properties:
      id:
        type: id
      productId:
        type: id
      description:
        type: string
        example: Basic Sneakers
      price:
        type: number
        example: 22.99

ACME Inc. operates in three regions cq. countries:

  • Oceania: Australia
  • North America: Virginia
  • Europe: Germany

As Australia was the first country in which the Anypoint Platform was introduced, they are already actively using an Anypoint Virtual Private Cloud (VPC) and Dedicated Load Balancer (DLB) to deploy their applications in this region.

For the new to be added regions, i.e. North America and Europe, ACME Inc.'s C4E is very interested in setting up Private Spaces rather than VPCs and DLBs due to the improved deployment and runtime performance, scalability, more fine-grained resource allocation, and overall setup simplification. Luckily, they have sufficient entitlements in their current subscription to set up 2 new Private Spaces. However, there is no capacity to migrate the applications running in Australia to a Private Space, nor can they set up a separate Private Space for this region due to license availability.

The Orders API will need to be deployed as close to the operating regions defined above, and the consuming applications will need to be routed to the API instance that is closest to them, in order to reduce geographical latency. Furthermore, ACME Inc. wants to continue using their vanity domain https://api.acme.com, which is already in use for the Australia region.

Now, it's up to us to come up with a solution design. Stay tuned for Part 2!

Jeroen Douma

Domain Architect Integration and CRM in the Food Service Industry

Eindhoven, The Netherlands https://jeroen-01.github.io

This blog provides general guidance and is not intended as official implementation documentation. Readers are responsible for their own implementation and associated costs. No guarantees are made regarding outcomes. The authors are not liable for any resulting damages. Use at your own discretion.