Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Roadmap Planner
maplinks
timelinetrue
pagelinks
source %7B%22title%22%3A%22Roadmap%20Planner%22%2C%22timeline%22%3A%7B%22startDate%22%3A%222018-07-16%2000%3A00%3A00%22%2C%22endDate%22%3A%222019-06-16%2000%3A00%3A00%22%2C%22displayOption%22%3A%22MONTH%22%7D%2C%22lanes%22%3A%5B%7B%22title%22%3A%22Dashboard%22%2C%22color%22%3A%7B%22lane%22%3A%22%23f6c342%22%2C%22bar%22%3A%22%23fadb8e%22%2C%22text%22%3A%22%23594300%22%2C%22count%22%3A1%7D%2C%22bars%22%3A%5B%7B%22title%22%3A%22Feature%201%22%2C%22description%22%3A%22This%20is%20the%20first%20bar.%22%2C%22startDate%22%3A%222018-07-01%2000%3A00%3A00%22%2C%22duration%22%3A2%2C%22rowIndex%22%3A0%2C%22id%22%3A%22eeb2d902-e723-4ff0-a10d-43a5793089a4%22%2C%22pageLink%22%3A%7B%7D%7D%2C%7B%22title%22%3A%22Feature%202%22%2C%22description%22%3A%22This%20is%20the%20second%20bar.%22%2C%22startDate%22%3A%222018-09-02%2011%3A38%3A36%22%2C%22duration%22%3A2.297029702970297%2C%22rowIndex%22%3A1%2C%22id%22%3A%220e8f437c-39f1-4d70-b85b-3ca89fd57a00%22%2C%22pageLink%22%3A%7B%7D%7D%2C%7B%22rowIndex%22%3A0%2C%22startDate%22%3A%222018-11-15%2006%3A10%3A41%22%2C%22id%22%3A%2290251c8c-3b74-4d2b-b850-684ffd40514b%22%2C%22title%22%3A%22Feature%203%22%2C%22description%22%3A%22%22%2C%22duration%22%3A2.00990099009901%2C%22pageLink%22%3A%7B%7D%7D%2C%7B%22rowIndex%22%3A1%2C%22startDate%22%3A%222019-01-18%2019%3A14%3A51%22%2C%22id%22%3A%22d0529fe8-6c8c-45e8-8078-d75c2f063dd9%22%2C%22title%22%3A%22Feature%204%22%2C%22description%22%3A%22%22%2C%22duration%22%3A2.01980198019802%2C%22pageLink%22%3A%7B%7D%7D%5D%7D%2C%7B%22title%22%3A%22Notification%22%2C%22color%22%3A%7B%22lane%22%3A%22%233b7fc4%22%2C%22bar%22%3A%22%236c9fd3%22%2C%22text%22%3A%22%23ffffff%22%2C%22count%22%3A1%7D%2C%22bars%22%3A%5B%7B%22title%22%3A%22iOS%20App%22%2C%22description%22%3A%22This%20is%20the%20third%20bar.%22%2C%22startDate%22%3A%222018-07-13%2021%3A23%3A10%22%2C%22duration%22%3A2.5%2C%22rowIndex%22%3A0%2C%22id%22%3A%22dd93afcd-2704-4253-adb8-809a336cc5ba%22%2C%22pageLink%22%3A%7B%7D%7D%2C%7B%22rowIndex%22%3A0%2C%22startDate%22%3A%222018-10-10%2004%3A59%3A24%22%2C%22id%22%3A%228dc8bc2d-b7cb-44a8-b526-7d1ede51f690%22%2C%22title%22%3A%22Android%22%2C%22description%22%3A%22%22%2C%22duration%22%3A2.4752475247524752%2C%22pageLink%22%3A%7B%7D%7D%5D%7D%5D%2C%22markers%22%3A%5B%7B%22title%22%3A%22Milestone%201%22%2C%22markerDate%22%3A%222018-07-31%2016%3A38%3A01%22%7D%2C%7B%22markerDate%22%3A%222018-10-08%2001%3A25%3A32%22%2C%22title%22%3A%22Go%2FNo%20go%22%7D%2C%7B%22markerDate%22%3A%222018-12-31%2001%3A54%3A03%22%2C%22title%22%3A%22Milestone%202%22%7D%5D%7D
titleRoadmap%20Planner
hashc013a8cf46e3276583f2ddb4893243e4

