かとじゅんさんを招いて「Akkaハンズオン」を開催しました

ScalaAkka

かとじゅんさんを招いて「Akkaハンズオン」を開催しました

4月18日に三回目となる、かとじゅん(@j5ik2o)さんを講師に招いた勉強会を開催しました。

今回は、分散処理フレームワークのAkkaを実際に触りながら学べるハンズオン形式で行いました。 かとじゅんさんは、Chatworkにおいて分散処理の設計に携わったり、技術カンファレンスでAkkaに関する発表をされたりと、Akkaに関する知識の広さを力に活動をされてきました。 近年、アットウェアでは一部の社員の間でScalaへの関心が高まっています。Scalaを社内に広め、実業務で役立てるための技術推進活動の一環として、今回の勉強会を開催することになりました。社員からは10名程度が参加しましたが、Scala経験者だけでなく、これまでにScalaを触ったことのない社員も参加し、ScalaやAkkaに対する注目度の高さを感じました。

ハンズオンの前半では、『Akka実践バイブル』 1〜2章の内容を参加者全員で振り返りました。 アクターモデルが注目されている理由やLet it crash(クラッシュするならさせておけ)、イベントソーシングといったAkkaの根底をなす概念について触れました。 アクターモデルを用いたAkkaアプリケーションが典型的なWebアプリケーションと大きく異なるのは、扱うデータの多くをアクター単位で、なおかつオンメモリで扱うという点です。 アクターという小さな単位で分散処理を行うため、プログラマでもスケールの単位を理解しやすく、またスケールの柔軟性も高い、という点を魅力的に感じました。 また、典型的なリレーショナルデータベースによる設計では、オブジェクトとテーブル構造のインピーダンスミスマッチに悩まされることがありますが、 オンメモリであれば、そのミスマッチに悩むことは少なくなります。 永続化や適切なアクターの分割単位のような、今までRDBMSに任せていたことを意識する必要があり、開発者には高度な知識が要求されますが、アクターの良さを活かすためにはしっかり抑えておく必要がありそうだと感じました。

ハンズオンの後半の様子です。後述の通りグループに分かれて、サンプルアプリケーションを改修しています。みんな真剣な表情です。

ハンズオンの後半では、実際にAkkaで作られたサンプルアプリケーションを改修しながら、Akkaへの理解を深めました。 サンプルとして用意されたのは、送金や請求が行える決済アプリケーション j5ik2o/wallet-akka です。 前回開催したドメインモデリングワークショップと同じお題ですが、前回のクラスベースの実装とは違い、今回はアクターモデルにより実装されています。

参加者は3つのグループに分かれ、実装されていないテストやメッセージの受信処理などを各々実装しました。 サンプルは、前回と同様にDDDのエッセンスが含まれているほか、通常のAkkaで実装されたアクターに加え、 メッセージを型安全に扱えるakka-typedを適用したアクターの実装例が含まれており、新しいAkkaの機能にも触れることができました。 かとじゅんさんによる解説やコードリーディングを通して、アクターはどのような単位で作るべきなのか、メッセージのフォーマットはどのようにすべきかなど、設計の基礎となる考え方に気づくことができました。

あるグループがサンプルアプリケーションを改修している様子です。笑顔ですね。

今回のハンズオンを通して、Akkaの具体的で実践的な書き方に触れることができ、たくさんの学びがありました。 百聞は一見にしかずというように、実際に使ってみることで学び取ることができることは非常に多いと感じました。 かとじゅんさんには、今回のハンズオンを快く受け入れてくださり、当日も親身になって丁寧に教えていただきました。ありがとうございました。

アットウェアは、これからも新しい技術を学びながら、日々成長していきます!