Movatterモバイル変換
[0]
ホーム
URL:
画像なし
夜間モード
Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
JustSystems Corporation
PDF, PPTX
17,720 views
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
JJUG CCC 2018 Fall 登壇時の資料です。 #jjug_ccc #ccc_g1
Engineering
◦
Read more
4
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 54
2
/ 54
Most read
3
/ 54
4
/ 54
5
/ 54
6
/ 54
7
/ 54
8
/ 54
Most read
9
/ 54
10
/ 54
Most read
11
/ 54
12
/ 54
13
/ 54
14
/ 54
15
/ 54
16
/ 54
17
/ 54
18
/ 54
19
/ 54
20
/ 54
21
/ 54
22
/ 54
23
/ 54
24
/ 54
25
/ 54
26
/ 54
27
/ 54
28
/ 54
29
/ 54
30
/ 54
31
/ 54
32
/ 54
33
/ 54
34
/ 54
35
/ 54
36
/ 54
37
/ 54
38
/ 54
39
/ 54
40
/ 54
41
/ 54
42
/ 54
43
/ 54
44
/ 54
45
/ 54
46
/ 54
47
/ 54
48
/ 54
49
/ 54
50
/ 54
51
/ 54
52
/ 54
53
/ 54
54
/ 54
Recommended
PPTX
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
by
NTT DATA Technology & Innovation
PDF
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
by
Y Watanabe
PPTX
さくっと理解するSpring bootの仕組み
by
Takeshi Ogawa
PDF
コンテナ未経験新人が学ぶコンテナ技術入門
by
Kohei Tokunaga
PDF
ドメイン駆動設計のための Spring の上手な使い方
by
増田 亨
PDF
WebSocket / WebRTCの技術紹介
by
Yasuhiro Mawarimichi
PDF
マイクロサービス 4つの分割アプローチ
by
増田 亨
PDF
マイクロにしすぎた結果がこれだよ!
by
mosa siru
PDF
マイクロサービスに至る歴史とこれから - XP祭り2021
by
Yusuke Suzuki
PDF
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
by
Amazon Web Services Japan
PDF
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
by
Amazon Web Services Japan
PPTX
SPAセキュリティ入門~PHP Conference Japan 2021
by
Hiroshi Tokumaru
PDF
マルチテナント化で知っておきたいデータベースのこと
by
Amazon Web Services Japan
PDF
Serverless時代のJavaについて
by
Amazon Web Services Japan
PDF
文字コードに起因する脆弱性とその対策(増補版)
by
Hiroshi Tokumaru
PDF
ヤフー社内でやってるMySQLチューニングセミナー大公開
by
Yahoo!デベロッパーネットワーク
PDF
ソーシャルゲームのためのデータベース設計
by
Yoshinori Matsunobu
PDF
ドメイン駆動設計 本格入門
by
増田 亨
PDF
Javaのログ出力: 道具と考え方
by
Taku Miyakawa
PPTX
イベント・ソーシングを知る
by
Shuhei Fujita
PDF
例外設計における大罪
by
Takuto Wada
PDF
The Twelve-Factor Appで考えるAWSのサービス開発
by
Amazon Web Services Japan
PPTX
ぱぱっと理解するSpring Cloudの基本
by
kazuki kumagai
PDF
PlaySQLAlchemy: SQLAlchemy入門
by
泰 増田
PDF
SQL大量発行処理をいかにして高速化するか
by
Shogo Wakayama
PDF
イミュータブルデータモデル(世代編)
by
Yoshitaka Kawashima
PDF
3分でわかるAzureでのService Principal
by
Toru Makabe
PDF
怖くないSpring Bootのオートコンフィグレーション
by
土岐 孝平
PDF
AWSでDockerを扱うためのベストプラクティス
by
Amazon Web Services Japan
PDF
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
by
Yahoo!デベロッパーネットワーク
More Related Content
PPTX
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
by
NTT DATA Technology & Innovation
PDF
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
by
Y Watanabe
PPTX
さくっと理解するSpring bootの仕組み
by
Takeshi Ogawa
PDF
コンテナ未経験新人が学ぶコンテナ技術入門
by
Kohei Tokunaga
PDF
ドメイン駆動設計のための Spring の上手な使い方
by
増田 亨
PDF
WebSocket / WebRTCの技術紹介
by
Yasuhiro Mawarimichi
PDF
マイクロサービス 4つの分割アプローチ
by
増田 亨
PDF
マイクロにしすぎた結果がこれだよ!
by
mosa siru
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
by
NTT DATA Technology & Innovation
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
by
Y Watanabe
さくっと理解するSpring bootの仕組み
by
Takeshi Ogawa
コンテナ未経験新人が学ぶコンテナ技術入門
by
Kohei Tokunaga
ドメイン駆動設計のための Spring の上手な使い方
by
増田 亨
WebSocket / WebRTCの技術紹介
by
Yasuhiro Mawarimichi
マイクロサービス 4つの分割アプローチ
by
増田 亨
マイクロにしすぎた結果がこれだよ!
by
mosa siru
What's hot
PDF
マイクロサービスに至る歴史とこれから - XP祭り2021
by
Yusuke Suzuki
PDF
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
by
Amazon Web Services Japan
PDF
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
by
Amazon Web Services Japan
PPTX
SPAセキュリティ入門~PHP Conference Japan 2021
by
Hiroshi Tokumaru
PDF
マルチテナント化で知っておきたいデータベースのこと
by
Amazon Web Services Japan
PDF
Serverless時代のJavaについて
by
Amazon Web Services Japan
PDF
文字コードに起因する脆弱性とその対策(増補版)
by
Hiroshi Tokumaru
PDF
ヤフー社内でやってるMySQLチューニングセミナー大公開
by
Yahoo!デベロッパーネットワーク
PDF
ソーシャルゲームのためのデータベース設計
by
Yoshinori Matsunobu
PDF
ドメイン駆動設計 本格入門
by
増田 亨
PDF
Javaのログ出力: 道具と考え方
by
Taku Miyakawa
PPTX
イベント・ソーシングを知る
by
Shuhei Fujita
PDF
例外設計における大罪
by
Takuto Wada
PDF
The Twelve-Factor Appで考えるAWSのサービス開発
by
Amazon Web Services Japan
PPTX
ぱぱっと理解するSpring Cloudの基本
by
kazuki kumagai
PDF
PlaySQLAlchemy: SQLAlchemy入門
by
泰 増田
PDF
SQL大量発行処理をいかにして高速化するか
by
Shogo Wakayama
PDF
イミュータブルデータモデル(世代編)
by
Yoshitaka Kawashima
PDF
3分でわかるAzureでのService Principal
by
Toru Makabe
PDF
怖くないSpring Bootのオートコンフィグレーション
by
土岐 孝平
マイクロサービスに至る歴史とこれから - XP祭り2021
by
Yusuke Suzuki
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
by
Amazon Web Services Japan
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
by
Amazon Web Services Japan
SPAセキュリティ入門~PHP Conference Japan 2021
by
Hiroshi Tokumaru
マルチテナント化で知っておきたいデータベースのこと
by
Amazon Web Services Japan
Serverless時代のJavaについて
by
Amazon Web Services Japan
文字コードに起因する脆弱性とその対策(増補版)
by
Hiroshi Tokumaru
ヤフー社内でやってるMySQLチューニングセミナー大公開
by
Yahoo!デベロッパーネットワーク
ソーシャルゲームのためのデータベース設計
by
Yoshinori Matsunobu
ドメイン駆動設計 本格入門
by
増田 亨
Javaのログ出力: 道具と考え方
by
Taku Miyakawa
イベント・ソーシングを知る
by
Shuhei Fujita
例外設計における大罪
by
Takuto Wada
The Twelve-Factor Appで考えるAWSのサービス開発
by
Amazon Web Services Japan
ぱぱっと理解するSpring Cloudの基本
by
kazuki kumagai
PlaySQLAlchemy: SQLAlchemy入門
by
泰 増田
SQL大量発行処理をいかにして高速化するか
by
Shogo Wakayama
イミュータブルデータモデル(世代編)
by
Yoshitaka Kawashima
3分でわかるAzureでのService Principal
by
Toru Makabe
怖くないSpring Bootのオートコンフィグレーション
by
土岐 孝平
Similar to Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
PDF
AWSでDockerを扱うためのベストプラクティス
by
Amazon Web Services Japan
PDF
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
by
Yahoo!デベロッパーネットワーク
PDF
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
by
gree_tech
PDF
20180220 AWS Black Belt Online Seminar - Amazon Container Services
by
Amazon Web Services Japan
PDF
捕鯨!詳解docker
by
雄哉 吉田
PDF
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
by
Ryo Nakamaru
PDF
AWS Blackbelt 2015シリーズ Amazon EC2 Container Service (Amazon ECS)
by
Amazon Web Services Japan
PDF
Elastic beanstalk docker_support
by
Amazon Web Services Japan
PPTX
2019年度 CaaS ワークショップ @ NTTコム
by
TomoyaTakegoshi
PDF
Single Command Deployのための gradle-aws-plugin講座
by
都元ダイスケ Miyamoto
PDF
Docker for Windows & Web Apps for Containers 実践活用技法
by
Microsoft Corporation
PPTX
ラズパイ2で動く Docker PaaSを作ってみたよ
by
npsg
PDF
20180313 Amazon Container Services アップデート
by
Amazon Web Services Japan
PDF
オトナのDocker入門
by
Tsukasa Kato
PDF
JAWS-UG Meets Windows (JAWS Days 2017)
by
Amazon Web Services Japan
PDF
Amazon ECS事始め
by
じゅん なかざ
PPTX
20140621 july techfesta (JTF2014) 突発**むけAWS
by
Yasuhiro Araki, Ph.D
PDF
CloudSpiral 2014年度 Webアプリ講義(2日目)
by
Shin Matsumoto
PDF
AWS Black Belt Online Seminar 2017 Docker on AWS
by
Amazon Web Services Japan
PDF
コンテナ導入概要資料2018
by
Masahito Zembutsu
AWSでDockerを扱うためのベストプラクティス
by
Amazon Web Services Japan
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
by
Yahoo!デベロッパーネットワーク
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
by
gree_tech
20180220 AWS Black Belt Online Seminar - Amazon Container Services
by
Amazon Web Services Japan
捕鯨!詳解docker
by
雄哉 吉田
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
by
Ryo Nakamaru
AWS Blackbelt 2015シリーズ Amazon EC2 Container Service (Amazon ECS)
by
Amazon Web Services Japan
Elastic beanstalk docker_support
by
Amazon Web Services Japan
2019年度 CaaS ワークショップ @ NTTコム
by
TomoyaTakegoshi
Single Command Deployのための gradle-aws-plugin講座
by
都元ダイスケ Miyamoto
Docker for Windows & Web Apps for Containers 実践活用技法
by
Microsoft Corporation
ラズパイ2で動く Docker PaaSを作ってみたよ
by
npsg
20180313 Amazon Container Services アップデート
by
Amazon Web Services Japan
オトナのDocker入門
by
Tsukasa Kato
JAWS-UG Meets Windows (JAWS Days 2017)
by
Amazon Web Services Japan
Amazon ECS事始め
by
じゅん なかざ
20140621 july techfesta (JTF2014) 突発**むけAWS
by
Yasuhiro Araki, Ph.D
CloudSpiral 2014年度 Webアプリ講義(2日目)
by
Shin Matsumoto
AWS Black Belt Online Seminar 2017 Docker on AWS
by
Amazon Web Services Japan
コンテナ導入概要資料2018
by
Masahito Zembutsu
More from JustSystems Corporation
PDF
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
by
JustSystems Corporation
PPTX
Selenium WebDriver + python で E2Eテスト自動化
by
JustSystems Corporation
PPTX
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
by
JustSystems Corporation
PDF
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
by
JustSystems Corporation
PDF
ピュアJavaだと思った?残念androidでした~いつからAndroidをJavaだと錯覚していた?~
by
JustSystems Corporation
PDF
AWS運用における最適パターンの徹底活用
by
JustSystems Corporation
PDF
「技術内閣制度」〜2年間やってきて得られた事とこれから〜 #devsumi
by
JustSystems Corporation
PDF
インパス! あのこれダメッス! ~Javaコードレビューの指摘ポイント10選~
by
JustSystems Corporation
PDF
最新のJava言語仕様で見るモジュールシステム #jjug
by
JustSystems Corporation
PDF
JustTechTalk#10windowsアプリでのテスト自動化事例
by
JustSystems Corporation
PPTX
JavaでインメモリSQLエンジンを作ってみた
by
JustSystems Corporation
PPTX
ジャストシステムのDevOps実例 今後の取り組み
by
JustSystems Corporation
PPTX
TypeScriptの大規模開発への適用
by
JustSystems Corporation
PDF
CSSレイアウトでなぜ失敗するか?
by
JustSystems Corporation
PDF
JustTechTalk#11_スマイルゼミ顧客満足度への貢献
by
JustSystems Corporation
PDF
JustTechTalk#10 React開発における自動テスト実践
by
JustSystems Corporation
PPTX
Kotlin is charming; The reasons Java engineers should start Kotlin.
by
JustSystems Corporation
PDF
UX実現に向けた社内の取り組みについて-訴求ファーストによる商品開発-
by
JustSystems Corporation
PDF
現役23名のPM:タイプ別マネジメントパターン
by
JustSystems Corporation
PDF
事業に貢献する商品開発と その成長の仕組み作り ~これからのエンジニアに必要とされるスキルとは~
by
JustSystems Corporation
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
by
JustSystems Corporation
Selenium WebDriver + python で E2Eテスト自動化
by
JustSystems Corporation
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
by
JustSystems Corporation
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
by
JustSystems Corporation
ピュアJavaだと思った?残念androidでした~いつからAndroidをJavaだと錯覚していた?~
by
JustSystems Corporation
AWS運用における最適パターンの徹底活用
by
JustSystems Corporation
「技術内閣制度」〜2年間やってきて得られた事とこれから〜 #devsumi
by
JustSystems Corporation
インパス! あのこれダメッス! ~Javaコードレビューの指摘ポイント10選~
by
JustSystems Corporation
最新のJava言語仕様で見るモジュールシステム #jjug
by
JustSystems Corporation
JustTechTalk#10windowsアプリでのテスト自動化事例
by
JustSystems Corporation
JavaでインメモリSQLエンジンを作ってみた
by
JustSystems Corporation
ジャストシステムのDevOps実例 今後の取り組み
by
JustSystems Corporation
TypeScriptの大規模開発への適用
by
JustSystems Corporation
CSSレイアウトでなぜ失敗するか?
by
JustSystems Corporation
JustTechTalk#11_スマイルゼミ顧客満足度への貢献
by
JustSystems Corporation
JustTechTalk#10 React開発における自動テスト実践
by
JustSystems Corporation
Kotlin is charming; The reasons Java engineers should start Kotlin.
by
JustSystems Corporation
UX実現に向けた社内の取り組みについて-訴求ファーストによる商品開発-
by
JustSystems Corporation
現役23名のPM:タイプ別マネジメントパターン
by
JustSystems Corporation
事業に貢献する商品開発と その成長の仕組み作り ~これからのエンジニアに必要とされるスキルとは~
by
JustSystems Corporation
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
1.
Spring Boot のWeb
アプリケーションをDocker に載せて AWSECS で動かしている話#jjug_ccc #ccc_g1JJUG CCC 2018 Fall2018/12/15
2.
自己紹介• 株式会社ジャストシステム 福嶋 航•
Twitter @fukushiw• Java歴約20年、JavaでWebサービス作っています• #Java100 本ノックの人https://github.com/JustSystems/java-100practices
3.
このセッションについて• 人生で初めて、WebサービスをDockerコンテナ化してAWS ECSを使ってプロダクションリリースしたものについての話です•
AWS ECS や Dockerコンテナ について、基本的なところは把握されている前提になっています• まだまだ慣れていないことやわかっていないことがあるため、セッション後や懇親会でぜひ情報交換させてください
4.
セッションの流れ1. システム構成(Dockerコンテナにしたもの、しなかったもの)2. 各自の開発環境とビルド・デプロイの流れ(マージリクエストの前にやることと後にやること)3.
β環境と本番環境、環境ごとの設定の切り替え(Gitのブランチ・プロファイル・環境変数をうまく使う)4. 本番運用に向けた「その他」の必要なこと(ログ出力設定、監視設定)5. まとめ
5.
1システム構成(Dockerコンテナにしたもの、しなかったもの)
6.
サービスの性質• 企業向けWebサービス• 24/7稼働•
個人向けWebサービスに比べ、アクセス頻度は高くない• 取り扱うデータ量は多い(数百GB~数TB)
7.
JJUG CCC 2018
Springの資料UIコア機能 外部連携RDBキャッシュキャッシュキャッシュ主要機能3 RDB主要機能2 RDB主要機能1 RDBサブ機能3サブ機能2サブ機能1サブ機能6サブ機能5サブ機能4RDBキャッシュキャッシュキャッシュRDBキャッシュサブ機能7 RDB各機能(コンテキスト)はそれぞれDockerコンテナとして動作(複数配置しALBで分散)し、REST APIでやりとり:
8.
もうちょっと具体的に(抜粋)InternetWeb Server /UI
containerothercontainersIndependentInstance2IndependentInstance 1GitLab
9.
AWS ECSの採択経緯• 弊社はAWSをよく使っていた•
Kubernetes の学習コスト懸念• AWS Fargate のランニングコスト懸念
10.
Dockerコンテナにしたもの• ほぼすべての機能(十数種類のコンテナ)• Availability
Zone A とAvailability Zone C にそれぞれ1つずつ配置(一部は2つずつ配置)• WebサーバのコンテナとUIのコンテナは同じタスク定義にして、他は別々のタスク定義にした(理由は後述)
11.
Dockerコンテナにしなかったもの• 将来 AWS
Fargate にスムーズに移行できる自信がなかったもの• 他ファイルシステムのボリュームをマウントしたり、バッチやWebサービスが協働して動作する機能• crontabに慣れ親しんでいているため、精神的に「EC2インスタンスだからいざとなればなんとかなる」と安心したかった機能当然、Dockerコンテナにしてもできる。できるのだが、なんか、保険的な・・・。
12.
WebサーバとUIのコンテナInternetWeb Server /UI
containerothercontainersIndependentInstance2IndependentInstance 1GitLab
13.
WebサーバとUIのコンテナ(拡大図)こうなっていますWeb Server UI
containerInternet宛先 https:443 http:80 http:8080Web Server UI container
14.
WebサーバとUIのコンテナWeb Server UI
containerInternet宛先 https:443 http:80 http:8080 http:8080本当はこうしたかったWeb Server UI container
15.
WebサーバとUIのコンテナX-Forwaded-ForX-Forwaded-ProtoX-Forwaded-Port---オリジナルIPhttps443オリジナルIPhttps443Web ServerのIPhttp8080Web Server
UI containerInternet宛先 https:443 http:80 http:8080 http:8080Web Server UI container
16.
WebサーバとUIのコンテナX-Forwaded-ForX-Forwaded-ProtoX-Forwaded-Port---オリジナルIPhttps443オリジナルIPhttps443Web ServerのIPhttp8080Web Server
UI containerInternet宛先 https:443 http:80 http:8080 http:8080Web Server UI container
17.
WebサーバとUIのコンテナX-Forwaded-ForX-Forwaded-ProtoX-Forwaded-Port---オリジナルIPhttps443オリジナルIPhttps443Web ServerのIPhttp8080UI container
にいる Spring Boot のリダイレクト応答(http:8080宛て)を 右側のALB が戻してくれず詰んだ(解決方法がわからなかった)Web Server UI containerInternet宛先 https:443 http:80 http:8080 http:8080Web Server UI container
18.
WebサーバとUIのコンテナで結局こうしたInternet宛先 https:443 http:80
http:8080Web Server UI containerWeb Server と UI container の Dockerコンテナを分けずに同一にするのは、「1コンテナ1アプリケーション」のベストプラクティスに反するので、踏みとどまったWeb Server UI container
19.
再掲InternetWeb Server /UI
containerothercontainersIndependentInstance2IndependentInstance 1GitLab
20.
2各自の開発環境とビルド・デプロイの流れ(マージリクエストの前にやることと後にやること)
21.
各自の開発環境• PC• メモリは16GB以上必須(24~32GBは欲しい)•
Windowsが多数派、Macな人もちらほら• IDEはほぼ皆何かしら使っている• Eclipse• IntelliJ IDEA• Visual Studio Code• など• Git• 一番早いのはコマンド :nerd_face:
22.
マージリクエストまで• Issueを作る/アサインする• 粒度はまちまち•
コーディング、テスト• ローカル用プロファイルで動作させる Spring Bootアプリケーションが入った Dockerコンテナをビルド・起動• 単体テストは、他マイクロサービスのところはモック• コードの自己レビュー
23.
マージリクエスト• 担当者以外が保守できるか、を最重視• 実装理由のコメントや、APIドキュメントも重視•
複雑なロジックはじっくり読む• マージ前の動作確認まではできなかった• 相当な量がやってくるので、時間的に無理• マージ後の確認でSpring Boot起動時にエラーになるとか、コンパイルエラーになるものもまれに……このあたりはシステム化したかったが、できなかった
24.
マージ後• GitLab CIで開発環境にデプロイ•
特定のブランチへのPUSHで以下を自動実行 jarビルド (mvn clean install) ↓ Dockerイメージビルド (docker-compose build) ↓ ECRに登録 (docker push) ↓ ECSのタスク定義&サービス更新 (ecs-deploy) ↓ Mattermostに通知 (curl)• GitLabでそのブランチにPUSHできる人を限定• 複数の環境ごとにブランチを用意(後述)
25.
マージが終わったらデプロイ
26.
すぐにデプロイされない罠• Dockerコンテナをホストポート固定で動作させる場合、1つのEC2インスタンスでは同一タスクは1つしか起動できない。ここで EC2インスタンス数=タスク数
にすると、デプロイ時の動作は タスク停止→draining→タスク起動となる。新しいタスクの起動が前のタスクのdrainingが完了するまで待たされるのですぐに新Dockerコンテナが起動しない。• ホストポートをダイナミックにすれば関係ない
27.
CASE 1EC2インスタンス数>タスク数の場合もうちょっと詳しく
28.
Case1 インスタンス数>タスク数Container A1タスク定義=
A1:1Instance 2(1)Instance1でA1:1タスク実行中Instance 1
29.
Case1 インスタンス数>タスク数Container A1タスク定義=
A1:1(2)新しいタスクA1:2はすぐにInstance2にデプロイ され、A1:1 は draining に。Instance 1Container A1タスク定義= A1:2Instance 2draining
30.
Case1 インスタンス数>タスク数(3)drainingされたコンテナは消えるInstance 1Container
A1タスク定義= A1:2Instance 2
31.
CASE 2EC2インスタンス数=タスク数の場合もうちょっと詳しく
32.
Case2 インスタンス数=タスク数Container A1タスク定義=
A1:1(1)Instance1とInstance2でA1:1タスク実行中Instance 1Container A1タスク定義= A1:1Instance 2
33.
Case2 インスタンス数=タスク数Container A1タスク定義=
A1:1(2)片方のインスタンスでdraining、もう一方は A1:1のままInstance 1Container A1タスク定義= A1:1Instance 2draining
34.
Case2 インスタンス数=タスク数Container A1タスク定義=
A1:2(3)drainingが完了すると新しいタスクがデプロイ され、もう一方がdrainingになる。Instance 1Container A1タスク定義= A1:1Instance 2draining
35.
Case2 インスタンス数=タスク数Container A1タスク定義=
A1:2(4)drainingが完了すると新しいタスクがデプロイ される。Instance 1Container A1タスク定義= A1:2Instance 2
36.
drainingにかかる時間• ターゲットグループの属性「登録解除の遅延」で指定• 新しいタスクをデプロイすると、すぐには置き換わらず、ここで指定した時間が経過するまで待たされる•
タイムアウトを長くすれば、処理中が途中で中断されるリスクは下がるが、デプロイに時間がかかってしまう
37.
3β環境と本番環境、環境ごとの設定の切り替え(Gitのブランチ・プロファイル・環境変数をうまく使う)
38.
複数のβ環境と1つの本番環境本番環境β環境1 β環境2 β環境3
39.
β環境1• 各マイクロサービスが最初に結合を行う環境• 更新サイクルが早い•
本線には取り込まない可能性があるものもここで試すことは可能(敷居が低い)• とはいえ影響のあるものは Mattermost で声を掛けてから
40.
β環境2• 第三者評価を行う環境• 開発チームがβ環境1で確認を終えているものがデプロイされる•
デプロイ手順も含めて本番環境に投入する前のリハーサルの場となる
41.
β環境3• 性能評価を行う環境• インスタンスタイプや台数は本番環境と同じ•
負荷を掛けて、本番環境に必要なインスタンスタイプやECSタスクの個数、割り当てメモリ等を導き出すための材料を得る
42.
プロファイルの切り替え• 各β環境や本番環境用はそれぞれプロファイルを分けて定義micro-service-1/src/main/resources/application-beta1.propertiesapplication-beta2.propertiesapplication-beta3.propertiesapplication-production.properties@Profile("application-beta1")
43.
ブランチの切り替え• ブランチポリシーは Git
Flow を採用• master, develop, feature, release, hotfix• GitLab CI でビルドする際は、環境ごとに別々のブランチにPUSH• β環境1ビルド・デプロイ用ブランチ、同2用、同3用• 本番環境ビルド・デプロイ用ブランチブランチを分けることでミス防止
44.
環境変数の利用• Spring Framewok
はプロパティファイルよりも環境変数を優先してくれるので、Docker イメージを作り直すことなく、ECSタスクの環境変数の変更(とサービスの更新)だけで動作設定を変更できる• Dockerイメージビルドして、ECRにアップロードして、・・・は、数分~十数分かかることも• ECSタスクの変更だけであれば数十秒のWeb画面操作だけで更新完了
45.
4本番運用に向けた「その他」の必要なこと(ログ出力設定、監視設定)
46.
ログ出力(要件)• 同一種類のコンテナのログは時系列に見たい• あとで分析に使えるようにしたい•
エラーレベルのものは監視アラートを出したい
47.
ログ出力(構成)Log ServerS3 Bucketcontainerson
EC2filefluentdmountEC2instancemainerrorZabbixagent
48.
ログファイル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" ]
49.
監視内容(プログラムの外側)• エラーログ監視• Zabbix
agent がエラーログファイルの変更を監視• EC2インスタンス監視(CPU/メモリなど)• ECS監視(リザーブ領域との対比等)• Docker space は特に重要• Webアクセス監視などなど
50.
監視内容(プログラムの内側)• ヘルスチェック• ALBからのヘルスチェックのエンドポイントを作成•
各マイクロサービスが依存するRDBやキャッシュへの通信の疎通まで確認。204 or 500 で応答。• アプリケーションメトリクス• 処理キューの長さ、動作スレッド数、など• 重要処理の処理時間も入れたかったが、これから
51.
未解決事件
52.
コンテナ間通信が502エラーInternetWeb Server /UI
containerothercontainersIndependentInstance2IndependentInstance 1GitLabここの通信が502になる1日に数回から十数回発生原因不明リトライで対処中誰か教えてください:pray:
53.
5まとめ
54.
まとめ• Spring BootアプリケーションのマイクロサービスはAWS
ECSで普通に使える• Webサーバと入口のコンテナだけ1つのタスクに同居させ、他は別々のタスクにした• Dockerコンテナ入れ替え時の待ち時間に注意• 3つのβ環境を含めた4環境で別々にGitLabCIでビルド・デプロイ、環境変数を活用• ログはコンテナから母艦経由S3へ• 監視はプログラムの外側と内側の両方
Download
[8]
ページ先頭
©2009-2025
Movatter.jp