<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Sachin Agarwal</title>
    <description>The latest articles on Forem by Sachin Agarwal (@sachinkagarwal).</description>
    <link>https://forem.com/sachinkagarwal</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F75245%2F1cb96f98-9105-4ebd-b1b5-8d669af3f318.jpg</url>
      <title>Forem: Sachin Agarwal</title>
      <link>https://forem.com/sachinkagarwal</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/sachinkagarwal"/>
    <language>en</language>
    <item>
      <title>Cloud - aws, gcp, azure, openstack; automation (Terraform, Salt, Fabric, etc.) and performance testing/optimization.</title>
      <dc:creator>Sachin Agarwal</dc:creator>
      <pubDate>Sat, 25 Aug 2018 21:23:40 +0000</pubDate>
      <link>https://forem.com/sachinkagarwal/-cloud---aws-gcp-azure-openstack-automation-terraform-salt-fabric-etc-and-performance-testingoptimization-2gpl</link>
      <guid>https://forem.com/sachinkagarwal/-cloud---aws-gcp-azure-openstack-automation-terraform-salt-fabric-etc-and-performance-testingoptimization-2gpl</guid>
      <description></description>
    </item>
    <item>
      <title>Choosing Cloud Providers and Virtual Machines: The Easy Way</title>
      <dc:creator>Sachin Agarwal</dc:creator>
      <pubDate>Mon, 30 Jul 2018 14:22:10 +0000</pubDate>
      <link>https://forem.com/sachinkagarwal/choosing-cloud-providers-and-virtual-machines-the-easy-way-9f6</link>
      <guid>https://forem.com/sachinkagarwal/choosing-cloud-providers-and-virtual-machines-the-easy-way-9f6</guid>
      <description>&lt;p&gt;&lt;em&gt;The tool may not render correctly on lower-resolution mobile device screens; for the best experience please use a desktop.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Our &lt;a href="https://tools.bigbitbus.com/optimizer/" rel="noopener noreferrer"&gt;VM and cloud provider optimization tool&lt;/a&gt; displays relative CPU performance of different virtual machines across different providers. The current tool covers many VMs of up to 16 vcpus from Amazon AWS, Google GCP, Microsoft Azure and Digital Ocean. The CPU performance is reported based on our VM CPU benchmarking tests. Other VM characteristics, such as the number of vCPUs, RAM, and cost have been extracted via provider APIs or (web-)scraped from cloud provider documentation; these are periodically updated to reflect the latest data available from providers.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;The user interface has a series of input controls on the left-hand side and a stacked-bar chart in the center of the screen. The stacked-bars show the CPU utilization of the corresponding VM (in pink) and the amount of "unutilized" CPU (in green). Information about the VM, such as number of vCPUs, RAM and cost, is printed across each bar corresponding to that VM. When the user changes the input controls the back-end is queried and VMs with the lowest cost that satisfy the input control constraints will be rendered on the stacked-bar plot.&lt;/p&gt;

&lt;p&gt;The key feature of the tool is that the CPU utilization of each VM depicted on stacked-bars chart is representative of the "same" workload being applied to each VM. For example, if the CPU utilization  (pink bar) is 50% for VM_1 and 25% for another VM_2, then the conclusion is that when the &lt;em&gt;same workload&lt;/em&gt; is applied to VM_1 and VM_2, the corresponding CPU utilizations will be 50% and 25% respectively. This underlying property lets us compare different VMs' CPU characteristics.&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;Fig.1: The BigBitBus Cloud Provider and VM Optimizer Tool User Interface &lt;/b&gt;&lt;br&gt;
 &lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fz1mzps5ak6o902wvd01f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fz1mzps5ak6o902wvd01f.png"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  Input Controls on the User Interface
&lt;/h3&gt;

&lt;p&gt;The user can query the performance and catalogue data we have collected by changing the settings on the left-side panels. The different settings are explained below:&lt;/p&gt;

&lt;h4&gt;
  
  
  Cloud Provider and Baseline Machine
&lt;/h4&gt;

&lt;p&gt;Choose the baseline virtual machine. The cloud provider dropdown is used to filter available VMs by provider; the baseline machine can then be selected from the presented choices. We are constantly working to increase the size of this catalog. The top-most bar on the chart always corresponds to the baseline VM.&lt;/p&gt;

&lt;h4&gt;
  
  
  CPU Utilization
