こんにちは、サイオステクノロジー技術部 武井です。ここ数日に渡って、de:code 2019のセッションレポートをお届けしております。
今回はこちらです。
私の尊敬するエンジニアの寺田佳央氏のセッションでした。
本セッションは以下の方に向いていると思われます。
AKSでマイクロサービスを導入した際のメリットもいいけど、もっとリアルな話(苦労したところとか今後の課題とか)を聞きたい!!
プロダクトの紹介ページや、インストールしてみた系のブログでは、そういったリアルな話はないですよね。メリットは、はっきり言って耳タコですので、やはり生々しい話を聞きたい、、、そんな方にピッタリのセッションでした。
はじめに
詳細な内容は、後に資料が公開されるので、そちらをご覧頂ければいいかと存じますので、本記事では、セッションのざっくりとしたサマリーと、私の体験に基づくコメントを記載させて頂きます。
まず、オイシックス・ラ・大地様は、創業当初からモノリシックなアプリケーションを開発・運用されてきており、さすがにもうリプレースの時期だという節目に、AKSによるマイクロサービス化に踏み出したとのことでした。その過程でよかったこと、苦労したことというのが、本セッションのメインになります。
よかったこと
やはり大きなメリットとして「サービスごとの開発・テストが容易」というメリットが会ったとのことです。
そこはマイクロサービス化の大きなメリットだと私も思います。私自身もモノリシックなアプリケーションを開発・運用したことがありますが、ソースコードのどこを直すと、どこに影響があるのか全くわからないという恐怖は筆舌に尽くしがたいです。その点、マイクロサービスは、原則的にコンテナごとに1サービス、1データストアであり、各サービスごとのやりとりも直接行わず、キューなどの非同期システムを介して行われることが多いです。結果的に、修正による影響範囲の局所が可能です。
次に「エンジニアのモチベーション向上」がありました。いや、これ、かなり重要かと思います。やはり、エンジニア魂を持っている人であれば、最新の技術で美しく設計したいものです。マイクロサービス on AKSはそんなエンジニア魂をくすぐるものを持っております。あ、もちろん、テクノロジーファーストであってはいけないというのもわかりますが、、、。
「スケール・アウトが容易になった」というのも挙げられてますね。各サービスをマイクロサービス化して、ステートレスな通信が実現できているのであれば、設定ファイル一発でスケール・アウトできるのもAKS(というかk8s)のいいところかと思います。
ここまでは、AKSのメリットあるあるですが、次章からはいよいよ苦労した点に移ります。
苦労したこと
AKSによる開発で苦労したこともたくさん(!!)述べられていました。ここからがいよいよ本題です。
「学習コスト」・・・。来ましたね。マイクロサービスの概念も、AKSの仕組みも、やはり今までのモノリシックなアプリケーションを開発した人にとっては、大きなパラダイムシフトになります。かなりのアタマの発想転換が必要になると思います。
私自身、初めてAKSやService Fabricに触れたときは、マイクロサービスの概念を理解するのに苦労しました。CQRS、The Twelve-Factor App など色々な見慣れない言葉が出てきてパニックになったのを覚えています。なにかを調べようとすると、またその中にわからない単語が出てきて、それをしらべるとまた、、、という負のスパイラルに陥ってました(T_T)
「何が正解かわからない」・・・これについては常々、寺田氏もおっしゃっているのですが、世の中の全てのシステムに適用できる普遍の解はないとのことです。例えば、今回のオイシックス・ラ・大地様のシステム構成を他の企業に適用しても、成功するとは限らない、最適解はシステムによって違うから、アタマを悩ませて考えるしかないとのことでした。
これについては、激しく同意です。私も、AKSやService Fabric、Azure Functionsなどのサービスを入れたいというお客様には何度か出会ってきました。ただ、よくよく分析しますと、モノリシックでも十分ではないかなと言うケースもたくさんありました。あまり機能変更の必要がなく、一旦納品したらほぼ塩漬け、しかし短納期というシステムで、マイクロサービスを適用したら不幸になるだけかと思います。このあたりは十分な見極めが必要ですね。
ああ、生々しいですね(T_T)現場のエンジニアの方々の苦労が、行間に溢れ出ています。寺田氏も口をおさえてらっしゃいます。
全てについてお話すると長くなりますので、最後の「○iitaとか信じすぎると痛い目にあうぞ」というのをピックアップさせて頂きます。
AKS(k8s)のアップデートはかなり高頻度だそうです。もちろんk8sは日本で開発されたOSSではないので、日本での情報は必然的に遅れることになります。本家のサイトはもちろん、英語ですが、ここは英語であるということに気負いせず、しっかり本家サイトを参考に開発を進めるべきとのことでした。寺田氏は、英語力の差が技術力の差になるとも言われていまして、まさにそのとおりかと思いました。
私自身も、海外で開発されたOSSの認証基盤を扱っていますが、学術用途のみということもあり、かなりマイナーで、日本での情報はほとんどありません。そんなときに一番役に立ったのが本家のコミュニティですね。生の開発者に助言を頂きながら数多の課題を解決してきました。もちろんそのコミュニティでのやり取りは英語です。そこで英語の必要性をかなり痛感しました(T_T)
まとめ
マイクロサービス on AKSのメリットだけではなく、生々しいお話も聞けたこと、またエンジニアとして何が重要なのか(英語力など)も聞けたこともあって、非常に有用なセッションでした。