📜 ⬆️ ⬇️

Comparing Windows Azure Blob Storage and Amazon Simple Storage Service (S3) –Part I

Good afternoon, dear colleagues.
I suggest you familiarize yourself with the translation of the next part of the comparison of the services of the storage of two famous cloud platforms. The remaining translations will be posted as they are made.
The first part of the cycle - Comparing Windows Azure Table Storage and Amazon DynamoDB
In this series of articles, I want to compare the core functionality of the Windows Azure Blob Storage Service and the Amazon Simple Storage Service (S3) . In this part, we look at the basic concepts, pricing and compare the functionality of blob containers and baskets. In Part II, we will compare blobs and objects. In Part III, I’ll give conclusions, in Part IV, a comparison of Windows Azure Blob Storage and Google Cloud Storage.

Abbreviations: Windows Azure Blob Storage - WABS, Amazon Simple Storage Service - AS 3.
Conceptually, WABS and AS3 are similar in functionality to the system. In short, both systems can be viewed as a file system in the cloud, in which the user stores large amounts of unstructured data (usually in the form of files).
In both systems, you can create one or more containers of blobs or baskets that will contain zero or more blobs or objects.
Both systems provide a REST API for working with queues and messages and other high-level language libraries, which are usually REST API wrappers. Both systems have a temporary version naming convention - at the time of this writing, the WABS API version is 2011-08-18 , AS3 - 2006-03-01 .

In general, both systems provide similar functions, some of which are listed below:

There are, of course, differences:

Concepts


Before we talk more about these two services, I find it important to clarify some concepts. If you are familiar with the basic concepts of WABS and AS3, you can skip this section.
Containers of blobs and baskets : If these services are file systems in the cloud, consider the WABS blob container and the AS3 basket as a folder or directory. In a WABS storage account or an AS3 account, you can have zero or more blob containers and baskets that can contain blobs or objects, respectively.
Comments:

Blobs and objects : WABS blobs and AS3 objects are files in your cloud file system, located in blob containers and baskets.
Comments:

Pricing


When using both systems there are no “capital” costs. The pricing model is relatively simple and based on consumption. In both systems, billing is based on usage and it can consist of three components:
  1. Number of transactions : Payment is made according to the number of transactions made - roughly speaking, one transaction is one function call in the system. There is a significant difference between the two systems - in WABS, the transaction cost is fixed ($ 0.01 for 10,000 transactions), in AS3 it varies depending on the type of transaction. If you perform PUT, COPY, POST, LIST operations, you pay a higher price per transaction ($ 0.01 per 1000 transactions in the US Standard Region), GET and others pay a lower price ($ 0.01 per 10,000 transactions in the US Standard Region). All deletion requests in AS3 are free.
  2. Storage : You pay for the amount of data stored in each system. In AS3, the price depends on the level of redundancy.
  3. Traffic : You pay for the amount of data transferred to and from the system. At the time of writing the post, both systems provide free incoming traffic. Data transferred between ADDB and Amazon EC2 within one region is free. Data transferred between ADDB and Amazon EC2 in different regions are paid according to the tariffs. In WATS only outgoing traffic is paid.

A special pricing model is also available, and both systems provide different payment packages. More about pricing - https://www.windowsazure.com/en-ru/pricing/details/ for WABS and http://aws.amazon.com/s3/pricing/ for AS3.

Functions


WABS
AS3
Create Container / PUT Bucket
Yes
Yes
List Containers / GET Service
Yes
Yes
Delete Container / DELETE Bucket
Yes
Yes
List Blobs / GET Bucket (List Objects)
Yes
Yes
Set Blob Service Properties / PUT Bucket logging
Yes
Yes
Get Blob Service Properties / GET Bucket logging
Yes
Yes
Set Container ACL / PUT Bucket acl
Yes
Yes
Get Container ACL / GET Bucket acl
Yes
Yes
List Blobs / GET Bucket Object versions
Yes
Yes
List Blobs / List Multipart Uploads
Yes
Yes
Set container metadata
Yes
Not
Get Container Metadata
Yes
Not
PUT Bucket versioning
Not
YY
GET Bucket versioning
Not
Yes
PUT Bucket lifecycle
Not
Yes
GET Bucket lifecycle
Not
Yes
DELETE Bucket lifecycle
Not
Yes
PUT Bucket policy
Not
Yes
GET Bucket policy
Not
Yes
DELETE Bucket policy
Not
Yes
PUT Bucket notification
Not
Yes
GET Bucket notification
Not
Yes
PUT Bucket requestPayment
Not
Yes
GET Bucket requestPayment
Not
Yes
PUT Bucket website
Not
Yes
GET Bucket website
Not
Yes
DELETE Bucket website
Not
Yes
HEAD Bucket
Not
Yes

