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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
510
FiNCのデータ戦略と AWSでのデータプラットフォーム構築 / Healthcare Data in FiNC
kenjiszk
0
2.4k
FiNCにおけるブロックチェーンの取り組み
kenjiszk
1
1.9k
Other Decks in Programming
See All in Programming
tsc.rip を支える技術 / Kyoto.なんか #8
susisu
0
4.3k
Hello, Hiroshima Geospatial Data! — Exploring DoboX with Python
ra0kley
0
170
Vibes Containers 〜AIで変わるコンテナ設計と運用〜
tkikuc
1
470
go-spidermonkeyでAIエージェントのCode Modeを実装する
syumai
3
1.5k
From 6 People Classroom Meetup to 100 People Regional Conference / FOSS4G Hiroshima 2026
furukawayasuto
0
100
AI に Inclusive UI を書かせよう — Design Rules Skill で Compose UI を作り直す
theoriatec2024
1
440
Seeing Through Serverless: Observability for AWS Lambda with ADOT and CloudWatch Application Signals
seike460
PRO
1
120
高専、大学編入、そして未踏へ〜プロダクト開発とキャリアの歩み - Technical College, University Transfer, and On to “Mitou” / My Journey in Product Development and Career
pkmiya
0
140
高専キャリア LT 発表内容
crysta1221
6
5.5k
FastAPI の並行処理モデルを完全に理解する
hoto17296
9
3.7k
新人はどこまで自力でやり、どこからAIに頼るべきか/エンジニア育成に向き合う_先輩たちの悩みと知見共有会
toppan_digital_dev
1
560
AWS DevOps Agentで インシデント対応をAIに任せたい
honmarkhunt
5
1k
Featured
See All Featured
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
Darren the Foodie - Storyboard
khoart
PRO
3
3.9k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
920
Fireside Chat
paigeccino
42
4k
My Coaching Mixtape
mlcsv
0
300
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
660
Building Applications with DynamoDB
mza
96
7.2k
Claude Code のすすめ
schroneko
67
230k
Navigating Team Friction
lara
192
16k
Optimizing for Happiness
mojombo
378
71k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
The Invisible Side of Design
smashingmag
301
52k
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を積極利用したい方、ぜひお声がけください!