Subscribed unsubscribe Subscribe Subscribe

Amazon Web Services プログラミング

今日はまずはオライリー信者として、
古いですが、以下の本を読んでみます。

f:id:keiwt:20150201130538g:plain

Amazon.co.jp: Amazon Web Servicesプログラミング ―APIの基礎からElastic Beanstalkの利用まで: Jurg van Vliet, Flavia Paganelli, Steven van Wel, Dara Dowd, 玉川 憲, Sky株式会社 玉川 竜司: 本

社内でも最近AWS熱が高まっています。
そこでまずは基礎から学んでいきます。

まず、AWSができた背景はアイディアの実現の障壁や制約を取り除いて、
製品の構築(本当に大切なこと)に集中できるようにするためのようです。

S3

Amazon Simple Storage Service

SQS

Amazon Simple Queue Service

EC2

Amazon Elastic Compute Cloud

RDS

Relational Database Service

Amazon SimpleDB

RDSよりも単純でサービスの開発に集中できるようにしているようです。

Amazon SimpleDB is a highly available and flexible non-relational data store that offloads the work of database administration.
Developers simply store and query data items via web services requests and Amazon SimpleDB does the rest.

Unbound by the strict requirements of a relational database,
Amazon SimpleDB is optimized to provide high availability and flexibility,
with little or no administrative burden.
Behind the scenes, Amazon SimpleDB creates and manages multiple geographically distributed replicas of your data automatically to enable high availability and data durability.
The service charges you only for the resources actually consumed in storing your data and serving your requests.
You can change your data model on the fly, and data is automatically indexed for you.
With Amazon SimpleDB, you can focus on application development without worrying about infrastructure provisioning, high availability, software maintenance, schema and index management, or performance tuning.

The service allows you to focus fully on value-added application development, rather than arduous and time-consuming database administration.
Amazon SimpleDB automatically manages infrastructure provisioning, hardware and software maintenance, replication and indexing of data items, and performance tuning.

正規化ではなくリスト

Amazon DynamoDB

Amazon DynamoDB is a fast and flexible NoSQL database service for all applications that need consistent, single-digit millisecond latency at any scale.
It is a fully managed database and supports both document and key-value data models.
Its flexible data model and reliable performance make it a great fit for mobile, web, gaming, ad-tech, IoT, and many other applications.

なるほど、最近はアンチRDBが増えてきていますね。
スマートではないヒトほど、難しく考えると。
それがRDBだと。
確かにそう感じる時が多々あります。

トポロジー

各端末や制御機器がどのような形態で接続されるかをあらわす

AZ

Availability Zone

それぞれ独立している。
同リージョン内のAZは低レイテンシのリンクで接続されているようです。
リージョンの中に複数のAZがあります。

スケールアウト

台数を増やす

基本的な用語です。
スケールアップは台数は増やさずに、性能を上げることです。

Elastic Block Volume

ディスクをインスタンスからインスタンスに持ち歩ける。データのバックアップ。

Amazon Elastic Block Store (Amazon EBS) provides block level storage volumes for use with Amazon EC2 instances. Amazon EBS volumes are highly available and reliable storage volumes that can be attached to any running instance that is in the same Availability Zone. Amazon EBS volumes that are attached to an Amazon EC2 instance are exposed as storage volumes that persist independently from the life of the instance.

Amazon EBS is recommended when data changes frequently and requires long-term persistence. Amazon EBS volumes are particularly well-suited for use as the primary storage for file systems, databases, or for any applications that require fine granular updates and access to raw, unformatted, block-level storage. Amazon EBS is particularly helpful for database-style applications that frequently encounter many random reads and writes across the data set.

なるほど、DBのバックアップに使用するようです。
また、増分バックアップしているそうです。

  • Amazon Machine Imageとの違い

An Amazon Machine Image (AMI) provides the information required to launch an instance, which is a virtual server in the cloud.

An AMI includes the following: ・A template for the root volume for the instance (for example, an operating system, an application server, and applications) ・Launch permissions that control which AWS accounts can use the AMI to launch instances ・A block device mapping that specifies the volumes to attach to the instance when it's launched

