Upgrade to Pro — share decks privately, control downloads, hide ads and more …

EC2+DockerでのJavaアプリケーション運用

Avatar for ultimania ultimania
November 01, 2020

 EC2+DockerでのJavaアプリケーション運用

EC2+DockerでのJavaアプリケーション運用
2020/11/1 Takumi Fukaya

はじめに
この資料はEC2・Docker共に初心者の方向けに、EC2+Docker+TomcatによるJavaアプリケーション運用について説明した資料になります。
Javaでのアプリケーション開発方法については触れておりません。

自己紹介
名前:深谷 匠(ふかや たくみ)
技術大好き
所属:株式会社システム情報(SIC)
   技術監理本部》技術統括部
   技術主幹
経歴:・2013 - 2018 地方中小SIerにてSE業務
   ・2018 - 2020 SIC事業部門にてPM業務
   ・2020 -    SIC技術部門にてR&D
活動:・事業部案件でのPM業務
   ・社内DevOps推進Pでの企画・運営
   ・MCS社内研修環境の構築
趣味:・温泉巡り(2020年はコロナの影響でまだ3箇所)
   ・サッカー観戦(コンサドーレ札幌サポ)
   ・アニメ鑑賞(今期イチオシは魔法科・ダンまち・魔女の旅旅)

EC2+DockerでJavaアプリケーションをデプロイするまで
Step1 環境を理解する
EC2とは?
Dockerとは?
コンテナとは?
Tomcatとは?
PostgreSQLとは?
Step2 アプリを用意する
Javaアプリ開発について
ビルドについて
Warファイルについて
ちなみに
Step3 デプロイする
Warを用意する
Tomcatにアクセスする
Managerを使ってデプロイする
アプリにアクセスする

EC2+DockerでJavaアプリケーションをデプロイするまで
Step1 環境を理解する
EC2とは?
Dockerとは?
コンテナとは?
Tomcatとは?
PostgreSQLとは?
Step2 アプリを用意する
Javaアプリ開発について
ビルドについて
Warファイルについて
ちなみに
Step3 デプロイする
Warを用意する
Tomcatにアクセスする
Managerを使ってデプロイする
アプリにアクセスする

Step1
環境を理解する

今回のシステム構成
Aアプリ
Bアプリ
Cアプリ
Aアプリ
Bアプリ
Cアプリ

アプリかインフラの片方だけでシステムを開発することはできません
アプリとインフラがそろって初めてシステムとしての価値があります

EC2とは?
EC2とは「Amazon Elastic Compute Cloud」の略称
AWSで利用できるシステムのひとつ
AWS上に仮想サーバーを構築して自由に利用できる
これまでDCで物理的なサーバーを構築した後に仮想サーバを構築していたのが、Web上から数クリックで仮想サーバーを構築することができる
ユーザーの必要に応じてスペック(CPU/RAM/DISK)を変更できる

これまで・・・
DCへNW機器・サーバ機器の搬入・設置
専門エンジニアによる一からの構築・設定作業
システム管理者による定常運用・定期メンテナンス
機器の故障・保守切れによるシステム更改

EC2(AWS)を使うと
必要なのはブラウザだけ
子供からお年寄りまで誰もが数クリックで仮想サーバ構築
基盤の運用・保守は全部AWSがやってくれる
機器の故障・保守切れは気にせず使い続けられる

つまり...

EC2(AWS)は誰もが簡単に仮想サーバを構築・運用できるサービス

ちなみにサーバ(EC2)以外にも、色んなものがAWSを使えばブラウザ1つで構築できる

今回のシステム構成
Aアプリ
Bアプリ
Cアプリ
Aアプリ
Bアプリ
Cアプリ

Dockerとは?
Dockerとはコンテナ型の仮想環境を作成、配布、実行するためのプラットフォーム
仮想サーバでは、ホストマシン上でハイパーバイザを利用しゲストOSを動かしその上でミドルウェアなどを動かす
コンテナはホストマシンのカーネルを利用し、プロセスやユーザなどを隔離することで、あたかも別のマシンが動いているかのように動かすことができる
軽量で高速に起動、停止などが可能

コンテナとは?

つまり...

