こんにちは。株式会社フィックスポイントのよしだです。
今回は、フィックスポイントのエンジニア三名が社内専用 httpbin を導入した流れについて発表がありましたのでご紹介します!
社内への導入にあたってはかなり山あり谷ありだったようです😂
導入の背景
はじめに、社内 httpbin を導入するに至った背景について説明します。
ある日当社のアーキテクト(下図参照)が下記のような内容を Slack に投稿しました。
全世界のエンジニアの味方である httpbin.org と https://webhook.site 。 便利なんだけど大量のリクエストを投げるテストだったり、多少なりともセンシティブな情報を投げる実験だったりには使えないので困っています。 これらはどちらも Docker イメージが提供されているので Azure Container Apps とかを使えば Fixpoint 社専用のものを用意することができるのですが、構成考えたり料金調べたり稟議取ったり設定したりが面倒臭いな〜って思って進んでません。 若い世代もこういう導入のステップを踏めるようになって欲しいので、「Azure 触ってやってみたい!」といった興味ある人いないか募集します。
実際の意図としては、もちろん開発基盤の構築という意味合いもあったのですが、教育的な面が強かったのだそうです。
たしかに社内へサービスを導入する上で必要な手続きをこなせるようになるというのは、会社員として働く以上は大切な要素と言えますよね😌
これを受けて自主的に手を挙げたエンジニア三名が、協力して社内 httpbin の導入を目指していくことになりました。
要件定義
背景でも少し触れた通り、開発の検証やテストにおいて使用する目的があったため下記の内容を要件としました。
検討開始
要件が定まったところで、早速サービスの検討に入りました。
候補としては Azure Container Apps、Web App for Containers、Container Instances が挙げられ、それぞれの特徴を下記の通りに分類しました。
- Azure Container Apps
- 毎月最初の 180,000 vCPU 秒、360,000 GiB 秒、200 万件の要求は無料
- active usage price と idle usage priceが分かれていて、使っていないときの分の価格を抑えられそう
- Web App for Containers
- ディスク領域の割り当てがある (サービス一個で完結し話を通しやすそう)
- コア数がRAMサイズを指定して使うので、あまりスケールしなさそうだが安そう
- Basic の最安プランが $13.87
- Container Instances
- 月40$から (らしい)
以上の特徴を踏まえ、Azure Container Apps が一番価格を抑えた上で要件に合致しているということになり、使用してみることになりました。
いざ実践
導入するサービスが決定したので、あとは実践あるのみです。
Container Apps のドキュメントに従って設定を行い、コンテナを立ち上げました。
しかしここで問題が発生!アクセス制限ができません!!
このままでは port80 を開けて全世界に晒された状態になってしまいます😱
そのため、どうにか社内 VPN のみのアクセス制限にして危ない状況を回避しようと考えました。
しかし、Container Apps にはアクセス制限機能がありません。
仕方なく(?)他サービスを駆使してその機能を実現するべく試行錯誤を重ねました。
まず、アクセス制限をするには有料の VNet が必要なのでは?という話になり、そのためにはさらに有料の IP アドレスが必要そうということが分かりました。
ところがせっかく両者を用意したにも関わらず外部との疎通が叶いません。
さらに調査を進めた結果、Application Gateway(有料) と Network Security Group を併用するとよいらしいことが判明し、試してみることにしました。
ただこの時点で必要なサービスと価格がどんどん膨らんでおり(Application Gateway は最低月$20.44かかるそうです)、Azure Container Apps の利用には暗雲が立ち込めている状態でした。
実験の名目で少額に抑えた稟議をどうにか通し、上記内容を試した結果…
結局アクセス制限は実現できなかったそうです😇
かなり苦労して導入を試みましたが、どうにも難しかったので Azure Container Apps は諦めることとなりました。
第二の選択
大本命の Azure Container Apps がコケてしまったところで、代打として選ばれたのは Web App for Containers でした。
実際に使用してみると…
あっさりアクセス制限を実現できたそうです🤗
サービス自体にアクセス制限機能があるため、Azure Container Apps のように試行錯誤を繰り返すこともなくすんなりと進めることができたようです。
さらに、よくよく調べてみると Free プランなるものが存在し、制限があるものの無料から使えるようだということがありました。
パッと見厳しそうな制限ではありましたが、どの程度厳しいか実際に使ってみて様子見をした結果、問題なく動いてくれるため課金も必要ありませんでした!
これは会社としても嬉しい限りですよね。
紆余曲折はありましたが、これにてめでたく社内 httpbin の導入に成功しました🎉
導入を終えて
実際に導入に尽力した新卒社員からざっくり以下の通り感想を聞くことができました。
- 作業時間の 8~9 割が Azure のドキュメントを読む時間だった
- Azure ワールドが難解すぎる
- 初見の Azure Portal に慣れた
- わちゃわちゃだったけどたのしかった
- こういう突発イベントは飛び込み得だと思った
加えて、稟議を取るために社内の偉い人に根回ししたり金額の交渉をしたりと技術面以外での業務も一通り体験することができたようでした。
当初のアーキテクトの狙い通り、社員教育としての意味合いも達成できました😊
最後に
今回は、社内 httpbin 導入までの一連についての発表をご紹介しました。
現在、社内 httpbin プロジェクトは派生して「社内ツール推進委員会」となっていて活動の幅を広げているようです♪
今後の活躍にさらに期待ですね!
ブログ記事でも社内の開発基盤に限らず、便利なツール等を作った報告があれば取り上げていきますので楽しみにしていてください😌
株式会社フィックスポイントでは、一緒に働いてくれるメンバーを募集しています!
詳細は、こちらをご覧ください。