れっぽんブログ

「渋谷ではたらく社長の告白」を読んで自分もできると思って代表と一緒に起業!→全く事業が当たらず、とはいえ投資家や顧客をはじめ多くの人を巻き込んだので、なんとか成果を出したいともがく日々を綴ります。

8/1<エンジニア視点ではなく、事業視点で解決策を選べたと思う話>

これは大局感のある話ではなく、日々の業務の中で起こる小さい判断に関する話だ。

 

直面した状況としては自社のWebサービスの機能を拡張する際に

帳票出力機能部分を切り出して、マイクロサービスを立ち上げたのだが、

PDFを一括ダウンロードさせる処理のパフォーマンスが悪かった。

 

そのため稀にではあるが30秒以上処理に時間がかかってしまい、タイムアウトが発生し、システムエラーとなるケースがあった。

この場合の解決策の選択肢としては

ーーーーー

タイムアウトにならない処理に修正する

②サーバーを増強する

③負荷をかけないための制約を課す(例:一括でダウンロードできるPDFの数を減らすなど)

タイムアウトの時間を伸ばす

ーーーーー

の4つぐらいかなと思っている。

 

④が最も簡単なのだが、残念ながらHerokuを利用しているため30秒以上にはできない。

また、④の選択肢が取れた場合でもエンジニアならば、まず①を検討して負荷を下げようと思うのが王道だし、そうありたいと思う。

自分も①の方法でまずは検討していたのだが2~3時間ぐらい試行錯誤しても、あまりパフォーマンスの改善が見られず、対応するなら非同期処理にするなどの抜本的な改修が必要だった。

 

これだと実装に想定以上に時間がかかってしまうと思い、②を検討した。

試しにHerokuの一番安い月額7ドルの有料プランでパフォーマンスを計測してみるとかなり改善されて、タイムアウトのリスクがなくなると判断できた。

 

改めて処理改善にかかる工数(人件費)とHerokuの利用料を考えた時に明らかに後者の方が安いと思ったので、②を選択した。

 

この判断をした時に、エンジニアとしてのこだわりが薄れてるのではないかと思う部分もなきにしもあらずだが、最終的に顧客が必要とするものを、より安く早く提供するべきだと思ったので、この判断は事業を運営する上では正しいと改めて思った。