PatMyron / cloud

cloud region / instance type data
61 stars 2 forks source link

Time to provision resource types #10

Open PatMyron opened 4 years ago

PatMyron commented 4 years ago
old graph: Screen Shot 2020-01-09 at 11 22 39 AM

https://plot.ly/~PatMyron/13

https://github.com/jaredtrog/cfplot

https://aws.amazon.com/blogs/devops/how-we-sped-up-aws-cloudformation-deployments-with-optimistic-stabilization/

miparnisari commented 3 years ago

How did you generate this? I'm interested in knowing provisioning times of other types, e.g. AWS::SQS::Queue

PatMyron commented 3 years ago

re-wrote using matplotlib for more easily updatable graphing:

from collections import OrderedDict
import matplotlib.pyplot as plt
from operator import itemgetter

map = {'AWS::DirectoryService::MicrosoftAD': 1263,
 'AWS::MSK::Cluster': 1078,
 'AWS::ImageBuilder::Image': 1037,
 'AWS::Elasticsearch::Domain': 814,
 'AWS::FSx::FileSystem': 714,
 'AWS::OpsWorksCM::Server': 673,
 'AWS::AmazonMQ::Broker': 621,
 'AWS::DAX::Cluster': 558,
 'AWS::RDS::DBInstance': 489,
 'AWS::ApiGateway::VpcLink': 437,
 'AWS::Glue::DevEndpoint': 426,
 'AWS::EC2::ClientVpnTargetNetworkAssociation': 366,
 'AWS::SageMaker::Endpoint': 343,
 'AWS::CloudFront::Distribution': 293,
 'AWS::CloudFront::StreamingDistribution': 287,
 'AWS::Config::OrganizationConformancePack': 247,
 'AWS::KMS::Key': 238,
 'AWS::DMS::ReplicationInstance': 212,
 'AWS::AppConfig::Deployment': 198,
 'AWS::ElasticBeanstalk::Environment': 190,
 'AWS::CloudFormation::WaitCondition': 186,
 'AWS::ElastiCache::CacheCluster': 176,
 'AWS::AmazonMQ::ConfigurationAssociation': 164,
 'AWS::SageMaker::NotebookInstance': 154,
 'AWS::Config::OrganizationConfigRule': 152,
 'AWS::EC2::ClientVpnAuthorizationRule': 146,
 'AWS::ElasticLoadBalancingV2::LoadBalancer': 136,
 'AWS::IAM::InstanceProfile': 120,
 'AWS::EC2::NatGateway': 110,
 'AWS::EC2::Instance': 100,
 'AWS::Lambda::Version': 92,
 'AWS::EC2::VPCEndpoint': 92,
 'AWS::EC2::TransitGateway': 92,
 'AWS::EFS::MountTarget': 91,
 'AWS::Route53::HostedZone': 80,
 'AWS::RDS::DBCluster': 61,
 'AWS::AutoScalingPlans::ScalingPlan': 60,
 'AWS::Events::Rule': 60,
 'AWS::EC2::TransitGatewayAttachment': 60,
 'AWS::Route53::RecordSet': 59,
 'AWS::Route53Resolver::ResolverRuleAssociation': 59,
 'AWS::KinesisFirehose::DeliveryStream': 58,
 'AWS::Route53::RecordSetGroup': 52,
 'AWS::ServiceCatalog::CloudFormationProvisionedProduct': 48,
 'AWS::Config::ConformancePack': 46,
 'AWS::ServiceDiscovery::PublicDnsNamespace': 45,
 'AWS::ServiceDiscovery::HttpNamespace': 45,
 'AWS::DMS::ReplicationTask': 43,
 'AWS::CloudFormation::Stack': 36,
 'AWS::Route53Resolver::ResolverEndpoint': 36,
 'AWS::IAM::User': 35,
 'AWS::IAM::Group': 35,
 'AWS::WAFRegional::RegexPatternSet': 34,
 'AWS::WAFRegional::XssMatchSet': 33,
 'AWS::WAFRegional::RateBasedRule': 33,
 'AWS::EC2::TransitGatewayRouteTable': 32,
 'AWS::WAFRegional::SqlInjectionMatchSet': 32,
 'AWS::WAFRegional::GeoMatchSet': 32,
 'AWS::WAFRegional::Rule': 32,
 'AWS::WAFRegional::IPSet': 31,
 'AWS::WAFRegional::SizeConstraintSet': 31,
 'AWS::EC2::ClientVpnRoute': 31,
 'AWS::Batch::JobQueue': 30,
 'AWS::Batch::ComputeEnvironment': 30,
 'AWS::WAFRegional::WebACL': 30,
 'AWS::DynamoDB::Table': 30,
 'AWS::WAFRegional::ByteMatchSet': 30,
 'AWS::EFS::FileSystem': 30,
 'AWS::Kinesis::Stream': 30,
 'AWS::Detective::MemberInvitation': 26,
 'AWS::ECS::TaskSet': 24,
 'AWS::DMS::EventSubscription': 23,
 'Alexa::ASK::Skill': 22,
 'AWS::S3::Bucket': 20,
 'AWS::AutoScaling::AutoScalingGroup': 20,}

plt.figure(figsize=(8, 15))
plt.barh(*zip(*OrderedDict(sorted(map.items(), key=itemgetter(1))).items()))
plt.xlabel('seconds')
plt.title('CloudFormation resource type provisioning time')
plt.gca().get_xaxis().get_major_formatter().set_scientific(False)
plt.show()

(excluded anything <20s or without data for better visibility)

Screen Shot 2020-12-22 at 1 51 22 PM