$30 off During Our Annual Pro Sale. View Details »

IIS URL Rewrite のユニットテストをしよう! /iis-url-rewrite-unit-test

minato128
October 07, 2017

IIS URL Rewrite のユニットテストをしよう! /iis-url-rewrite-unit-test

.NET Conf 2017 Tokyo, Japan の LT
https://csugjp.connpass.com/event/66004/

minato128

October 07, 2017
Tweet

More Decks by minato128

Other Decks in Programming

Transcript

  1. IIS URL Rewrite の
    ユニットテストをしよう!
    株式会社一休
    宿泊事業本部 開発部
    飯迫 正貴
    2017/10/07 LT

    View Slide

  2. IIS URL Rewrite とは?

    View Slide

  3. IIS URL Rewrite とは?
    • URL Rewrite Module
    • https://docs.microsoft.com/en-us/iis/extensions/url-rewrite-
    module/using-the-url-rewrite-module
    • 設定に書いたルールに従ってURLを書き換えてくれる

    View Slide

  4. 課題

    View Slide

  5. 課題
    • 便利な反面、継ぎ足し続けるとわけが分からなくなる
    • 負債化しやすい
    • 全体が理解できず、変更すると他が壊れるのではという恐怖
    • ジェンガ状態
    • 気軽にリファクタリングできない

    View Slide

  6. www.ikyu.com/rewrite.config

    View Slide

  7. きっかけ
    • ある日の会議の雑談
    • わたし「そういえばRewriteがバグりやすいんですよねえ」
    • CTO「はてなでは rewrite のテスト書いてたよ」
    • http://d.hatena.ne.jp/onishi/20101017/1287277579
    • 数日後
    • しばやん「テスト用のライブラリ作りました」
    • http://blog.shibayan.jp/entry/20160620/1466392651

    View Slide

  8. IIS Express TestKit

    View Slide

  9. IIS Express TestKit
    • Rewrite Rule のテストが書けるハイパー便利ツール
    • Outbound Rule も対応
    • OSS
    • https://github.com/shibayan/iisexpress-testkit

    View Slide

  10. IIS Express TestKit

    View Slide

  11. Project Example

    View Slide

  12. Rewrite Rule Example

    View Slide

  13. Outbound Rule Example

    View Slide

  14. 運用してみた

    View Slide

  15. 運用してみた
    • 壊れるのを恐れず、気軽に変更できるようになった
    • 最高
    • CI に Rewrite のユニットテストを追加
    • 不正なRewriteがリリースされる事故がなくなった
    • データセンターからクラウドに移行したときにも活躍
    • PaaSに乗せるためアプリを分割したらテストが通らなくなった
    • 通らなくなったもの=分割してなくなった部分のテスト => Rewriteも分割
    • ユニットテストを書いたことで参照されてないルールがあぶり
    出された
    • そしてリファクタリング

    View Slide

  16. 参照されてないルール

    View Slide

  17. まとめ
    • IIS の URL Rewrite もユニットテストが書ける!
    • URL Rewrite 運用で困っている人は今すぐインストールして書
    きましょう!
    • Install-Package IisExpressTestKit

    View Slide