RAKUS Developers Blog | ラクス エンジニアブログ

株式会社ラクスのITエンジニアによる技術ブログです。

マイクロサービスアーキテクチャをあきらめないための、モノリスで始めるアーキテクチャテスト/JJUG CCC 2020 Fall 登壇レポート

この記事は アーキテクチャテスト Advent Calendar 2020 - Qiita の 25 日目のエントリです。

qiita.com

こんにちわ。株式会社ラクスで「楽楽労務」を開発している @kawanamiyuu です。遅くなりましたが、先月開催された JJUG CCC 2020 Fall の登壇レポートです。

イベント概要

日時2020 年 11 月 7 日 (土)
開催形式オンライン(事前録画放送+リアルタイムQ&A)
公式サイトhttps://ccc2020fall.java-users.jp/
タイムテーブルhttps://confengine.com/jjug-ccc-2020-fall/schedule
タイムライン#jjug_ccc since:2020-11-07_00:00:00_JST until:2020-11-08_00:00:00_JST - Twitter Search
発表動画リスト2020-11-07 JJUG CCC 2020 Fall - YouTube

プロポーザル

jjug-ccc-2020-fall - マイクロサービスアーキテクチャをあきらめないための、モノリスで始めるアーキテクチャテスト | ConfEngine - Conference Platform

マイクロサービスアーキテクチャにチャレンジしたい!しかし、プロダクト立ち上げ時においては、

  • 業務ドメインに対する知識の少なさから、適切な粒度のサービス分割が難しい
  • そもそも売れるか分からない、仮説検証を高速にまわしていかなければいけない段階で、MSAで開発・運用するオーバーヘッドが大きい
  • 手段が目的化している感

といった理由から、モノリシックなアプリケーションとして開発を開始するケースは少なくないと思います。一方で、あとから分割すればよいと開発を始めたモノリスで、いざ分割を検討する段階でアプリケーション内の依存関係が複雑に絡み合い、分割したくとも解きほぐすのが困難になってしまっているケースも少なくないはずです。

モノリスで適切なモジュール分割を実現するためにドメイン駆動設計や、具体的な設計パターンとしてクリーンアーキテクチャやレイヤードアーキテクチャなどの方法をとることが多い最近のソフトウェア開発において、モノリシックなアプリケーションを構成するレイヤーやドメイン、各パッケージ・クラスの依存関係をいかに適切に維持し続け、将来アーキテクチャを発展させる可能性を残すか。

この発表ではその1つの有力な方法としての「アーキテクチャテスト」についてお話します。

登壇資料

speakerdeck.com

登壇資料のサマリー

登壇に対する反応

(jjug_ccc_b OR archunit) since:2020-11-07_17:00:00_JST until:2020-11-07_18:00:00_JST - Twitter Search

登壇を終えて

まず今回、当日参加された方、タイムテーブルをご覧になった方はお気づきになったかと思いますが、まさかのアーキテクチャテストネタかぶりでした! (もう一つの発表はこちら

アーキテクチャテストをテーマにした登壇は、過去に 2 回(ArchUnit で Java アプリケーションのアーキテクチャを CI する - JJUG CCC 2019 Springドメイン駆動設計を支えるアーキテクチャテスト - Object-Oriented Conference 2020)行っていて、今回はそれらの内容も整理しながら、「マイクロサービスアーキテクチャをあきらめないための、モノリスで始めるアーキテクチャテスト」という主題で登壇内容をまとめました。

私のこれまでのカンファレンス規模のイベント登壇経験としては、最長でも 20 分枠の発表だったため、今回初めて 40 分という枠を満足させるボリュームと質の発表内容を作り上げることできるか不安でした。しかし、資料を作り始めてみるとなんだかんだでなんとか、30 分程度の発表に仕上がりました。資料としては 100 ページを超えていたため、もしかすると時間が足りないかも?と一時は思いましたが、事前録画方式だったので淡々としゃべってしまい余裕で時間枠内に収まりました。コロナ禍で無聴衆(オンライン)での発表は何度か経験していますが、目の前に聴衆がいないと、発表中の間のとり方が難しいです。

さて、今回でアーキテクチャテスト 3 部作 (?) の完結編として、いったん今時点で私がアーキテクチャというものに対して考えていることは言語化できました。今後もアーキテクチャテストを実際のプロダクト開発の中で実践的に取り組んでいきたいと思っているのと、この手の話は、プログラミング言語に関係なく通じるもので 他の言語でのアーキテクチャテスト も試してみて、別の言語コミュニティでもアーキテクチャテストを布教していきたいと思っています。

それでは、また。

Copyright © RAKUS Co., Ltd. All rights reserved.