今までミドルウェア毎にOSを用意していたのが、コンテナを使えば1つのOSでたくさんのミドルウェアを制御することができる

ただし、たくさんコンテナを動かすにはそれだけ高いスペックが必要になる。

今回のシステム構成
Aアプリ
Bアプリ
Cアプリ
Aアプリ
Bアプリ
Cアプリ

Tomcatとは?
Java Servletを動かすときに必要なソフト(サーブレットコンテナ)のひとつ
「Java Servlet(サーブレット、Servlet)」とは「Webサーバ上で動くJavaプログラム」のこと
Java Servletは単独は動けず、動かすにはサーブレットコンテナが必要
今回はサーブレットコンテナにTomcatを使う

PostgreSQLとは?
「データベースマネジメントシステム(DBMS)」、もしくは「リレーショナルデータベースマネジメントシステム(RDBMS)」と呼ばれるもの。いわゆるデータベース。
Tomcat上で動くアプリケーションが使用するデータを保存しておく場所
他のRDBMSとしてOracle,MySQL,SQLServer等が挙げられる

EC2+DockerでJavaアプリケーションをデプロイするまで
Step1 環境を理解する
EC2とは?
Dockerとは?
コンテナとは?
Tomcatとは?
PostgreSQLとは?
Step2 アプリを用意する
Javaアプリ開発について
ビルドについて
Warファイルについて
データの作成について
Step3 デプロイする
Warを用意する
Tomcatにアクセスする
Managerを使ってデプロイする
アプリにアクセスする

Step2
アプリを用意する

用意しないといけないのは...
Aアプリ
Bアプリ
Cアプリ
Aアプリ
Bアプリ
Cアプリ
<--これと
<--これ

Step1の段階でアプリケーションが稼働するための基盤はできている。

あとは実際に動くアプリケーションとデータを作成する必要がある。

ではJavaアプリケーションはどうやって開発したらいい?

データはどうやって用意したらいい?

そこは研修で学んでください
ここでは割愛します

参考までに....私の場合
コーディング
 VSCode + 各種拡張機能(SSHFS等)
動作確認
 Docker + Gradle + Chrome

参考までに....私の場合
コミット & ビルド & UnitTest & デプロイ
 Gitlab + Gitlab CI/CD (全自動化)
画面試験
 Chrome + Selenium

EC2+DockerでJavaアプリケーションをデプロイするまで
Step1 環境を理解する
EC2とは?
Dockerとは?
コンテナとは?
Tomcatとは?
PostgreSQLとは?
Step2 アプリを用意する
Javaアプリ開発について
ビルドについて
Warファイルについて
データの作成について
Step3 デプロイする
Warファイルとは?
どうやってつくる?
Tomcatにアクセスする

Step3
デプロイする

サーブレットコンテナ(Tomcat)に作成したアプリ(warファイル)をデプロイします。

warファイルとは?
WARファイルは、JavaベースのWebアプリケーションやコンポーネントを圧縮した形式で、Webサーバ上で動作するものです
WARファイルに含まれるものは以下のとおり
データベース接続や各サービスを行うサーバーサイドのクラス
HTMLやイメージファイル、音声ファイル
クライアントクラス
これらはApacheのTomcatのようなWebアプリケーションを導入したWebサーバ上で動作させることができる

warファイルはどうやって作る?
開発環境によって異なるので、こちらも研修の中で学んでください。
Eclipse等の統合開発エディタを使ってる場合はエディタの機能でwarファイルが作成できます
Gradle buildで作成する場合はbuild.gradleの中に「apply plugin: ‘war’」ブロックを定義してください。

研修用環境のTomcatにアクセスする
http://dockeronec2-public-alb-816863126.us-east-2.elb.amazonaws.com/manager/html
画面中央下部「配備」-->「WARファイルの配備」にある「ファイルを選択」をクリック
ファイル選択ダイアログ画面から作成したwarファイルを選択する
「配備」をクリック(warファイルアップロードに多少時間がかかります)
正常にデプロイできれば画面上部の「アプリケーション」一覧画面に対象のアプリが表示されるので、「パス」列に表示されているパスをクリックしてアプリにアクセス

以上

