ステージング環境でばっちり検証したけど、本番で沼った話(Handii):スタートアップ開発しくじり先生(6)

スタートアップの開発の失敗を赤裸々に語るライトニングトークに8社のCTOやエンジニア、プロダクトマネージャーが登壇。本記事では、株式会社Handii CTOの森雄祐氏による「ステージング環境でばっちり検証したけど、本番で沼った話」と題したトークの内容をお伝えします。

※本記事はCoral Capital出資先約80社からなるスタートアップコミュニティー「Coral Family」のうち、CTO・エンジニアが定期的に集まるCoral Developers。その中から生まれたイベント「スタートアップ開発しくじり先生LT」の発表を記事化したものです。

自己紹介をします。HandiiでCTOをやっています普段はRustでサーバーサイドのコードを書いていることが多いです。前職ではC++やC#を書いていました。フロントエンドがTypeScriptとReactで作られているので、それらもちょっと書きます。

HandiiはいわゆるFintechスタートアップです。法人クレカ決済で「クレカ審査が通らない」などのペイン(苦痛)を抱えている会社向けに法人向けプリペイドカードを発行しています。ポチポチすればカードを何枚でも作れて、営業さんなどに配れば経費精算をしないで済むようになります。

外部連携でトラブル発生

今回のプロジェクトの概要です。私たちのサービスの情報を外部のサービスから参照してもらい、サービス連携を開発することになりました。当社は参照系APIをいくつか新規に開発し、ステージング環境を先方に開放、それを元に先方の会社は開発を進める形です。

ステージング環境は、ロードバランサーがあって、うちはAWSを使っているのでALB(Application Load Balancer)なのですが、その下にコンテナがぶら下がっている構成です。図の左上にあるのが普通のクライアントです。ステージング環境の画面をテスターや開発者が検証に使ったりしています。左下のサーバーは連携先です。

さて、開発が進んで本番デプロイになりました。しばらくすると、先方からメールが来ました。メールには「Service Not Foundと出て接続できません、ご確認よろしくおねがいします」と書いてありました。

「なんで?」とよくよく考えたら、ステージング環境ではサードパーティ向けのURLドメインと、ユーザー向けのドメインを一緒にしてたのですが、本来は別ドメインが設定されていて、本番環境はそのようになっていたんですよね。そのため、ドメインで動くように設定を入れないといけなかったんですが、そのままではロードバランサーで想定したルーティングがされなくなってしまいます。どうするか、社内でも相当の混乱がありました。

結果としていい感じに設定が完了しました。ロードバランサーに本来設定されているべきドメインとの紐付けを設定し、アクセスされたドメインに合わせて適切なルーディングがされるよう構成を修正しました。

ところが「またエラーが出た」とメールが来ます。今度はHTTPSの証明書不正でした。ドメインが変わったので、今までのロードバランサーの証明書だとダメです。そうかそうか、言われてみればそうだということで、ドメインに合わせて証明書を付けました。

しかし、なぜかエラーのログが流れてきます。今度は何なのか。認証系はJSON Webトークン(JWT)でやっているのですが、そこで”Invalid Issuer”というエラーが出ていました。JWTのIssuer(発行元)が、ドメイン変更により検証するべき値とずれてしまっていました。そこで新しいドメインに合わせて検証するようにしました。今度は本番環境で動きました。

教訓:「準本番」と本番環境の違いは大きい

なぜしくじったのか。普段はサーバーサイドのコードを書いていることが多いので、インフラ関連の知見が深くないということもありました。ステージング環境は準本番なので、本番とは違います。慌ただしさの中で気の緩みもありました。

ここで一句。「本番で 疎通するまで 気を抜くな」。この句で締めさせていただきたいと思います。

(執筆:星 暁雄)


【スタートアップ開発しくじり先生のトークまとめ、全記事一覧】

+ posts

Editorial Team / 編集部

New call-to-action


Coral Capital

Editorial Team / 編集部

Coral Insightsに登録しませんか?

Coral Insightsのメーリングリストにご登録いただくと、Coral Capitalメンバーによる国内外のスタートアップ業界の最新動向に関するブログや、特別イベントの情報等について、定期的にお送りさせていただきます。ぜひ、ご登録ください!
Load More