ぎんさんマインド

いちエンジニアの思考とか趣味についてつらつらと書いてみるかもしれない。

既存サービスを一歩づつモノレポにしていく

概要

仕事で色々なサービスに携わっていると、 さまざまな歴史的経緯で生まれた多くのアプリケーションを目にする。


会社を立ち上げた当初に作られたサービスが数年経ち、メンテナンスもされずにツギハギで修正された結果手のつけにくいものになったとか、事業的には乗っているので、更なるサービスを開発しようとし、認証基盤だけは共同で使おうと無理矢理過去のサービスを呼び出したり、もしくは、だったら作り直そうと認証基盤のみ外に出してそれだけでも動くようにしたり色々ある。


そうやっていろんな連携を含んだサービスにおいて開発環境もあまり整ってなく、だったらとdockerの上に乗せてまとめて開発環境を作るなんてことがあったので残しておく

構成

github.com
簡単に作ってみたがこんな感じ

ざっくりと説明すると、既存のアプリ1とアプリ2があり、それを連携させた上で両方構築できるようその一つ上の階層でdocker-compose.ymlを作って、両方まとめた環境を立ち上げる。

参照するdockerfileはそれぞれのアプリ内においてあるならそれを参照してもいいし、そことは違うところにおいておけるようディレクトリ作ってもいいと思う。今回は別のディレクトリを作ってそっちにおいておいた。

これ自体は単体のレポジトリとしておいておいて、作業管理、zenhub連携してサービス全体のタスク管理や大きなissueをおいておいてもいいと思うが、各々のサービス全部内包させるとgit管理が多すぎて面倒になるので .gitignoreなどで弾いておきたい。
おそらくそれぞれのサービス単体でも細かいissueは出てくると思うので、それはそちらで管理する体制にしたい。

体勢

開発環境なんてのはどこも作られてると思うが、それを変えようとはあまり思わないと思う。
というかそのプロジェクトの中でできる人間がサラッと変えていて、それをpullしていつの間にか使いやすくなってたなんて感じの方がよくあるかなと個人的に思ってる。やった人もっとコミュニケーションをしたいから発言してくれ。

そんな感じでdockerをいじる人間は少数になりがちだし、開発環境がどう作られるのか知らない人も多くなりがちなので、なるべく良い状態で使ってもらって周りからの信頼を得たい。
簡単に言えば、プロジェクトに新規参入したときに「開発環境で2日はかかるんだよねー」なんて言われた時に上記のように直して、「これで半日で終わりますよ、なんならコマンドほとんど打たずダウンロードの時間だけで済みますよ!」なんて言ってやりたい。
この辺は私のトークスキルが足りないので願望。



一応備忘録なのでこんなもんで