アマゾンウェブサービスで生産性を高める

公開: 2022-03-11

過去数年間、誰もが口にする最もホットな言葉は「生産性」でした。 急速に進化するインターネットの世界では、何かを速く成し遂げることは常に賛成を得ます。 実際のビジネスロジックを迅速かつ正確に実装する必要があるにもかかわらず、経験豊富なPHP開発者として、データベースやキャッシュのセットアップ、プロジェクトの展開、オンライン統計の監視など、他のタスクに数百時間を費やしました。 多くの開発者は、これらのいわゆる雑多なタスクに何年も苦労しており、代わりにプロジェクトロジックに集中して時間を無駄にしています。

友人が4年前にアマゾンウェブサービス(AWS)について言及したとき、私の人生は変わりました。 それは新しい扉を開き、生産性とプロジェクトの品質を大幅に向上させました。 AWSを使用したことがない方は、この記事を読んでください。時間の価値があると思います。

生産性の向上

アマゾンウェブサービス(AWS)は、文字通り数分で生産性を向上させることができます。
つぶやき

AWSの背景

アマゾンウェブサービスは2006年に正式に開始されました。多くの人がそれを聞いたことがあるでしょうが、おそらくそれが何を提供できるかを知らないでしょう。 したがって、最初の質問は次のとおりです。AWSとは何ですか?

アマゾンウェブサービス(AWS)は、Amazon.comが提供するクラウドコンピューティングプラットフォームを構成する、ウェブサービスとも呼ばれるクラウドコンピューティングサービスのコレクションです。

ウィキペディア

この定義から、2つのことがわかります。AWSはクラウドに基づいており、AWSは単一のサービスではなくサービスのコレクションです。 これではあまりわかりませんが、私の意見では、初心者はAWSを次のように理解することをお勧めします。

  • 定義にあるように、AWSはクラウド内のサービスのコレクションです。
  • AWSは、高速コンピューティングリソースをオンラインで提供します(たとえば、Linuxサーバーのセットアップには10分かかります)。
  • AWSは手頃な料金を提供しています。
  • AWSは、すぐに使用できる使いやすいサービスを提供します。これにより、データベース、キャッシュ、ストレージ、ネットワーク、その他のインフラストラクチャサービスを手動で設定する時間を大幅に節約できます。
  • AWSは常に利用可能であり、非常にスケーラブルです。

もちろん、AWSを使用することにはさらに多くの利点があるため、AWSが生産性を向上させる方法の概要を簡単に説明しましょう。

AWSアカウントを無料で作成する

サービスの利用を開始するには、アカウントが必要です。 AWSのアカウントを作成するのにかかる時間は5分以内です。 次の情報が手元にあることを確認してください。

  • 確認メールの受信に使用されるメールアドレス。
  • セットアッププロセスは常に無料であるため、請求されないクレジットカード。
  • ユーザーを識別するための自動システムコールを受信する電話番号

それでおしまい。 上記の情報を準備したら、AWS Webページにアクセスし、わかりやすい手順に従ってアカウントを作成します。

次の点に注意してください。

  • ほとんどのAWSサービスは、毎月豊富な無料利用枠のリソースを提供しています。 つまり、AWSのテストには通常、ほとんどまたはまったく費用がかかりません。
  • 私の経験によると、電話番号やその他の個人情報は悪用されていません

最初のEC2サーバーのセットアップを取得する

クラウドサービスの利点の1つは、共有リソースをオンデマンドで取得できることです。 Amazonは、ユーザーがサービスにアクセスするための4つのサービス層を提供しており、簡単な順にリストされています。

  • 管理コンソール、
  • コマンドラインツール、
  • SDK、
  • RESTfulAPI。

この記事では、管理コンソールを使用します。 したがって、コンソールにログインすると、次のような画面が表示されます。

AWSで最初のEC2サーバーをセットアップする

注意すべき2つの領域があります。

  • 右上隅に、リージョンセレクターがあります。 AWSは、世界中の11の異なる地域でサービスを提供しており、現在も成長を続けています。 選択範囲として地域を選択するか、デフォルトとして米国東部(北バージニア)に任せます。 価格は地域によって異なる場合があります。使用量が増えるにつれて、このことを覚えておく必要があります。
  • 画面のほとんどは、サービスのリストでいっぱいです。 このセクションではEC2について説明します。 AWSが提供するものをざっと見てみましょう。 それらが意味をなさなくても心配しないでください、すべてのサービスはそれ自身で機能します。 ただし、これらを組み合わせて使用​​すると、生産性が向上します。