&lt;/h4&gt;

&lt;p&gt;There are two sliders in this box. The CPU utilization slider represents the CPU utilization of the baseline VM. For example, if your monitoring dashboards indicate that the baseline VM has a peak CPU utilization of 70% then you should set this slider to 70%.&lt;/p&gt;

&lt;p&gt;The second slider is to set the maximum CPU utilization of the target (alternatives to the baseline) VMs  that will be returned by the tool. For example, if you want that the CPU utilization of the target VMs should not exceed 50% then this slider can be set to 50%. If you are willing to push the CPU utilization to a higher number, set this slider to a high percentage and the tool will find smaller (and usually cheaper) VMs that run "hotter" when servicing the applied workload.&lt;/p&gt;

&lt;h4&gt;
  
  
  Target Clouds
&lt;/h4&gt;

&lt;p&gt;The Target clouds check-boxes let you select which cloud providers' VMs are returned by the tool. For example if you only want to consider AWS VMs then select the AWS check-box and unselect all other cloud provider check-boxes.&lt;/p&gt;

&lt;h4&gt;
  
  
  Refine Search
&lt;/h4&gt;

&lt;p&gt;The minimum and maximum number (amount) of vCPUs (RAM) can be constrained using these minimum/maximum range sliders. Only target machines which satisfy these constraints will be displayed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use-cases
&lt;/h2&gt;

&lt;p&gt;We illustrate possible uses of the tool through a few use-cases.&lt;/p&gt;

&lt;h3&gt;
  
  
  Use-case 1: Switching a Cloud Provider
&lt;/h3&gt;

&lt;p&gt;A user who wishes to research different cloud providers and switch the baseline VM running in a cloud provider to another cloud provider can use the tool to find the performance and cost of analogous VMs on different cloud providers. Select the baseline VM and choose target clouds, along with any CPU utilization or vCPU number/RAM constraints and the tool will return up to 9 target VMs that satisfy all the requested constraints at the lowest cost.&lt;/p&gt;

&lt;h3&gt;
  
  
  Use-case 2: Lowering costs by down-sizing a VM
&lt;/h3&gt;

&lt;p&gt;If a user finds that a VM is idling (low CPU utilization) then s/he can select this VM type as the baseline VM and set the CPU utilization to the low number. Then, from the options displayed in the chart, a smaller VM which is better utilized for the same workload can be selected. This is a great way to reduce cloud spend.&lt;/p&gt;

&lt;h3&gt;
  
  
  Use-case 3: Choosing a VM with greater CPU headroom
&lt;/h3&gt;

