SlideShare a Scribd company logo
ネットワークへの
CI的アプローチ
自己紹介
● Name: 田中 進
● Company: 株式会社エーピーコミュニケーションズ
● Job: ネットワークテスト自動化アプライアンス
NEEDLEWORKを作っています。
では始めたいと思います。
と、その前にちょっと補足
継続的インテグレーションとは
● ソフトウェア開発の世界で作られた言葉
● 随時、変更を統合(コードをマージ)
● 随時、試験をする(例えば結合テストであったり、ビルドを通すであった
り。どこまでやるかは様々)
※定義や解釈は様々だが、今回ここではこう定義します。
 (Wikipediaのエクストリーム・プログラミングの説明が一番しっくり来ます)
継続的インテグレーションを
ネットワークに適用。
こんな話をしていきます。
本日話す内容
-
1. ファイヤーウォールを運用するにあたっての痛み
(気持ち面、金額面、何が悪いのか?)
2. 痛みを解決するためのアプローチ
(どこに、どうやってアプローチするのか。デモ動画付き。)
3. どんな価値を提供するのか
ファイヤーウォールを運用していて
辛かったこと
つらい構図
● 仕事量が釣り合ってない
● 承認フロー長くなりがち
作業者
依頼者
起きていたこと(トラブル)
-● 承認フローを迂回した闇作業によって、通信断を
起きる
● ACL上限に達し即興リファクタしての障害
● 要件漏れによる再作業
疲れる。ツライ。
発生した損失
● 稼働
○ システム停止をリカバる手運用作業
○ 障害報告
● システム停止の損失
○ 機会損失
※規模によるが年間売上を一時間あたりで割ると、1時間あたり、数百万とか、数千万とかになる。
 ECサイト売上ランキングとか見ると、機会損失って大きいと感じますね。
損失:数百〜数千万
取り組む価値は十分にある
ここで何が悪かったか振り返る
● 簡単にトライアンドエラーできなかったのがイケないのでは?
○ 現実的に考えるとIT業界はスピード感を求められてる。
● テストを脳内試験でやっていた
● 何が必要かわからないのにシステムを作ろうとしていた(これは今回対象
外)
● 人員に対しての作業量が多い
● 承認フローが機能していない[結局、信頼できない]
何が悪かったか振り返る(ざっくり)
何が悪かったか振り返る(整理)
患部はここ
・依頼が多すぎる
作業量
・作業ミス
作業
理由はこれかな
・人の処理量、与えられた工数を超過してる。
作業量
・脳内試験
・貧弱な目grep
・簡単にトライアンドエラーできない
作業
・チェックが機能してない
承認
・形骸化
・脳内試験
承認
● リソース[人員]には限界がある
● 人がもっとも不正確
では、どうすればいいか?
不正確な処理を自動化で
カバーするしかない!
【本題】ネットワーク機器をCIする
どこへのアプローチ?
このへんにアプローチ
運用 依頼者(PJ) レビュー
作業依頼脳内テスト
手順書作成
作業(複雑)
脳内テスト
承認
何をCIする?
● 正直コンフィグ全体は難しい
○ すべての機能を確認できるようにしなくてはならない?
○ やるなら特定の設定のみにフォーカスしたい。
● ansibleのplaybookなら?
○ playbookなら特定の設定のみにフォーカスして定義可能
**AnsibleのplaybookでACLを管理する**
"動く検証されたマージ済みコード(バイナリ)がほしい"のと同様に、
"動く検証された設定ファイルがほしい"
ACLにフォーカスした
AnsibleのplaybookをCI
● 手段は様々
○ pyATS・・・機器の状態確認のイメージ
○ batfish・・・コンフィグ解析して独自ロジックで意図した通信が通るか判定する。
(脳内テストの自動化のイメージ)
○ 実際にパケットを流す
● 今回は最も本番環境に近い、実際に機器にデプロイしパケットを流す
何をもって検証するか?
"実際に機器にデプロイ"することで構文チェックを通す
"パケットを流す"ことによって、要件の通信、既存の通信のチェックができる
実際にパケットを流す
スコープと
実装方式がわかった
ところで
試験実装
試験実装(構成)
gitlab server
gitlab runner
+
Ansible
2.push
1.playbookを編集
3.マージ
4.CI開始
5.コンフィグ投入
6.テスト
パケット
送受信
コンポーネント紹介
設定自動化はAnsible
Ansibleによる自動設定投入
今回は書いたyamlの通りに、ACLが設定されていることを担保
コード管理、CIはgitlab
gitlabによるコード管理。CIの実行(自動設定のキック、テストのキック)
テスト機能
NEEDLEWORKによるFirewall自動テスト
周辺ネットワークをシミュレートし、試験を行う。
実はRESTをしゃべる。
RESTで命令してパケットを投げさせることが可能。
※この辺はOSSなりでコードを書けば代替可能
※実はAPIを叩くのは公式ではサポートしていない。開発者だからできるこ
とである。
こんな感じで使うアプライアンス
本来はWEBUIからアクセスして、テスト実行
今回は、
NEEDLEWORKのAPIを
直に叩きます
デモ
インター
ネット
インター
ネット
作業前コンフィグ
(WEBアクセス可)
設定変更
(作業ミス)
作業後コンフィグ
(WEBアクセス不可)
WEB接続不可を
自動検出
内容
本番に反映する
前だからセーフ
後日配信されるJuly tech
Fest2020のyoutubeで見て
ください。
これが出来たところで
何が変わる?
フローで見ると
ASIS
運用 依頼者(PJ) レビュー
作業依頼脳内テスト
手順書作成
作業(複雑)
脳内テスト
承認
TOBE
運用 依頼者(PJ) レビュー
作業依頼コード編集
脳内テスト
自動テスト
作業(単純)
自動チェック
承認
自動で判定するのに
そもそも必要?
手順作成
自
動
化
どんな価値を提供するのか?
人力(いい加減) => 自動(正確)
止まる => 止まらない
(価値をユーザーに提供し続ける)
(機会損失が減る)
精神的負荷ダウン
(離職リスク低下)
ん゛〜百万円規模の効果
自動化って
すごい価値がありますね!
まとめ
自動化は社会(個人・社員・会社)に対し価値を提供する。
ネットワークのCIは価値提供のアプローチとして十分に可能性あり。
良い自動化ライフを!
Appendix
Appendix: 今日話したプロダクトのリンク集
● pyATS
○ URL:https://developer.cisco.com/pyats/
● batfish
○ URL:https://www.batfish.org/
● NEEDLEWORK
○ URL: https://www.ap-com.co.jp/ja/needlework/
● gitlab
○ URL: https://www.gitlab.jp/
● Ansible
○ URL: https://www.ansible.com/