Let us consider these functions in more detail.

WABS
AS3
Create Container / PUT Bucket
Yes
Yes

This function creates a new blob container or basket.
An important point to remember is that the blob containers are limited to the storage account, while the AS3 baskets are limited to the Amazon account. When you create a WABS storage account, you determine its location (data center), and your blob containers are located in a specific data center in a specific geographic location. When you create a cart in AS3, you define the region in which this cart will be created, so you can distribute the cart to all data centers in AS3, if necessary. In order to do the same in WABS, you need to create a storage account in each data center where you want to place the containers.
')
There are several rules for naming blob containers and baskets; they are tabulated below.
WABS
AS3
Minimum / maximum length title
3/63
3/63
Case sensitivity
lower case
lower case
Allowed characters
Alphanumeric, hyphen (-)
Alphanumeric, hyphen (-) and period (.)

More naming rules:

Notes:

WABS
AS3
List Containers / GET Service
Yes
Yes

The function returns a list of all containers of blobs or baskets.
Comments:



WABS
AS3
Delete Container / DELETE Bucket
Yes
Yes

The function removes the blob container or cart.
Comments:


WABS
AS3
List Blobs / GET Bucket (List Objects)
Yes
Yes

The function is used to get a list of blobs and objects in a container or basket. Functions in systems perform the same thing, given:

Differences:




WABS
AS3
Set Blob Service Properties / PUT Bucket logging
Yes
Yes


Both systems offer logging capabilities, and this feature is not enabled by default. In WABS, this function is called Storage Analytics and is used for all Windows Azure storage services — tables, queues, blobs.

Differences in logging:




WABS
AS3
Get Blob Service Properties / GET Bucket logging
Yes
Yes


The function is used to obtain logging information. In AS3, any authorized user can access this information, and the operation will return information about this user.

WABS
AS3
Set Container ACL / PUT Bucket acl
Yes
Yes


The function is used to specify ACLs for containers or baskets, and one or more access policies can also be specified in WABS.
For a blob container, the ACL values ​​can be:

For baskets, ACL values ​​can be equal to:



Convenient in AS3 is that you can give users different sets of permissions, for example, user1 can have READ ACL, user2 - WRITE ACL, in WABS there is no such flexibility, permissions are placed only on the blob container.

Convenient in WABS is that in addition to the ACL, you can set up to 5 container access policies that define a temporary set of permissions for this container. For example, you can create an access policy with permission to write to the blob container, which will only be valid for a day. Using policies allows you to generate a special URL with a signature and give it to users (flexible Shared Access Signatures functionality). Signatures allow you to issue access rights to containers and blobs at a more detailed level for a specific time.
WABS
AS3
Get Container ACL / GET Bucket acl
Yes
Yes


The function is used to get the ACL for the blob container or the recycle bin, and in WABS this function also returns the access policies defined for the container.

WABS
AS3
List Blobs / GET Bucket Object versions
Yes
Yes


Both systems support versioning - in WABS, versioning of blobs (snapshots), in AS3 - objects, but using different mechanisms for this. In AS3, the function returns only versioned objects; in WABS, versioned objects can also be obtained using List Blobs (see above).

Helpful hint : If you want to get a list of only snapshots or versions of a single object in AS3, you can use this function by passing it the full name of the object as a prefix.


WABS
AS3
List Blobs / List Multipart Uploads
Yes
Yes