&lt;p&gt;Suppose a user finds that her/his VMs are running hot (high CPU utilization) then the tool can help find appropriate VMs that run cooler. Instead of guessing and switching to a much bigger VM (ending up with unnecessarily low utilization), the user can fix the "maximum CPU utilization" slider to the desired peak "hotness" and the tool will return the lowest cost VMs that satisfy the constraints.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Why did the tool stop responding after a while?&lt;/em&gt; &lt;br&gt;
We throttle requests to protect our servers. If you hit the throttle limit, please wait till an hour has passed before using the tool.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Why are other cloud providers not included in the comparison?&lt;/em&gt;&lt;br&gt;
We are working toward integrating more providers' data into our system; please check back as we expand our provider coverage. If you represent a cloud provider then please contact us so we can work on accelerating on-boarding your offerings into our tools.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Why don't I see data for the entire catalogue of the providers?&lt;/em&gt;&lt;br&gt;
We currently focus on VMs with 16 or fewer vCPUs (since these comprise the vast majority of deployed VMs); we have also excluded high memory or storage-optimized VMs (since all our testing is CPU based currently); please check back as we expand our VM coverage.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;How accurate is the tool?&lt;/em&gt;&lt;br&gt;
Generic CPU benchmarks, such as the ones that form the basis of this tool, are rarely representative of actual production workloads' performance. The tool's data is a basis for comparing different VMs and gives us a "rule-of-thumb" or "back-of-envelope" comparison between different VMs to quickly whittle down the myriad VM choices across cloud providers. We encourage users to investigate short-listed VMs thoroughly against their custom workloads with their custom testing to switch VMs and providers with confidence.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;I found an inconsistency/bug in the tool. How to report it/get it fixed?&lt;/em&gt;&lt;br&gt;
Fantastic! The tool is new and in beta testing, please help us by emailing any bugs, ideas, comments, or concerns to &lt;em&gt;&lt;a href="mailto:contact@bigbitbus.com"&gt;contact@bigbitbus.com&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Which cloud provider datacenters/regions were used in our testing?&lt;/em&gt;&lt;br&gt;
We primarily used eastern US cloud regions to perform all performance testing; cost data is also limited to this region. Giving users the ability to select specific data-centers in different cloud provider regions is on our product road map.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;What prices are shown by the tool?&lt;/em&gt;&lt;br&gt;
We show retail costs (no discounts). We are aware that cloud providers offer sustained usage discounts, volume discounts, negotiated customer-specific discounts and other promotions to customers. Allowing users to apply such discounts to the cost numbers shown in the tool is on our product road map.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Does the tool compare other characteristics like IO and network latency?&lt;/em&gt;&lt;br&gt;
This tool compares VMs on the basis of CPU utilization. Building analogous tools for IO and network comparisons is on our product road map.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;What is the &lt;a href="https://tools.bigbitbus.com/comparer/" rel="noopener noreferrer"&gt;VM Comparer&lt;/a&gt; tool link on the top of the page?&lt;/em&gt; We are working on another tool to compare 2 VMs between different cloud providers. This tool is still in alpha as we collect better data. Feel free to give it a spin and please help us by emailing any bugs, ideas, comments, or concerns to &lt;em&gt;&lt;a href="mailto:contact@bigbitbus.com"&gt;contact@bigbitbus.com&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Back to the &lt;a href="https://tools.bigbitbus.com/optimizer/" rel="noopener noreferrer"&gt;VM and cloud provider optimization tool&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;BigBitBus is on a mission to bring greater transparency in public cloud and managed big data and analytics services.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>devops</category>
      <category>infrastructure</category>
      <category>performance</category>
    </item>
    <item>
      <title>Public Cloud Object-store Performance is Very Unequal across AWS S3, Google Cloud Storage, and Azure Blob Storage</title>
      <dc:creator>Sachin Agarwal</dc:creator>
      <pubDate>Wed, 06 Jun 2018 13:05:26 +0000</pubDate>
      <link>https://forem.com/sachinkagarwal/public-cloud-object-store-performance-is-very-unequal-across-aws-s3-google-cloud-storage-and-azure-blob-storage-13do</link>
      <guid>https://forem.com/sachinkagarwal/public-cloud-object-store-performance-is-very-unequal-across-aws-s3-google-cloud-storage-and-azure-blob-storage-13do</guid>
      <description>&lt;p&gt;&lt;em&gt;For this article we compared the object-store performance of Amazon Web Services (S3), Google Cloud Storage and Microsoft Azure Blobs in locally redundant configurations (without geo-replication). We found very significant performance differences that can have a direct impact on user applications.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Object_storage"&gt;Object or blob store&lt;/a&gt; services on the cloud offer content addressable storage where users can save arbitrary files that can tbe accessed via a URL over HTTP(s) connections and simple CRUD semantics (GET to download, PUT to upload etc.). Object storage is convenient and cheap, and this has made it the storage back-end of choice for everything from small configuration files of less than a few kilobytes to huge VM images or backup archives. It is also the most common storage option for persisting raw data files used in big data analyses.&lt;/p&gt;

&lt;p&gt;Lower object-store latency (time to upload and download files) is important in many use cases. For example, the time taken to download a backup copy of a database will be the dominant factor in the recovery time objective for disaster recovery planning. Big data applications such as Apache spark may seem sluggish if the back-end object-store hosting raw data has a high file-serving latency. There are many applications that repeated and frequently read and write small files to object stores (e.g. image thumbnails); these will benefit from lower latency small object performance.&lt;/p&gt;

&lt;p&gt;Our key findings are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Large blob downloads are significantly slower (up to 4x) in Azure as compared to Google cloud storage or AWS S3 large object downloads.&lt;/li&gt;
&lt;li&gt;Small-sized Azure blobs have lower upload latency.&lt;/li&gt;
&lt;li&gt;In general the (relatively newer) Canadian regions have lower latency for object store operations as compared to the older US east regions.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Setup
&lt;/h2&gt;

