apeescape2.com
  • メイン
  • 収益性と効率性
  • ヒントとツール
  • 仕事の未来
  • Kpiと分析
バックエンド

クラウドでのクラウド開発:AWSでのDockerを使用したビッグデータ開発

なぜあなたはそれを必要とするのでしょうか?

私は開発者であり、Intellij IDEAやEclipseなどの統合開発環境(IDE:統合開発環境)で毎日働いています。これらのIDEはデスクトップアプリケーションです。 Googleドキュメントの登場以来、ワードプロセッサやスプレッドシートアプリケーションに相当するオンラインを使用して、デスクトップバージョンのWordまたはExcelからクラウドに作業を移行する人が増えています。

作業を保存するためにクラウドを使用する明らかな理由があります。今日、従来のデスクトップビジネスアプリケーションと比較して、一部のWebアプリケーションには機能の面で不利な点がありません。コンテンツはWebブラウザーがあればどこでも利用でき、最近ではほとんどどこでも利用できます。コラボレーションと共有は簡単で、ファイルが失われる可能性は低くなります。

残念ながら、クラウドのこれらの利点は、ソフトウェア開発の世界ではビジネスアプリケーションの場合ほど一般的ではありません。オンラインIDEを提供する試みはいくつかありますが、それらは従来のIDEに近づいていません。



それは逆説的です。私たちはまだ毎日のスケジュールを立てるためにデスクに縛られていますが、ソフトウェアは複数のサーバーで生成されています。開発者は、自分のコンピューターに保持できなくなったものを扱う必要があります。もちろん、ラップトップはもはや処理能力を向上させません。タブレットなどの新しいガジェットのメモリがさらに少ないことは言うまでもなく、ラップトップに16GBを超えるRAMを搭載することはまれで高価です。

ただし、ソフトウェア開発のために従来のデスクトップアプリケーションを置き換えることがまだ不可能な場合でも、可能です。 開発デスクトップ全体をクラウドに移動します 。それを発見した日、ラップトップにすべてのソフトウェアをインストールする必要はなくなり、Webバージョンの端末とVNCが利用可能になったことに気づき、すべてをクラウドに移行しました。最終的に、私はその環境を自動的に作成するための構築キットを開発しました。

クラウド開発者

クラウドは開発者にとってどのような意味がありますか?もちろん、それを発展させてください! つぶやき

この記事では、クラウドベースの開発環境を構築するための一連のスクリプトを紹介します。 はしご ビッグデータアプリケーション、Amazon AWSでのDockerによる実行、IntelliJ IDE、Spark、Hadoop、Zeppelinをサービスとして使用したWebアクセス可能なデスクトップの圧縮、およびWebベースのSSH、SBT、Ammoniteなどのコマンドラインツール。キットはで無料で入手できます GitHub 、インスタンスの構築に使用する手順についても説明します。環境を構築し、特定のニーズに合わせてカスタマイズできます。準備が整うまでに10分以上かかることはありません。

「BigDataDevKit」には何が含まれていますか?

キットを開発する上での私の主な目標は、開発環境を、使用するすべてのサービスとサーバーで簡単にアクティブ化し、不要になったときに破棄できるものにすることでした。これは、特にさまざまなプロジェクトで作業している場合に重要です。

私の理想的なクラウドベースの環境は次のようになります。

  • すべての一般的な開発ツール、特にグラフィカルIDEを含めます。
  • 必要なすべてのサーバーとサービスを手元に用意します。
  • ゼロからすばやく簡単に作成し、拡張してサービスを追加します。
  • Webブラウザのみを使用して完全にアクセスできるようにします。
  • 必要に応じて、専用クライアント(VNCクライアントおよびSSHクライアント)でのアクセスを許可します。

最新のクラウドソフトウェアとインフラストラクチャ、最新の検索エンジンのパワー、さまざまなブロードバンドの可用性、そして貴重なDockerを活用することで、Scalaと ビッグデータ開発 それは私の開発用ラップトップに取って代わりました。

