IT社員3人組によるリレーブログ

某IT企業に勤める同期3人が、日常で思ったことを記録していきます (twitter: @go_mount_blog)

AWSを使う上で意識すべきこと【3選】

どうもー、Keiです。

最近、Taylor Swiftの昔のカントリー調の曲「white horse」「you belong with me」「mean」とかを聴いていたら、今とのギャップにめちゃくちゃ切なくなりました。

今や「bad blood」ですよ・・・。人ってそんな変わります?

 

f:id:go-mount:20181112230701j:plain

 

さて、今回はAWSを使う上で意識した方がいいことを3つまとめてみました。

今やクラウドサービスはAWS以外にもMicrosoft Azure、GCPIBMクラウドなどがありますが、AWSが出た当時は明確にAWSを使うメリットがありました。

その根幹の部分は現在も同じです。

 

逆に今回上げる5つが、自分が設計したいシステムの要件にない場合はAWSを使う必要はありません。

 


使ってないシステムはオフに

これは、クラウドを使いたい人にとって最大級の要望だと思います。

例えば、普段はぜんぜん処理がないが、1日の終わりにまとめてバッチ処理をするようなサーバがあった際に、このサーバを1日分借りるのはもったいない感じがしますよね?

1日の終わりに処理する際に、必要なリソースを起動させて従量課金的にコストを計算してもらった方が嬉しいですよね。

 

EC2に代表されるサーバインスタンスは、1秒単位の重量課金制を持っている上に、次のトピックでも説明するオートスケールにおいて、ミニマム0台のオートスケールの設定ができます。

これによって、本当に処理やアクセスがない場合はEC2が1台も起動しない状態を作ることができます。

 

ちなみに、個人的にすごいな~と思ったのは、AWSではAmazon GameLiftというサービスです。これはマルチプレイヤーゲームの基盤を提供するサービスで、一般的に1日の中でアクセス数に波のあるマルチプレイヤーゲームに対して、アクセス数が少ないときは、計算処理のリソースを少なくすることでコストを安くして、逆にアクセス数が多いときはリソースを増強するというものです。

非常にAWSのサービスとマッチしているので、ゲームの基盤というプラットフォームにもAmazonの強みを出せるサービスだと感じました。

 

 

スケールアップでなくスケールアウト

スケールアップとスケールアウト。IT業界にいるとよく聞くスケールという言葉。

 

ご存知の通り

スケールアップとは、処理の増加に対してマシンのCPUやメモリを大きくする方法です。例えば、EC2だとインスタンスのスペックをmicroからlargeに上げることです。

 

これに対して

スケールアウトは、マシンのCPUやメモリはそのままで、マシンの台数を増やすことで処理を並列実行するというものです。EC2の例だと、largeで10分かかる処理をmicro10台で同じ時間で処理するという方式です。

 

ここで、スケールアップよりスケールアウトと説いているのは、スケールアップするためにはアクティブで動作しているインスタンスを停止して、スペックの良いインスタンスを起動させるのに時間がかかってしまうからです。

 

また、AWSではマシンに必要な性能を、最大負荷試験などのマシンスペックを見極める試験をみっちり1カ月やって設計するのではなく、短い期間でマシンスペックを決めて、性能により処理が追い付かない場合は「オートスケール機能」を使ってスケールアウトさせようという考えがあります。

 

これは最大負荷試験をやったことがある方なら良くわかることかも知れませんが、ぶっちゃけ試験に時間をかけても精度が比例して大きくなる訳ではないし、予想外の上振れ要因もあるので、クラウドならではのやり方でこれを解決できるなら使わない手はありません。

 

マネージドサービスで保守運用を楽に

最後はマネージドサービスを使おう!というトピックです。

AWSは、EC2、データベース、ストレージ、ロードバランサなどサービスが星のように多く、組み合わせて使う運用・保守が大変そうというイメージがある人も多いかと思います。

一方で、マネージドサービスと呼ばれるハードやミドルウェアの管理はAmazonが行うから、ユーザはソフトウェアの開発に専念してどうぞ~というサービスがあります。

 

確かに、より柔軟なサービスを提供するには時としてAmazonのマネージドサービスでは実現できない要件もありますが、もしマネージドサービスが使える場合は是非とも使っていきましょう。

 

スピード感の大事なソフトウェア開発では、運用・保守のルールやガイドラインの整備などをしている暇がなく、短納期で成果物を納品する必要も時としてあるでしょう。

このような際にAWSのマネージドサービスは、煩わしいハードやミドルウェアの管理を肩代わりしてくれるので非常に便利なサービスです。

 

さて、今回はAWSを使う上で特に大事な考え方を挙げてみました!

現在AWSを使っているけど、まだ使いこなせていないと感じている方は是非、要件をもう一度見直してみて下さい。

それではまた!