Category Archives: Others

Amazon AWS – ElastiCache – caching

Basic information about Amazon ElastiCache Service:

 

AWS Free Tier availability:

  • 750hrs of Micro Cache Node

 

Developer Resources:

 

Cache engines supported:

  • Memcached – widely adopted memory object caching system.
  • Redis – popular open-source in-memory key-value store that supports data structures such as sorted sets and lists.
    • ElastiCache supports Redis master / slave replication which can be used to achieve cross AZ redundancy.

 

Features:

  • Ease of management via the AWS Management Console.
  • Compatibility with the specific engine protocol.
  • Detailed monitoring statistics for the engine nodes at no extra cost via Amazon CloudWatch

 

Available Node Types:

  • Micro
    • Micro Cache Node (cache.t1.micro):
      • 213 MB memory,
      • Up to 2 ECU (for short periodic bursts),
      • 64-bit platform,
      • Low I/O Capacity
  • Standard
    • Small Cache Node (cache.m1.small):
      • 1.3 GB memory,
      • 1 ECU (1 virtual core with 1 ECU),
      • 64-bit platform,
      • Moderate I/O Capacity
    • Medium Cache Node (cache.m1.medium):
      • 3.35 GB memory,
      • 2 ECU (1 virtual core with 2 ECUs),
      • 64-bit platform,
      • Moderate I/O Capacity
    • Large Cache Node (cache.m1.large):
      • 7.1 GB memory,
      • 4 ECUs (2 virtual cores with 2 ECUs each),
      • 64-bit platform,
      • High I/O Capacity
    • Extra Large Cache Node (cache.m1.xlarge):
      • 14.6 GB of memory,
      • 8 ECUs (4 virtual cores with 2 ECUs each),
      • 64-bit platform,
      • High I/O Capacity
  • Enhanced
    • Extra Large Cache Node (cache.m3.xlarge):
      • 14.6 GB memory,
      • 13 ECUs (4 virtual cores with 3.25 ECUs each),
      • 64-bit platform,
      • Moderate I/O Capacity
    • Double Extra Large Cache Node (cache.m3.2xlarge):
      • 29.6 GB memory,
      • 26 ECUs (8 virtual cores with 3.25 ECUs each),
      • 64-bit platform,
      • High I/O Capacity
  • High-Memory
    • High-Memory Extra Large Cache Node (cache.m2.xlarge):
      • 16.7 GB memory,
      • 6.5 ECU (2 virtual cores with 3.25 ECUs each),
      • 64-bit platform,
      • High I/O Capacity
    • High-Memory Double Extra Large Cache Node (cache.m2.2xlarge):
      • 33.8 GB memory,
      • 13 ECUs (4 virtual cores with 3.25 ECUs each),
      • 64-bit platform,
      • High I/O Capacity
    • High-Memory Quadruple Extra Large Cache Node (cache.m2.4xlarge):
      • 68 GB memory,
      • 26 ECUs (8 virtual cores with 3.25 ECUs each),
      • 64-bit platform,
      • High I/O Capacity
  • High-CPU
    • High-CPU Extra Large Cache Node (cache.c1.xlarge):
      • 6.6 GB memory,
      • 20 ECUs (8 virtual cores with 2.5 EC2 Compute Units each),
      • 64-bit platform,
      • High I/O Capacity

 

Note: Each Cache Node Type above lists the memory available to Memcached or Redis after taking System Software overhead into account. One ECU provides the equivalent CPU capacity of a 1.0-1.2 GHz 2007 Opteron or 2007 Xeon processor. Enhanced cache nodes are only available with Memcached.

 

 

 

Resources:

Amazon AWS – ELB – Elastic Load Balancing

Basic information about Amazon ELB Service:

 

AWS Free Tier availability:

  • 750 hours of Elastic Load Balancing per month for one year
  • 15GB data processing

 

Developer Resources:

 

Features:

  • distribution of incoming traffic across EC2 instances in a single Availability Zone or multiple Availability Zones.
  • automatic request handling capacity scaling in response to incoming application traffic.
  • when used in a Virtual Private Cloud (VPC), you can create and manage security groups
  • when used in a VPC, you can create a load balancer without public IP addresses to serve as an internal (non-internet-facing) load balancer.
  • can detect the health of EC2 instances. When it detects unhealthy load-balanced EC2 instances, it no longer routes traffic to those and spreads the load across the remaining healthy instances.
  • Amazon Route 53 can be configured to perform DNS failover for your load balancer endpoints. If the load balancer or the application instances registered with ELB become unavailable, Route 53 will direct traffic to another ELB or destination.
  • supports the ability to stick user sessions to specific EC2 instances.
  • supports SSL termination at the Load Balancer, including offloading SSL decryption from application instances, centralized management of SSL certificates, and encryption to back-end instances with optional public key authentication.
  • flexible cipher support allows to control the ciphers and protocols that are accepted by ELB in the SSL negotiation for client connections.
  • supports use of both the Internet Protocol version 4 and 6 (IPv4 and IPv6).
  • ELB metrics such as request count and request latency are reported by Amazon CloudWatch.

 

 

 

