簡易リバースプロキシ「ichigo」でWebアプリ開発が捗る話

  • 42
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

概要

自社サービスの開発中、必要にかられてGOで簡単なリバースプロキシツールを作った話を書いてみます。

前提

自社サービスの開発を、次のような構成で進めています。

  • フロントエンドとバックエンド(APIなど)をパスで振り分け
    • /の下はフロントエンド
    • /api/の下はAPI
    • その他にも色々・・・
  • フロントエンドとバックエンドは、担当者もリポジトリも、動いているサーバも別
  • それぞれサーバが開発環境、本番環境とテスト環境、のように複数の環境をもっている

やりたいこと

前提の環境をもって、いざ開発をしようとローカル環境を構築するとなれば、

  • ローカルにnginxでリバースプロキシを立てて管理するのは面倒くさい
  • ちょっとした環境の変更があると共有がいちいち面倒くさい
  • フロントエンド担当者がわざわざバックエンドをcloneだのpullだの面倒くさい
  • 環境間でテストするためにわざわざnginxの設定書き換えるのも面倒くさい

と、面倒くさいことばかりになりがちです。

そこで、簡単なプロキシツールを作って、

  • ローカルには自分の担当するサーバ(とプロキシツール)だけが動いていればいい
  • 接続先の環境を容易に切り替えられる

ようになったら便利だなァ、というのが動機です。

作ってみた

これを手軽に実現できるよう、簡単なリバースプロキシツールを作ってみました。

Ichigo (GitHub)
ichigo

いちごです。美味しいですよね、いちご。

使い方

詳しい使い方は、GitHubのREADMEを御覧ください。
ここではかんたんな機能紹介まで。

  • Ichigo経由でアクセスすると、画面左下にコントローラーが現れます。 ichigo
  • 各サーバーのプロキシ先を、コントローラで切り替えられます。 ichigo

愚痴 開発中のあれこれ

  • この程度のツールを作るなら、Goってホント良い感じ。
    • Goっていい感じ。
  • 世の中にありそうなもんだけどなァ、と思ったらなかなかなかった。
    • もっと賢いやり方あったら教えてほしい
  • TypeScriptで頑張ってみたけど、やっぱりフロントエンド苦手。
    • でもやっぱりTypeScript最高。型付き言語最高。愛してる。(異論は認めます)
  • Goっていい感じ。
  • gorilla/muxとか、mux系は色々なライブラリがあるのに、もそっと柔らかいライブラリはないものなのか・・・。
    • /*はこっち、/api/*はあっち、とかやろうとすると、全部/*に吸い取られる罠
    • net/http/httputil.ReverseProxy最高!
  • Goっていい感じ。
    • Goっていい感じ。
    • Gopher君ぺろぺろしたい

Thanks

ちょっとした面倒を避けて、みんなの苺が美味しくなりますように