Skip to content
Permalink
Fetching contributors…
Cannot retrieve contributors at this time
99 lines (74 sloc) 5.21 KB

AWSでのアプリケーション・環境構築トライアル

テーマ

AWS上で、アプリケーションを動作させるための、環境を構築することができるようになる。

狙い

単独でAWS上に、アプリケーション(サービス)を構築、公開するまでの一連のステップを実践し、システムの全体像の把握とアプリケーション開発・実装以外の要素の習得を行う。

このテーマで得られることを期待しているもの。

  • AWS上でのネットワーク設定含む環境を構築
  • メトリクスの収集と可視化
  • アプリケーションログの収集と可視化
  • CI/CD

また、純粋なアプリケーション開発スキルとしては、以下のものが得られることを期待する(オプション、時間の許す範囲で)。

  • Spring Boot
  • React / Redux

実践内容(概要)

作成途中ではあるが、QAサイトとして実装されている"kanade"を使用する。

フロントエンド、バックエンドに分かれて構成されているkanadeを、ソースコードからAWS上で動作させるまで各自実践する。 環境は、各自で構築する

環境のゴールイメージ

こちらの「教育内容」を参照。

アウトプット

実際に構築した環境以外に、以下のアウトプットを作成する。

  • 日報(毎日)
    • なにを理解することができたか?
    • なにかわからないことはなかったか?
    • "自分が"プロジェクト内、開発内で、学んだ内容を採用する立場、メンバーに利用させる立場になったとしたら、どんなことが気になったり、もっと知りたいと思うだろうか?
  • 振り返り(環境構築フェーズの区切り、育成期間の最後)
    • 日報と同じ内容で、育成内容を振り返る
    • 日報とは期間が異なり、前回の振り返りからの間に学んだ内容、育成期間全体を通して学んだ内容を振り返る

大きく時間は取らず、箇条書きで思った内容をまとめる。

単純に環境構築を行うだけではなく、自分の言葉で理解した内容などを表現することで、自身の理解を深めてもらうことが目的。

実践内容(詳細)

  • AWSの学習(AWS Cloud Practitioner Essentials
  • AWS上の踏み台へのログイン手順
  • kanadeをローカル環境で動かす
    • 動かし方は、README.mdを参照
    • ローカルに、PostgreSQLのインストールと起動が必要です
      • 接続情報は、 kanade-back/src/main/resources/application.properties を参照しましょう
      • データの投入方法も書いてあるので、忘れずに
      • Dockerを使っても可
    • 確認URLは、 http://localhost:9002/questions
    • ローカルで動かす時には、AWS SDKの例外が出るがこの時点では気にしない
  • kanadeをAWS上で動かす
    • 各自、VPCを作成してネットワーク設定、EC2インスタンスの起動、RDSの起動
      • VPC間は、セキュリティグループを決め、通信可能プロトコルを絞る(SSHのみ)
        • VPC間のピアリング、ルーティングが必要
      • Webのトラフィックは、社内からのインバウンドのみ許可
      • EC2インスタンスの起動、SSH接続確認
        • サブネットを作成して、EC2作成
        • SSH接続は、公開鍵認証のみとする
      • フロントに近い領域(EC2より前)と、フロントからの通信プロトコルを直接受けない領域(RDS)などはネットワークを分離
    • kanade-back
      • EC2仮想マシンのセットアップと、kanade-backのデプロイ
        • OpenJDKをインストール
          • EC2から、インターネット経由でパッケージをインストールするにはインターネットゲートウェイが必要
        • java -jarで単純に起動(ビルドは、ローカルビルドでよい)
        • curl localhost:8080/questions で稼働確認
      • 社内からのアクセスを可能にする
        • Route 53とELBを導入し、自席からcurlでアクセスできるようにする
    • kanade-front
      • kanade-frontをproduction用にビルドし、S3に配置
      • AWS WAFとCloudFront
        • 社内からのアクセス制限の遵守は、WAFに担当してもらう
  • 運用系
    • モニタリング
      • EC2インスタンスを追加し、Prometheus、Grafanaを使って、アプリケーションのメトリクスを可視化
      • AWS CloudWatchを使って、可視化とアラート
    • ロギング
      • EC2インスタンスを追加し、ElasticsearchとKibanaを導入
      • kanade-backが動作しているAPIサーバーに対して、Fluentdを導入して、ログをElasticsearchに送信
      • Kibanaでログの集約表示と可視化
  • CI/CD
    • ソースコードリポジトリからの、自動デプロイを実行可能にする
      • kanade-backをサービス化(systemd利用)
      • AWS CodeBuild / CodeDeploy / CodePipelineを使用して、自動ビルド、自動デプロイができるように設定
You can’t perform that action at this time.