Amazon Web Services 初心者のための実践入門1

#①想定読者
・AWSに触れたことが無い方、仕組みを知らない方
・AWS(Amazon Web Service)って最近良く聞くけどどんなものなのか知らない方

#②自己紹介
　新卒で開発者(プログラマ)としてIT業界に入り、
　Randstadの前身であるFSHD(フジスタッフホールディングス)への転職を機にヘルプデスクを経験、
　後にRandstadでインフラへ転進後、会社の色々な事情でGISを経験、
　またRandstadに戻ってきたインフラ系なんちゃってエンジニア。

#③はじめに
　Randstadでも使用しているAWS(Amazon Web Service)についてどんなものか今回は触りの部分だけ記載します。
　今回は良く使われるEC2,S3,RDSについてです。
　僕自身はあまり自作PC等は行っては来なかったのですが、昔はPCやサーバを分解してパーツを交換するようなことも
　仕事で経験していたためある程度物理の知識がある状態でAWSを経験してみると
　だいぶ簡略化されていて使いやすいものではあると思いました。
　もちろん気になるデメリットもありましたが。。
　
#④テーマの中身
##■EC2(Elastic Compute Cloud)
###★EC2とは
　インスタンスと呼ばれる仮想コンピューティング環境、
　物理で言うところのCPU/メモリを搭載したサーバ本体のイメージになります。
![EC2.jpg](https://qiita-image-store.s3.amazonaws.com/0/320119/4460b8ff-8357-2762-8622-a9ab23bd8951.jpeg)

###★EC2作成時の手順(事前準備として)
　①KeyPair(公開鍵･秘密鍵)のペア←これが無いとインスタンスにログイン不可
　②セキュリティグループ：インバウンド、アウトバウンドの設定(ポート設定)
　③アクセスキーID＆シークレットアクセスキーの確認とダウンロード(こちらは最大2つまでしか作れない)
　　AWSサポートへの問い合わせなどで使用します。

##■S3(Simple Storage Service)
###★S3とは
　Storageという名前の通り、データを格納しておける容量が無制限なFTPサーバーのようなイメージです。
　S3はAPIなどのプログラムを動かす機能はありません。
　htmlのブラウザ画面表示だけはできます。

　バケットと呼ばれるデータの置き場の中に、オブジェクトとしてデータを格納できます。
![S3.jpg](https://qiita-image-store.s3.amazonaws.com/0/320119/e925e73b-5c80-f42c-6e6c-ed8017aaded2.jpeg)



##■RDS(Relational Databese Service)
###★RDSとは
　AWSフルマネージド型データベースサービス
　クラウド上のリレーショナルデータベースのセットアップ、オペレーション、スケールが簡単になります。
　ハードウェアのプロビジョニング、データベースのセットアップ、パッチ適用、バックアップなどの時間がかかる管理タスクを
　自動化しながら、コスト効率とサイズ変更可能なキャパシティーを提供します。
　これにより、アプリケーションに集中することができ、必要とされる高速なパフォーマンス、
　高可用性、セキュリティ、互換性をアプリケーションに実装できるようになります。

　Amazon RDS は、メモリ、パフォーマンス、または I/O に最適化されたいくつかのデータベースインスタンスタイプで
　利用でき、Amazon Aurora、PostgreSQL、MySQL、MariaDB、Oracle データベース、SQL Server など、
　6 つの使い慣れたデータベースエンジンから選択できます。
　AWS Database Migration Service を使用すると、既存のデータベースを Amazon RDS に簡単に移行またはレプリケートできます。
![RDS.JPG](https://qiita-image-store.s3.amazonaws.com/0/320119/e9ba544a-77fb-3594-899f-b89a8cf52e2c.jpeg)



##■その他様々なオプション機能について
　例えば、AWSはサーバの削除も簡単です。
　数クリックで簡単にサーバを削除することができてしまいます。
　誤って必要なサーバを削除してしまわないよう注意することはもちろんですが、
　それでも人間なので間違うことがあります。
　誤って削除を押してしまうことを避けたい場合のオプション機能として、
　フェールセーフ的な意味合いで実装されている「削除保護の有効化」というものがあり、
　間違って削除しようとしても削除保護を解除しないと削除が実行できなくなるといったサービスもあります。

　有償のものから無償のものまで様々な機能が日を追うごとにリリースされているため、
　常に最新の機能をすべて追いかけることは大変です。
　有償のものについては費用の兼ね合いもあるため、新サービスが提供されて
　それを試したい時は使用前にAWSサポートに問い合わせをすることをお勧めします。
　僕自身がAWSコンソールの管理者をしていた際、ワンクリックで使えるような機能が
　課金されるかされないかは画面から分からないため、
　念のためAWSサポートに問い合わせてみたら結構な金額が上乗せされてしまうサービスだと分かったこともありました。


##■メリットデメリットについて
※以下はあくまで僕個人の見解も含まれているため、他のご意見もあると思いますのであしからず。
###【メリット】
・環境の構築が容易、かつ速い
　これは本当に便利だと思いました。とにかく簡単で速い。
　とりあえずで試したい新ツール等でも無料枠でサーバを構築すればお金もさほど気にせず試すことができます。
　（結果本使用したければ容量だったりI/Oの通信量だったりサーバスペックだったりと色々課金することにはなりますが）
　
・バックアップが簡単
　バックアップが簡単です。スナップショットと呼ばれるものやAMIイメージ(結果スナップショットですが)を
　数回クリックするだけで作ることができます。

###【デメリット】
・バージョンアップが頻繁
　結構悩まされました。使用しているEC2やRDSの数が多いから仕方が無いのかもしれませんが、
　DBのバージョンアップであったり、AWSのメンテナンスという名目による強制再起動が意外と多いと感じています。
　ただ、強制再起動で指定された日時より事前に停止→起動を行えば手動によるバージョンアップということにはなります。
　アプリケーションの動作テストとか考えるととにかく多い･･･。
　
・意外と物理障害が多い
　これも悩みどころです。クラウド環境と謳ってはおりますが、やはり物理的な土台がAWSにもあるわけで･･･。
　急にサーバにアクセスできなくなるなどの障害が発生した際にAWSサポートに問い合わせてみると物理障害のため
　サーバを停止→起動させて使用される物理環境を変えないと復旧しません、というようなパターンが割りとありました。
　（マルチAZ組んでるのにダメなの？という時もありましたがまたちょっと長くなるのでここでは記載しませんが）
　
・費用が高額になりがち
　EC2にはスペックの低いものであれば無料で使用できるものがあるので、小額から始めれます。
　ただ、やはり実運用となるとスペックの増加や容量の追加、通信されるI/Oの増加などで結果的にランニングコストが高いです。
　新しいプロジェクトとかで急ぎサーバが必要、というようなときは早くにスタートを切れる点はすごく良いですが
　長期的に見るとやはりコストは安く無いので悩みどころではあります。

#⑤終わりに
　こちらの記事を読まれていてAWSを検討している社外の方へ。
　自身の経験も踏まえて感じたメリットやデメリットも記載しましたが
　個人的見解が大いに入っているためあまり参考にはし過ぎないようお願いいたします。。

##■参考資料
・AWS シンプルアイコン
　https://aws.amazon.com/jp/architecture/icons/