見出し画像

ギークス様のウェビナーに登壇しました

はじめに

ワンキャリアの執行役員CTOをしている田中です。
2022年7月21日にギークス様のウェビナーに登壇させていただきました。本記事ではそのときの様子をレポートします。

登壇のきっかけ

以前よりギークス様とお取引があったことをきっかけに、今回ウェビナー登壇の打診をいただきました。ギークス様はフリーランスのエンジニアの紹介事業をされており、サービスの一環で、「Tech Valley(テックバレー)」というITエンジニアの方々に向けた最新の技術や知識について深めていただく機会を無料で提供されています。

ギークス様にとっては登録エンジニアの方々に向けた最新の技術や知識について深めていただく場として、我々にとっては弊社の技術や抱えている課題を広く知っていただくために双方良い機会となると考えたので、ウェビナー登壇を引き受けさせていただきました。

何を話したのか

 弊社技術開発部の課題と、これからの組織設計やプロダクト開発方針の一部をご紹介しました。私が1人目のエンジニアとして入社した時点から、エンジニアは正社員12名+業務委託30名程度へと増え、プロダクト数は社内プロダクトも合わせると1プロダクトから5を超えるプロダクト数になりました。

 当然プロダクトごとに担当チームが分かれる状態になっているのですが、プロダクト間の依存関係が複雑なために、各担当チームはリリース前のチーム間折衝や、各チームが加えるコード変更の影響範囲を特定するのに苦労している状態です。
 調整ごとが多くなっていくとやはり開発にかかる時間がどんどん伸びてしまうので、この問題を解消するために今後トライしていきたいアーキテクチャ面での工夫、方針などについてご紹介させていただきました。

現在の開発体制として、複数のチームが同じコードベース上で作業しているため、以下の課題が生じています。

  • 片方のチームが加えた変更を他方が把握していないと予期せぬ仕様差分が生じることがある

  • 各チームのリリースの順序関係などに気を使う必要がある

いわゆる「モノリシック」なひとかたまりのシステムを複数チームが同時に触っている状況で、モジュール変更時に各所調整が必要となり開発速度が鈍化してしまう現実があります。

原因のひとつとして、組織体制上の問題が考えられます。2022年上期は、技術開発部のマネージャー不足によりチームの兼務が多発していました。コンウェイの法則に則ると、このような組織構造がシステムの密結合を生んでしまう一因である可能性があります。

組織体制上の問題については、マネジャー層の育成・採用によって徐々に解消の兆しがあるため、本記事では割愛させていただきます。

システムがモノリシックなことによるデメリットとして、各チームに全領域のドメインエキスパートが必要だったり、コードに加えた変更の相互作用を把握し、調整する必要が出てきますが…

現実的にはこれらを完全に把握するのは難しく、開発者に要求する業務が高度かつ複雑になってしまっています。

そこで、理想的なマイクロサービスアーキテクチャ設計を行うことにしました。「業務」ドメインごとにサービスを分離し、内部実装に他チームの影響を作用させないことで、密結合状態のシステム課題の解決を試みます。

  • API等のインターフェースを通じてのみサービス間の相互作用を可能とする

  • APIの後方互換性に気をつければ、チーム間の影響範囲のオーバーラップは減り、自チームのサービスは自チームの権限で変更可能になる

サービスを構成する各要素をマイクロサービス化することで、CI/CDの軽量・高速化が見込めます。各チームが独立したリソースを持ち、独自にデプロイ実行ができれば、開発チームが自走することができます。結果的にチーム間は疎結合となり、組織全体の開発速度も向上するという算段です。

マイクロサービスアーキテクチャを導入すると、各々のサービスが小さいためメンテナンス性が向上したり、サービスごとのスケーリングも容易になります。また、障害分離にも優れており、新しい技術をサービスごとに独自に採用できる等のメリットが多い一方で「実際にどのようにして移行すべきか?」というのが最大の難問となります。

マイクロサービス化以外の選択肢として、モジュラモノリスという手段もあります。マイクロサービスと対立構造で語られることもありますが、現在の大きなモノリシックから移行するにはちょうどよい中間地点のように見えるため、今後の開発で間違いなく意識すべきアーキテクチャのひとつです。

発表を終えて

 実のところ、オンラインでの登壇機会を頂いたのは今回初めてだったこともあり、参加者の反応を踏まえて話を深掘るようなことが難しいと感じましたが、良い学びになりました。今後も知見シェアや交流の場としてウェビナーがあらゆるところで開催され続けることを思うと、エンジニアとして「伝える技術」のアップデートの必要性を痛感しました。
 またこのような機会があれば、より伝わるプレゼンで、事業進捗もバッチリ進捗生んだ状態で喋りたいと考えています。

さいごに

 ウェビナー本編でも話したように、ワンキャリアではプロダクトの増加に合わせて随時サービスアーキテクチャをアップデートする必要性に直面しています。
そのため、アーキテクチャにも興味を持って早くユーザーに価値を届けることに共に挑戦しててくださる仲間を大募集しています!
日々成長するサービスの開発に興味がある方、ぜひこちらからコンタクトください!

最後に、機会を提供してくださったギークス様、ウェビナーに参加された皆様、本記事をお読みくださった皆様、ありがとうございました。

この記事が気に入ったらサポートをしてみませんか?