はじめまして。
アドテクスタジオ インフラエンジニアの村井翔太朗(@Show_murai)です。
本記事は CyberAgent Developers Advent Calendar 2017 の 8 日目の記事となります。
私はアドテクスタジオのインフラ横断組織のCentral Infrastructure Agency(以下CIA)に所属しています。
CIAからアドベントカレンダーには6人参加しているので、
是非他のメンバーの記事も合わせてお読み下さい。
アドテクスタジオではパブリッククラウドのメインストリームの2つである、
Amazon Web Service(以下AWS)とGoogle Cloud Platform(以下GCP)を主に利用しています。
はじめに
この記事を書こうかと思ったモチベーションとしては、
アドテクスタジオで利用しているパブリッククラウドとしてAWS、GCPを使っています。
新規でプロジェクトを立ち上げるときやシステムのリプレースの際、
「インフラとしてAWS、GCPどちらを使うか」がよく議論に挙がります。
インフラエンジニア目線で実際運用してみて初めてわかったこと、
気をつけた点の一部ですが紹介します。
今回は触れませんが他の代表的なパブリッククラウドとして、
Microsoft Azure、IBM Cloud、IDCFクラウド、Oracle Cloudなどもあります。
AWSとは
Amazon Web ServiceはECサービスで有名なAmazonが提供するパブリッククラウドサービスです。
世界中にリージョンと言われる拠点があり、グローバルに拡大を続けています。
パブリッククラウドではシェアNo1でもあり、
アドテクスタジオで最も利用しているパブリッククラウドでもあります。
GCPとは
Google Cloud PlatformとはGoogleが提供するパブリッククラウドです。
Googleのサービスが使っているインフラと同じものを、
パブリッククラウドサービスとして提供しています。
アドテクスタジオでは今年に入って複数のプロジェクトで採用されています。
AWSとGCPの特徴比較
AWSとGCPの特徴を比較したスライドがあるので参考にして下さい。
AWSの運用ポイント
東京リージョン(ap-northeast-1)での話しが前提となっています。
権限
AWSにはIAMというアクセス権限の管理ができるサービスがあります。 権限は非常に柔軟にできますが、一方で複雑になりすぎて管理が大変になることがあります。 そんな場合は以下のポイントでIAMユーザ/ロール/グループを作成して運用しています。
- どのメンバー/サービスで使っているか、すぐに分かる命名規則にする
- 管理者がポリシーの定義を予め設計しておく
コンピュート
AWSにはElastic Compute Cloud(EC2)という、
コンピューティングサービスがあります。
よく使われてるサービスの一つだと思います。
運用していてEC2はコストの割り合いが多く、
コスト削減を中心に以下の点を気をつけて運用しています。
- 使っていないボリューム(EBS)、グローバルIP(EIP)、ロードバランサーが無いかは定期的にチェックする
- インスタンスタイプは新しいものを使うようにする
- スポットインスタンスを使える場面では積極的に使う
- セキュリティグループは一目でポリシーかわかるような命名規則にする
ストレージ
AWSにはSimple Storage Service(S3)というストレージサービスがあります。
高い耐久性があり容量無制限のストレージサービスで、
AWSの代表するサービスの一つです。
S3も運用してみてわかったことがあり、以下の点を気をつけています。
- バケット名の制約には気をつける:DNS 命名規則に準拠、バケット名はユニークでなければいけない
- 重要なバケットはバージョニングを有効にする
- ファイル数やアクセス数が多い場合、リクエスト料金表も考慮する
リレーショナルデータベース
AWSにはRelational Database Service(RDS)というマネージドデータベースサービスがあります。
特にAWS独自のデータベースエンジンであるAuroraは耐障害性に強く、
最大64TBまで拡張できるディスクもあり強力なデータベースサービスです。
RDSを運用する上で注意しているのは以下のポイントです。
- メンテナンスによる再起動が発生する
- データサイズが大きい場合スナップショットの料金も計算しておく
GCPの運用ポイント
東京リージョン(asia-northeast1)での話しが前提となっています。
権限
GCPでもIAMというアクセス権限の管理ができるサービスがあります。
開発者への権限はGoogleアカウントを保有しているユーザに対して付与する形であり、 アクセス権の種類はシンプルで理解しやすいです。
アプリケーションなどシステム上で利用する場合は、
サービスアカウントで権限を付与する形となります。
GCPの権限管理はかなりシンプルなので以下の点が運用していく上で気をつけました。
- 複雑な権限管理は出来ないのでセキュリティ要件を予め確認しておく
- 管理者がポリシーの定義を予め設計しておく
コンピュート
GCPにはGoogle Compute Engine(GCE)という、コンピューティングサービスがあります。
こちらもGCPではよく使われてるサービスの一つだと思います。
コンピュートはやはりコストの割り合いが多くなるので
コスト削減を中心に以下の点を気をつけて運用しておいます
- プリエンプティブインスタンスを積極的に使う
- カスタムマシンタイプを使ってインスタンスタイプの最適化を行う
- 起動が早いのでオートスケールを積極的に使って効率化する
ストレージ
GCPにもAWS同様にGoogle Cloud Storage(GCS)というストレージサービスがあります。
高い耐久性があり容量無制限のストレージサービスで、GCPの代表するサービスの一つです。
運用してみてわかったことがあり、以下の点を気をつけています。
- 公開設定が容易であるので、オペミスによる公開に注意する
リレーショナルデータベース
GCPにはCloudSQLというマネージドデータベースサービスがあります。
CloudSQLは現在 第2世代で容量が10TBまで自動で拡張できる特徴があります。
提供されているデータベースエンジンはMySQLとPostgreSQL(ベータ)です。
CloudSQLを運用する上で注意しているのは以下のポイントです。
- PostgreSQLはベータなので本番サービスで利用する場合は要検討
- メンテナンスによる再起動が発生する
- フェイルオーバー時に自動でエンドポイントは変更できない
AWSとGCPを運用してみての所感
私が感じる運用面から見る両者の違いはそれぞれ以下のように感じています。
AWSは機能が豊富で柔軟性が高く、AWS特有の機能をどんどん使って作り込むと運用や管理も楽になると考えています。
ただし構成やセキュリティを必要以上に複雑ならないように気をつけるのもポイントです。
GCPはシンプルな設計や運用を心がけ、複雑な要件を排除すると運用面での負担を減らせると感じています。
さいごに
AWS、GCPに限らずパブリッククラウドでは思わぬ費用がかかったり、
クラウド特有の制限があったりします。
課金体系を確認したり、仕様/制限を調査は欠かさないことも運用していく上で気をつけるポイントです。
また初めてクラウドを使われる方はドキュメントを読むだけでなく、
実際に手を動かして使ってみることをオススメします。
有償ですがサポートもあるので、サポートサービスを利用されてみてもよいと思います。
では良いクリスマスを。
※本記事は makocchi が代筆しました