More Related Content

Similar to ネットワークへのCI的アプローチ

ソフトウェア開発の現場風景
ソフトウェア開発の現場風景ソフトウェア開発の現場風景
ソフトウェア開発の現場風景
Koichi ITO
 
Itで中小企業の生産性向上5
Itで中小企業の生産性向上5Itで中小企業の生産性向上5
Itで中小企業の生産性向上5
小島 規彰
 
依頼を頼まれるアピールの仕方.pdf
依頼を頼まれるアピールの仕方.pdf依頼を頼まれるアピールの仕方.pdf
依頼を頼まれるアピールの仕方.pdf
ssusera9322b
 
これからのOpenShiftの話をしよう
これからのOpenShiftの話をしようこれからのOpenShiftの話をしよう
これからのOpenShiftの話をしよう
Kazuto Kusama
 
イケてない開発チームがイケてる開発を始めようとする軌跡
イケてない開発チームがイケてる開発を始めようとする軌跡イケてない開発チームがイケてる開発を始めようとする軌跡
イケてない開発チームがイケてる開発を始めようとする軌跡
NTT Communications Technology Development
 
攻略ユニットテスト with Win32 API
攻略ユニットテスト with Win32 API攻略ユニットテスト with Win32 API
攻略ユニットテスト with Win32 API
Ryo Amano
 
保守性の高いアプリケーション設計について
保守性の高いアプリケーション設計について保守性の高いアプリケーション設計について
保守性の高いアプリケーション設計について
TomomitsuKusaba
 
自動化の下ごしらえ
自動化の下ごしらえ自動化の下ごしらえ
自動化の下ごしらえ
akira6592
 
Introduction to NetOpsCoding#2
Introduction to NetOpsCoding#2Introduction to NetOpsCoding#2
Introduction to NetOpsCoding#2
Taiji Tsuchiya
 
Jenkinsではじめる継続的インテグレーション
Jenkinsではじめる継続的インテグレーションJenkinsではじめる継続的インテグレーション
Jenkinsではじめる継続的インテグレーション
Masanori Satoh
 
【第1回】アジャイル・スクラム勉強会
【第1回】アジャイル・スクラム勉強会【第1回】アジャイル・スクラム勉強会
【第1回】アジャイル・スクラム勉強会
Satoshi Harada
 
20121124 学生セミナー「基礎からわかる! IT業界とプログラミング」
20121124 学生セミナー「基礎からわかる! IT業界とプログラミング」20121124 学生セミナー「基礎からわかる! IT業界とプログラミング」
20121124 学生セミナー「基礎からわかる! IT業界とプログラミング」Takashi Uemura
 
Distributed Agile using UML
Distributed Agile using UMLDistributed Agile using UML
Distributed Agile using UML
Kenji Hiranabe
 
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
NTT DATA Technology & Innovation
 
.NET 7期待の新機能
.NET 7期待の新機能.NET 7期待の新機能
.NET 7期待の新機能
TomomitsuKusaba
 
