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

Interop2016_SDI_OpenStage-アドテクに必要なSDN_NFV_ca_yamamamoto.pdf

komeinw
June 13, 2016

 Interop2016_SDI_OpenStage-アドテクに必要なSDN_NFV_ca_yamamamoto.pdf

komeinw

June 13, 2016
Tweet

More Decks by komeinw

Other Decks in Technology

Transcript

  1. アドテクに必要なSDN/NFV
    サイバーエージェント
    アドテク本部
    山本 孔明
    @Interop Tokyo 2016

    View Slide

  2. Interop Tokyo 2016
    1. はじめに
    2. ネットワーク自動化をやってみた話
    3. REST APIの話
    4. 苦労したポイントとわかったこと
    5. おわりに
    Agenda

    View Slide

  3. 自己紹介
    Interop Tokyo 2016
    アドテク本部のインフラエンジニア。
    主にオンプレのネットワーク(物理/仮想)および
    OpenStackの一部を担当。
    • SDN Japan 2016 アドテクに必要なSDN
    • 「ネットワークを監視するZabbixの活用事例」
    [email protected] Tokyo 2015   など
    https://speakerdeck.com/komeiy/
    プロフィール@komeinw

    View Slide

  4. サイバーエージェントについて
    1998年の創業以来、インターネットを軸に事業を展開し
    現在では代表的なサービスである「Ameba」をはじめ、
    スマートフォン向けに多数のコミュニティサービスやゲームを提供しています。
    アドテク本部とは
    インターネット広告において、広告配信の最適化やメディアの収益最大化という観点から
    アドテクノロジーの重要度が高まっています。
    サイバーエージェントではアドテクノロジー分野におけるこれらのサービスについて
    各子会社を通じ開発しておりましたが、各サービスの開発部門を横断して組織化する専門部署としてアドテク
    本部が設立されました。
    Interop Tokyo 2016

    View Slide

  5. View Slide

  6. アドテク本部のインフラついて
    Interop Tokyo 2016
    https://www.cyberagent.co.jp/ir/personal/adtech/adtech_05/
     広告に関する多数のプロダクトが存在。
    アドテクと一言で表現していますが、その
    中の各プロダクトではそれぞれ別の役割を
    持ったシステムが稼働しています。
     アドテク本部のインフラとしては、各プロ
    ダクトのサービスに合わせて柔軟かつス
    ピードをもったインフラを提供すべくパブ
    リック・プライベートから最適なインフラを提
    供しています。

    View Slide

  7. サイバーエージェントのアドテク
    詳細は「日本一やさしいアドテク教室」を御覧ください!
    https://www.cyberagent.co.jp/ir/personal/adtech/adtech_01/
    Interop Tokyo 2016

    View Slide

  8. Interop Tokyo 2016
    今日は主にオンプレ環境の
    お話をします

    View Slide

  9. 求められるネットワークって?
    Interop Tokyo 2016
    Not 手作業 but 自動化

    View Slide

  10. Interop Tokyo 2016
    自動化?
    セルフサービス化?
    求められるネットワークって?

    View Slide

  11. SDNで解決?
    Interop Tokyo 2016
     SDNとは、コンピュータネットワークを構成する通信機器を単一のソフトウェアによって集中的に制御し、ネットワークの
    構造や構成、設定などを柔軟に、動的に変更することを可能とする技術の総称。
     また、そのような技術により、ネットワークの装置の配置や配線などの物理的構成とはある程度独立に、目的に応じて
    複数の仮想的なネットワークを構築することや、そのようにして構築されたネットワークのこと。これは「ネットワーク仮想
    化」とも呼ばれ、厳密にはSDNの応用の一つであり、また、SDNによらず別の技術によって実現する手法もあるため、
    SDNそのものとは区別する必要がある。
    出展: http://e-words.jp/w/SDN.html
    ざっくりまとめると、いわゆるSDNコントローラに相当するもの
    がプライベートクラウド基盤のデータベースと連携して動的に
    仮想的に作られたネットワークの設定を実行

    View Slide

  12. 弊社のネットワーク構成
    Interop Tokyo 2016
    • SDN な環境はある。 新たに作った一部の環境で採用
    • 必要に応じてその時々で最適なハードウェアを選択し採用している
    • 採用しているハードウェアについてはマルチベンダーで構成
    なるべくオープンな技術でSDNな環境と
    そうでない環境の両方をケアする必要
    がある

    View Slide

  13. Software Defined ではないネットワークのお仕事
    • VLAN追加/変更
    • ルーティング追加/変更
    • ロードバランサー設定追加
    • ACL追加
    • トラフィック確認
    • VPNユーザ追加/変更
    Interop Tokyo 2016
    • 増強などの構成変更
    • 新技術の検証
    • トラブルシュート
    • 構成管理
    • ベンダーコントロール
    etc…
    エンジニアとしては、
    ここに注力したい

    View Slide

  14. ネットワークエンジニアの悩み
    Interop Tokyo 2016
    「ACL追加してほしいんだけど。今日」
    「VPNユーザって今誰が登録されてましたっけ?」
    「トラフィックっていまどのくらい出てます?」
    面倒に思ったり後回しにしたと思いながら作業した
    経験はありませんか??

    View Slide

  15. 仕組み的によくないので、
    SDNではない環境でも
    楽な運用にしたい
    (全部SDNなら・・・ボ
    ソ)

    View Slide

  16. ということで、作ってみました。
    Interop Tokyo 2016

    View Slide

  17. 何を作った?どんな効果?
    • 公開用API Gateway
    • AWS CLIやgsutilみたいなコマンドの提供
    Interop Tokyo 2016
    • 少人数での運用をカバー
    • 新規サービスの立ち上げスピードを損なわない仕組み
    • つまらない作業は極力やりたくない
    ダメ。作業ミス、リリース日への影響、エンジニアのモチベーション低下
    この二つがあれば自動化・セルフサービス化は促進できる

    View Slide

  18. Interop Tokyo 2016
    プライベートクラウドの操作イメージ
    • 学習コストが低い(アプリケーションの開発者が
     各製品固有のコマンドを覚える必要がない)
    • 簡単にJOBに組み込んだりすることが可能
    • 思い立ったときにすぐインフラの操作ができる
    こんな感じでのルータ・スイッチ・ロードバ
    ランサー、Neutronの設定ができる。
    Regionの概念も持たせています

    View Slide

  19. Interop Tokyo 2016
    サービスメニュー
    • 新規サービスが立ち上がるごとに増えるもの
    や操作するものを基本に構成
    • 基幹系の作業は特定のユーザ権限のみでし
    か触れないように制御
    • サービスメニューは右記以外にも複数存在
    • DC内のローカルレポジトリから配布

    View Slide

  20. 構成イメージと使用技術
    Interop Tokyo 2016
    • 言語
    Python
    Shell Script
    • ソフトウェア
      Flask
    Nginx
    Gunicorn
    その他
    API Server
    出展:https://dzone.com/articles/learn-python-overtakes-learn-java
    "Learn Python" Overtakes "Learn Java" on Google Trends
    認可・認証
    REST API
    REST API
    REST API
    SSH
    command
    他には
    ・・・
    リージョンごとに
    NWを抽象化

    View Slide

  21. なぜREST APIを
    採用したのか
    Interop Tokyo 2016

    View Slide

  22. REST APIの話
    Interop Tokyo 2016
    • エラー処理が楽
    • ヒューマンエラーさようならに近づく
    • ネットワークエンジニア以外でも操作しやすい
    • 構成管理は苦手
    • 適材適所で使いましょう
    アプリケーションプログラミングインタフェース (API、英: Application Programming Interface) とは、ソフトウェアコンポーネントが互いにやりと
    りするのに使用するインタフェースの仕様である。 APIには、サブルーチン、データ構造、オブジェクトクラス、変数などの仕様が含まれる。
    出展:API - ウィキペディア https://ja.wikipedia.org/wiki/アプリケーションプログラミングインタフェース

    View Slide

  23. Interop Tokyo 2016
    Chatで話かけると・・・
    SVI / VLAN作成、LB設定、Neutron設定、テスト、テスト環境削除
    までの一連の流れを実施。結果はChatで通知。
    API化するとChatOpsが楽になる

    View Slide

  24. Interop Tokyo 2016
    API化するとChatOpsが楽になる

    View Slide

  25. Interop Tokyo 2016
    • グラフィカルな部分はChatでできるようにして
    おくと以外と便利。
    • “頼まれる側” も ”頼む側” に取ってもストレス
    フリー
    • 他にも可視化と簡単なプロビジョンで活用
    • Jobに組み込んだりする可能性があるものは、
    CLIないしはAPIで提供した方がよい
    API化するとChatOpsが楽になる

    View Slide

  26. Interop Tokyo 2016
    世間一般のSDNとは違うけど、
    これも一つの
    Software Defined Network

    View Slide

  27. 苦労したポイント
    Interop Tokyo 2016
    • APIなしの機器を操作する場合、expectで対応せざるを得ない
      →処理が途中で止まるとか・・・
       負担にならない程度のエラー処理を。
    • 問題があった時の切り分けをどうするか
      → Debugオプションを実装。Client側で取れるように。
        APIのエラーコードとメッセージをクライアント側へ出力
    • REST APIの設計
      → 素人がやったので汚い。苦労した方が良かったポイント。
        後悔。

    View Slide

  28. わかったこと
    Interop Tokyo 2016
    • 権限周りは自分で作ったほうがいい
      → 各機器の機能差を吸収する必要あり
    • 商用に頼りすぎてベンダーロックインにならないよう注意
      → コントローラー乱立もちょっと・・・
    • でも自作で属人化にも注意。エンジニアに一定のレベルを
      → チーム開発できる環境を

    View Slide

  29. まとめ
    Interop Tokyo 2016
    OpenStackにネットワークを追従させることは可能
    少しの工夫でネットワークの運用を変えるができる
    5分の手作業より15分でコードを書きましょう(そんな時代?)
    Automation is the new skillset that network engineers need to pick up. Much like sysadmins have had to
    learn how to use new tools like Chef and Puppet, network engineers are learning that they just can't do
    things manually anymore. With examples in each chapter, this practical book provides you with baseline
    skills in network programmability and automation, using a range of technologies including Linux, Python,
    JSON, and XML. No previous knowledge of software development, programming, automation, or
    DevOps is required.

    View Slide

  30. サイバーエージェント アドテク本部
    Tech Blog 始めました!
    Interop Tokyo 2016
    http://adtech.cyberagent.io/techblog/
    一緒にアドテク本部を盛り上げてくれる方
    絶賛募集中です

    View Slide

  31. なにかご質問があればお願いします
    Q and A
    Interop Tokyo 2016

    View Slide

  32. アドテクに必要なSDN/NFV
    サイバーエージェント
    アドテク本部
    山本 孔明
    @Interop Tokyo 2016
    ご清聴ありがとうございました!

    View Slide