SlideShare a Scribd company logo
Spring Boot の
Web アプリケーションを
Docker に載せて AWS
ECS で動かしている話
#jjug_ccc #ccc_g1
JJUG CCC 2018 Fall
2018/12/15
自己紹介
• 株式会社ジャストシステム 福嶋 航
• Twitter @fukushiw
• Java歴約20年、JavaでWebサービス作っています
• #Java100 本ノックの人
https://github.com/JustSystems/java-100practices
このセッションについて
• 人生で初めて、WebサービスをDockerコンテナ
化してAWS ECSを使ってプロダクションリリースし
たものについての話です
• AWS ECS や Dockerコンテナ について、基本
的なところは把握されている前提になっています
• まだまだ慣れていないことやわかっていないことが
あるため、セッション後や懇親会でぜひ情報交換
させてください
セッションの流れ
1. システム構成
(Dockerコンテナにしたもの、しなかったもの)
2. 各自の開発環境とビルド・デプロイの流れ
(マージリクエストの前にやることと後にやること)
3. β環境と本番環境、環境ごとの設定の切り替え
(Gitのブランチ・プロファイル・環境変数をうまく使う)
4. 本番運用に向けた「その他」の必要なこと
(ログ出力設定、監視設定)
5. まとめ
1
システム構成
(Dockerコンテナにした
もの、しなかったもの)
サービスの性質
• 企業向けWebサービス
• 24/7稼働
• 個人向けWebサービスに比べ、アクセス頻度は
高くない
• 取り扱うデータ量は多い(数百GB~数TB)
JJUG CCC 2018 Springの資料
UI
コア機能 外部連携
RDB
キャッシュ
キャッシュ
キャッシュ
主要機能3 RDB
主要機能2 RDB
主要機能1 RDB
サブ機能3
サブ機能2
サブ機能1
サブ機能6
サブ機能5
サブ機能4
RDB
キャッシュ
キャッシュ
キャッシュ
RDB
キャッシュ
サブ機能7 RDB
各機能(コンテキスト)は
それぞれDockerコンテナとして動作
(複数配置しALBで分散)し、
REST APIでやりとり
:
もうちょっと具体的に(抜粋)
Internet
Web Server /
UI container
other
containers
Independent
Instance2
Independent
Instance 1
GitLab
AWS ECSの採択経緯
• 弊社はAWSをよく使っていた
• Kubernetes の学習コスト懸念
• AWS Fargate のランニングコスト懸念
Dockerコンテナにしたもの
• ほぼすべての機能(十数種類のコンテナ)
• Availability Zone A と
Availability Zone C に
それぞれ1つずつ配置(一部は2つずつ配置)
• WebサーバのコンテナとUIのコンテナは同じタス
ク定義にして、他は別々のタスク定義にした
(理由は後述)
Dockerコンテナにしなかったもの
• 将来 AWS Fargate にスムーズに移行できる
自信がなかったもの
• 他ファイルシステムのボリュームをマウントしたり、バッ
チやWebサービスが協働して動作する機能
• crontabに慣れ親しんでいているため、精神的に
「EC2インスタンスだからいざとなればなんとかなる」と
安心したかった機能
当然、Dockerコンテナにしてもできる。できるのだが、なんか、保険的な・・・。
WebサーバとUIのコンテナ
Internet
Web Server /
UI container
other
containers
Independent
Instance2
Independent
Instance 1
GitLab
WebサーバとUIのコンテナ(拡大図)
こうなっています
Web Server UI container
Internet
宛先 https:443 http:80 http:8080
Web Server UI container
WebサーバとUIのコンテナ
Web Server UI container
Internet
宛先 https:443 http:80 http:8080 http:8080
本当はこうしたかった
Web Server UI container
WebサーバとUIのコンテナ
X-Forwaded-For
X-Forwaded-Proto
X-Forwaded-Port
-
-
-
オリジナルIP
https
443
オリジナルIP
https
443
Web ServerのIP
http
8080
Web Server UI container
Internet
宛先 https:443 http:80 http:8080 http:8080
Web Server UI container
WebサーバとUIのコンテナ
X-Forwaded-For
X-Forwaded-Proto
X-Forwaded-Port
-
-
-
オリジナルIP
https
443
オリジナルIP
https
443
Web ServerのIP
http
8080
Web Server UI container
Internet
宛先 https:443 http:80 http:8080 http:8080
Web Server UI container
WebサーバとUIのコンテナ
X-Forwaded-For
X-Forwaded-Proto
X-Forwaded-Port
-
-
-
オリジナルIP
https
443
オリジナルIP
https
443
Web ServerのIP
http
8080
UI container にいる Spring Boot のリダイレクト応答(http:8080宛て)を 右側の
ALB が戻してくれず詰んだ(解決方法がわからなかった)
Web Server UI container
Internet
宛先 https:443 http:80 http:8080 http:8080
Web Server UI container
WebサーバとUIのコンテナ
で結局こうした
Internet
宛先 https:443 http:80 http:8080
Web Server UI container
Web Server と UI container の Dockerコンテナを
分けずに同一にするのは、「1コンテナ1アプリケーション」
のベストプラクティスに反するので、踏みとどまった
Web Server UI container
再掲
Internet
Web Server /
UI container
other
containers
Independent
Instance2
Independent
Instance 1
GitLab
2
各自の開発環境とビルド・
デプロイの流れ
(マージリクエストの前に
やることと後にやること)
各自の開発環境
• PC
• メモリは16GB以上必須(24~32GBは欲しい)
• Windowsが多数派、Macな人もちらほら
• IDEはほぼ皆何かしら使っている
• Eclipse
• IntelliJ IDEA
• Visual Studio Code
• など
• Git
• 一番早いのはコマンド :nerd_face:
マージリクエストまで
• Issueを作る/アサインする
• 粒度はまちまち
• コーディング、テスト
• ローカル用プロファイルで動作させる Spring Boot
アプリケーションが入った Dockerコンテナをビルド・
起動
• 単体テストは、他マイクロサービスのところはモック
• コードの自己レビュー
マージリクエスト
• 担当者以外が保守できるか、を最重視
• 実装理由のコメントや、APIドキュメントも重視
• 複雑なロジックはじっくり読む
• マージ前の動作確認まではできなかった
• 相当な量がやってくるので、時間的に無理
• マージ後の確認でSpring Boot起動時にエラーに
なるとか、コンパイルエラーになるものもまれに……
このあたりはシステム化したかったが、できなかった
マージ後
• GitLab CIで開発環境にデプロイ
• 特定のブランチへのPUSHで以下を自動実行
 jarビルド (mvn clean install)
  ↓
 Dockerイメージビルド (docker-compose build)
  ↓
 ECRに登録 (docker push)
  ↓
 ECSのタスク定義&サービス更新 (ecs-deploy)
  ↓
 Mattermostに通知 (curl)
