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.2k
マイクロサービスでのセキュリティパッチ含めた ライブラリ更新のつらみと取り組み / security-jaws-no13-kenjiszk
kenjiszk
2
1.2k
Rubyでブロックチェーンを実装してみた話 / Blockchain by Ruby
kenjiszk
2
640
FiNCのRelease Engineering / finc_release_engineering
kenjiszk
0
810
デプロイおじさんのお葬式 / 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
LLM本来の能力を解き放つサンドボックス技術とAI民主化への適用
yukukotani
3
4.8k
Developing with AI Agents — Codex, Claude Code & Cowork Practical Guide
x5gtrn
PRO
0
1.3k
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
1k
エージェンティックRAGにAWSで入門しよう!
har1101
9
1.9k
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
420
なぜ型を書くのか? TSKaigi2026で改めて考える #tskaigi_smarthr
kajitack
0
190
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
780
そのテスト、説明できますか?~LWテスト戦略FW~のご紹介
nakahara
0
190
その問い、本当に正しいですか?AI時代のエンジニアに必要な哲学と認知科学 / ai-philosophy-cognitive-science
minodriven
14
6.6k
Semantic Version 単位で戦略を柔軟に変えて、パッケージアップデートを自動化する
daitasu
1
330
Snowflake Summitでの新機能 CoCo / CoWork / snowflake-summit-2026-overall-what-new-coco
tatsuhiro
1
210
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
290
Featured
See All Featured
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Marketing to machines
jonoalderson
1
5.5k
Claude Code のすすめ
schroneko
67
230k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
Fireside Chat
paigeccino
42
4k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
エンジニアに許された特別な時間の終わり
watany
107
250k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Chasing Engaging Ingredients in Design
codingconduct
0
230
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.1k
Faster Mobile Websites
deanohume
310
32k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
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を積極利用したい方、ぜひお声がけください!