&lt;p&gt;We setup locally redundant object-store buckets for AWS-S3, Google cloud storage, and Azure blob storage in a cloud region and created one virtual machine (per provider) in the same cloud region. By "locally redundant" we mean that the objects were not geo-replicated to another region; we will be analyzing geo-replicated objects in another article.&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;Fig.1: Test Setup for locally-redundant object-store testing. We report the upload and download latency of the client putting/getting objects to/from the object-store. &lt;/b&gt;&lt;br&gt;
 &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_LqrjBVe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/mf327ygf9n11vfihr5p3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_LqrjBVe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/mf327ygf9n11vfihr5p3.png"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;A load tester virtual machine was loaded up with our custom-built open-source benchmarking program called &lt;a href="https://github.com/bigbitbus/objectbench"&gt;object bench&lt;/a&gt; that can upload and download different sized randomly-generated files to the object-stores. This tool uses python SDKs from each of the providers (so the client implementation is strictly as per provider standards). The tool  was setup to serially upload and download different-sized randomly-generated files (ranging from 1kB to 100MB in size). We repeated the experiment 100 times and all our results are averaged over these 100 runs; we also show error-bars in our plots.&lt;/p&gt;

&lt;h2&gt;
  
  
  Results
&lt;/h2&gt;

&lt;p&gt;We measured latency as seen by an application which uploads and downloads objects from the object-store. We present results for a US east region and a Canadian region for each provider (the exact names differ across providers). By selecting two different regions for each provider we eliminated the possibility of a bad load testing VM client or a badly configured object store in a specific region. We also unearthed performance differences between the regions for the same cloud provider; users looking for the best performance on public cloud object-stores should carefully benchmark performance differences across regions before choosing a specific region. All cloud regions  &lt;em&gt;do not&lt;/em&gt; have the same performance.&lt;/p&gt;

&lt;h3&gt;
  
  
  US Region
&lt;/h3&gt;

&lt;p&gt;We chose &lt;em&gt;us-east-1&lt;/em&gt;, &lt;em&gt;us-east1&lt;/em&gt; and &lt;em&gt;eastus&lt;/em&gt; regions for AWS, Google cloud and Azure respectively (collectively referred to as USEast in the below plots). The load testing VMs were spun up in one of the zones belonging to these regions for each cloud provider.&lt;/p&gt;

&lt;h4&gt;
  
  
  Small object sizes
&lt;/h4&gt;

&lt;p&gt;Figs.2 and 3 show small object upload and download latencies in US East regions. The Azure blob store offers significantly lower upload latency as compared to AWS S3 or Google Cloud Storage. Its hard to say why the stark difference without knowing the implementation. We have a controversial hypothesis - perhaps uploads (writes) to the Azure blob store are cached in memory (to be persisted on disk later) and the acknowledgement sent immediately to the uploading client.&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;Fig.2: Small objects (up to 100kB) upload latency in US East &lt;/b&gt;&lt;br&gt;
 &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cJ6qu6G_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/282keg8wgh9e0pi8pi2g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cJ6qu6G_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/282keg8wgh9e0pi8pi2g.png"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;Fig.3: Small objects (up to 100kB) download latency in US East &lt;/b&gt;&lt;br&gt;
 &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--U7eBRGoO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/woziab8o8f0w5l0tikvt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--U7eBRGoO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/woziab8o8f0w5l0tikvt.png"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;h4&gt;
  
  
  Large object sizes
&lt;/h4&gt;

&lt;p&gt;Figs.4 and 5 show large object upload and download latencies in US East regions. The performance of all three object-stores is very similar for uploads. The strikingly slower Azure download is the highlight here (Fig. 5). We think this is a serious problem in Azure - especially for the backup/restore use-case. The data says that a 100MB object takes over 4 seconds to download from Azure blob-store, as compared to ~1 second in Google cloud storage. Downloading a 10GB backup set composed of 100 such 100MB objects will take over 4000 seconds in Azure as compared to only 1000 seconds in Google cloud. That is a huge hit on the recovery time objective for Azure users.&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;Fig.4: Large objects (1MB - 100MB) upload latency in US East&lt;/b&gt;&lt;br&gt;
 &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DZw7_KAw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/9bgstzn0dovi5qgdyrx2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DZw7_KAw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/9bgstzn0dovi5qgdyrx2.png"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;Fig.5: Large objects (1MB - 100MB) download latency in US East&lt;/b&gt;&lt;br&gt;
 &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MMYZJKYP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/rur5rkj3ucke8ljgczrs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MMYZJKYP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/rur5rkj3ucke8ljgczrs.png"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;h4&gt;
  
  
  Object Deletion