• GitLabでそのブランチにPUSHできる人を限定
• 複数の環境ごとにブランチを用意(後述)
マージが終わったらデプロイ
 
すぐにデプロイされない罠
• Dockerコンテナをホストポート固定で動作させる場
合、1つのEC2インスタンスでは同一タスクは1つしか
起動できない。ここで EC2インスタンス数=タスク
数 にすると、デプロイ時の動作は
  タスク停止→draining→タスク起動
となる。新しいタスクの起動が前のタスクの
drainingが完了するまで待たされるのですぐに新
Dockerコンテナが起動しない。
• ホストポートをダイナミックにすれば関係ない
CASE 1
EC2インスタンス数>タスク数の場合
もうちょっと詳しく
Case1 インスタンス数>タスク数
Container A1
タスク定義= A1:1
Instance 2
(1)Instance1でA1:1タスク実行中
Instance 1
Case1 インスタンス数>タスク数
Container A1
タスク定義= A1:1
(2)新しいタスクA1:2はすぐにInstance2にデプロイ
  され、A1:1 は draining に。
Instance 1
Container A1
タスク定義= A1:2
Instance 2
draining
Case1 インスタンス数>タスク数
(3)drainingされたコンテナは消える
Instance 1
Container A1
タスク定義= A1:2
Instance 2
CASE 2
EC2インスタンス数=タスク数の場合
もうちょっと詳しく
Case2 インスタンス数=タスク数
Container A1
タスク定義= A1:1
(1)Instance1とInstance2でA1:1タスク実行中
Instance 1
Container A1
タスク定義= A1:1
Instance 2
Case2 インスタンス数=タスク数
Container A1
タスク定義= A1:1
(2)片方のインスタンスでdraining、もう一方は
  A1:1のまま
