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

トレタを支える技術(インフラ編)〜過去・現在・未来〜 / toreta tech talk#2

トレタを支える技術(インフラ編)〜過去・現在・未来〜 / toreta tech talk#2

株式会社トレタの技術部が主催するエンジニア向け勉強会「TORETA TECH TALK#2」にて公開した資料です。
イベント実施日:2019月8月2日
登壇者:柳樂 瑛(インフラエンジニア)
テーマ:トレタを支える技術(インフラ編)〜過去・現在・未来〜

0d7312294f03972adb12be977a49ac28?s=128

Toreta, inc.

August 02, 2019
Tweet

Transcript

  1. トレタを支える技術(インフラ編) 〜過去・現在・未来〜 1

  2. Introduction 柳楽瑛(@_wind­up­bird_) 2018 年末にトレタに Join SRE チーム所属 トレタのインフラ全般を担当 前職: メール配信/

    セキュリティサービス 2
  3. Agenda 過去 インフラの変遷 現在 アーキテクチャ 開発フロー/ 開発ツール 現状の課題 未来 今後やっていきたいこと

    まとめ 3
  4. 過去 : インフラの変遷 4

  5. インフラの変遷 創業(2013 年) 〜 2015 年 EngineYard, Heroku, AWS, GCP

    ( 主にBQ) 2016 年 EY => AWS へ全面的に移行 2017 年 〜 2018 年 Kubernetes (GKE) の採用 2019 年 〜 Kubernetes (EKS) の採用と移行 5
  6. インフラの変遷 2015 年 2019 年 6

  7. 現在 : 利用サービス 7

  8. 利用しているクラウドサービス AWS EC2, Aurora, S3, ELB, SQS, SNS, Route53, Lambda,

    Codebuild, ApiGateway, EKS ... トレタの主要サービス GCP BigQuery, Compute Engine, EKS, CloudFunction, StackDriver, GKE ... データ/ ログ解析, 一部toC 向けサービス, Backup ... Heroku 既存サービス, Feasibility Study ... 8
  9. 現在: アーキテクチャ 9

  10. アーキテクチャ 思想: シンプルで高可用性が設計の基本。 既存サービスA 代表例 LB (ALB, NLB) Nginx (EC2)

    = キャッシュ&R プロキシ Rails (EC2) = アプリケーション Redis (EC2) = Sidekiq 非同期処理 DB (Aurora) = Writer + Reader * 2 10
  11. 全体像 構成: コアAPI を主軸にスター型のサブシステム構成 11

  12. 現在: 開発フロー/ ツール 12

  13. 開発フロー Github GitFlow による開発 CI/CD 各 Branch への merge による自動化

    CircleCI 2.1 Feature: Build, Test, Dry­Run develop/master: staging/production deploy 13
  14. 開発ツール ( の一部) Packer + Ansible + Serverspec 各システム毎に定義 OS(ubuntu),

    MW(nginx, monit, mackerel­agent), *env, td­agent, Newrelic etc... Terraform 各システム毎に *.tf を定義 NW, LB, EC2 (Target Group, Listener, AutoScaling) etc... RoadWorker 作成したリソースに対して、DNS を設定。 14
  15. 現在 : 稼働率 15

  16. 稼働率 サービスの稼働は安定 16

  17. 現在: 無問題 17

  18. なわけがなく。。。 18

  19. 課題 OS まわり EOL => アップデート 各サブシステム毎にそれそれV­UP 最小含め約 10 サービス

    事前検証 + staging でリハーサル + 本番 すべてシステム無停止で実施(済) 今後もアップデートし続けなければならない。 19
  20. Packer まわり Packer の複雑化 使われていないコードが、たまによくある。 20

  21. Packer 実行時間 1 回の実行で40 分超も。。。 明らかに詰め込み過ぎた 段階的な build の仕組み 根本的に見直す必要が出てきた

    21
  22. EC2 まわり EC2 インスタンスの起動時間 AutoScaling で起動までに7 分 突発的なアクセスだと間に合わない可能性も 特に toC

    向けのサービスではクリティカル XXX on EC2 Managed サービスへの段階的な移行 EY 時代の名残もある。 これも今後移行していく(予定)。 22
  23. DB まわり 肥大化 ユーザ数、システム拡大に伴うトラフィックの増加 [App] switch_point の導入 [Infra] スケールアップで対応 ETL

    の処理時間 10 時間程度かかる 並列度あげる このままだと、いずれ頭打ちとなる可能性 DB の分割などアーキテクチャの見直し 23
  24. 未来: やっていきたいこと 24

  25. やっていきたいこと XXX on EC2 からの脱却 マネージドサービスへの移行を加速 MicroService 化 kubernetes の導入

    Auto Scaling, Auto Healing 障害の局所化 開発速度の向上 DB やそれ以外にも色々。。。 25
  26. まとめ 26

  27. 過去 トレタのインフラの変遷 現在 シンプルで高可用性 サービスの拡大やユーザの増加に伴い、どんどん課題も 出てきた 未来 開発速度の向上 安定かつ快適なサービスの継続的な提供 27

  28. 最後に 28

  29. https://corp.toreta.in/recruit/engineer/ 29