Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

概要

自社サービスの開発中、必要にかられて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

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

kyoh86
Golangとzshとvimをこよなく愛するふとっちょプログラマーです。
https://kyoh86.dev/
wacul
人工知能でWebサイトの課題を発見する AIアナリスト https://wacul-ai.com を開発しています
https://wacul.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away