クラウドリソースの最も基本的なニーズは仮想サーバーです。 EC2(Elastic Compute Cloud)は、Amazonが仮想サーバーサービスに選んだ名前です。 Linuxサーバーをオンラインにするのがいかに簡単かを見てみましょう。

  • EC2管理コンソールで、次のように起動プロセスを開始します。

AWSで最初のEC2サーバーをセットアップする

  • マシンイメージ(略してAMI)を選択して開始します。 これは、マシンを実行するオペレーティングシステムです。 お好みのシステムを選択してください。 yumを使用してパッケージを管理するAmazonLinuxから始めることをお勧めします。

AWSで最初のEC2サーバーをセットアップする

  • 次に、インスタンスタイプを選択します。 これは、仮想サーバーのハードウェア仕様として理解できます。 最初の1年間は、このインスタンスで毎月750時間の無料使用が可能になるため、 t2.microから始めることができます。 これは、サインアップした日から最初の年にのみ有効であり、 t2.microインスタンスにのみ有効であることに注意してください。 AWSを味わいたいだけなら、お得です。

AWSで最初のEC2サーバーをセットアップする

  • サーバーをより詳細に構成する機能を使用すると、サーバーを起動できます。 EC2を初めて使用するときは、次のような画面が表示されます。 セキュリティに関する警告は、Amazonがセキュリティの側面をどれだけ強調しているかを示しています。 ただし、マネージドサービスに関するセクションにアクセスするまで、この警告は無視できます。

AWSで最初のEC2サーバーをセットアップする

  • 最後に、リモートサーバーにアクセスするには、IDが必要です。 以下の画像のように、AWSはSSHキーペアを選択するように求めます。 プライバシーキーファイルをダウンロードして、起動ボタンをクリックします。 はい、完了です。 新しい仮想サーバーが構成されており、数分で準備が整います。

AWSで最初のEC2サーバーをセットアップする

  • インスタンスの準備ができたら、プライバシーキーを使用してデフォルトユーザーec2-userとしてシステムにログインできます。 ec2-userはAWSのデフォルトであり、sudo機能もあります。 デフォルトのユーザー名を変更することはできませんが、任意のユーザーを作成し、好みに応じて適切な特権を割り当てることができます。 サーバーのアドレスはここにあります:

AWSで最初のEC2サーバーをセットアップする

上記のプロセスは5分未満で完了します。これにより、仮想サーバーを簡単に起動して実行できます。 次のセクションでは、AWSが作成したばかりのインスタンスの管理にどのように役立つかを学びます。

オンデマンド請求

ほとんどのAWSリソースは時間単位で請求されるため、柔軟性が高くなります。 たとえば、作成したEC2インスタンスを使用すると、サービスを停止する方法が2つあります。停止と終了です。 どちらのアクションも請求を停止します。 違いは、インスタンスを停止することで、すべての作業を保存して後でインスタンスを再起動できることです。 対照的に、インスタンスを終了することで、インスタンスをAWSに返送してリサイクルするため、情報を復元する方法はありません。 インスタンスを終了する必要があるのは、AWSがデフォルトでアカウントごとにリージョンごとに20インスタンスの制限を設定しているためです。停止したインスタンスは、終了するまでカウントされます。

次の方法でインスタンスをすばやく停止できます。

AWSで最初のEC2サーバーをセットアップする

EC2インスタンスを停止すると、請求額も増加しなくなります。 これは、次のシナリオで特に役立ちます。

  • 何か新しいことを試してみたい場合、数時間支払うだけでよい場合はコストがかかりやすく、一部のサービスの無料利用枠を超えることはおそらくありません。
  • コンピューティングのニーズが実稼働環境の規模にある場合。 たとえば、以前は、ピーク使用量よりも通常30〜50%多いコンピューティングリソースを予約する必要がありました。 AWSを使用すると、より柔軟な方法でリソースをプロビジョニングできます。

AWSで最初のEC2サーバーをセットアップする