現在、私はMacBook Pro、Surface Tablet、またはiPad(キーボード付き)からでもいつでも作業できますが、後者のオプションは理想的ではないことを認めます。これらのデバイスはすべて基本的にクライアントです。デスクトップとすべてのサービスはクラウドにあります。

DockerとAmazonAWS!

私の現在の環境は、次のオンラインサービスを使用して構築されています。

  • サーバー用のアマゾンウェブサービス。
  • コードを保存するGitHub。
  • ファイルを保存するためのDropbox。

私はまた、次のようないくつかの無料サービスを使用しています DuckDns IPアドレスと 暗号化しましょう 無料のSSL証明書を取得します。

現在、この環境では次のことがあります。

  • Intellijアイデアを使用したグラフィックデスクトップ。Webブラウザからアクセスできます。
  • SBTやAmmoniteなど、Web経由でアクセスできるコマンドラインツール。
  • ファイルを保存し、MapReduceジョブを実行するためのHadoop。
  • スケジュールされたジョブ用のSparkJobサーバー。
  • Webベースのノートブック用のZeppelin。

しかし、何よりも重要なのは、WebアクセスがWebベースのVNCとSSHの両方でHTTPSで暗号化されていることです。データの損失を防ぐために、さまざまな命の恩人がいます。これは、コンテンツを「所有」していない場合はもちろん重要です。物理ハードドライブ。コンピューター上のすべての作業のコピーを自動的に取得することは非常に高速であることに注意してください。誰かがあなたのパスワードを盗んだためにすべてを失った場合でも、すべてが正しく設定されている限り、とにかくコンピュータにコピーがあります。

AWSとDockerでWebベースの開発環境を使用する

それでは、環境がどのように機能するかを説明しましょう。午前中に仕事を始めるとき、最初に行うことは、Amazon Web Servicesコンソールに移動することです。ここで、すべてのインスタンスが表示されます。通常、私はさまざまなプロジェクト用に多くの開発インスタンスを構成しており、使用されていないものはオフにして、請求額を節約しています。結局のところ、私は一度に1つのプロジェクトにしか取り組むことができません。 (時々私は2人で働きます)。

画面1

だから、私は欲しいインスタンスを選択し、それを開始し、しばらく待つか、コーヒーを飲みに行きます。コンピュータの電源を入れても大した違いはありません。通常、インスタンスが機能し始めるまでに数秒かかります。緑色のアイコンが表示されたら、検索エンジンを開いて、よく知られているURLに移動します:https://msciab.duckdns.org/vnc.html。これが私のURLであることを覚えておいてください。キットを作成すると、独自のURLが作成されます。

AWSは起動時に各マシンに新しいIPを割り当てるため、ダイナミックDNSサービスを設定しました。これにより、サーバーを停止して再起動した場合でも、常に同じURLを使用してサーバーにアクセスできます。検索エンジンでマークすることもできます。さらに、パスワードやその他の機密データを処理する必要がある場合に備えて、有効なキーでHTTPSを使用して、作業を詮索好きな目から可能な限り保護しています。

画面2

アップロードされると、システムはNoVNC、VNCWebクライアントであなたを歓迎します。ログインするだけでデスクトップが表示されます。私はデスクトップをほとんど使用せず、意図的に、アプリケーションを含むメニューのみを使用し、唯一の贅沢は仮想デスクトップです(開発時に多くのウィンドウを開くため)。メールについては、私はまだ他のアプリケーションに依存しています。今日では、ほとんどが検索エンジンの他のタブです。

仮想マシンには、ビッグデータアプリケーションを開発するために必要なものがあります。何よりもまず、IDEがあります。ビルド時にはIntelliJエディションを使用します アイデアコミュニティ 。また、SBTビルドツールとScalaRELPのAmonniteがあります。

画面3