Glossary

Cloud Foundation

A set of global services that manage the OpenMethods' cloud infrastructure.  These services include:

  • Cloud Manager
  • Docker Registry
  • AWS Cloudwatch
  • Redundant OAuth Gateways

Shard

An isolated and independent copy of the OpenMethods cloud infrastructure.  A Shard contains three types of infrastructure elements:

  • Core Components - Application Manager, Redundant Cloud Gateways
  • Shared Versioned Components - Web MediaBar, Config Server, etc
  • Dedicated Versioned Components - HIS, QueueAdapter, etc

Deployment Ring

A logical grouping of Shared and Dedicated components related to a single major.minor version of a product.  A Deployment Ring may contain components located around the world or within a single AWS region depending on the scope and nature of its parent Shard.

Cloud Management VPC

An AWS network structure that is intended to contain all services of the Cloud Foundation.  There is a single Cloud Management VPC located in US_EAST_1 (Northern Virginia).  All Shard VPCs will have connections and routes to this central Cloud Management VPC.

Shard Management VPC

An AWS network structure that is intended to contain all Core and Shared Versioned Components for a Shard.  Each Shard has a single Shard Management VPC located in the home region for the Shard.  For instance, the GDPR Shard's Management VPC is located in EU_WEST_3 (Paris).

Shard Service VPC

An AWS network structure that is intended to contain a set of Dedicated Versioned Components for a Shard.  A Shard will have any number of Service VPCs that are possibly located around the world.  The General Population Shard is meant to service customers around the world and as such, it will have many Service VPCs.  A Service VPC will also provide secure access to customer resources through an IPSEC infrastructure provided by Aviatrix.

Requirements

#RequirementUser StoryImportanceJira IssueNotes
1
Status
colourRed
titleHIGH


2




Architecture

Cloud Foundation

Image Added

Shard Management Infrastructure

Image Added

Deployment Ring Shared Infrastructure

Image Added

Putting it all Together

Image Added

AWS Network Design

There are several constraints that must be kept in mind when designing a world wide AWS cloud platform:

  • Limited number of AWS resources (some can be increased, some can’t)
  • Avoid networking conflicts between AWS regions as well as customer networks
  • Consistent numbering for our various cloud shards (general population, GDPR, GovCloud, etc)
  • Ease automated assignment of networks
  • Support for two availability zones per region


There are three types of VPCs we will be utilizing: Cloud Management VPC, Shard Management VPCs and Shard Service VPCs.  A single Cloud Management VPC holds the centralized cloud management services for the OpenMethods Cloud solution.  Each cloud shard will have a single Shard Management VPC that hosts the common, centralized components that are shared between customers that reside in the shard.  These Shard Management VPCs will share the 10.255.0.0/16 address space.  The first (left to right) three bits of the third byte will be used to indicate which of 8 possible shards the Shard Management VPC belongs to.  The forth bit is used to subnet between the two availability zones used for redundancy.  The remaining address space is used for instances within the VPC and availability zone subnets.  Here’s the table of shard prefixes in binary:


Shard Id

Bit Prefix

Core VPC CIDR

Availability Zone A Subnet

Availability Zone B Subnet

1 – Development

000

10.255.0.0/19

10.255.0.0/20 (4091 hosts)

10.255.16.0/20

2 – Gen Pop

001

10.255.32.0/19

10.255.32.0/20

10.255.48.0/20

3 – GDPR

010

10.255.64.0/19

10.255.64.0/20

10.255.80.0/20

4 - GovCloud?

011

10.255.96.0/19

10.255.96.0/20

10.255.112.0/20

5

100

10.255.128.0/19

10.255.128.0/20

10.255.144.0/20

6

101

10.255.160.0/19

10.255.160.0/20

10.255.176.0/20

7

110

10.255.192.0/19

10.255.192.0/20

10.255.208.0/20

8

111

10.255.224.0/19

10.255.224.0/20

