クラウドサービスを活用していますか?今日では、Gmailをはじめとする多数のクラウドサービスが提供されています。いまやほとんどの方が何らかのクラウドサービスを利用しているといってもいいでしょう。インターネットが当たり前になった今の時代には、クラウドサービスはなくてはならないものです。
クラウドサービスのひとつに、「クラウドコンピューティング」があります。最近では、「クラウドファースト」や「サーバーレスアーキテクチャ」と呼ばれる、クラウドサービスの活用と前提とした設計手法(考え方)もでてきています。それだけシステムの設計にクラウドサービスを採用する機会が増えてきたということです。そのため、システムエンジニアの方はクラウドサービスについて学んでおくべきでしょう。
この記事では、クラウドサービスを学びたいと思っているシステムエンジニアの方のために、クラウドサービスのひとつであるクラウドコンピューティングについてお伝えしていきます。ぜひご一読して、モダンなシステムアーキテクチャの設計に役立ててください。
参照:システムエンジニアとしての適性について解説した記事はこちら
クラウドコンピューティングとは?
クラウドコンピューティングが登場する以前は、オンプレミス(自社サーバー)でのシステム運用が主流でした。小規模な企業ではレンタルサーバーを使っていたことでしょう。しかし、今日のビジネスは変動が大きく、一気に注目を集めては消えていくサービスもひとつやふたつではありません。
ご存じの通り、サーバーの導入には多大な費用がかかります。データセンターでの運用であればなおさらでしょう。しかも、事前に必要な性能を予測してハードウェアを準備するのは至難の業です。予測を下回れば設備はムダになり、上回れば機会損失を招きます。
この問題を解決するために、「クラウドコンピューティングサービス」が登場しました。単に、クラウドサービスとも呼ばれます。クラウドコンピューティングは、使った分だけ支払いを行う従量課金制を導入しています。
つまり、初期費用なしでビジネスに必要な分だけのハードウェア資源を得られるのです。また、パフォーマンスを自動的に上げる(オートスケール)こともでき、突発的な負荷増大に対しても対応できます。これなら、平常時にパフォーマンスを浪費することもありません。
クラウドコンピューティングには、3種類の形態があります。ひとつ目は「パブリッククラウド」で、インターネット上に公開されているクラウドを意味します。この形態が最も一般的でしょう。ふたつ目は「プライベートクラウド」で、企業内のネットワークや一部の閉じたネットワーク内に構築されたクラウドです。
主にセキュリティの問題を解決するために使用されます。みっつ目は「ハイブリッドクラウド」で、パブリッククラウドとプライベートクラウドを合わせたクラウドの形態です。双方のメリットを活かすことができます。
この記事では、誰でも利用できるパブリッククラウドについて説明していきます。
代表的なクラウドコンピューティングサービス
Amazon Web Services(AWS)
世界最大のECサイト企業Amazonが提供するパブリッククラウドサービス。AmazonのECサイトでも使われている膨大なコンピューター資源がクラウドサービスとして使えるようになっています。導入企業が多く、最も人気のあるクラウドコンピューティングサービスです。
Microsoft Azure
Microsoftが提供するクラウドプラットフォームです。Microsoftだけあって、Windowsとの親和性が高く、開発ツールであるVisual StudioにはAzureと連携するためのツールが組み込まれています。C#などの.NET Framework系の言語で開発を行っているなら、こちらも検討してみましょう。
Google Cloud Platform
Googleが提供するクラウドコンピューティングサービスで、YouTubeやGoogle検索などのサービスでも使われています。複数のサービスから構成されていますが、よく聞くのはGoogle App Engine(GAE)でしょう。これは、PaaS(Platform as a Service)なので、アプリケーションをデプロイするだけで手軽に実行できます。
この記事では、ユーザーの多いAWSについて説明していきます。
AWSが提供する主なサービス
Elastic Compute Cloud(EC2)
AWSの代名詞といってもいいくらい主軸となっているサービスです。いわゆるIaaS(Infrastructure as a Service)と呼ばれるもので、LinuxやWindowsなどの仮想マシンを起動してアプリケーションを実行することができます。仮想マシンのスペックと起動時間などに応じて料金を支払う仕組みです。一般的にはこのEC2を中心に、他のAWSのサービスを連携させてシステムを構築していくことになります。
Elastic Load Balancing(ELB)
ELBは、仮想的なロードバランサーサービスです。トラフィックが多いシステムでは、どうがんばってもひとつの仮想マシン(EC2)ですべてのリクエストを処理することはできません。そのため、ELBを使ってトラフィックを複数の仮想マシンに分散して処理します。こちらも、起動時間と転送データ量などに応じた従量課金制です。
Simple Storage Service(S3)
S3は、KVS(Key Value Store)に分類されるオンラインストレージサービスです。データを、パケットというコンテナにキーと関連付けて保存します。取得するときは、パケットとキーを指定して取り出します。RDB(リレーショナルデータベース)ほどの複雑なデータ構造が必要ない場合には、KVSのほうがシンプルに実装できるでしょう。
CloudFront
CloudFrontは、CDN(コンテンツ配信ネットワーク)サービスです。EC2から直接HTMLやCSS、画像などのコンテンツを送信することもできますが、CloudFrontを使ったほうがクライアント(ユーザー)に最も近いエンドポイント(サーバー)から配信することができます。つまり、データの送信を高速化することができるというわけです。Amazonによると、0.1秒表示速度が遅くなると売上が1%減少するといわれています。早いに越したことはありません。
DynamoDB
DynamoDBは、NoSQL(Not Only SQL)と呼ばれるデータベースサービスです。RDBとは違い、スキーマ(データ定義)をもちません。そのため、どんなデータ構造でも事前準備なしに格納できます。RDBに格納することが難しい、JSONなどの半構造化データを格納するのに非常に適しています。Web APIと連携する際にはとても役立ってくれることでしょう。
無料枠を使って試してみよう
AWSの魅力的なポイントのひとつに、無料利用枠が充実していることが挙げられます。初回利用者は1年間もの間、一定の範囲内なら無料でAWSを利用することができるのです。非常に多くのサービスが対象になっているため、ここでは一部の主な無料利用枠のみ紹介します。
- EC2:月当たり750時間分の仮想マシン利用
- S3:5GBのストレージ、20,000件のGetリクエスト、2,000件のPutリクエスト
- ELB:月当たり750時間分のELB利用、15GBのデータ処理
- DynamoDB:25GBのストレージ、25ユニットの書き込みおよび読み込み容量
- CloudFront:50GBのデータ転送、2,000,000件のHTTP/HTTPSリクエスト
この他にも多数の無料枠が設定されています。なお、変更される場合もあるため、詳細は下記のページにてご確認ください。
まとめ
AWSは、クラウドコンピューティングサービスの中でも最大のプラットフォームになっています。まずはAWSの無料枠を活用して、どんなことができるのか試してみましょう。クラウドサービスは便利なものですが、注意して設計しないと特定のプラットフォームに依存することになってしまうこともあります(ベンダーロックイン)。
コンテナ型の仮想化ソフトウェアであるDockerなどを使ってプラットフォーム非依存のアーキテクチャを目指しましょう。クラウドサービスを使いこなせれば、システムエンジニアとしての評価も上がることでしょう。あなたはシステム設計にどんなクラウドサービスを使いたいですか?
参照:システムエンジニアとしての適性について解説した記事はこちら
フリーランスになるために必要な知識やスキルアップの方法等、様々なお役立ち情報を発信していきます。
(リモートワーク案件に強いフリーランスエージェント「クラウドワークス テック」を運営)