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
830
デプロイおじさんのお葬式 / 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
What's New in Android 2026
veronikapj
0
240
React本体のコードリーディング
high_g_engineer
0
110
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cdk-from-scratch
gotok365
3
2.7k
yield再入門 #phpcon
o0h
PRO
0
830
人間の目はかわらない、だからJPEGは30年もつ
yuzneri
12
17k
Go言語とトイモデルで学ぶTransformerの気持ち / fukuokago23-transformer
monochromegane
0
150
komatsuna「分散システムにおけるバグ分析手法」
komatsunaqa
0
130
Foundation Models frameworkで画像分析
ryodeveloper
1
160
霧の中の代数的エフェクト
funnyycat
1
440
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
1
270
改善しないと、タスクが回らない。 “てんこ盛りポジション” を引き継いだ情シスの、入社3ヶ月の業務改善録
krm963
0
230
ルールを書いて終わらせないハーネスエンジニアリング
yug1224
4
1.8k
Featured
See All Featured
Git: the NoSQL Database
bkeepers
PRO
432
67k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
760
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.4k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Everyday Curiosity
cassininazir
0
270
For a Future-Friendly Web
brad_frost
183
10k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
400
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Visualization
eitanlees
152
17k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
400
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
Designing Experiences People Love
moore
143
24k
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を積極利用したい方、ぜひお声がけください!