ただし、この環境の主な機能は、同じ仮想マシン上にコンテナーとして実装されるサービスです。特に、次のものがあります。* Zeppelin、現時点でScalaコードを使用し、データ分析を行うWebノートブック(http://zeppelin:8080)* Spark Job Server、実行および実装 スパークジョブ Restインターフェース付き(http://sparkjobserver:8080)。 * HDFSからデータを保存および取得するためのHadoopインスタンス(http://hadoop:50070)。

これらのURLは固定されていますが、仮想環境内でアクセスできることに注意してください。次のスクリーンショットで彼らのウェブインターフェースを見ることができます。

画面4

ページオブジェクトモデルseleniumjava

各サービスは個別のDockerコンテナで実行されます。あまり技術的に話すことなく、これを仮想マシン内の3つの異なるサーバーと考えてください。 Dockerを使用する魅力は、サービスを追加したり、2つまたは3つの仮想マシンを追加したりできることです。 Amazonコンテナを使用することで、環境を簡単に調整できます。

大事なことを言い忘れましたが、あなたは利用可能なウェブ端末を持っています。 HTTPSを使用してURLを入力するだけで、Webページへの端末が表示されます。

画面5

上のスクリーンショットでは、3つのサーバーとデスクトップであるコンテナーのリストを確認できます。このコマンドライン シェル コンテナが配置されている仮想マシンにアクセスできるため、コンテナを管理できます。サーバーが「マトリックス内」(実質的にコンテナ内)にあるかのようですが、これは シェル サーバーとデスクトップを管理するための「マトリックス」の外への脱出を提供します。ここから、コンテナーを再起動し、ファイルシステムを入力し、Dockerで許可されているその他の操作を実行できます。この時点ではDockerについて詳しく説明するつもりはありませんが、Dockerに関するドキュメントはたくさんあります。 DockerWebサイト 。

インスタンスをインストールする方法

これまでのところこれが好きで、インスタンスが必要ですか?簡単で安いです。アマゾンウェブサービスの仮想マシンとストレージのコストでそれを手に入れることができます。現在の構成のキットでは、すべてのサービスを実行できるように4GBのRAMが必要です。注意して仮想マシンを必要なときにだけ使用し、たとえば月に160時間作業する場合、現在の価格の仮想マシンのコストは160 x 0.052ドル、つまり月に8ドルになります。ストレージのコストを追加する必要があります。私は約30GBを使用していますが、すべてを10ドル未満でまとめることができます。

ただし、2 GBを超えるコードをバックアップする場合は、(Pro)Dropboxアカウント(最終的に)のコストは含まれません。これは月に15ドル多くかかりますが、データに重要なセキュリティを提供します。有料のGitHubでも、無料のプライベートリポジトリを提供するBitbucketなどの別のサービスでも、プライベートリポジトリが必要になります。

必要なときにだけ使うと、専用サーバーよりも安いことを強調したいと思います。はい、ここに記載されているものはすべて物理サーバーにインストールできますが、ビッグデータを扱うため、多くのAWSサービスが必要なので、すべてを同じ場所に配置するのが理にかなっていると思います。

インストール全体を行う方法を見てみましょう。

事前要件

仮想マシンの構築を開始する前に、次の4つのサービスに登録する必要があります。

  • アマゾンウェブサービス 。
  • DuckDNS 。
  • ドロップボックス 。
  • 暗号化しましょう 。

クレジットカードを使用する必要があるのは、Amazon WebServicesだけです。 DuckDnsは完全に無料ですが、DropBoxは2GBの無料ストレージを提供します。これは多くのタスクに十分です。 Let’s Encryptも無料で、証明書に署名するためのイメージを作成するときに内部で使用されます。これとは別に、GitHubやBitbucketなどのリポジトリホスティングサービスもお勧めしますが、コードを保存する場合は、インストールする必要はありません。

開始するには、に移動します GitHubBigDataDevKitリポジトリ 。

画面6

ページを下にスクロールして、画像に表示されているスクリプトをお好みのテキストエディタにコピーします。

画面7

このスクリプトは、画像をブーストするために必要です。あなたはそれを変更し、パラメータにいくつかの値を提供する必要があります。引用内のテキストを慎重に変更してください。引用符自体、円記号、ドル記号などの文字は、入力しない限りパスワードに使用できないことに注意してください。 予定 。この問題は、パスワードにのみ関係します。安全を確保したい場合は、引用符、ドル記号、円記号は避けてください。

パラメータPASSWORDこれは、Webインターフェイスを介して仮想マシンに入力するために選択するパスワードです。パラメータEMAILこれはあなたの電子メールであり、SSL証明書を登録するときに使用されます。 Let’sEncryptからSSL証明書を取得するための唯一の要件であるメールアドレスを提供するように求められます。

TOKENの値を取得するにはおよびHOST、DuckDNSサイトにアクセスしてログインします。あなたは選択する必要があります ホスト名 新着。

画面8

画像を見て、コピーする場所を確認してください トークン どこに追加する必要があります ホスト名 。 「ドメインの追加」ボタンをクリックして予約する必要があります ホスト名 。

インスタンスを構成します

すべてのパラメーターがあり、スクリプトを編集したとすると、インスタンスを起動する準備が整います。アマゾンウェブサービスの管理インターフェースに入り、EC2インスタンスパネルに移動して「インスタンスの起動」をクリックします。

画面9

最初の画面で、画像を選択します。スクリプトはAmazonのLinuxを中心に構築されており、他に利用できるオプションはありません。 AmazonからLinuxを選択します。これは、クイックスタートリストの最初のオプションです。

画面10

2番目の画面で、インスタンスタイプを選択します。実行中のソフトウェアのサイズを考えると、複数のサービスがあり、少なくとも4 GBのメモリが必要なので、インスタンスを選択することをお勧めします t2.medium 。あなたはそれを使用して最小化することができます t2.small 一部のサービスをオフにした場合、または マイクロ デスクトップが必要な場合。

画面11

3番目の画面で、[詳細]をクリックし、前の手順で構成したスクリプトを貼り付けます。また、偶発的な終了が発生した場合にすべての作業が失われないように、期間に対する保護を設定することをお勧めします。

画面12

次のステップは、ストレージを構成することです。インスタンスの標準は8GBですが、これは、作成するすべてのイメージを含めるのに十分ではありません。 20GBに増やすことをお勧めします。同様に、必須ではありませんが、少なくとも10GBの別のブロックデバイスをお勧めします。スクリプトは、2番目のブロックデバイスをデータファイルとしてマウントします。その内容のイメージを取り、インスタンスを終了してから、その内容のイメージを使用して再作成し、すべての作業を回復することができます。さらに、インスタンスを終了してもカスタムブロックデバイスが失われることはないため、偶発的なデータ損失に対して二重の保護があります。セキュリティをさらに強化するために、Dropboxを使用してデータを自動的にバックアップできます。

画面13

5番目のステップは、インスタンスに名前を付けることです。必要なものを選択してください。 6番目のステップは、アクセス制御バーを構成する方法を提供します。デフォルトでは、SSHのみが使用可能ですが、HTTPSも必要です。 HTTPSを世界に公開することもできますが、他のユーザーがデスクトップに侵入するのを防ぐために、IPのみを対象とする方がよいでしょう。 シェル 、パスワードで保護されていますが。

この最後の構成が完了したら、インスタンスを起動できます。起動スクリプトが実行されてから最初に初期化に数分かかる場合があります。また、Let’s Encryptを使用してHTTPS証明書を生成するなど、いくつかの長いテストも実行されます。

画面14

最終的に、管理コンソールがコミットで「実行中」になり、「初期化」されなくなった場合は、準備ができています。

すべてのパラメーターが正しいと仮定すると、https://YOURHOST.duckdns.orgに移動できます。

置き換えますYOURHOST選択したホスト名を使用しますが、HTTPではなくHTTPSサイトであることを忘れないでください。サーバーへの接続は暗号化されているため、https//と記述する必要があります。 URLで。このサイトでは、Let’sEncryptの有効な証明書も提示されます。証明書の取得に問題がある場合、初期化スクリプトは自己署名証明書を生成します。暗号化された接続で接続することはできますが、検索エンジンは、それが不明なサイトであり、安全でない接続であることを警告します。それは起こるべきではありませんが、あなたは決して知りません。

画面15

すべてが機能すると仮定すると、ButterflyWebターミナルに入ることができます。ユーザー名を使用してログインできます app インストール時にスクリプトで使用したパスワード。

ログインすると、Dockerや、Nginx Frontend、Git、Butterfly WebTerminalなどの他の景品も含まれるパワード仮想マシンが手に入ります。これで、開発環境用のDockerイメージをビルドしてインストールを完了することができます。

次に、次のコマンドを入力します。

git clone https://github.com/sciabarra/BigDataDevKit cd BigDataDevKit sh build.sh

最後のコマンドでは、デスクトップに入るためのパスワードの入力を求められます。これが完了すると、イメージの構築が開始されます。工事には約10分かかりますが、すべてが画面に表示されているのでどうなるかわかります。

構築が完了したら、次のコマンドを使用してDropboxをインストールすることもできます。

/app/.dropbox-dist/dropboxd

Dropboxを有効にするためにクリックする必要のあるリンクが表示されます。 Dropboxに入る必要があり、それで準備が整います。 Dropboxフォルダーに入れたものはすべて、すべてのDropboxインスタンスと自動的に同期されます。

準備ができたら、仮想マシンを再起動して、URL https://YOURHOST.dyndns.org/vnc.htmlで環境に入ることができます。

作業を続行するときに、マシンを停止して再起動できます。アクセスURLは同じままです。このように、あなたはそれを使用する時間だけに加えて、使用済みストレージのための毎月の追加料金を支払うことになります。

データを保存する

以下の説明では、DockerとAmazonがどのように機能するかについてある程度の知識が必要です。詳細を理解したくない場合は、次のルールに注意してください。仮想マシンには、使用可能なフォルダーがあります/app/Dropbox、何を入れても/app/Dropboxそれは保存され、他のすべては使い捨てで消えることができます。セキュリティを強化するには、貴重なコードをシステム管理バージョンに保存してください。

これを理解したい場合は、読み続けてください。仮想マシンの作成で私の指示に従った場合、仮想マシンは終了から保護されているため、誤って破壊することはありません。故意に終了すると、メインボリュームが破壊されます。行ったすべての変更を含め、すべてのDockerイメージが失われます。

ただし、/app/Dropboxコンテナ用のDockerボリュームとしてマウントされ、Dockerイメージの一部ではありません。仮想マシンでは、フォルダー/app作成したAmazonボリュームにマウントされます。これも、仮想マシンを特別に終了しても破棄されていません。ボリュームを削除するには、特にボリュームを削除する必要があります。

論理的なDockerエンティティであるDockerボリュームと、やや物理的なエンティティであるAmazonボリュームを混同しないでください。何が起こるかというと、Dockerボリューム/app/Dropbox Amazonボリューム内にあります/app。

仮想マシンを終了してもAmazonボリュームは自動的に破棄されないため、ボリュームを明示的に破棄するまで、内部にあるものはすべて保持されます。さらに、Dockerボリュームに入れたものはすべてコンテナーの外部に保存されるため、コンテナーが破棄されても破棄されません。 Dropboxを有効にした場合、推奨されているように、Dropboxをコンピューターと同期すると、すべてのコンテンツがDropboxサーバーとハードドライブにコピーされます。また、ソースコードをバージョン管理システムに保存することをお勧めします。

したがって、Dropboxフォルダの下のバージョン管理システムに物を置いた場合、データを失うには、これがすべて発生する必要があります。

  • 具体的には、仮想マシンを削除します。
  • 具体的には、仮想マシンから大量のデータを削除します。
  • 具体的には、履歴を含むDropboxデータを削除します。
  • 具体的には、バージョン管理システムから削除します。

あなたのデータが十分に保護されていることを願っています。

プロジェクトごとに仮想マシンを保持し、完了したら、未使用の仮想マシンをオフのままにします。もちろん、すべてのコードをGitHubに保存し、Dropboxに保存しています。また、プロジェクトでの作業をやめると、仮想マシンを完全に削除する前に、Amazon WebServicesブロックの写真を撮ります。このように、メンテナンスなどでプロジェクトに戻るときは、ブロック写真を使用して新しい仮想マシンを起動するだけです。私のすべてのデータはあなたのサイトに返され、私は仕事を続けることができます。

アクセスを最適化する

まず、プロキシなしでインターネットにアクセスできる場合は、ネイティブSSHおよびVNCクライアントを使用できます。仮想マシンにファイルをコピーしたり、仮想マシンからファイルをコピーしたりする必要がある場合は、SSHへの直接アクセスが重要です。ただし、ファイル共有の場合は、Dropboxをより簡単な代替手段として検討する必要があります。

VNC Webアクセスは非常に貴重ですが、ネイティブクライアントよりも遅くなる場合があります。ポート5900を使用して仮想マシン上のVNCサーバーにアクセスできます。デフォルトで閉じるため、特に開く必要があります。インターネットには、参加するサービスを探すためにインターネットをスキャンする「ボット」がたくさんあり、VNCはこれらのボットのターゲットになることが多いため、IPアドレスに対してのみ開くことをお勧めします。

結論

この記事では、最新のクラウドテクノロジーを最大限に活用して、効果的な開発環境を実装する方法について説明します。クラウドマシンは、仕事用のコンピューターやラップトップの完全な代替品ではないかもしれませんが、IDEへのアクセスが重要な場合は開発作業を行うのに十分です。私の経験では、現在のインターネット接続では、動作するのに十分な速度です。

クラウド内にあるため、サーバーへのアクセスと操作は、ローカルにある場合よりも高速です。メモリを増やしたり減らしたり、別の環境を開始したり、イメージを作成したりすることができます。指先にデカンターがあり、ビッグデータプロジェクトで作業するときは、堅牢なサービスと多くのスペースが必要です。それがクラウドが提供するものです。

BEM方法論の紹介

技術

BEM方法論の紹介
AWSでのTerraformによるダウンタイムゼロのJenkins継続的デプロイ

AWSでのTerraformによるダウンタイムゼロのJenkins継続的デプロイ

技術

人気の投稿
アンサンブル手法:改善された機械学習結果を生成するためのエレガントな手法
アンサンブル手法:改善された機械学習結果を生成するためのエレガントな手法
契約交渉-注意を払うべき欺瞞的な条項
契約交渉-注意を払うべき欺瞞的な条項
Python用Celeryでのバックグラウンドジョブワークフローの調整
Python用Celeryでのバックグラウンドジョブワークフローの調整
完璧なプライベート宿泊施設:AirbnbとExpedia
完璧なプライベート宿泊施設:AirbnbとExpedia
オープンソースライセンスの開発者ガイド
オープンソースライセンスの開発者ガイド
 
TVプラットフォームのユーザーインターフェイスを再考する
TVプラットフォームのユーザーインターフェイスを再考する
より多くの起業家がスタートアップよりもサーチファンドを構築することを選択している理由
より多くの起業家がスタートアップよりもサーチファンドを構築することを選択している理由
コンサルタントツールボックス:あらゆるものを解決するためのフレームワーク
コンサルタントツールボックス:あらゆるものを解決するためのフレームワーク
彼らにインセンティブを与える–ロイヤルティプログラムの設計フレームワークを活用する方法
彼らにインセンティブを与える–ロイヤルティプログラムの設計フレームワークを活用する方法
H-1Bビザ:ホンジュラスからシリコンバレーへのiOS開発者の旅
H-1Bビザ:ホンジュラスからシリコンバレーへのiOS開発者の旅
人気の投稿
  • デザインの原理と要素
  • Javaメモリリークインタビューの質問
  • C ++に含める
  • anglejsトークン認証WebAPI
  • アマゾンウェブサービス認定ソリューションアーキテクト
カテゴリー
製品ライフサイクル 革新 Webフロントエンド データサイエンスとデータベース 計画と予測 財務プロセス モバイル 製品の担当者とチーム デザイナーライフ 収益性と効率性

© 2021 | 全著作権所有

apeescape2.com