Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

構成イメージと使用技術 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を抽象化

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

まとめ 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.

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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