バズワードから紐解くエンジニアのキャリア
IT業界で注目される次世代技術は、常に“バズワード化”する。AI、ロボティクス、IoT、ブロックチェーン、FinTech、オムニチャネル……一過性の“Buzz”で終わらずに普及・定着していく次の注目技術は、エンジニアの働き方をどう変えるのか? この連載は、そんなバズワードの1つにフォーカスして現役SEをはじめとするエンジニアがめざすキャリアと将来展望について考察していく。
バズワードから紐解くエンジニアのキャリア
IT業界で注目される次世代技術は、常に“バズワード化”する。AI、ロボティクス、IoT、ブロックチェーン、FinTech、オムニチャネル……一過性の“Buzz”で終わらずに普及・定着していく次の注目技術は、エンジニアの働き方をどう変えるのか? この連載は、そんなバズワードの1つにフォーカスして現役SEをはじめとするエンジニアがめざすキャリアと将来展望について考察していく。
シリーズ第3回は、「マイクロサービスアーキテクチャ(以下MSA)」がテーマ。MSAとは、2012年、米国ThoughtWorks社ジェームス・ルイス氏による発表が初出とされる開発思想であり手法だ。その後14年にマーティン・ファウラー氏がルイス氏とともに「マイクロサービス」という呼び名でWeb上に記事を掲載したあたりから、先進企業を中心に注目されるようになった。
日本のエンジニアも徐々に熱い視線を注ぎ始めたMSAは、Amazon.comやクックパッド、Netflix、LINEなど内外先進企業での事例が明らかになるにつれ、昨年一気にバズワード化した。そこでNTTデータのシニア・スペシャリストであり、MSAについての書籍も執筆している正野勇嗣氏に、マイクロサービスの基本と今後、そして、これからエンジニアに与えるであろう影響について語ってもらった。
NTTデータ 第三金融事業本部 企画部 グループ事業推進担当 シニア・スペシャリスト
正野勇嗣(しょうの・ゆうじ)氏
1980年生まれ。大阪大学大学院情報科学研究科を修了後、NTTデータに入社。基盤技術関連の経験を積んだ後、開発自動化技術のR&Dに従事。その後、開発プロジェクト支援などの役割を通じソースコード生成や各種テストの自動化にも取り組んでいる。昨年『IT Search』にて「今さら聞けないマイクロサービスの基本」を執筆。現在は同サイトで「APIエコノミーの作り方」や、「Swagger入門 - 初めてのAPI仕様管理講座」を連載中
まず、正野氏はMSAの概要を理解するため、これまでのシステム開発手法と比較して以下のように説明する。
「これまでのシステム開発は、主に各業務等を密結合させる手法で行われてきました。多様な機能やサービスを司っているとしても、根本的にはシステムが一枚岩として結合されているところから、こうした開発スタイルはMonolith(モノリス)と呼ばれます。対照的にMSAではシステムを“複数の小さなサービスの集合体”と捉えて構築します。各業務を疎結合とするため、各サービス間をHTTP経由のAPIやメッセージングなど、軽量な通信手段で連携します。各業務が密結合な従来のモノリスと違い、分割された業務ごとにビルドが可能となり、開発の独立性が高まる。その結果、システム全体が変化に対応しやすくなるんです」
そして正野氏によれば、MSAには3つの特徴があるという。
1 変更容易性の追求
2 分散統治型のシステム構築
3 軽量な通信形式REST APIの採用
正野氏が示した第1の特徴は、各業務をサービスと捉え分割しながら開発して最適化し、変更容易性を追求する点だ。システムを単一のアプリケーションで構築し、各業務を密結合させる手法ゆえ、モノリスのスタイルではシステムが複雑化・巨大化するにつれ、開発・ビルド・デプロイのそれぞれの局面で問題が発生する。しかし、各業務をサービスと捉え分割しながら開発して最適化すれば、ビルド・デプロイを局所的に実行できるだけでなく、影響範囲の見極めが容易になり、ひいては変更容易性を追求できるというわけだ。
だがこの発想、すでにどこかで聞いたことがある。そう、少し前のバズワードである「サービス指向アーキテクチャ(以下SOA)」だ。MSAとSOAの違いについて、正野氏は以下のように言及する。
「SOAもマイクロサービスも発想自体は同じです。その違いをきちんと理解すべきだというのが第2の特徴であり、両者の違いを生み出している鍵がREST APIという通信方式。REST APIを採用しているのが第3の特徴というわけです」
結論を言えば、「変化に強いサービスを作る」という点で類似した目的を持つMSAとSOAだが、分割したサービス間をつなぐ通信形式が異なるという。そしてMSAではREST APIなどの軽量な通信形式を採用し、各サービスがそれぞれ異なるプログラミング言語を利用することを許す分散統治を採用することで、これまで以上に各サービスが高い自由度と独立性を得たのだ。
正野氏は、コンピュータ技術の主流がメインフレームからオープン系に移るなど、技術変革の歴史を振り返りつつ、何もかもが一気に変わるわけではないと語る。
「システムやソフトウェアの開発にはそれぞれ固有の目的や事情も関わってきますし、新しい要素に一気にすべて切り換えるような決断を下すところもあれば、徐々に対応するところもある。MSAをはじめ、APIや各種の自動化技術に新しい可能性が芽生えているのは事実ですが、短期間の内にすべてが塗り替えられるわけではありません」(正野氏)
クックパッドをはじめ多くの企業が実際にこの開発手法を取り入れるなど、変化の兆しを見せている今、エンジニアとしての可能性を追求していくのであれば、MSAは避けては通れないだろう。
「MSAを経験する」ことを目的化するのは本末転倒だと語った正野氏だが、実際にMSAを経験し、ノウハウを身につけたエンジニアに新たなキャリア形成の道筋が見えてくることは間違いなさそうだ。
最後に正野氏は、MSAの手法が定着したあと、エンジニアにはどのようなスキルが求められるのかを語った。
「かつて大規模システムの開発はウォーターフォール型で行われていたが、アジャイル開発が台頭してきました。それによって少人数グループによる自由度の高い開発スタイルが近年定着しようとしています。しかし、限られた人数で臨機応変な開発を実行するとなれば、一人ひとりのエンジニアに“多能工”であることが求められます。最近だとフルスタックエンジニアと言われたりしますね。」
そして正野氏は“多能工”なエンジニアが必要になる理由を、以下のように続ける。
「ウォーターフォール型の時のように分業化がなされなくなった今、エンジニアは『自分に与えられた役割だけに専念』というわけにはいかなくなってきました。その一方で、クラウド技術の浸透がノウハウのコモディティ化をもたらし、多くの要素が自動化されつつあります」
こう語った正野氏は、クラウド活用を前提としたシステム開発、すなわちクラウドネイティブ時代の到来を示唆する。そして、今後エンジニアはクラウドネイティブな諸サービスの活用を前提とする中で、技術力の成長を目指すことになるだろうと言う。
「早期にMSAを実行した企業の中には『もともとMSAを採り入れようと意識したのではなく、気がついたらその手法を用いていた』と言っているところがあります。そもそも企業やシステム関係者は常に最適な手法を模索しています」
12年にファウラー氏とルイス氏が書いた記事によってMSAという開発手法が表面化してきた印象があるが、実はそれ以前から、開発を効率的に進めていくために必要不可欠なものであったという。
「クラウドネイティブの時代が徐々に迫っている今、例えばソフトウェアアーキテクトと呼ばれる職種の人たちは、それぞれの経緯を踏まえてMSA的手法にたどりついているのです。ファウラー氏らがそれを『マイクロサービスアーキテクチャ』と命名して形式知化した結果、今バズワードにもなっているということ。言い換えれば、それくらいクラウド前提の技術とMSAは相性が良いということなんです」
これまでもそうだった通り、技術革新による開発環境の変化は徐々に起こりつつある。その変化に対応し、エンジニアとしてより自由な発想や開発を進めるために、『マイクロサービスアーキテクチャ』は、キーワードの一つになりそうだ。
取材・文/森川直樹 撮影/羽田智行(編集部)
NEW!
タグ