![見出し画像](https://assets.st-note.com/production/uploads/images/83083332/rectangle_large_type_2_97fd56677f095982ede240c345bc2799.png?width=1200)
【GOD計画】SHOWROOMをPerlからGo言語に刷新する方針と心がけ
前回、「SHOWROOM」のバックエンドシステムをPerlからGo言語に作り替えるGOD計画を進めていることをお伝えしました。
こんにちは、開発部の横山です。Go言語化に向けて要件調査、設計、計画進行と同時にプログラムの構成の検証も兼ねて部分的に機能を実装をしている真っ最中です。
今回は、GOD計画を進める方針と大切にしている”心がけ”についてお話しします。当たり前のことかもしませんが、当たり前のことを大事にしています。ザックリ以下の通りです。
方針
既存Perlサーバと並行稼働させ、段階的にGo移行
プログラムの構成を他サービスとできる限り揃える。
心がけ
既存システムを非難しない。リスペクトを大切に。
新たな開発文化の土台作りをする。
方針1:
既存Perlサーバと並行稼働させ、段階的にGo移行
「SHOWROOM」は弊社の主力サービスの1つなので止めることは出来ません。むしろGOD計画と並行して機能追加が行われます。また、Go言語新サーバの開発を短期間で完遂することはできません。当然ながら、一気に作りきって、サクッと入れ替えるという発想をまず捨てる必要があります。そこで次の方針で進めています。
内部実装は根本的に変えるが、外部仕様は変えない。
既存Perlサーバと並行稼働させて、段階的に新Go言語サーバに移行する。
内部実装はGo言語化する際に次項で述べるように根本的に変えますが、HTTPのリクエスト・レスポンス形式など外部仕様は同じにします。既存サーバと互換性を維持したGo言語サーバを並行稼働をさせることで、段階的な移行を実現します。
ちなみに、インターフェイスの仕様改善、マイクロサービス化も含むインフラ改善なども行いたい気持ちもありますが、それはGo言語化を終えた次の段階にしようと思います。段階を考えないといつまで経っても終わらなくなります。
方針2:
プログラムの構成を他サービスとできる限り揃える。
外部仕様は既存サーバと互換性を維持しますが、現状のPerl実装の構成をそのままGo言語移行するのではなく、弊社の他サービスと基本的に同じプログラム構成(アーキテクチャ)にします。
smash.、SHOWROOM Meetといった弊社の他サービスはGo言語で実装されています。SHOWROOMも基本的にこれらと同じプログラム構成にすることでエンジニアが横断的に担当できるようにします。
心がけ1:
既存システムを非難しない。リスペクトを大切に。
既存のPerlのコードを読みながら、Go言語に移植する中で、どうしても既存コードを非難したくなる場面はあるでしょう。しかし非難しても何も生まれないばかりか、長年在籍しているエンジニアと険悪な関係に陥るばかりです。
むしろ、刷新が必要なくらいにまで育ったサービスを支えているコードで、読解のしにくさはサービスの成長痛と前向きに捉えてリスペクトの精神を持って接したいと思います。
特に、細かい仕様把握をするためには、社内で聞き込みにまわることが必要な場面もあるでしょう。前向きな関係を作ることは技術力と同じくらい大切になります。
心がけ2:
新たな開発文化の土台作りをする。
システム刷新は、開発文化を刷新するきっかけにもなります。
急ぎのサービス開発の副作用で形骸化してしまっていることを見直す機会です。例えば以下が挙げられます。
プログラムの層ごとの抽象度を考えて、可読性の高いコードを書く。
単体テストを書く。また単体テストが書けるコードを書く。
GOD計画の過程でこれらを意識することで、より強固で品質の高いシステムを目指したいと思います。結果的には、お客様のご要望に迅速に応えられるより良いサービスとなるでしょう。
まとめ
GOD計画での方針と心がけについて記述しました。
Go言語へのシステム刷新では、既存システムから段階的に移行するためにインターフェイス等を維持して並行稼働できるようにしつつも、内部実装は他サービスと基本的に統一することを目指します。
また、既存システムへのリスペクトを持ちつつも、改善すべきことは改善するきかっけにして進めて参ります。
SHOWROOM株式会社では、エンジニア職を絶賛募集中です。
・ライブ配信サービス「SHOWROOM」
・バーティカルシアターアプリ「smash.」
以下の求人内容をご確認の上、ご興味あればご応募ください。
心よりご応募お待ちしております。
■求人は以下になります
SHOWROOM株式会社採用情報
■その他SHOWROOM株式会社の情報
・ note(代表前田取材記事です!)
・ 社員インタビュー記事
・ SHOWROOM
・ smash.
・ SHOWROOM最新記事一覧(PRTimes)