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
870
マイクロサービスにおける 最高のDXを目指して / Microservices vs DX
kenjiszk
7
5.3k
マイクロサービスでのセキュリティパッチ含めた ライブラリ更新のつらみと取り組み / 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
メールのエイリアス機能を履き違えない
isshinfunada
0
240
わからない話を追いかけたら、プログラミング言語を作る側にいた
ydah
3
520
源内ハンズオン概要編
hideg
0
190
バグを直したら useEffect が消えた
colorful12
3
640
プロポーザルを書いてもらう
pvcresin
0
560
型も通る、synthも通る、それでも危ない 〜AIのCDKの権限とコストを機械で検証する〜 / It Passes Type Checks, It Passes Synth Checks, but It’s Still Risky — Automatically Verifying Permissions and Costs in AI’s CDK —
seike460
PRO
1
570
改善しないと、タスクが回らない。 “てんこ盛りポジション” を引き継いだ情シスの、入社3ヶ月の業務改善録
krm963
0
270
いまどきの Codex で開発する visionOS アプリの開発スタイルについて
karad
0
150
運用ダッシュボードの設計を誰も教えてくれないのだけどみなさんどうしてるんですか? - チームに監視するという文化を根付かせるための第一歩を踏みたい -
satoshi256kbyte
1
130
freee が目指す データ マネジメント戦略 AI-Ready 時代を支える 攻めのガバナンスとは
freee
PRO
0
430
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
4.8k
「寝てても仕事が進む」Claude Codeで組む第二の脳
tomoyafujita2016
0
340
Featured
See All Featured
The Limits of Empathy - UXLibs8
cassininazir
1
610
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
What's in a price? How to price your products and services
michaelherold
247
13k
Speed Design
sergeychernyshev
33
2k
Code Review Best Practice
trishagee
74
20k
How to Ace a Technical Interview
jacobian
281
24k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
From π to Pie charts
rasagy
0
300
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
400
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
270
Navigating Team Friction
lara
192
16k
[SF Ruby Conf 2025] Rails X
palkan
2
1.3k
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を積極利用したい方、ぜひお声がけください!