AWSの価格情報はオンラインで入手できます。 いくつかの計算を行った後、あなたは質問を提起するかもしれません:AWSは実際に安いですか? 1か月の時給を掛けると、まったく競争力がないように見えます。 答えはイエスとノーです。

オンデマンドリソースの1か月間の時間単価を単純に計算する場合、AWSは安くはありません。 ただし、以下に示すように、リザーブドインスタンスの課金の選択肢はまだあります。

AWSで最初のEC2サーバーをセットアップする

最小リソース要件については、リザーブドインスタンスと、オンデマンドインスタンスとして請求される他のさまざまなリソースを使用して、30〜70%の割引を実現できます。 実際には、これは1年間のコミットメントで30〜40%安くなり、予約済みインスタンスを使用した3年間のコミットメントではさらに安くなります。 そのため、上記の質問に「はい」と投票します。 また、セキュリティとモニタリングのメリットを含めると、AWSはさらに安価になります。

マネージドサービス

AWSの目的の1つは、運用コストを可能な限り排除することです。 従来、インフラストラクチャのセキュリティと正常性をオンサイトでオンラインで維持するには、システムエンジニアの大規模なチームが必要です。 経験豊富なチームは、プロセスを簡素化するために自動化ツールを作成して展開します。 ただし、実際にはサービスの管理も複雑なプロジェクトになります。 AWSは、リソースの管理を支援する上で命の恩人として機能します。 以下に、AWSが提供する最も使用されているサービスの一部を示します。

  • AWSセキュリティグループ、
  • IAM、IDアクセス管理、
  • CloudWatch、
  • また、OpsWorksなどの自動展開サービスのリスト(この記事では取り上げません)。

AWSセキュリティグループ

AWSがサービスのアクセス制御を処理する方法は、2つの別々のレイヤーで行われます。 ネットワークレベルでは、「セキュリティグループ」と呼ばれるアイデアを使用して実現されます。 すべてのAWSサービスはセキュリティグループに属しています。 そして、セキュリティグループは、誰が通過を許可されるかを決定します。 EC2インスタンスを使用すると、AWSは自動的にセキュリティグループを作成しました。

AWSで最初のEC2サーバーをセットアップする

インバウンド/アウトバウンドルールを設定することで、何が入り、何が出るかを決めることができます。 TCP、UDP、およびICMPルールは、EC2サービスでサポートされています。 セキュリティグループは外部ハードウェアレベルのファイアウォールのように機能し、パッチを適用することを考える必要はありません。

セキュリティグループを使用するもう1つの利点は、再利用できることです。 1つのセキュリティグループを多くのリソース間で共有できます。 実際には、リソースごとにセキュリティポリシーを1つずつ設定する手間が省けるため、メンテナンスの効率が大幅に向上します。 また、セキュリティグループは共有可能であるため、1つの場所で構成し、リソースごとに1つずつ手動で設定する手間をかけずに、そのセキュリティポリシーを他のリソースに適用できます。

IDおよびアクセス管理

AWSは、IAMを使用してアクセス制御を処理する別の方法を提供します。 これは、RESTfulインターフェイスにアクセスする必要がある場合のアプリケーションレベルのセキュリティ制御です。 AWSがサービスにアクセスしているユーザーを認識できるように、各RESTリクエストに署名する必要があります。 また、事前に設定されたポリシーのリストと照合することにより、AWSはアクションを拒否するか許可するかを決定します。

この記事では、IAMについて詳しく説明しません。 ただし、AWSはセキュリティに多くの配慮を払っているため、許可されていない訪問者が機密データにアクセスできないようにすることができます。

CloudWatch

CloudWatchは、AWSリソースからあらゆる種類のメトリクスを収集および追跡するためにAWSが提供するサービスです。 特定のイベント(またはアラーム)に反応する能力があるため、より強力です。 CloudWatchを使用すると、新しく作成したEC2インスタンスの状態を監視できます。

  • EC2インスタンスにアラームをすばやく追加できます。

AWSで最初のEC2サーバーをセットアップする

  • アラームは、さまざまな目的で基準を指定することで作成できます。

AWSで最初のEC2サーバーをセットアップする

:SNSは、通知を送信するためにAWSが提供するトピックベースのサービスです。 通知は、電子メール、SMS、iOS / Androidプッシュ通知、およびその他の多くの形式で送信できます。