Instance 1
Container A1
タスク定義= A1:1
Instance 2
draining
Case2 インスタンス数=タスク数
Container A1
タスク定義= A1:2
(3)drainingが完了すると新しいタスクがデプロイ
  され、もう一方がdrainingになる。
Instance 1
Container A1
タスク定義= A1:1
Instance 2
draining
Case2 インスタンス数=タスク数
Container A1
タスク定義= A1:2
(4)drainingが完了すると新しいタスクがデプロイ
  される。
Instance 1
Container A1
タスク定義= A1:2
Instance 2
drainingにかかる時間
• ターゲットグループの属性「登録解除の遅延」で指定
• 新しいタスクをデプロイすると、すぐには置き換わらず、こ
こで指定した時間が経過するまで待たされる
• タイムアウトを長くすれば、処理中が途中で中断されるリ
スクは下がるが、デプロイに時間がかかってしまう
3
β環境と本番環境、環境ごと
の設定の切り替え
(Gitのブランチ・プロファイル・
環境変数をうまく使う)
複数のβ環境と1つの本番環境
本番環境
β環境1 β環境2 β環境3
β環境1
• 各マイクロサービスが最初に結合を行う環境
• 更新サイクルが早い
• 本線には取り込まない可能性があるものもここで
試すことは可能(敷居が低い)
• とはいえ影響のあるものは Mattermost で声
を掛けてから
β環境2
• 第三者評価を行う環境
• 開発チームがβ環境1で確認を終えているものが
デプロイされる
• デプロイ手順も含めて本番環境に投入する前の
リハーサルの場となる
β環境3
• 性能評価を行う環境
• インスタンスタイプや台数は本番環境と同じ
• 負荷を掛けて、本番環境に必要なインスタンス
タイプやECSタスクの個数、割り当てメモリ等を
導き出すための材料を得る
プロファイルの切り替え
• 各β環境や本番環境用はそれぞれプロファイルを
分けて定義
micro-service-1/src/main/resources/
application-beta1.properties
application-beta2.properties
application-beta3.properties
application-production.properties
@Profile("application-beta1")
ブランチの切り替え
• ブランチポリシーは Git Flow を採用
• master, develop, feature, release, hotfix
• GitLab CI でビルドする際は、環境ごとに別々
のブランチにPUSH
• β環境1ビルド・デプロイ用ブランチ、同2用、同3用
• 本番環境ビルド・デプロイ用ブランチ
ブランチを分けることでミス防止
環境変数の利用
• Spring Framewok はプロパティファイルよりも
環境変数を優先してくれるので、Docker イメー
ジを作り直すことなく、ECSタスクの環境変数の
変更(とサービスの更新)だけで動作設定を
変更できる
• Dockerイメージビルドして、ECRにアップロードし
て、・・・は、数分~十数分かかることも
• ECSタスクの変更だけであれば数十秒のWeb画面
操作だけで更新完了
4
本番運用に向けた
「その他」の必要なこと
(ログ出力設定、
監視設定)
ログ出力(要件)
• 同一種類のコンテナのログは時系列に見たい
• あとで分析に使えるようにしたい
• エラーレベルのものは監視アラートを出したい
ログ出力(構成)
Log Server
S3 Bucket
containers
on EC2
file
fluentd
mount
EC2
instance
mainerror
Zabbix
agent
ログファイル2種
• 全行のファイルとエラーだけの行を分けたい
• エラーだけの行を Zabbix agent で監視
• コンテナの標準出力は以下のように設定
(見やすいように改行していますが実際は1行です)
ENTRYPOINT [ "/bin/bash", "-c", "
$JAVA_HOME/bin/java $JAVA_OPTS -jar ./program.jar
--spring.profiles.active=$SPRING_PROFILE
| tee >
(grep --line-buffered -e "^[0-9-]* [0-9:.]* ERROR.*" >>
/path/to/error.log)
| tee -a /path/to/main.log
" ]
監視内容(プログラムの外側)
• エラーログ監視
• Zabbix agent がエラーログファイルの変更を監視
• EC2インスタンス監視(CPU/メモリなど)
• ECS監視(リザーブ領域との対比等)
• Docker space は特に重要
• Webアクセス監視
などなど
監視内容(プログラムの内側)
• ヘルスチェック
• ALBからのヘルスチェックのエンドポイントを作成
• 各マイクロサービスが依存するRDBやキャッシュへの
通信の疎通まで確認。204 or 500 で応答。
• アプリケーションメトリクス
• 処理キューの長さ、動作スレッド数、など
• 重要処理の処理時間も入れたかったが、これから
未解決事件
 
コンテナ間通信が502エラー
Internet
Web Server /
UI container
other
containers
Independent
Instance2
Independent
Instance 1
GitLab
ここの通信が502になる
1日に数回から十数回発生
原因不明
リトライで対処中
誰か教えてください
:pray:
5
まとめ
まとめ
• Spring Bootアプリケーションのマイクロサービス
はAWS ECSで普通に使える
• Webサーバと入口のコンテナだけ1つのタスクに同居
させ、他は別々のタスクにした
• Dockerコンテナ入れ替え時の待ち時間に注意
• 3つのβ環境を含めた4環境で別々にGitLab
CIでビルド・デプロイ、環境変数を活用
• ログはコンテナから母艦経由S3へ
• 監視はプログラムの外側と内側の両方

More Related Content

What's hot

分散トレーシングAWS:X-Rayとの上手い付き合い方
分散トレーシングAWS:X-Rayとの上手い付き合い方分散トレーシングAWS:X-Rayとの上手い付き合い方
分散トレーシングAWS:X-Rayとの上手い付き合い方
Recruit Lifestyle Co., Ltd.
 
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
NTT DATA Technology & Innovation
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
Masahito Zembutsu
 
Argo CD Deep Dive
Argo CD Deep DiveArgo CD Deep Dive
Argo CD Deep Dive
shunki fujiwara
 
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
 
マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜
Yoshiki Nakagawa
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
 
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design PatternAWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
Amazon Web Services Japan
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
NTT DATA Technology & Innovation
 
SpringBootTest入門
SpringBootTest入門SpringBootTest入門
ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本
kazuki kumagai
 
The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発
Amazon Web Services Japan
 
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #1320210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
Amazon Web Services Japan
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
Yahoo!デベロッパーネットワーク
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
 
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
Yoshitaka Kawashima
 
AWSでDockerを扱うためのベストプラクティス
AWSでDockerを扱うためのベストプラクティスAWSでDockerを扱うためのベストプラクティス
AWSでDockerを扱うためのベストプラクティス
Amazon Web Services Japan
 
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
Masatoshi Tada
 
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Amazon Web Services Japan
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
 

What's hot (20)

分散トレーシングAWS:X-Rayとの上手い付き合い方
分散トレーシングAWS:X-Rayとの上手い付き合い方分散トレーシングAWS:X-Rayとの上手い付き合い方
分散トレーシングAWS:X-Rayとの上手い付き合い方
 
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
Argo CD Deep Dive
Argo CD Deep DiveArgo CD Deep Dive
Argo CD Deep Dive
 
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
 
マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
 
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design PatternAWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
 
SpringBootTest入門
SpringBootTest入門SpringBootTest入門
SpringBootTest入門
 
ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本
 
The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発
 
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #1320210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
 
AWSでDockerを扱うためのベストプラクティス
AWSでDockerを扱うためのベストプラクティスAWSでDockerを扱うためのベストプラクティス
AWSでDockerを扱うためのベストプラクティス
 
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
 
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
 

Similar to Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話

Jenkins 再入門
Jenkins 再入門Jenkins 再入門
Jenkins 再入門
Jumpei Miyata
 
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevioいるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
fd0
 
Jenkins study jenkins build-cicdi
Jenkins study jenkins build-cicdiJenkins study jenkins build-cicdi
Jenkins study jenkins build-cicdi
昌桓 李
 
試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift
Etsuji Nakai
 
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
Tomohiro Ohtake
 
Fcp
FcpFcp
Eight meets AWS
Eight meets AWSEight meets AWS
Eight meets AWS
Tetsuya Mase
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
Yu Nobuoka
 
Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築
Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築
Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築
Kazuki Takai
 
はじめての Azure 開発
はじめての Azure 開発はじめての Azure 開発
はじめての Azure 開発
Yoshitaka Seo
 
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
Issei Hiraoka
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Masahito Zembutsu
 
AWS Black Belt Online Seminar AWS上のJenkins活用方法
AWS Black Belt Online Seminar AWS上のJenkins活用方法AWS Black Belt Online Seminar AWS上のJenkins活用方法
AWS Black Belt Online Seminar AWS上のJenkins活用方法
Amazon Web Services Japan
 
2019年度 CaaS ワークショップ @ NTTコム
2019年度 CaaS ワークショップ @ NTTコム2019年度 CaaS ワークショップ @ NTTコム
2019年度 CaaS ワークショップ @ NTTコム
TomoyaTakegoshi
 
[Japan Tech summit 2017] DEP 005
[Japan Tech summit 2017] DEP 005[Japan Tech summit 2017] DEP 005
[Japan Tech summit 2017] DEP 005
Microsoft Tech Summit 2017
 
AKS (k8s) Hands on Lab Contents
AKS (k8s) Hands on Lab ContentsAKS (k8s) Hands on Lab Contents
AKS (k8s) Hands on Lab Contents
Yoshio Terada
 
継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング
Takayuki Kondou
 
Azure Arc Jumpstart Update - HCIBox Edition
Azure Arc Jumpstart Update - HCIBox EditionAzure Arc Jumpstart Update - HCIBox Edition
Azure Arc Jumpstart Update - HCIBox Edition
Kazuki Takai
 
サービスリリースから安定軌道に乗せるまでに行った開発施策
サービスリリースから安定軌道に乗せるまでに行った開発施策サービスリリースから安定軌道に乗せるまでに行った開発施策
サービスリリースから安定軌道に乗せるまでに行った開発施策
Keiichi Hagiwara
 
アカツキはどのようにAWSを活用しているか #jawsug
アカツキはどのようにAWSを活用しているか #jawsugアカツキはどのようにAWSを活用しているか #jawsug
アカツキはどのようにAWSを活用しているか #jawsug
aktsk
 

Similar to Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話 (20)

Jenkins 再入門
Jenkins 再入門Jenkins 再入門
Jenkins 再入門
 
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevioいるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
 
Jenkins study jenkins build-cicdi
Jenkins study jenkins build-cicdiJenkins study jenkins build-cicdi
Jenkins study jenkins build-cicdi
 
試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift
 
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
 
Fcp
FcpFcp
Fcp
 
Eight meets AWS
Eight meets AWSEight meets AWS
Eight meets AWS
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
 
Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築
Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築
Azure Arc Jumpstart - Azure ArcBox を使った Azure Arc 対応 SQL MI 学習環境の構築
 
はじめての Azure 開発
はじめての Azure 開発はじめての Azure 開発
はじめての Azure 開発
 
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 
AWS Black Belt Online Seminar AWS上のJenkins活用方法
AWS Black Belt Online Seminar AWS上のJenkins活用方法AWS Black Belt Online Seminar AWS上のJenkins活用方法
AWS Black Belt Online Seminar AWS上のJenkins活用方法
 
2019年度 CaaS ワークショップ @ NTTコム
2019年度 CaaS ワークショップ @ NTTコム2019年度 CaaS ワークショップ @ NTTコム
2019年度 CaaS ワークショップ @ NTTコム
 
[Japan Tech summit 2017] DEP 005
[Japan Tech summit 2017] DEP 005[Japan Tech summit 2017] DEP 005
[Japan Tech summit 2017] DEP 005
 
AKS (k8s) Hands on Lab Contents
AKS (k8s) Hands on Lab ContentsAKS (k8s) Hands on Lab Contents
AKS (k8s) Hands on Lab Contents
 
継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング
 
Azure Arc Jumpstart Update - HCIBox Edition
Azure Arc Jumpstart Update - HCIBox EditionAzure Arc Jumpstart Update - HCIBox Edition
Azure Arc Jumpstart Update - HCIBox Edition
 
サービスリリースから安定軌道に乗せるまでに行った開発施策
サービスリリースから安定軌道に乗せるまでに行った開発施策サービスリリースから安定軌道に乗せるまでに行った開発施策
サービスリリースから安定軌道に乗せるまでに行った開発施策
 
アカツキはどのようにAWSを活用しているか #jawsug
アカツキはどのようにAWSを活用しているか #jawsugアカツキはどのようにAWSを活用しているか #jawsug
アカツキはどのようにAWSを活用しているか #jawsug
 

More from JustSystems Corporation

「技術内閣制度」〜2年間やってきて得られた事とこれから〜 #devsumi
「技術内閣制度」〜2年間やってきて得られた事とこれから〜 #devsumi「技術内閣制度」〜2年間やってきて得られた事とこれから〜 #devsumi
「技術内閣制度」〜2年間やってきて得られた事とこれから〜 #devsumi
JustSystems Corporation
 
事業に貢献する商品開発と その成長の仕組み作り ~これからのエンジニアに必要とされるスキルとは~
事業に貢献する商品開発と その成長の仕組み作り ~これからのエンジニアに必要とされるスキルとは~事業に貢献する商品開発と その成長の仕組み作り ~これからのエンジニアに必要とされるスキルとは~
事業に貢献する商品開発と その成長の仕組み作り ~これからのエンジニアに必要とされるスキルとは~
JustSystems Corporation
 
現役23名のPM:タイプ別マネジメントパターン
現役23名のPM:タイプ別マネジメントパターン現役23名のPM:タイプ別マネジメントパターン
現役23名のPM:タイプ別マネジメントパターン
JustSystems Corporation
 
JavaでインメモリSQLエンジンを作ってみた
JavaでインメモリSQLエンジンを作ってみたJavaでインメモリSQLエンジンを作ってみた
JavaでインメモリSQLエンジンを作ってみた
JustSystems Corporation
 
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
JustSystems Corporation
 
JustTechTalk#11_スマイルゼミ顧客満足度への貢献
JustTechTalk#11_スマイルゼミ顧客満足度への貢献JustTechTalk#11_スマイルゼミ顧客満足度への貢献
JustTechTalk#11_スマイルゼミ顧客満足度への貢献
JustSystems Corporation
 
ピュアJavaだと思った?残念androidでした~いつからAndroidをJavaだと錯覚していた?~
ピュアJavaだと思った?残念androidでした~いつからAndroidをJavaだと錯覚していた?~ピュアJavaだと思った?残念androidでした~いつからAndroidをJavaだと錯覚していた?~
ピュアJavaだと思った?残念androidでした~いつからAndroidをJavaだと錯覚していた?~
JustSystems Corporation
 
最新のJava言語仕様で見るモジュールシステム #jjug
最新のJava言語仕様で見るモジュールシステム #jjug最新のJava言語仕様で見るモジュールシステム #jjug
最新のJava言語仕様で見るモジュールシステム #jjug
JustSystems Corporation
 
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
JustSystems Corporation
 
JustTechTalk#10 React開発における自動テスト実践
JustTechTalk#10 React開発における自動テスト実践JustTechTalk#10 React開発における自動テスト実践
JustTechTalk#10 React開発における自動テスト実践
JustSystems Corporation
 
JustTechTalk#10windowsアプリでのテスト自動化事例
JustTechTalk#10windowsアプリでのテスト自動化事例JustTechTalk#10windowsアプリでのテスト自動化事例
JustTechTalk#10windowsアプリでのテスト自動化事例
JustSystems Corporation
 
インパス! あのこれダメッス! ~Javaコードレビューの指摘ポイント10選~
インパス! あのこれダメッス! ~Javaコードレビューの指摘ポイント10選~インパス! あのこれダメッス! ~Javaコードレビューの指摘ポイント10選~
インパス! あのこれダメッス! ~Javaコードレビューの指摘ポイント10選~
JustSystems Corporation
 
AWS運用における最適パターンの徹底活用
AWS運用における最適パターンの徹底活用AWS運用における最適パターンの徹底活用
AWS運用における最適パターンの徹底活用
JustSystems Corporation
 
ジャストシステムのDevOps実例 今後の取り組み
ジャストシステムのDevOps実例 今後の取り組みジャストシステムのDevOps実例 今後の取り組み
ジャストシステムのDevOps実例 今後の取り組み
JustSystems Corporation
 
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
JustSystems Corporation
 
Kotlin is charming; The reasons Java engineers should start Kotlin.
Kotlin is charming; The reasons Java engineers should start Kotlin.Kotlin is charming; The reasons Java engineers should start Kotlin.
Kotlin is charming; The reasons Java engineers should start Kotlin.
JustSystems Corporation
 
CSSレイアウトでなぜ失敗するか?
CSSレイアウトでなぜ失敗するか?CSSレイアウトでなぜ失敗するか?
CSSレイアウトでなぜ失敗するか?
JustSystems Corporation
 
Selenium WebDriver + python で E2Eテスト自動化
Selenium WebDriver + python で E2Eテスト自動化Selenium WebDriver + python で E2Eテスト自動化
Selenium WebDriver + python で E2Eテスト自動化
JustSystems Corporation
 
TypeScriptの大規模開発への適用
TypeScriptの大規模開発への適用TypeScriptの大規模開発への適用
TypeScriptの大規模開発への適用
JustSystems Corporation
 
UX実現に向けた社内の取り組みについて-訴求ファーストによる商品開発-
UX実現に向けた社内の取り組みについて-訴求ファーストによる商品開発-UX実現に向けた社内の取り組みについて-訴求ファーストによる商品開発-
UX実現に向けた社内の取り組みについて-訴求ファーストによる商品開発-
JustSystems Corporation
 

More from JustSystems Corporation (20)

「技術内閣制度」〜2年間やってきて得られた事とこれから〜 #devsumi
「技術内閣制度」〜2年間やってきて得られた事とこれから〜 #devsumi「技術内閣制度」〜2年間やってきて得られた事とこれから〜 #devsumi
「技術内閣制度」〜2年間やってきて得られた事とこれから〜 #devsumi
 
事業に貢献する商品開発と その成長の仕組み作り ~これからのエンジニアに必要とされるスキルとは~
事業に貢献する商品開発と その成長の仕組み作り ~これからのエンジニアに必要とされるスキルとは~事業に貢献する商品開発と その成長の仕組み作り ~これからのエンジニアに必要とされるスキルとは~
事業に貢献する商品開発と その成長の仕組み作り ~これからのエンジニアに必要とされるスキルとは~
 
現役23名のPM:タイプ別マネジメントパターン
現役23名のPM:タイプ別マネジメントパターン現役23名のPM:タイプ別マネジメントパターン
現役23名のPM:タイプ別マネジメントパターン
 
JavaでインメモリSQLエンジンを作ってみた
JavaでインメモリSQLエンジンを作ってみたJavaでインメモリSQLエンジンを作ってみた
JavaでインメモリSQLエンジンを作ってみた
 
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
 
JustTechTalk#11_スマイルゼミ顧客満足度への貢献
JustTechTalk#11_スマイルゼミ顧客満足度への貢献JustTechTalk#11_スマイルゼミ顧客満足度への貢献
JustTechTalk#11_スマイルゼミ顧客満足度への貢献
 
ピュアJavaだと思った?残念androidでした~いつからAndroidをJavaだと錯覚していた?~
ピュアJavaだと思った?残念androidでした~いつからAndroidをJavaだと錯覚していた?~ピュアJavaだと思った?残念androidでした~いつからAndroidをJavaだと錯覚していた?~
ピュアJavaだと思った?残念androidでした~いつからAndroidをJavaだと錯覚していた?~
 
最新のJava言語仕様で見るモジュールシステム #jjug
最新のJava言語仕様で見るモジュールシステム #jjug最新のJava言語仕様で見るモジュールシステム #jjug
最新のJava言語仕様で見るモジュールシステム #jjug
 
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
 
JustTechTalk#10 React開発における自動テスト実践
JustTechTalk#10 React開発における自動テスト実践JustTechTalk#10 React開発における自動テスト実践
JustTechTalk#10 React開発における自動テスト実践
 
JustTechTalk#10windowsアプリでのテスト自動化事例
JustTechTalk#10windowsアプリでのテスト自動化事例JustTechTalk#10windowsアプリでのテスト自動化事例
JustTechTalk#10windowsアプリでのテスト自動化事例
 
インパス! あのこれダメッス! ~Javaコードレビューの指摘ポイント10選~
インパス! あのこれダメッス! ~Javaコードレビューの指摘ポイント10選~インパス! あのこれダメッス! ~Javaコードレビューの指摘ポイント10選~
インパス! あのこれダメッス! ~Javaコードレビューの指摘ポイント10選~
 
AWS運用における最適パターンの徹底活用
AWS運用における最適パターンの徹底活用AWS運用における最適パターンの徹底活用
AWS運用における最適パターンの徹底活用
 
ジャストシステムのDevOps実例 今後の取り組み
ジャストシステムのDevOps実例 今後の取り組みジャストシステムのDevOps実例 今後の取り組み
ジャストシステムのDevOps実例 今後の取り組み
 
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
 
Kotlin is charming; The reasons Java engineers should start Kotlin.
Kotlin is charming; The reasons Java engineers should start Kotlin.Kotlin is charming; The reasons Java engineers should start Kotlin.
Kotlin is charming; The reasons Java engineers should start Kotlin.
 
CSSレイアウトでなぜ失敗するか?
CSSレイアウトでなぜ失敗するか?CSSレイアウトでなぜ失敗するか?
CSSレイアウトでなぜ失敗するか?
 
Selenium WebDriver + python で E2Eテスト自動化
Selenium WebDriver + python で E2Eテスト自動化Selenium WebDriver + python で E2Eテスト自動化
Selenium WebDriver + python で E2Eテスト自動化
 
TypeScriptの大規模開発への適用
TypeScriptの大規模開発への適用TypeScriptの大規模開発への適用
TypeScriptの大規模開発への適用
 
UX実現に向けた社内の取り組みについて-訴求ファーストによる商品開発-
UX実現に向けた社内の取り組みについて-訴求ファーストによる商品開発-UX実現に向けた社内の取り組みについて-訴求ファーストによる商品開発-
UX実現に向けた社内の取り組みについて-訴求ファーストによる商品開発-
 

Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話