&lt;/h4&gt;

&lt;p&gt;Fig.6 shows the deletion latency for different-sized objects. The notable feature here is the consistency in the Google cloud (GCP) numbers.&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;Fig.6: Object deletion latency in US East&lt;/b&gt;&lt;br&gt;
 &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hFPCfWLS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/i9pi0ngex518jat6yd8f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hFPCfWLS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/i9pi0ngex518jat6yd8f.png"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  Canadian Region
&lt;/h3&gt;

&lt;p&gt;We repeated all the above experiments on Canadian public cloud regions. Figs.7-11 show the corresponding Canadian region numbers. Notice the different Y-axis on some of these graphs; in general the latency numbers are lower in Canadian regions than US East regions. We hypothesize that this is because of the relative newness and lower utilization of the Canadian regions. The same superior small-object performance and dismal large-blob download performance of Azure blobs was seen in these results as well.&lt;/p&gt;

&lt;p&gt;We chose &lt;em&gt;ca-central-1&lt;/em&gt;, &lt;em&gt;northamerica-northeast1&lt;/em&gt; and &lt;em&gt;canadacentral&lt;/em&gt; regions for AWS, Google cloud and Azure respectively (collectively referred to as Canada in the below plots).&lt;/p&gt;

&lt;h4&gt;
  
  
  Small object sizes
&lt;/h4&gt;

&lt;p&gt;
&lt;b&gt;Fig.7: Small objects (up to 100kB) upload latency in Canada &lt;/b&gt;&lt;br&gt;
 &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4GISMGn_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/2795vznfyngmdc8f7tgf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4GISMGn_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/2795vznfyngmdc8f7tgf.png"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;Fig.8: Small objects (up to 100kB) download latency in Canada &lt;/b&gt;&lt;br&gt;
 &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eaeK3B2m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ph7b1dy5prcx24fiiumr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eaeK3B2m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ph7b1dy5prcx24fiiumr.png"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;h4&gt;
  
  
  Large object sizes
&lt;/h4&gt;

&lt;p&gt;
&lt;b&gt;Fig.9: Large objects (1MB - 100MB) upload latency in Canada&lt;/b&gt;&lt;br&gt;
 &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jm9cNtWw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/23ra3dkgxzqanaz9cobh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jm9cNtWw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/23ra3dkgxzqanaz9cobh.png"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;Fig.10: Large objects (1MB - 100MB) download latency in Canada&lt;/b&gt;&lt;br&gt;
 &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KJAzWXhB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/r4jdwlxu5wc14ug9bmge.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KJAzWXhB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/r4jdwlxu5wc14ug9bmge.png"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;h4&gt;
  
  
  Object Deletion
&lt;/h4&gt;

&lt;p&gt;
&lt;b&gt;Fig.11: Object deletion latency in Canada &lt;/b&gt;&lt;br&gt;
 &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UodV2nAJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/cnjthcm4e04swb8mzssb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UodV2nAJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/cnjthcm4e04swb8mzssb.png"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Outlook
&lt;/h2&gt;

&lt;p&gt;The latency metrics reported in this article are critical for many user applications. Our results show a clear disadvantage when using the Azure blob store for large objects - operations like restoring backups, downloading large media files and VM images, etc. The Azure service wins for small object sizes - uploads were consistently faster than AWS S3 and Google cloud storage object stores. Object deletion time is important for applications that update, save and delete a large number of temporary objects. We were impressed by the consistency in the Google cloud deletion times as compared to other object stores.&lt;/p&gt;

&lt;p&gt;Our aim was to capture performance differences due to different object-store implementations. Given the performance differences across the implementations we hope the engineering teams behind these services will tune and improve their systems to bring their systems at par with the best.&lt;/p&gt;

&lt;p&gt;Stay tuned as we investigate geo-replicated object performance, cold-storage object stores and object metadata performance in this series.&lt;/p&gt;

&lt;p&gt;*&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This article was first published at &lt;a href="http://www.bigbitbus.com"&gt;www.bigbitbus.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Sachin Agarwal is a computer systems researcher and the founder of BigBitBus.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;BigBitBus is on a mission to bring greater transparency in public cloud and managed big data and analytics services.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>cloud</category>
      <category>aws</category>
      <category>python</category>
    </item>
  </channel>
</rss>