モニタリングから通知まで、CloudWatchは数回のクリックでモニタリングのニーズを自動化しようとします。 さまざまなAWSサービス用に事前定義されたメトリックがたくさんあります。 上級ユーザーの場合は、アプリケーションのカスタムメトリックを作成することもできます。

コストに関しては、CloudWatchが提供する無料利用枠サービスは、通常、スタートアッププロジェクトには十分です。 ただし、ビジネスが成長した場合でも、追加コストは通常​​、サービスコストの1%未満です。 詳細については、詳細な価格を確認してください。 CloudWatchを使用したモニタリングシステムのセットアップがいかに簡単であるかを考えると、CloudWatchは最も使用されているモニタリングツールになっています。

手間のかからないアプリケーションサービス

開発者として、私たちはおそらく次のシナリオを経験しました。

  • アプリケーションにはデータベースコンポーネントが必要です。つまり、次のことを行う必要があります。
    • データベース用のサーバーを取得します。
    • データベースソフトウェアをインストールします。
    • サーバーとデータベースのモニターを構成します。
    • バックアップスキームを計画します。
    • 必要に応じてソフトウェアにパッチを適用します。
    • そして、ここにリストされていない他の多く。
  • アプリケーションには分散ファイルストレージが必要です。つまり、次のことを行う必要があります。
    • 分散ファイルストレージ用の既存のオープンソース(または商用)ソリューションを見つけます。
    • 必要なサーバーを準備します。
    • 選択したソリューションをインストールして構成します。これは通常、簡単ではありません。
    • サーバーとデータベースのモニターを構成する
    • そしてここにリストされていない他の多く
  • アプリケーションにはキャッシュが必要です。
  • アプリケーションにはメッセージキューが必要です。
  • そして、解決すべき他の多くの問題に加えて、事前構成と事後監視の作業を行う必要があります。

そして、すでにお察しのとおり、これはAWSが役立つもう1つの重要な領域です。 利用可能なアプリケーションレベルのサービスはたくさんあるので、他に何も考慮する必要はありません。

あなたに簡単な絵を与えるためにそれらのいくつかをカバーしましょう。

RDS、データベースはあなたのために管理されていますが、あなたによって管理されていません

リレーショナルデータベース(RDBMS)は、多くのアプリケーションで広く採用されています。 実稼働環境では、RDBMSを使用してアプリケーションを展開する場合、データベースのセットアップと構成の方法から始めて、バックアップの作成と復元のタイミングと方法に続いて、常に特別な注意が必要です。

私たちのチームでは、データベース管理者(DBA)は、セットアップおよびメンテナンススクリプトの作成に少なくとも30%の時間を費やしていました。 AWS RDSの導入により、DBAはSQLパフォーマンスチューニングを行うための時間を増やすことができました。これは、DBAに投資するのに適した領域です。

では、RDSは何を提供しますか? 要するに:

  • RDSは、MySQL、SQLServer、PostgreSQLなどの一般的なデータベースエンジンのほとんどをサポートします。
  • ノードまたはクラスターのデータベースは、数回クリックするだけで作成できます。
  • RDSは、「パラメータグループ」という名前のサービスの下で、共有データベースパラメータの組み込みサポートを提供します。
  • RDSは、セキュリティグループの助けを借りてアクセス管理の組み込みサポートを提供します。これは、EC2でカバーしたものと非常によく似ています。
  • RDSは、シングルクリックでマルチAZを有効にすることにより、追加のサービスを提供します。 すべての監視、スタンバイ、およびフェイルオーバーの切り替えは自動的に行われます。
  • RDSのメンテナンスとバックアップは自動化されています。

結論として、RDSは、データベースサービスのセットアップとメンテナンスに関してかなりの時間を節約します。 代わりに、対応するEC2サーバーよりも約40%多く支払うことになります。 したがって、RDSを選択するか、対応するサーバーを自分で展開するかは、ビジネス上の決定です。 ただし、インフラストラクチャの安定性やスケーラビリティではなく、実際のビジネスに関連する作業により多くの時間を投資することができます。 さらに、これがAWSが提唱するビジネスの方法であることにすぐに気付くでしょう。