とある社内ビックデータ基盤にバッチ用コンテナ基盤を構築してみた
とある社内ビックデータ基盤にバッチ用コンテナ基盤を構築してみたとある社内ビックデータ基盤にバッチ用コンテナ基盤を構築してみた
とある社内ビックデータ基盤にバッチ用コンテナ基盤を構築してみた
Hiroshi Toda
 
About cloneko(與那城雄について)
About cloneko(與那城雄について)About cloneko(與那城雄について)
About cloneko(與那城雄について)
Yuu Yonashiro
 
Web制作者視点で理解するソフトェアテスト
Web制作者視点で理解するソフトェアテストWeb制作者視点で理解するソフトェアテスト
Web制作者視点で理解するソフトェアテスト
祐磨 堀
 
とりあえず30分でひととおり分かった気にはなれるアジャイル入門
とりあえず30分でひととおり分かった気にはなれるアジャイル入門とりあえず30分でひととおり分かった気にはなれるアジャイル入門
とりあえず30分でひととおり分かった気にはなれるアジャイル入門
陽一 滝川
 
01 idea table3.0
01 idea table3.001 idea table3.0
01 idea table3.0
umisuzume
 

Similar to ネットワークへのCI的アプローチ (20)

ソフトウェア開発の現場風景
ソフトウェア開発の現場風景ソフトウェア開発の現場風景
ソフトウェア開発の現場風景
 
Itで中小企業の生産性向上5
Itで中小企業の生産性向上5Itで中小企業の生産性向上5
Itで中小企業の生産性向上5
 
依頼を頼まれるアピールの仕方.pdf
依頼を頼まれるアピールの仕方.pdf依頼を頼まれるアピールの仕方.pdf
依頼を頼まれるアピールの仕方.pdf
 
これからのOpenShiftの話をしよう
これからのOpenShiftの話をしようこれからのOpenShiftの話をしよう
これからのOpenShiftの話をしよう
 
イケてない開発チームがイケてる開発を始めようとする軌跡
イケてない開発チームがイケてる開発を始めようとする軌跡イケてない開発チームがイケてる開発を始めようとする軌跡
イケてない開発チームがイケてる開発を始めようとする軌跡
 
攻略ユニットテスト with Win32 API
攻略ユニットテスト with Win32 API攻略ユニットテスト with Win32 API
攻略ユニットテスト with Win32 API
 
保守性の高いアプリケーション設計について
保守性の高いアプリケーション設計について保守性の高いアプリケーション設計について
保守性の高いアプリケーション設計について
 
自動化の下ごしらえ
自動化の下ごしらえ自動化の下ごしらえ
自動化の下ごしらえ
 
Introduction to NetOpsCoding#2
Introduction to NetOpsCoding#2Introduction to NetOpsCoding#2
Introduction to NetOpsCoding#2
 
Jenkinsではじめる継続的インテグレーション
Jenkinsではじめる継続的インテグレーションJenkinsではじめる継続的インテグレーション
Jenkinsではじめる継続的インテグレーション
 
【第1回】アジャイル・スクラム勉強会
【第1回】アジャイル・スクラム勉強会【第1回】アジャイル・スクラム勉強会
【第1回】アジャイル・スクラム勉強会
 
20121124 学生セミナー「基礎からわかる! IT業界とプログラミング」
20121124 学生セミナー「基礎からわかる! IT業界とプログラミング」20121124 学生セミナー「基礎からわかる! IT業界とプログラミング」
20121124 学生セミナー「基礎からわかる! IT業界とプログラミング」
 
Distributed Agile using UML
Distributed Agile using UMLDistributed Agile using UML
Distributed Agile using UML
 
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
 
.NET 7期待の新機能
.NET 7期待の新機能.NET 7期待の新機能
.NET 7期待の新機能
 
とある社内ビックデータ基盤にバッチ用コンテナ基盤を構築してみた
とある社内ビックデータ基盤にバッチ用コンテナ基盤を構築してみたとある社内ビックデータ基盤にバッチ用コンテナ基盤を構築してみた
とある社内ビックデータ基盤にバッチ用コンテナ基盤を構築してみた
 
About cloneko(與那城雄について)
About cloneko(與那城雄について)About cloneko(與那城雄について)
About cloneko(與那城雄について)
 
Web制作者視点で理解するソフトェアテスト
Web制作者視点で理解するソフトェアテストWeb制作者視点で理解するソフトェアテスト
Web制作者視点で理解するソフトェアテスト
 
とりあえず30分でひととおり分かった気にはなれるアジャイル入門
とりあえず30分でひととおり分かった気にはなれるアジャイル入門とりあえず30分でひととおり分かった気にはなれるアジャイル入門
とりあえず30分でひととおり分かった気にはなれるアジャイル入門
 
01 idea table3.0
01 idea table3.001 idea table3.0
01 idea table3.0
 

ネットワークへのCI的アプローチ