Slide 1

Slide 1 text

ネットワークエンジニア こそGASを覚えるべきと思っ た話 CyberAgent アドテク本部 山本 孔明

Slide 2

Slide 2 text

❏ 山本 孔明 アドテク本部のインフラ組織所属のエンジニア 今はプライベートクラウドチームのリーダーをやっていま す 主な業務 ● オンプレとパブリックのネットワーク(物理/仮想) ● OpenStack / CircleCI / Aritifactory ...etc ● チームマネジメント 自己紹介

Slide 3

Slide 3 text

アドテク本部について インターネット広告において、広告配信の最適化やメディアの収益最大化という観点から アドテクノロジーの重要度が高まっています。 サイバーエージェントではアドテクノロジー分野における これらのサービスについて各子会社を通じ開発しておりましたが、 各サービスの開発部門を横断して組織化する専門部署として アドテク本部が設立されました。

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

ポート表の作成ってめんどくさい・・・ ● モデルごとに違うポート番号 ● ディスクリプションに書いてあることを転記する無駄感 ● スイッチの VLAN 変えたらポート表を変えないといけない二度手間感 ● 更新を何回か忘れて管理が事実上崩壊 そもそもポート表を作るのが本質ではない・・・!!

Slide 6

Slide 6 text

で、どうする? ● Ansible で管理すればいいのでは? ○ ios_config 並べるみたいな管理を全メーカーやる・・・? ○ ( 割とありかもしれない ) ● GitHub にコンフィグを自動でアップしておけばいいのでは? ○ 簡単だけどネットワークエンジニア以外の可読性がいまいち問題 ○ ( 便利っちゃ便利なので活用はしている )       そういえば、ポート表を自動生成する方法はないのかな?

Slide 7

Slide 7 text

Ansible 2.4の話 Ansible 2.4 でネットワークプログラマビリティな運用を考える  https://adtech.cyberagent.io/techblog/archives/3801 ● parse_cli_textfsm + ntc-templates がスーパー便利 ● ios_command などで各メーカーの ネットワーク機器を操作するのは割と楽 ● json で情報取れるので加工しやすい

Slide 8

Slide 8 text

あ、Databaseに入れちゃえば いいんじゃない??

Slide 9

Slide 9 text

Databaseに入れることで ● いろんな場面で二次利用できる ● フロントに Redash 使ったりして可視化が楽 ● スプレッドシート使えばまさにポート表いらない ファイル共有のしやすさ、同時編集などを考えると CSV よりスプレッドシートがおすすめ。

Slide 10

Slide 10 text

構成概要 MySQL Switch Jenkins ① ② ③ 定期取得

Slide 11

Slide 11 text

GAS (Google App Script) について ● JavaScript をベースにしている ● カレンダーやスプレッドシートなど多数の Google Apps を操作可能 ● マニュアルがしっかりしている ● こういうレベルの活用なら学習コストが意外と低い Let’s Try GAS!!

Slide 12

Slide 12 text

結構簡単にできちゃう ● DB に接続してテーブル作る例 SQL そのまんま !!

Slide 13

Slide 13 text

今回GASでやること ● DB に接続 ● 任意のテーブルを select する ● 目的のシートに書き出す すごく Simple !!

Slide 14

Slide 14 text

今回GASでやること ● DB に接続 ○ var conn = Jdbc.getConnection(dbUrl, user, userPwd); ○ var stmt = conn.createStatement(); ● 任意のテーブルを select する ○ var result = stmt.executeQuery(sql); ● 目的のシートに書き出す ○ var sheet = SpreadsheetApp.getActiveSheet(); ○ var cell = sheet.getRange('A1'); ○ cell.offset(row, 0).setValue(results.getString(1)); やっぱり Simple !!

Slide 15

Slide 15 text

技術的なハードルは 意外と低い?

Slide 16

Slide 16 text

まとめ ● とりあえず DB へ入れておくとなにかと便利 ● フロントにはスプレッドシートがおすすめ ● この用途なら GAS はそんなに難しくない ● 自動化するコストとポート表にかけてるコストと要相談 プライベートクラウドでそもそも ポート表に管理コストそんなにか かってない疑惑・・・。