Which Amazon Web Services are Interoperable?

Which Amazon Web Services are Interoperable? This is a question I asked when I started studying for AWS certification, asked a few AWS certified architects at Sydney Summit 201 (the answer typically was "all of them as they all use REST APIs", really?), and have attempted to answer from the documentation. They only way I could think to answer this so far is go through the documentation for the 3500 services (according to April AWS service update) and create a dependencies graph (which services interoperate with which other services).  I've also noticed that some of the certification questions ask which for AWS X, which other AWS services interoperate with it? So obviously it's important.

Obviously AWS could answer this by monitoring (E.g. with X-Ray) which services call or are called with services and create a interoperability graph and frequency of calls.

I've since come up with another approach to answer this.  I've used the 16 aws reference architectures, and the April AWS service update.   I've gone through each reference architecture and documented the dependencies between each Amazon Web services.  This has given me a quick and nasty way of of at least seeing which Amazon Web services can interoperate. However, there are some obvious limitations with this approach. Not all of the April AWS services appear in the reference architectures (time to update the reference architectures perhaps? E.g. Missing are Lambda and Kinesis etc). Also not all dependencies appear in the reference architectures. I.e. some possible interoperable services (from the docs) don't appear as examples so don't get counted by my approach.  Here's what I've got so far (hand drawn, phone photo). Next I plan to enter the data on my computer and graph things including services by order of popularity, number of interconnections between services, etc.



Next stage of the process was entering the data into a spreadsheet and analysing it.  First result is which are the most highly interconnected AWS services (or external components) from the 16 reference architectures? The order is: EC2 and Auto Scaling (which I have grouped), then "Users", S3, EMR, CloudFront, DynamoDB, RDS, ELB, Beanstalk, VPC, etc.

Note that Users are "customer" or internal business users, Private D/C is a customer of 3rd party private Datacenter or server, Analyst is a business user (e.g. who analyses marketing results), and Sensors are sources of real time event data.



Another interesting observation is that many of the newer services don't get a mention in the reference architectures. Time to update them? E.g. Lambda, Kinesis, IoT, AI/ML, ElasticSearch, QuickSight, SNS, and NONE of the Admin and Security Services!!!

There's also no guarantee that I've picked up on all the possible interoperability patterns between services (in fact I know that I missed some from the docs). The other thing to note is that because I've combined EC2 and Auto Scaling some of the complexity and number of relationships has been simplified. For example, a typical pattern (with often multiple iterations) is ELB -> Auto Scaling -> EC2 -> ELB etc for n-tier architectures. There's actually a huge bunch of connections around these 3 services. But also some connections that don't use all of them (e.g. calls to EC2 without ELB or Auto Scaling were common, and EC2->EC2 calls).

What do the interconnections look like? The  best/only way I could think of doing this was to use a Chord Chart (no, not a guitar chord chart, but a chart that arranges all the components in a circle and then connects them together uses flow volumes similar to a Sankey Diagram. I had to abbreviate some service names to fit them onto the Chord chart. The services are as follows (in order from 1 o'clock in clock-wise order):

Business Analyst User
Public/internal user
Private server or D/C
Sensors
Virtual Private Cloud
Elastic Load Balancer
Route 53 (DNS)
Direct Connect (network gateway)
Storage gateway (hybrid storage)
Import/Export (appliance data transport)
CloudFront (CDN)
Elastic Compute Cloud/Auto Scaling
Beanstalk (automatic application management)
Elastic Map Reduce (Hadoop, Spark)
Data Pipeline (orchestration for data workflows)
Relational Database Service
Simple DB (key/value DB)
DynamoDB (scalable NoSQL)
ElastiCache (in-memory cache/database)
Redshift (Data warehouse)
S3 (simple storage service, Object store)
Glacier (Archival data store)
Elastic Block Store (persistent block store)
Simple Email Service
Security Token Service
Simple Queue Service
CloudSearch (application search
Simple Workflow Service

A clickable Javascript version of the Chord chart:


And a static version of the image:



Comments

  1. Want to change your career in Selenium? Red Prism Group is one of the best training coaching for Selenium in Noida. Now start your career for Selenium Automation with Red Prism Group. Join training institute for selenium in noida.

    ReplyDelete

Post a Comment

Popular posts from this blog

AWS Certification glossary quiz: IAM

AWS SWF vs Lambda + step functions? Simple answer is use Lambda for all new applications.