つまり、EBSは頻繁に変更があるDBなどのバックアップ用で、AMIはインスタンスのスナップショット用です。

S3をCloudFrontのディストリビューションを使う場合の注意点

CDNのキャッシュのため、変更の反映に時間がかかるので、  
無効化 or 内容のバージョニングで対応する。

これは普通にバージョニングすればいいと思います。
しかし、もしバージョニングできていないとエッジサーバーのキャッシュが使用されますので、
反映されないとの事象が発生しますね。

Amazon ElasticCache

キャッシュのためのインスタンスとMemcachedが不要に

ElastiCache is a web service that makes it easy to deploy, operate, and scale an in-memory cache in the cloud. The service improves the performance of web applications by allowing you to retrieve information from fast, managed, in-memory caches, instead of relying entirely on slower disk-based databases. ElastiCache supports two open-source in-memory caching engines: ・Memcached ・Redis

Elastic Cacheのプロトコルは既存のMemcachedと互換性があるようです。
そのため、シームレスに移行できるようです。
しかし、Redisの方が高機能なので、AWSでRedis使いたいなと思ったらElastic Cacheを使います。

ELBのスティッキーセッション(あるクライアントを同一のサーバーに)

デフォルトでは無効

Sticky Sessions Elastic Load Balancing supports the ability to stick user sessions to specific EC2 instances using cookies. Traffic will be routed to the same instances as the user continues to access your application.

1.ロードバランサーで期間ベースのセッション維持
2.アプリケーション制御によるセッション維持

1だと以下の手順でできるようです。

f:id:keiwt:20150201135143p:plain

f:id:keiwt:20150201135150p:plain

簡単ですね。
しかし、期間の設定だと、60秒以外では違うインスタンスにリクエストが送信されてしまいます。
オリジンフェッチが必要な情報の場合はどうしているのでしょうか。

結合からの脱却

Google BigTable
SimpleDB
MongoDB
Cassandra

RDBはなくなるのでは。

IAM(Identity and Access Management)

  • IAMロールとは A role is an AWS Identity and Access Management (IAM) entity that defines a set of permissions for making AWS service requests.
    IAM roles are not associated with a specific user or group. Instead roles are “assumed” by trusted entities, such as IAM users, applications or AWS services like EC2.
    ユーザーやグループに対して適用はできず、
    エンティティに対して適用するのですね。
    また、無料のようです。

  • S3 AMIの注意点

起動したインスタンスはstop,startができない  
ルートデバイスがそのマシーン自身になっているインスタンスを起動するため。

Amazon Instance Store-Backed形式なので、ルートデバイスボリュームがインスタンスストアボリュームです。
また、インスタンスストアボリュームのデータは、そのインスタンスの存続中のみ保持されます。

  • EBS AMIの注意点
他のリージョンに移せない?
現在は移せるようになっています。

スポットインスタンスとは

Spot Instances allow you to name your own price for Amazon EC2 computing capacity.
You simply bid on spare Amazon EC2 instances and run them whenever your bid exceeds the current Spot Price, which varies in real-time based on supply and demand.
The Spot Instance pricing model complements the On-Demand and Reserved Instance pricing models, often providing the most cost-effective computing capacity, depending on your application.

インスタンスの価格を決めれるようです。
その額をスポット価格が超えた時にインスタンスを格安で実行できるようです。
ユースケースとしては、ビッグデータの計算等に使用されているようです。
処理能力の高いものを大量に必要とするが、いつ止まっても問題ないものに使用するようです。

CIDR

Classless Inter-Domain Routing

IPの範囲を指定できるものです。
ホスト部、ネットワーク部などの境界が流動的になり、クラスレスということです。

インスタンスのバックアップ

EBSボリューム

※1EBSにつき、1インスタンスのようです。
※1インスタンス複数のEBSを持つことができます
インスタンスとEBSは同じAZ内にないといけないようです
※差分形式のバックアップ

RDSでMySQLを使用するときの注意点

MyISAMだとリードオンリーのものしかRestore to Point in Timeバックアップできない

InnoDBを使えばよいようです

CloudFront

S3のバケットができて初めて、使えるようになります