Both systems support loading blobs and objects in parts. In WABS, when loading blob blocks, you can divide blobs into blocks and load these blocks, then confirm them and make the blob available for use. In AS3, you can load an object, divide it into many parts and download them, then confirm and make the object available for use.
List Multipart Uploads to AS3 tells you which parts of the object are being downloaded, how they are separated and the status of the upload, but it does not indicate which were uploaded and which were not. In WABS, you can implement similar functionality using List Blobs (specifying WABS that, together with confirmed blobs, you must also return and unconfirmed.

WABS
AS3
Set container metadata
Yes
Not

The function is used to specify a metadata dictionary in the form of a collection of key-value entries for a blob container in WABS.

Comments:



WABS
AS3
Get Container Metadata
Yes
Not

The function is used to get the metadata defined for the blob container.

WABS
AS3
PUT Bucket versioning
Not
Yes

Versioning allows you to manage multiple copies of an object. This function allows you to enable versioning on objects in the basket, and if one of the operations PUT, POST, COPY, DELETE is performed, a new version of the object will be created. By default, this functionality is disabled.

WABS supports similar “ Snapshot Blob ” functionality, the call of which creates a read-only copy of the current version of the blob.

Differences in versioning in the two systems:


WABS
AS3
GET Bucket versioning
Not
Yes

The function is used to get the versioned state (Enabled or Suspended) for the cart in AS3. Returns an empty result if the versioning state has never changed.

WABS
AS3
PUT Bucket lifecycle
Not
Yes

In AS3, this feature allows you to specify whether it is necessary to delete objects from the recycle bin automatically after a certain time. For example, you keep logs as objects in a basket, and you want them to be automatically deleted after 30 days.

By default, objects are stored in baskets until they are deleted by the user.
This feature is applied at the folder level. For example, you store access and error logs in the “logs” basket in the corresponding “accesslogs” and “errorlogs” folders. Using this function, you can determine that the objects in the accesslogs folder will be deleted after a certain time (using the prefix).
Cannot be used if you have included versioning on a specific basket at least once.
WABS
AS3
GET Bucket lifecycle
Not
Yes

The function returns information about the configuration of the life cycle (see above about automatic deletion).

WABS
AS3
DELET E Bucket lifecycle
Not
Yes

The function removes the life cycle configuration associated with the basket.

WABS
AS3
PUT Bucket policy
Not
Yes

AS3 provides several mechanisms for protecting baskets and objects from unauthorized access, one of which is basket policy. To do this, you just need to use this function and put the basket policy where appropriate. With the basket policy, the basket owner can:



More information about the policy baskets here .


WABS
AS3
GET Bucket policy
Not
Yes

The function returns the policy set on the basket.
WABS
AS3
DELETE Bucket policy
Not
Yes

The function deletes the policy set on the basket.
WABS
AS3
PUT Bucket notification
Not
Yes

AS3 can send messages to Amazon Simple Notification Service (SNS) if any important event happens in the basket's life. SNS subscribers can receive these messages, which can be delivered to a web server, e-mail, Amazon Simple Queue Service.
In the current implementation, you can use notifications for only one event: “ s 3: ReducedRedundancyLostObject ”, which occurs when all replicas of an object are lost and, consequently, it is impossible to access this object.
The function is used to enable or disable the notification of changes in the state of the basket.
WABS
AS3
GET Bucket notification
Not
Yes

The function returns the basket notification configuration.
WABS
AS3
PUT Bucket requestPayment
Not
Yes

In a normal situation, the basket owner pays for downloads from the basket, but AS3 offers to shift this responsibility to another user - the basket owner can configure it so that another account pays for downloading from the basket. This feature is used to, among other things, determine that the person requesting the download will have to pay for this download. Read more here .


WABS
AS3
GET Bucket requestPayment
Not
Yes

The function returns the configuration at the request of payment (see above) for the basket.

WABS
AS3
PUT Bucket website
Not
Yes

Another handy feature in AS3 is the ability to place static websites in baskets, which can be done in WABS, but in WABS you cannot define the page that opens by default, the error page and link any domain name to the hosted website (what can be done in AS3). Read more here .
The function allows you to configure the basket for use as a static website and specify default pages and error pages (for example, for 404 error).

WABS
AS3
GET Bucket website
Not
Yes

The function returns the basket configuration as a static web site.

WABS
AS3
DELETE Bucket website
Not
Yes

The function removes the recycle bin configuration as a static web site.

WABS
AS3
HEAD Bucket
Not
Yes

The function allows you to determine whether the basket exists and whether the user has permissions to access this basket.

Summary


Conceptually, both services provide similar functionality, but Amazon S3 is richer in function, partly because Amazon had 2+ years more on system development. I very much hope that Windows Azure Blob Storage will catch up with S3 and implement the missing very necessary functions. Personally, I love S3 features like:


However, it would be great to see features such as:



Note from the translator:

As far as I know, a separate website has been created for Windows Azure, called http://www.mygreatwindowsazureidea.com , where users vote to develop the features they need, and Microsoft really responds to user requests. Unfortunately, for the Amazon platform, I did not find such a platform, which is not a good practice - in the case of cloud platforms, which are gigantic software packages, it is very important to focus on users. Amazon , . – ( ) Amazon . , , .

UPD: Trust Services Windows Azure: — .

Source: https://habr.com/ru/post/145063/


All Articles