近年、オンプレミス環境でサーバーを設置し、システムを構築するよりも、クラウドコンピューティングサービスを導入することで、コストの効率化を図り、ITリソースだけでなくヒューマンリソースの効率化を実現する企業が少なくありません。
AWSでは、初期費用が掛からず、使った分だけの料金が請求される従量課金制、サイジングが柔軟に行えます。
APIによる運用の自動化により、ヒューマンリソースをより重要度の高い業務に従事させることができます。
この記事では、AWS運用自動化などについてまとめます。
Amazon API Gatewayによる保守・モニタリング
Amazon API Gatewayは、APIの公開、保守、モニタリング、セキュリティ保護、運用を簡単に行うことができる、フルマネージドサービスです。
APIとは、Application Programming Interfaceの略語で、直訳すると「アプリケーションをプログラミングするためのインターフェース」です。
APIは、異なるソフトウェアやアプリケーション間で、機能を共有できるようになります。
例えば、片方のソフトウェアから数値データを取り込み、別のプログラムでそのデータの解析を行ったりします。
APIにより、ソフトウェアやアプリケーション全体の機能を拡張し、便利に使えるようになります。
近年は、モバイルデバイスの機能性も上昇し、需要も増えてきており、バックエンドのシステムやデータをAPI経由でアプリケーションから利用できるようにしておくことが、一般的になってきています。
Amazon API Gatewayを使用して、JavaScript、iOS、Androidなどの言語向けのSDKを生成することができます。
Amazon API Gatewayの主な特徴は以下の通りです。
APIの作成およびデプロイが容易
Amazon API Gatewayを使用することで、AWS Lambdaを実行しているコードの、カスタムAPIを簡単に作成でき、そのコードをAPIから簡単に呼び出すことができます。REST API およびWebSocket APIのサポート
Amazon API Gatewayを使用すれば、REST API やWebSocketを作成できます。REST API はHTTPリクエストタイプを活用することができるAPIです。
WebSocket APIは、チャットアプリ、ストリーミングダッシュボードなどから、リアルタイム双方向通信アプリケーションを構築できます。
回復性
Amazon API Gatewayは1秒間あたりのリクエスト数に基づき、各HTTPメゾッドに対するスロットリングルールを設定できますから、バックエンドシステムのトラフィック管理に便利です。APIライフサイクルの管理
Amazon API Gatewayは、複数のバージョンの同じAPIを同時に実行することができます。最新バージョンの公開後でも、前のバージョンのAPIを呼び出すことができますし、それぞのれアルファ版、ベータ版、製品版のようなリリースステージを管理することもできます。
ステージとバージョンの管理ができることで、従来のAPIリリースに機能強化や新機能の追加を行われた新しいAPIのテストをすることが容易になります。
SDKの世代
Amazon API Gatewayは、Java, JavaScript, Java for Android, iOS用のObjective-C, Swift, RubyでクライアントSDKを生成できます。AWS CLIを使用してget-sdkコマンドを呼び出すことで、サポートされているこれらのプラットフォーム用のSDKを生成、ダウンロードが可能です。
APIの動作のモニタリング
APIがデプロイされ、使用状態になると、Amazon API Gatewayのダッシュボードで、サービスの呼び出しを視覚的にモニタリングできます。これはAmazon ClroudWatchと統合されていて、Amazon ClroudWatchを使用してモニタリング情報を記録しますから、カスタムアラームを設定できます。
AWS認証
AWSサービスへのAPIリクエストの認証と検証をする際には、「署名バージョン4」による認証が可能です。サードパーティ開発者用のAPIキー
Amazon API Gatewayにより、サードパーティ開発者のAPIアクセス権限を管理できます。Amazon API GatewayによりAPIキーを作成し、それぞれのキーに細かいアクセス権限を設定して配布することで、アクセス権限を管理します。
AWS運用自動化への第一歩
システムの保守運用については、オンプレミスでもクラウドコンピューティングでも、非常に重要です。
保守運用を自動化することで、そのために割いていたヒューマンリソースを、他の価値が高い仕事に従事させることができます。
システムの保守運用は、「確実に動くこと」が非常に重要です。
ですから、人の手は介さずにスクリプトを組む等、自動化させるのが一般的です。
機器はいつか壊れる危険性が付きまといますし、人が作業するとミスによる障害が起こり得ます。
障害が起きた場合に、その前の状態に戻すためには、事前にデータのバックアップやOSのイメージをとっておくこと、障害を検知するためにデータの取得などの、保守運用が「確実に動いていること」が大切です。
オンプレミス環境と同様に、
- ディスクのバックアップ・遠隔地コピー
- EBSのSnapshotを取得、世代管理
- EBSのSnapshotを遠隔地にバックアップ
- OSイメージの取得
- AMIを取得、世代管理
- コマンドの実行
- データベースのオンラインバックアップ
- パフォーマンスデータを取得
オンプレミス環境では、バッチファイルやシェルスクリプトなどの実行により、自動化するのが一般的ですが、AWS上のITリソースを参照・更新・削除する処理はすべて、APIで管理されています。
APIをSDKなどを使って、操作します。
保守運用の自動化処理をSDKやcliを使って記述しますが、踏み台サーバをバックアップサーバと兼用すべきではありません。
踏み台サーバーは、目的のサーバーにログインするための中継サーバーのことです。
パブリッククラウドにおいて、踏み台サーバ-は、インターネットや拠点から直接SSHやRDPでつながる唯一のサーバーですから、セキュリティには特に注意が必要だからです。
そもそも同じサーバーに、可用性が異なる機能を持たせるのは得策ではありません。
踏み台サーバーを利用するのは、システムの運用作業のタイミングです。
一方、バックアップなどの保守作業を行うのは、運用外の時間帯です。
ですから、Amazon EC2 を止めたいときにとめられない、CPUやメモリ、ディスクの見積もりが困難、内容が不明なAMIができるなどの弊害が生まれます。
なので、踏み台サーバーにバックアップなどのスクリプトを動かすのは、よくありません。
上記のように配置することで、踏み台サーバーからの不要なインターネット通信がなくなりますし、必要な時だけインスタンスを起動すればよいことになります。
運用負荷の軽減
運用負荷の軽減のために、クラウドの自動化を検討している企業は多いでしょう。
AWSは従量課金制であり、使用した分だけの料金を料金を支払います。
ですから、週末や祝日など、自社のシステムを運用しなくてよい時間帯に、利用しなくてよいインスタンスを、その都度起動したり停止したりすることで、コストの削減を図れます。
しかし、その操作に当たっては、ある程度のAWSやVMwareの知識が必要であり、スピードだけでなく、正確さが不可欠です。
システムの基盤を直接操作しますから、失敗するとシステムダウンを起こしてしまうからです。
そのため、自動化の需要は高く、実際に課題を抱えている企業は多いはずです。
とはいえ、「どこを自動化すればよいかわからない」という疑問は当然あるでしょう。
運用業務の中で、自動化効率の高い作業は、パブリッククラウドであれば、AMI作成、電源操作、バックアップなどです。
これらのスケジュールを登録したり、、テンプレート化することで、操作が終わるまで担当者が監視しておく必要もありませんし、ルーチンワークのミスも防げます。
最後までご覧くださってありがとうございました。
この記事では、Amazon API GatewayとAWSの自動化についてまとめました。
ご参考になれば幸いです。