Udacityの雲デビルズエンジニアナノ程度のための私のCapstoneプロジェクト



いろいろなデプス関連のコースとより小さなプロジェクトの3ヵ月後に、私は私のナノ程度の終わりに達しました、そして、それは私のCapstoneプロジェクトを構築する時間でした.
私のプロジェクトは2つの部分に分割することができます:アプリケーション自体、それを展開し、それをホストするインフラストラクチャ.

アプリケーション:ランダムな歌


ランダムな曲は、単純なWebアプリケーションのtypescript、ノードを使用して構築されます.JSエクスプレス.これは、musixmatch APIを使用して、ランダムな曲を送ることができるWebサービスとして機能します.アプリをテストするには、単に/ランダムルートに移動し、JSONでランダムな曲のオブジェクトを受信します.
ルートに戻る
Welcome to my capstone project! To get a random song, go to the '/random' route.
ランダムルートはランダムな曲を返します.
{
  track_id: 160557034,
  track_name: 'Get Up and Fight',
  track_name_translation_list: [],
  track_rating: 26,
  commontrack_id: 86880624,
  instrumental: 0,
  explicit: 0,
  has_lyrics: 1,
  has_subtitles: 1,
  has_richsync: 1,
  num_favourite: 62,
  album_id: 30545841,
  album_name: 'Simulation Theory (Super Deluxe)',
  artist_id: 1248,
  artist_name: 'Muse',
  track_share_url: 'https://www.musixmatch.com/lyrics/Muse/Get-Up-and-Fight?utm_source=application&utm_campaign=api&utm_medium=Student+Developer%3A1409620630471',
  track_edit_url: 'https://www.musixmatch.com/lyrics/Muse/Get-Up-and-Fight/edit?utm_source=application&utm_campaign=api&utm_medium=Student+Developer%3A1409620630471',
  restricted: 0,
  updated_time: '2020-05-19T15:42:03Z',
  primary_genres: { music_genre_list: [[Object], [Object] ] }
}

インフラ


アプリケーションが構築された後、次のタスクはそれを展開していた.このプロジェクトではローリング展開に行くことにしました.私の目標は必要な設定ファイルと必要なビルドコマンドを書き出し、実際にアプリケーションを構築し、インフラストラクチャを展開するプロセスを自動化するパイプラインを作成することでした.この方法では、プロジェクトに新しいコードやインフラストラクチャを追加するたびに、まったく同じ方法で実行できます.私はJenkinsをホストするためにサーバーを必要としました.AWS EC 2インスタンスを準備して、Jenkinsをインストールした後に、私はJenkinsが走ることを望むタスクを定義するのを開始する時間でした.アプリケーションのコードにアクセスした後、Jenkinsが実行するために作成したタスクがあります.
  • ノードの依存関係をインストールする
    単にNPMのインストールを実行するトリックを行います.
  • アプリケーションをビルドする
    私のアプリケーションはtypescriptで書かれているので、NPM Runビルドを実行してJavaScriptディストリビューションフォルダを構築する必要がありました.
  • リントコード
    npm実行lintを実行すると、すべてがtslintの標準になっていることを確認します.
  • Dockerイメージをビルドします
    Jenkinsは私が作成したDockerfileに基づいてDockerコンテナを構築します.これは単純なノードイメージを基にして、アプリケーションコードをコンテナにコピーして起動します.
  • コンテナをDockerレジストリにアップロードします
    コンテナ化された後に、私のアプリケーションは、更なる有効性のためにDockerレジストリにアップロードされます.
  • Kubernetes設定ファイルを作成する
    ここでは、実際にクラスタにアプリケーションを配備するために次のステップで使用するKubernetes配置ファイルを作成する必要がありました.私は、AWS EKSを通してKubernetesを使いました.
  • アプリケーションを配備する
    私のKubernetes配備ファイルと私がレジストリにアップロードした私のDockerコンテナの助けを借りて、私は現在私のアプリケーションを私のAWS EKSクラスタに配備することができました.また、Kubectl - get Podを実行し、Kubectlは、すべてが予想通りに実行されていることを確認するためにサービスを取得します.
  • 最後に、アプリケーションはクラスタに展開し、ユーザーにアクセスできます.日間のランダム曲.
    残念ながら、アプリは現在EKSのために継続的に支払うために学生の格安サービスではないために展開されていません.しかし、私はランダムな曲のアプリケーションを撮影し、より恒久的に将来のプロジェクトでホストされるものにそれを回すことを計画している.インフラストラクチャーが進む限り、これらは将来のプロジェクトにおいても再構築できるものである — Dockerコンテナ、KubernetesクラスタとJenkinsパイプラインは、どんなソフトウェア関連のプロジェクトを構築するのを助けることができるツールです.
    あなたがコードを見たいと思うならば、あなたはGitHubでプロジェクトのレポを見てみることができます.