キーバリューストレージであるDynamoDBは、数十億のレコードに拡張できます

NoSQLは、近年お気に入りのトピックになっています。 多くの実際のプロジェクトはさまざまなリレーショナルDBMSのサポートを必要としないため、NoSQLデータベースのリストが市場に導入されています。 アマゾンはこれに遅れをとっていません。 DynamoDB(https://aws.amazon.com/dynamodb)は、2012年にAmazonによって発表されたキーバリューストアであり、このサービスの中心的な貢献者は、AmazonのCTOであるWerner Vogelsであり、ウルトラの世界トップエキスパートの1人です。スケーラブルなシステム。

Amazonが大量のトラフィックを処理することは周知の事実です。 DynamoDBは、毎年クリスマスに何十億ものリクエストを処理するショッピングカートサービスを含む、多くのAmazonのビジネスの内部ストレージエンジンであるDynamoから派生しています。 DynamoDBにはスケールアップの制限はありません。

さらに、CassandraやMongoDBなどの他のNoSQLソリューションと比較すると、DynamoDBには大きな経済的利点があります。 予約スループット(1秒あたりに許可される書き込み/読み取りの数)の単位で請求され、リアルタイムで増減できます。 以下は、DynamoDBと他のスタンドアロンNoSQLソリューションのコスト比較表です。

ビジネスニーズDynamoDBサービスDynamoDBのコスト別のサービスを使用する別のサービスを利用する場合の費用
小規模なビジネス
(1000 DAU未満、16GBデータ)
10書き込みユニット
10読み取りユニット
月額$9.07• t1.micro••
16GBEBS•••
$14.64/月
中小企業
(100k DAU未満、160GBデータ)
100書き込みユニット
100読み取りユニット
$101.62/月m4.xlarge
160GB EBS
$190.95/月
大企業
(最大1m DAU、1TBデータ)
1000書き込みユニット
1000読み取りユニット
月額852.58ドルクラスター化されたc4.4xlarge•512GBEBS• $1329.24/月

•公平を期すために、価格は米国東部地域のオンデマンド価格設定を使用して計算されます
••AWSEC2インスタンスは、他のNoSQLサービスをホストするために選択されています
•••EBSは、AWSが提供する永続ストレージサービスです

表からわかるように、DynamoDBは、箱から出してすぐにサービスを提供し、通常、独自のKey-Valueストレージを構築するよりも低価格で提供します。 これは、MongoDB / Cassandraクラスターの最大容量に達しない限り、使用しないものに対してより多くの費用を支払うためです。

Amazonは、完全に管理された方法でサービスを提供しています。 これは、DynamoDBのセットアップ、スケーリング、またはモニターの方法を心配する必要がないことを意味します。 それらはすべてAWSによって行われます。 実際、DynamoDBアイテムの読み取りと書き込みは、操作されるデータのサイズに関係なく、常に一定の時間計算量で測定されます。 そのため、一部のアプリケーションは、DynamoDBに切り替えた後にキャッシュレイヤーを破棄することを選択しました。 確かに素晴らしい。

SQS、分散キューサービス

大量のデータを処理する場合、多くの場合、計算を多くのコンピューティングノードに分散します。 グローバルにビジネスを行う場合、地理的に広い範囲に分散しているノードから収集されたデータを処理するためのパイプラインが必要になることがよくあります。 このようなイベントの要件を満たすために、AWSはSQS、SimpleQueueServiceを導入しています。 多くの承認されたキューサービスと同様に、SQSは、異なる論理コンポーネント間で永続的な方法でメッセージ/ジョブを渡す方法を提供します。

その名前が示すように、SQSはAWSの最初に利用できる基本的なサービスです。 ただし、Amazonは着実にSQSを開発しており、必要に応じて、SQSは、多くのカスタマイズ可能なパラメーターを使用して、必要に応じて単純または強力にすることができます。 SQSの高度な機能のいくつかは次のとおりです。

  • 最大14日間メッセージを保持します。
  • 障害イベントでのメッセージ損失を回避するための可視性メカニズム。
  • メッセージごとの配信遅延。
  • 失敗したメッセージ(いわゆるデッドレター)を処理するためのリドライブポリシー。

キューサービスはそれほど複雑であってはなりません。 SQSを紹介するためだけにセクション全体を使用する価値があるのはなぜか疑問に思われるかもしれません。 おそらくあなたはすでに理由を推測しています。 他のAWSサービスと同様に、SQSはフルマネージドサービスです。つまり、次のことを意味します。

  • キューは非常にスケーラブルです。 通過するメッセージは数十、1秒あたり数百万になる可能性があるため、SQSはその場でスケーリングします。
  • キューは永続的で分散されています。つまり、重要なデータは期限切れにならない限り失われません。
  • キューソフトウェアを展開するためにサーバーをセットアップする必要はありません。 もちろん、サービスの複雑な監視を設定する必要もありません。

S3、ファイルストレージ、ただしファイルストレージだけではありません

S3はSimpleStorageServiceの略で、エンドユーザー向けのサービスとしてのDropboxに似ていますが、これはアプリケーション向けです。 定義上、S3はシンプルなWebインターフェイスを備えたオブジェクトベースのストレージです。

S3はユーザーにとってシンプルですが、多くの高度な機能も備えています。 I S3は、特に他のAWSサービスを使用するアプリケーションの業界標準になりました。 これは主に、S3の統合が非常に簡単であるため、ほとんどのAWSサービスで人気のある外部ストレージの宛先になっているためです。 また、DynamoDB、SQSなどの多くのサービスは、内部でS3を多用しています。

S3を理解すると、他のAWSマネージドサービスを使用するメリットが増幅されます。 これは、ほとんどのサービスがバックアップをS3に保存するためです。 また、S3は、DynamoDB、RDS、Redshiftなどのサービスの一般的なエクスポート/インポート先です。

最後に、S3は他のAWSサービスと同様です。 完全に管理されているため、サーバーやフェイルオーバーのメカニズムを設定しなくても、サービスの使用を開始できます。 経済的には、S3はサービスを利用する際の有料でもあるので、いつでも多くの費用をかけずに試すことができます。

より高度なサービスとSDK

他にも注目に値するAWSサービスがたくさんあります。 スペースが限られているため、ここにいくつかの興味深いものをリストしています。

  • Redshift:数のデータを非常に高速に処理するために使用できる列ベースのデータベース。 大量のデータのETLを担当している場合は、試してみる必要があります。
  • データパイプライン:I AWSサービス間でデータをすばやく転送できるようにし、さらに小さなシャードでデータを定期的に処理できるようにします。
  • ElastiCache:マネージドMemcacheサーバー、シンプルですが、完璧に機能します。
  • ラムダ:次世代のクラウドコンピューティング。 Lambdaは、アップロードされたコードをイベント駆動型で実行し、分散アプリケーションを設計するための新しい扉を開きます。
  • Route53:他の業界標準のDNSソリューションに加えて、加重応答、ジオロケーションベースの応答をサポートする強力なDNSソリューション。
  • SNS:加入者/発行者のパターンで設計された使いやすい通知サービス。
  • もっとたくさん。

アプリケーションに新しいコンポーネントを導入するときはいつでも、AWSをチェックするのは良い習慣だと思います。 ほとんどの場合、AWSはSaaSの代替手段を提供できるので、すばらしい驚きを与えるでしょう。

さらに、RESTfulインターフェースへのアクセスを容易にするために、Amazonはほとんどすべての一般的なプログラミング言語でSDKを提供しています。 お気に入りのSDKを見つけるのに問題はないはずです。

概要

この記事では、AWSで最も広く使用されているサービスのいくつかについて説明しました。 確かに、AWSがあなたのビジネスを支援するいくつかの分野があります。 たとえば、MySQLデータベースをRDSに移行するなど、既存のサービスコンポーネントを同等のAWSに移行することを選択できます。 私のソフトウェアのこのコンポーネントにAWSサービスがあるかどうかを自問するかもしれません。 したがって、今すぐAWSアカウントを取得して、生産性を数分で向上させましょう。


Toptal Engineeringブログでさらに読む:

  • クラウドでのクラウド向けの開発:AWSでのDockerを使用したビッグデータ開発
  • 宿題をする:AWS認定ソリューションアーキテクト試験の7つのヒント
  • AWSSSMを使用したSSHロギングとセッション管理
  • TypeScriptとJestサポートの操作:AWSSAMチュートリアル