Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
FiNCにおけるコンテナ活用事例
Search
Kenji Suzuki
September 08, 2016
Programming
1.6k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
FiNCにおけるコンテナ活用事例
Microservices Meetup Vol.3の登壇資料です
http://microservices-meetup.connpass.com/event/38244/
Kenji Suzuki
September 08, 2016
More Decks by Kenji Suzuki
See All by Kenji Suzuki
VPoEのアンチパターンを考える / VPoE Anti-Pattern
kenjiszk
2
860
マイクロサービスにおける 最高のDXを目指して / Microservices vs DX
kenjiszk
7
5.1k
マイクロサービスでのセキュリティパッチ含めた ライブラリ更新のつらみと取り組み / security-jaws-no13-kenjiszk
kenjiszk
2
1.2k
Rubyでブロックチェーンを実装してみた話 / Blockchain by Ruby
kenjiszk
2
640
FiNCのRelease Engineering / finc_release_engineering
kenjiszk
0
790
デプロイおじさんのお葬式 / Good-Bye Deploy Ojisan
kenjiszk
0
1.1k
イーサリアムとスマートコントラクト入門 / BlockTecCo vol.1
kenjiszk
1
500
FiNCのデータ戦略と AWSでのデータプラットフォーム構築 / Healthcare Data in FiNC
kenjiszk
0
2.4k
FiNCにおけるブロックチェーンの取り組み
kenjiszk
1
1.9k
Other Decks in Programming
See All in Programming
メソッドのジェネリクスでGoの夢は広がるか? / Kyoto.go #65
utgwkk
3
580
JavaDoc 再入門
nagise
0
290
AutonomyとControlのあいだ:Graflowで記述するAIエージェント協調
myui
0
110
Observability in Practice:Grafana 與 Edge Device SRE 的那些事
blueswen
0
130
Spring Security 実践 ─ GraphQL APIで実務に役立つ 認証・認可 を学ぶ
wagyu
0
160
エージェンティックRAGにAWSで入門しよう!
har1101
8
1.2k
LLM Plugin for Node-REDの利用方法と開発について
404background
0
160
柔軟なPDFレイアウトエディタを支える型システム設計 — Discriminated UnionとConditional Typeの実践
minako__ph
4
1.4k
tsserverとは何だったのか、これからどうなるのか
nowaki28
1
450
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
650
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3.1k
AI時代の仕事技芸論 — ソフトウェア開発で「遊ぶように働く」職人的熟達のすすめ
kuranuki
1
620
Featured
See All Featured
New Earth Scene 8
popppiees
3
2.3k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2k
[SF Ruby Conf 2025] Rails X
palkan
2
1.1k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
The Pragmatic Product Professional
lauravandoore
37
7.3k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.5k
Testing 201, or: Great Expectations
jmmastey
46
8.2k
Typedesign – Prime Four
hannesfritz
42
3.1k
Documentation Writing (for coders)
carmenintech
77
5.4k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
250
The untapped power of vector embeddings
frankvandijk
2
1.7k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.5k
Transcript
FiNCにおけるコンテナ活用事例 - Microservices Meetup Vol.3 - @kenjiszk
About Me • @kenjiszk • SRE Manager in FiNC – Infrastructure
(AWS/Azure/GCPもそろそろ?) – 認証基盤 – セキュリティ – 情シス • Before FiNC – Startup (iOS) – DeNA (Infrastructure)
Microservices Meetup FiNCではMicroservices x ◯◯というテーマで 月イチ程度でMeetupを開催しています Vol.1 Microservices x Frontend
Vol.2 Microservices x SRE
Microservices Meetup 今回は Microservices x コンテナでやりませんか? というお誘いからテーマが決定 やりたいテーマがある方はお気軽に facebook、twiRerなどでメッセージください。
Microservices Meetup なんでもありです Microservices x Monitoring Microservices x Security Micorservices
x Serverless Micorservices x 管理画面 Microservices vs モノリシック
Agenda • Containers(Docker) in FiNC – Development Environment (docker-compose) – Test in
Docker Container (docker-compose) – Use in Service (docker swarm)
Development Environment
Development Environment • FiNCで一番最初にDockerを利用検討したコンポーネ ント(2015/06~) • Microservicesな構成でローカル開発をする場合 – 開発に必要なコンポーネントを全て立ち上げる必 要がある – 一つ一つセットアップするのが大変なので、
Dockerコンテナで一気に立ち上げ可能にする
Development Environment Prototypeは失敗に終わる…
Development Environment • 失敗要因 – Microserviceが多すぎてメモリが足りない • 最初から計算しておけ、ではなくMicroserviceが増えた – ディベロッパーのdocker学習コスト – docker image作成フロー
– VM on Macのパフォーマンス
Development Environment • 現在 – サーバー上に環境を構築する方向に修正 • 個人が気軽に1セットを立ち上げ、検証が終わったら捨 てる、みたいな環境を目指す • 引き続き、docker-composeで構築
– docker imageの作成フロー • Testがsuccessしたらそのコードをそのままdocker imageにする
Test
Test • Mo\va\on – 管理された環境でTestを走らせたい – 毎回同じ環境でTestしたい – Test環境を一瞬で構築したい • image化 – Test用のbaseイメージ立ち上げ – 特定branchのコードを配布
– Test実行、Successならそのままimage化
Test
Use in Service
Use in Service • サービス環境でも利用検討 – Docker Engine 1.12 Swarm mode
• Cluster management • Scaling • Overlay network • Load balancing • Rolling updates – 触ってみた感じ、相当簡単に利用開始出来る
Use in Service • 最終目標 – 全てのサービス環境をコンテナ運用(データストア などは除く) • ミドルウェアの更新の容易さ •
デプロイ(カナリア、blue-green) • 開発、Test、QA、Produc\onまで同じイメージで • スケーリング • まず最初に – 1コンポーネントを試してみる
Use in Service • 対象:フロントエンドサーバー – 現在開発中のオーケスト レーション層 – 新コンポーネントなので試
しにswarm使ってみる事 に • マイクロサービスの利点 – DBが無いコンポーネント – 全てのトラフィックを受け るのでスケーリングの簡 単さに期待
Use in Service • service作成 – hRps://docs.docker.com/engine/swarm/ • docker swarm init
– managerを作成 • docker swarm join – nodeで実行、クラスタに参加 • docker service create – サービス作成
Use in Service docker service create --replicas 2 --name fes
-p 8000:8000 finc/fes:v1 node app.js
Use in Service • 運用上必要な最低限のコンポーネント – Scaling – Deploy – Log収集 – Monitoring
Use in Service(Scale) docker service scale fes=3
Use in Service(Scale) • nodeの個数が変わらないうちはスケールは 自由 • nodeのScalingは別管理が必要
Use in Service(Deploy) • Rolling Updates – 立ち上がっているコンテナの一つをshutdown – 新しいバージョンのコンテナを起動 – 一つ一つ更新していく(間隔、並列数などのオプ ション指定可能)
– 新しいバージョンが立ち上がらない場合には処理 が止まる docker service update --image finc/fes:v2 fes
Use in Service(Log収集) docker service create \ --name logger \
-p 24224:24224 \ fluent/fluentd docker service create \ --replicas 2 \ -p 80:80 \ --log-driver=fluentd \ --log-opt=fluentd-address=localhost:24224 \ --name fes \ finc/fes:v2 • fluentdのserviceを事前に上げておく • log-dirverとlog-optをfluentdに向ける
Use in Service(Log収集) • 各コンテナは、localhost:24224に向けてlogをはく • lngress load balancingにより、上図の場合は、node2のfluentdに ログが集約される
• fluentdを複数コンテナ立てれば、ロードバランシングされる
Use in Service(Monitoring) docker service create \ --name dd-agent \
--mode global \ --mount type=bind,source=/var/run/docker.sock,target=/var/run/ docker.sock,readonly=false \ --mount type=bind,source=/proc/,target=/host/proc/,readonly=true \ --mount type=bind,source=/sys/fs/cgroup/,target=/host/sys/fs/ cgroup,readonly=true \ -e API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxx \ datadog/docker-dd-agent • コンテナ毎のリソースモニタリングを行うためDatadogを使用した • 各nodeにagentを立ち上げたいため、global modeを利用
Use in Service(Monitoring) 各コンテナのリソースを取得可能 リソースのまとめ方も選択可能
Use in Service(Monitoring)
Summary
Summary • Containers(Docker) in FiNC – Development Environment (docker-compose) – Test in
Docker Container (docker-compose) – Use in Service (docker swarm)
We are hiring! Dockerのエキスパートの方、Dockerを積極利用したい方、ぜひお声がけください!