Resources:

Amazon AWS – SimpleDB – simple NoSQL

Basic information about Amazon SimpleDB Service:

 

AWS Free Tier availability:

  • 25 SimpleDB Machine Hours
  • 1GB of Storage

 

Developer Resources:

 

Functionality:

  • data-sets organized into domains (vs. tables in relational DB’s)
  • Domains are collections of items that are described by attribute-value pairs
  • automatically creates an index for every field in a domain
  • no need to pre-define a schema
  • scale-out by creating new domains on different instances
  • stores multiple geographically distributed copies of each domain to enable high availability and data durability.
  • a successful write (using PutAttributes, BatchPutAttributes, DeleteAttributes, BatchDeleteAttributes, CreateDomain or DeleteDomain) means that all copies of the domain will durably persist
  • by default, GetAttributes and Select perform an eventually consistent read (details below).
    • a consistent read can potentially incur higher latency and lower read throughput therefore it is best to use it only when an application scenario mandates that a read operation absolutely needs to read all writes that received a successful response prior to that read. For all other scenarios the default eventually consistent read will yield the best performance.
  • allows specifying consistency settings for each individual read request, so the same application could have disparate parts following different consistency settings.
  • currently enables domains to grow up to 10 GB each
  • initial allocation of domains is limited to 250

 

API Summary:

  • CreateDomain — Create a domain that contains your dataset.
  • DeleteDomain — Delete a domain.
  • ListDomains — List all domains.
  • DomainMetadata — Retrieve information about creation time for the domain, storage information both as counts of item names and attributes, as well as total size in bytes.
  • PutAttributes — Add or update an item and its attributes, or add attribute-value pairs to items that exist already. Items are automatically indexed as they are received.
  • BatchPutAttributes — For greater overall throughput of bulk writes, perform up to 25 PutAttribute operations in a single call.
  • DeleteAttributes — Delete an item, an attribute, or an attribute value.
  • BatchDeleteAttributes — For greater overall throughput of bulk deletes, perform up to 25 DeleteAttributes operations in a single call.
  • GetAttributes — Retrieve an item and all or a subset of its attributes and values.
  • Select — Query the data set in the familiar, “select target from domain_name where query_expression” syntax. Supported value tests are: =, !=, <, > <=, >=, like, not like, between, is null, is not null, and every (). Example: select * from mydomain where every(keyword) = ‘Book’. Order results using the SORT operator, and count items that meet the condition(s) specified by the predicate(s) in a query using the Count operator.

 

Consistency Options:

  • Eventually Consistent Reads (Default) — the eventual consistency option maximizes read performance (in terms of low latency and high throughput). However, an eventually consistent read (using Select or GetAttributes) might not reflect the results of a recently completed write (using PutAttributes, BatchPutAttributes, DeleteAttributes, BatchDeleteAttributes). Consistency across all copies of data is usually reached within a second; repeating a read after a short time should return the updated data.
  • Consistent Reads — in addition to eventual consistency, SimpleDB also gives flexibility to request a consistent read if your application, or an element of your application, requires it. A consistent read (using Select or GetAttributes with ConsistentRead=true) returns a result that reflects all writes that received a successful response prior to the read.

 

Transactions:

  • Conditional Puts/Deletes — enable to insert, replace, or delete values for one or more attributes of an item if the existing value of an attribute matches the value specified. If the value does not match or is not present, the update is rejected. Conditional Puts/Deletes are useful for preventing lost updates when different sources write concurrently to the same item.
    • Conditional puts and deletes are exposed via the PutAttributes and DeleteAttributes APIs by specifying an optional condition with an expected value.
    • For example, if the application is reserving seats or selling tickets to an event, you might allow a purchase (i.e., write update) only if the specified seat was still available (the optional condition). These semantics can also be used to implement functionality such as counters, inserting an item only if it does not already exist, and optimistic concurrency control (OCC). An application can implement OCC by maintaining a version number (or a timestamp) attribute as part of an item and by performing a conditional put/delete based on the value of this version number

 

Limits:

  • Domain size: 10 GB per domain, 1 billion attributes per domain
  • Domain name: 3-255 characters (a-z, A-Z, 0-9, ‘_’, ‘-‘, and ‘.’)
  • Domains per account: 250
  • Attribute name-value pairs per item: 256
  • Attribute name length: 1024 bytes
  • Attribute value length: 1024 bytes
  • Item name length: 1024 bytes
  • Attribute name, attribute value, and item name allowed characters: All UTF-8 characters that are valid in XML documents. Control characters and any sequences that are not valid in XML are returned Base64-encoded. For more information, seeWorking with XML-Restricted Characters.
  • Attributes per PutAttributes operation: 256
  • Attributes requested per Select operation: 256
  • Items per BatchDeleteAttributes operation: 25
  • Items per BatchPutAttributes operation: 25
  • Maximum items in Select response: 2500
  • Maximum query execution time: 5 seconds
  • Maximum number of unique attributes per Select expression: 20
  • Maximum number of comparisons per Select expression: 20
  • Maximum response size for Select: 1MB

 

 

 

Resources: