goで1万行程度のプロダクト

golangで1万行程度のコードを書く機会があった。しかも1から100まで自分でやったので、いろいろ感じたこともあり、まとめる。

概要

100万レコード程度のデータが一日で増加し、求められる負荷レベルは0.5sec/1req程度で、google pubsubも存在するサーバープログラム。
CI、CD、モニタリングまであって、golangで書いていて、docker -> ECRでデプロイするというモダンなプログラム。

着実に積み上げる

複雑なシステムっていうのはいろんな要素が絡むので、前提要素がブレると一向に先に進めない。だから、必要なコンポーネントをできるだけ小さく分割して、テストまで終えて着実に完了させておくことがとても重要になる。

オブジェクト指向

とりあえず書いてみると、だいたいすぐにめちゃくちゃになる。別にバグが出るわけじゃないけど、変更がしづらくなる。だから、こうやって、システム要件とアーキテクチャが分離するようにオブジェクト指向とかそういうのを導入するのは偉大だ。 先人の知恵にはのったほうがいい。

関数型などもいいと思うけど、まだ時代ではない感じもある。

アーキテクチャ

MVCでもレイヤードアーキテクチャでもDDDでも良いが、何かしらの方法論に基づき、事前に設計図を作ることが重要。なぜなら、あとで定義がぶれることが少なくなって着実に積み重ねていくことができる様になるし、それを元に周囲と認識のズレを解消することができる。

CI、CD

CIが通ること、CDが自動であることは重要。デプロイっていうのは緊張感を伴うので、そういうものはなくしたほうがいい。

テストコード

先に書いて、できるだけ不安要素を排除する。不安とか不確定要素は消して行かないと行けない。