(※この記事は、2023年6月6日に更新されました。)
「アプリケーション開発のためにPaasを探している」
「HerokuとAWSのサービスの違いを知りたい」
「herokuとawsはどのような特徴を持ったクラウドプラットフォーム?」
という疑問をお持ちの方はいませんか?
近年ではクラウドプラットフォームを利用したシステム・アプリケーションの開発が主流になってきています。
本記事ではクラウドサービスの提供形態と、主要なサービスであるHeroku、AWSとの違い。それぞれのクラウドプラットフォームの特徴を解説します。
Mailer To Goは、トランザクションメールに特化したクラウドメール配信システムです。メールの到達率は99% 🎉
近年のシステム開発では、自社でサーバを用意して環境構築を行うオンプレミスではなく、クラウドコンピューティングで必要なリソースを確保することが多くなっています。
クラウドを利用することで、物理的な制約を受けずに柔軟に必要なリソースを確保することが可能です。
一般的なクラウドには3つの提供形態があります。
マルチテナントでアプリケーションやソフトウェアの機能を提供します。
インフラに加えてOSや開発環境などのクラウドプラットフォームを提供します。
仮想サーバ、ストレージなどのインフラを提供します。
それぞれの具体例を解説します。
Saasはサービスを含めて提供されるクラウドの提供形態です。
クラウド上にデータが保存されているチャットサービスやMicrosoft officeなどが該当します。
サービスとして提供されているため利用者の自由度はサービス内に制限されているものの、専門性が低く誰でも扱いやすいことが特徴です。
Iaasはインフラのみを提供するクラウドの提供形態です。
Amazon EC2やMicrosoft Azureなど、環境基盤そのものを提供しており、専門知識を有していれば自由度が高い環境構築や開発が可能となります。
Paasは、IaasとSaasの中間的な立ち位置のクラウドの提供形態です。
AWSやHerokuなど環境構築に一定の制約はあるものの、独自のアプリケーションの構築や運用を行うことができます。
Paasは、アプリケーション開発に必要な基盤が整った状態から使い始めることができるため、リソースをアプリケーション開発に集中させることができます。
そういった背景からPaasを用いたシステム・アプリケーションの開発事例が増えています。
次に、Paasの主要なサービスであるAWS、Herokuについて解説していきます。
Amazon Web Services (AWS)とは、Amazon.comが運営するクラウドサービスで、導入実績は世界、日本共にNo.1となっています。
Herokuとは、米Salesforce.comの子会社が提供するフルマネージドのアプリケーションプラットフォームです。
AWSは、Java、PHP、Python、Ruby、Go、C++、.NET、Java Script のプログラミング言語に対応しています。
HerokuではJava、PHP、Python、Ruby、Go、Node、Scala、Clojure のプログラミング言語に対応しています。
主要な言語はどちらも対応していますが、もし開発時の言語の制約がある場合は対応しているか否かをサービス選択の判断材料にすると良いでしょう。
AWSでは従量課金制、Herokuでは定額制を採用しています。
AWSではAmazon EC2やAmazon S3など最低限のコンピューティング・データベースの100種類にも及ぶ無料枠が用意されており、無料か小額から試してみたいという方にはメリットがあります。
ただし、無料枠をすぎてしまうと自動で課金が発生するため、うっかり無料枠以上に使っているとある日急に請求書が届くという事態にも陥りやすい料金体系になっています。
従量課金制は利用料に応じてスケールするため、大規模なシステム開発にも用いることができます。
Herokuでは、以前まで無料枠がありましたが2022年11月28日を持って無料枠が廃止されました。Eco・Basic、プロダクション、アドバンスド、エンタープライズの4つのプランがあり、それぞれ月定額で利用可能なリソースの上限が決まっています。
最低価格のEco・Basicプランは$5から利用可能で、大規模システム開発に用いるエンタープライズプランでは、価格は別途問い合わせが必要となります。
従量課金制のAWSよりも価格の柔軟性は低いものの、事前に発生する費用の見積もりがしやすいというメリットがあります。
Herokuでは、200を超えるアドオンを柔軟に組み合わせることで、システム開発、運用に必要となるサービスを提供しています。
AWSも230個を超えるサービスを提供しており、ニーズに合わせて各種サービスを組み合わせることが可能です。
ただし、Herokuではデータベースの選択肢はPostgreSQLのみであるのに対し、
AWSではMySQL、PostgreSQL、MariaDB、Oracle BYOL、SQL Serverの選択ができるなど、個々の領域において利用可能なシステムが異なります。
AWSは選択肢が多く自由度が高い一方で、適切なサービスの選択・設定には専門的な知識が必要となります。
Herokuの機能はAWSに比べるとシンプルで、アプリの開発やリリースを迷うことなく手軽に行うことができます。
AWSでのシステム開発では専門知識を要する一方で拡張性に非常に優れており、日本を代表する各業界の大手企業での導入実績があります。
AWSはシステムが大きくスケールする可能性がある大企業や、AWSの知識を有したエンジニアの人材が確保できる企業に適しているといえます。
Herokuはアプリケーションの構築からデプロイまでを簡単に行うことができるのが特徴です。
環境構築や保守作業にできるだけ時間をかけたくない、一定の規模のサービス展開を目指している企業に適しています。
また、AWS、Herokuは共通して学生向けに無料のプランを用意しています。
学生でPaasに興味のある方はそれぞれのアカウントを取得して利用してみると良いでしょう。
Mailer To Goは、トランザクションメールに特化したクラウドメール配信システムです。独自のドメインを使って到達率の高いメールを今すぐに配信できます。
ここでは、herokuのクラウドプラットフォームとしての特徴を3つご紹介いたします。
herokuは、クラウドプラットフォームであるため開発者は自分でサーバをセットアップしたり、管理したりという手間が不要です。
GitHubのリポジトリを作成すればアプリケーションのデプロイをgit pushするだけで簡単にできます。
開発者は、アプリのデプロイにあたって難しいファイアウォール、データベース、リバースプロキシ、SSL証明書などのインストールや設定、インフラ管理について触れる必要がありません。
さらにherokuc CLI(コマンドラインツール)を使うことで様々な操作を簡単にコマンドを使って行うことができます。
参考:Gitを使用したデプロイ
herokuには、web dynoのオートスケーリングの機能があります。
herokuのアプリケーションにたくさんの人が同時にアクセスをすると処理が遅くなってしまいます。そのような状況に自動的に対応してくれる機能がオートスケーリングです。
herokuが自動的に応答時間を監視し、その95%が設定された値を超えた時にherokuは自動スケールを起動させます。
アドオンを利用することで、herokuの自動スケールのメトリックを変えることができます。
そのため、開発者は応答時間や待ち時間を監視したり、予測したりする必要がありません。
利用可能なプランは、Performance-tier dynosとPrivate Spacesで実行されているdynoで、さらに追加料金なしで自動スケール機能が利用可能です。
参考:Autoscalling
herokuのheroku Elements マーケットプレイスでは、第三者の事業者がherokuのアドオンを提供しています。保守は、アドオン提供者かherokuのどちらかです。
herokuを使い始めた時には、基本的な機能しか備わっていません。
そのため、開発しているアプリケーションのニーズに合わせて必要なアドオンを購入することができます。
例えば、herokuにはアプリケーション内からメールを送信する機能がありません。
つまり、アプリに登録したユーザーへの登録完了メール、パスワード変更メール、購入完了メールなどアプリの運営に必要なメールを送るためにはアドオンを購入する必要があります。
おすすめのメールアドオン→ Mailer To Go
ここでは、AWSのクラウドプラットフォームとしての特徴を3つご紹介いたします。
AWSには、Amazon EC2、Amazon RDS、AmazonS3、Amazon DynamoDBなど200を超える様々なサービスや機能が提供されています。
しかし、中にはマネージドサービスであったり、開発者が自ら管理しなければならない知識の必要なサービスなどもあります。
そのため、herokuに比べて開発者の負担は増えますが、カスタマイズ性の高いサービスであることは確かです。
AWSのコンピューティングは、その高い柔軟性が特徴的です。
例えば、サーバーのスペックを日中と夜間で変更したり、アクセスのない夜間や週末にサーバーを停止することで利用料を節約することができます。
また、忙しい時期にはサーバーのリソースを一時的に増やすことも可能です。
例えば、セールやキャンペーンを行うときに通常よりも多くのアクセスが予測されます。そのような場合にリソースを強化して対応します。
オンプレミスに比べて、必要な分だけ必要な時に利用することができるため、結果的にコストの削減につながります。
参考:サイジングからの解放
AWSは、世界中に31のデータセンター(リージョン)を持っています。これは、複数のAZ(アベイラビリティゾーン)で構成されています。
これにより、AWSでアカウントを作成すると、自分のシステムやデータを世界中に展開することが可能です。
さらに、複数のデータセンターを持っているためユーザーのデータやアプリケーションを複数の場所に分散させることができるため、非常に信頼性が高く動作も安定しています。
AWS、HerokuともにPaasを代表するサービスですが、それぞれに特徴があります。
AWSは専門性を必要とするものの拡張性に優れ、日本国内の有名企業への導入実績を持ちます。
従量課金生のため、コストが見積りづらいのがデメリットです。
Herokuはアプリケーションの開発からデプロイまでを簡単に行うことができるため、保守コストが比較的少なくてすみます。また、月額制を採用しているため予算を把握しやすいという特徴があります。
デメリットとしては、AWSと比較すると拡張性が低いことや利用できるDBなどのシステムに制限があることが挙げられます。
また、それぞれ学生向けの支援プランを用意しており、年齢などの制限をクリアすると学習目的で無料枠を利用することが可能です。 それぞれの特徴を理解し、自分にあったクラウドサービスを選択しましょう。
おすすめ記事:IPレピュテーションの確認方法3選”メール到達率に及ぼす影響と改善方法を紹介
おすすめ記事:herokuのアプリ内からメールを送信したい?おすすめアドオン3選
Mailer To Goは、トランザクションメールに特化したクラウドメール配信システムです。独自のドメインを使って到達率の高いメールを今すぐに配信できます。
Mailer To Goは、高い到達率とスムーズなインテグレーションが特徴的なディベロッパーのためのクラウドメール配信システムです。最短で当日からメールを送信できます。
メールを送ってみる