10.255.240.0/20


The benefit of this approach allows you to tell that the server is in a Shard Management VPC and which shard it’s a member of just based on the server’s IP address.  An address that starts with 10.255.x.x will always be a Shard Management VPC and the range of the third number will tell you which shard the Shard Management VPC belongs to, i.e 10.255.0.0 – 10.255.31.255 belongs to shard 1.


The second type of VPC we will use is a Shard Service VPC.  Shard Service VPCs will host the services related to specific customers and the IPSec connectivity needed to communicate with any on premise CTI or data endpoints.  Each shard will have any number of service VPCs distributed around the globe.  Although AWS often provides many data centers (called regions) globally, we will be creating a logical grouping of these AWS regions into larger geographical areas:

  • North America
  • South America
  • EMEA
  • APAC
  • Oceana

For example, we consider Canada, US, and Mexico to be a single area called North America, while AWS has multiple regions within this area. To support the multi-dimensional deployments of Service VPCs, we will use a slightly different network addressing scheme.  Each geographical region will have one (or more as we expand) /16 address space used across the service vpcs in that area:


Geographical Area

Base CIDR

Expansion CIDR

North America

10.254.0.0/16

10.249.0.0/16

South America

10.253.0.0/16

10.248.0.0/16

EMEA

10.252.0.0/16

10.247.0.0/16

APAC

10.251.0.0/16

10.246.0.0/16

Oceana

10.250.0.0/16

10.245.0.0/16


As with Shard Management VPCs, Shard Service VPCs belong to a single cloud shard and are not shared.  The ownership of the Service VPC is designated by the first (left to right) three bits of the third byte.  Unlike Core VPCs, the address space needs to be divided up further to allow multiple Service VPCs to be created and to limit the size of the VPC subnets to eliminate customer overlap where possible.  This is handled by using the 4th through 7th bits of the third octet to identify the Service VPC specifically.  The eighth bit is used to segment off the availability zone subnet space.  Here’s the breakdown of the Shard 1, North American network address space:


Shard Id

Bit Prefix

Service VPC Id

Service VPC Prefix

Service VPC CIDR

Availability Zone A Subnet

Availability Zone B Subnet

1 – Development

000

1

0000

10.254.0.0/23

10.255.0.0/24 (250 hosts)

10.255.1.0/24



2

0001

10.254.2.0/23

10.255.2.0/24

10.255.3.0/24



3

0010

10.254.4.0/23

10.255.4.0/24

10.255.5.0/24



4

0011

10.254.6.0/23

10.255.6.0/24

10.255.7.0/24



5

0100

10.254.8.0/23

10.255.8.0/24

10.255.9.0/24



6

0101

10.254.10.0/23

10.255.10.0/24

10.255.11.0/24



7

0110

10.254.12.0/23

10.255.12.0/24

10.255.13.0/24



8

0111

10.254.14.0/23

10.255.14.0/24

10.255.15.0/24



9

1000

10.254.16.0/23

10.255.16.0/24

10.255.17.0/24



10

1001

10.254.18.0/23

10.255.18.0/24

10.255.19.0/24



11

1010

10.254.20.0/23

10.255.20.0/24

10.255.21.0/24



12

1011

10.254.22.0/23

10.255.22.0/24

10.255.23.0/24



13

1100

10.254.24.0/23

10.255.24.0/24

10.255.25.0/24



14

1101

10.254.26.0/23

10.255.26.0/24

10.255.27.0/24



15

1110

10.254.28.0/23

10.255.28.0/24

10.255.29.0/24



16

1111

10.254.30.0/23

10.255.30.0/24

10.255.31.0/24


The vast majority of the time there will only be 1 or 2 Service VPCs in a given geographical area associated with a shard.  As with Core VPCs, you’ll be able to tell which geographical region based on the second octet.  The associated shard can be determined by looking at the range of the third octet, 10.254.0.0 – 10.254.31.255 indicates shard 1.  The Service VPC is determined by the sub range, 10.254.0.0 – 10.254.1.255 for Service VPC 1.  The availability zone can be determined by evens or odds of the third octet, even is AZ A which odd is AZ B.

User interaction and design

...