Upgrade to Pro — share decks privately, control downloads, hide ads and more …

FiNCにおけるコンテナ活用事例

Kenji Suzuki
September 08, 2016

 FiNCにおけるコンテナ活用事例

Microservices Meetup Vol.3の登壇資料です
http://microservices-meetup.connpass.com/event/38244/

Kenji Suzuki

September 08, 2016
Tweet

More Decks by Kenji Suzuki

Other Decks in Programming

Transcript

  1. About Me •  @kenjiszk •  SRE Manager in FiNC – Infrastructure

    (AWS/Azure/GCPもそろそろ?) – 認証基盤 – セキュリティ – 情シス •  Before FiNC – Startup (iOS) – DeNA (Infrastructure)
  2. Microservices Meetup なんでもありです Microservices x Monitoring Microservices x Security Micorservices

    x Serverless Micorservices x 管理画面 Microservices vs モノリシック
  3. Agenda •  Containers(Docker) in FiNC – Development Environment (docker-compose) – Test in

    Docker Container (docker-compose) – Use in Service (docker swarm)
  4. Use in Service •  サービス環境でも利用検討 – Docker Engine 1.12 Swarm mode

    •  Cluster management •  Scaling •  Overlay network •  Load balancing •  Rolling updates – 触ってみた感じ、相当簡単に利用開始出来る
  5. Use in Service •  最終目標 – 全てのサービス環境をコンテナ運用(データストア などは除く) •  ミドルウェアの更新の容易さ • 

    デプロイ(カナリア、blue-green) •  開発、Test、QA、Produc\onまで同じイメージで •  スケーリング •  まず最初に – 1コンポーネントを試してみる
  6. Use in Service •  対象:フロントエンドサーバー –  現在開発中のオーケスト レーション層 –  新コンポーネントなので試

    しにswarm使ってみる事 に •  マイクロサービスの利点 –  DBが無いコンポーネント –  全てのトラフィックを受け るのでスケーリングの簡 単さに期待
  7. Use in Service •  service作成 – hRps://docs.docker.com/engine/swarm/ •  docker swarm init

    –  managerを作成 •  docker swarm join –  nodeで実行、クラスタに参加 •  docker service create –  サービス作成
  8. Use in Service docker service create --replicas 2 --name fes

    -p 8000:8000 finc/fes:v1 node app.js
  9. 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に向ける
  10. 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を利用
  11. Summary •  Containers(Docker) in FiNC – Development Environment (docker-compose) – Test in

    Docker Container (docker-compose) – Use in Service (docker swarm)