不明点はこちらまで
@bsfclout
[email protected]
https://github.com/ultimania

Avatar for ultimania

ultimania

November 01, 2020
Tweet

Other Decks in Technology

Transcript

  1. 自己紹介 名前:深谷 匠(ふかや たくみ) 技術大好き 所属:株式会社システム情報(SIC)    技術監理本部》技術統括部    技術主幹 経歴:・2013 - 2018 地方中小SIerにてSE業務    ・2018

    - 2020 SIC事業部門にてPM業務    ・2020 -    SIC技術部門にてR&D 活動:・事業部案件でのPM業務    ・社内DevOps推進Pでの企画・運営    ・MCS社内研修環境の構築 趣味:・温泉巡り(2020年はコロナの影響でまだ3箇所)    ・サッカー観戦(コンサドーレ札幌サポ)    ・アニメ鑑賞(今期イチオシは魔法科・ダンまち・魔女の旅旅)
  2. EC2+DockerでJavaアプリケーションをデプロイするまで Step1 環境を理解する 1. EC2とは? 2. Dockerとは? 3. コンテナとは? 4. Tomcatとは?

    5. PostgreSQLとは? Step2 アプリを用意する 1. Javaアプリ開発について 2. ビルドについて 3. Warファイルについて 4. ちなみに Step3 デプロイする 1. Warを用意する 2. Tomcatにアクセスする 3. Managerを使ってデプロイ する 4. アプリにアクセスする
  3. EC2+DockerでJavaアプリケーションをデプロイするまで Step1 環境を理解する 1. EC2とは? 2. Dockerとは? 3. コンテナとは? 4. Tomcatとは?

    5. PostgreSQLとは? Step2 アプリを用意する 1. Javaアプリ開発について 2. ビルドについて 3. Warファイルについて 4. ちなみに Step3 デプロイする 1. Warを用意する 2. Tomcatにアクセスする 3. Managerを使ってデプロイ する 4. アプリにアクセスする
  4. EC2とは? ❏ EC2とは「Amazon Elastic Compute Cloud」の略称 ❏ AWSで利用できるシステムのひとつ ❏ AWS上に仮想サーバーを構築して自由に利用できる

    ❏ これまでDCで物理的なサーバーを構築した後に仮想サーバを構築し ていたのが、Web上から数クリックで仮想サーバーを構築することがで きる ❏ ユーザーの必要に応じてスペック(CPU/RAM/DISK)を変更できる
  5. EC2+DockerでJavaアプリケーションをデプロイするまで Step1 環境を理解する 1. EC2とは? 2. Dockerとは? 3. コンテナとは? 4. Tomcatとは?

    5. PostgreSQLとは? Step2 アプリを用意する 1. Javaアプリ開発について 2. ビルドについて 3. Warファイルについて 4. データの作成について Step3 デプロイする 1. Warを用意する 2. Tomcatにアクセスする 3. Managerを使ってデプロイ する 4. アプリにアクセスする
  6. 参考までに....私の場合 コミット & ビルド & UnitTest & デプロイ  Gitlab +

    Gitlab CI/CD (全自動化) 画面試験  Chrome + Selenium
  7. EC2+DockerでJavaアプリケーションをデプロイするまで Step1 環境を理解する 1. EC2とは? 2. Dockerとは? 3. コンテナとは? 4. Tomcatとは?

    5. PostgreSQLとは? Step2 アプリを用意する 1. Javaアプリ開発について 2. ビルドについて 3. Warファイルについて 4. データの作成について Step3 デプロイする 1. Warファイルとは? 2. どうやってつくる? 3. Tomcatにアクセスする
  8. 研修用環境のTomcatにアクセスする http://dockeronec2-public-alb-816863126.us-east-2.elb.amazonaws.com/manager/html 1) 画面中央下部「配備」 -->「WARファイルの配備」 にある「ファイルを選択」をクリック 2) ファイル選択ダイアログ画面から作成した war ファイルを選択する

    3) 「配備」をクリック(warファイルアップロードに多 少時間がかかります) 4) 正常にデプロイできれば画面上部の「アプリ ケーション」一覧画面に対象のアプリが表示さ れるので、「パス」列に表示されているパスをク リックしてアプリにアクセス