れっぽんブログ

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

8/1<マイクロサービスの導入により何を得たいか>

例えばマイクロサービスを導入することで得たい主要なメリットがスケーリングだったとする。

しかし、副次的なメリットである「チームの自律性」や「新しい技術導入の機会」など別のものがくっついてくるとマイクロサービス以外の選択肢を取りにくくなる。

もしかすると水平スケーリングだけで負荷の問題は対応できたかもしれないのに、副次的なものがくっつくことで本当に得たい効果に対して最適なものが選べなければ本末転倒だ。

水平スケーリング:複数のサーバーに台数を増やして負荷分散

垂直スケーリング:1台のサーバーの性能を上げて負荷を吸収

 

----

・現状では満たせない顧客要望:あるがクリティカルではない

・改善サイクル:早くない

・開発人数:1~2名

・特殊なドメイン知識:さほど必要ない

・デプロイ周期:開発完了して10秒後にはデプロイできてる

----

将来のことを考えて今の段階でマイクロサービス化するメリットはほとんどない。

前段の帳票の場合には出力スピードが遅すぎるという問題があり、それを解消するために切り離したが、今回は将来への布石という意味はあれど、直近困っていて解消したい課題が特にない。やめた方がいい。 

 

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

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

 

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

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

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

 

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

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

ーーーーー

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

②サーバーを増強する

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

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

ーーーーー

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

 

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

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

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

 

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

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

 

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

 

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

7/25<覚悟が問われる瞬間に社長の志がわかる>

普段は表に出さないようなことでも、

いざ正解のない大きな意思決定をする時に社長の姿勢というのは

鮮明に現れると思う。

 

大胆な意思決定が素晴らしいというつもりもなく、

慎重な意思決定が安定していてよいというつもりもない。

 

ただ、その選択をする際に本当の覚悟があるかが大事だ。

 

それでいくと昨日の社長の回答は

〜さんと〜さんがやってくれるなら....やります。みたいなぼやっとした返答だった。

これなら正直やめた方が良いなと自分は思った。

 

・別の事業に乗り換えたい

・世の中を変えようという大きな志がない

・自分一人でやりぬく覚悟がない

 

というものが垣間見れてしまった。

 

未熟であっても良いと思うし、これから変化していくことにも期待はしているのだけれども自分で考えて覚悟を持って意思決定するというスタンスが欠如しすぎていて、最も大事なその部分がいつか成長によって埋まるのか疑心暗鬼になってきた。

 

社長のコアな部分がぽっかり空いているが、そのほかの部分が能力として高いのでいかにもできているように見せかけることができる。

 

でもふとした瞬間に出てくるな。

話している内容とか自信とか。

7/9<枯れた技術の良さ>

最初にプロダクト作った時には最新技術詰め込みまくったが、調べても実装方法が全然出なくて、単純なことをするのにも相当時間がかかった。(しかもできなかったこともしばしば...)価値を早く届けるなら、枯れた技術を使って、フロント・サーバーも分けずモノリシックに実装した方が良いと思った。今後のびた時に回収すればいい。