いまさら聞けないマイクロサービスの基本
【第5回】クラウドネイティブな開発スタイル
- 開発ソフトウェア
- ● 関連キーワード
- システム開発
- プロジェクト管理
- アプリ開発プラットフォーム
- オープンソース
開発ソフトウェア
クラウドとクラウドネイティブ
AWS(Lambda、BeansTalkほか)、Cloud Foundry、Salesforce App Cloud、Salesforce Heroku、Microsoft Azure、OpenShift、Oracle cloud、Google Cloud Platform、IBM Bluemixなど、今やクラウドサービスにはかなりの種類が存在しています。
クラウドは古くから、SaaS/PaaS/IaaSのサービスレイヤーで語られてきており、DockerやHadoop、CDN(Contents Delivery Network)等さまざまな技術要素へ対応してきています。そんな中マイクロサービス対応についても、REST APIやCI等の観点でラインナップに加えられるようになってきています。
![]() |
多様な機能を有するPaaS領域 |
クラウドの利用を前提とした「クラウドネイティブ」という言葉が広まりつつあり、クラウドの利点を最大限に活用することに力点が置かれています。いわばクラウドネイティブ時代とも呼べる状況になってきました。そんな中、クラウドネイティブな開発スタイルを実現するために押さえるべき要素として、Herokuの「The Twelve-Factor App」(後述)が出てくるなど、これまで先進的なプロジェクトにおいて暗黙的に実行されてきたベストプラクティスが徐々に開発指針として形式知化されてきています。
クラウドネイティブなアーキテクチャが追い求めるもの
従来より、大規模開発といえば、ウォーターフォールが最も有名な開発スタイルであり、システム開発の初期段階でシステムのスコープを定め、外部要因等に起因してスコープが変わる場合は仕様変更として対応するというスタイルでした。
それに対し、システムのスコープは変動するものであり、あらかじめ計画不可能という前提に立ったプロセス・思想としてアジャイルがあります。中でも、スクラム(SCRUM)やXP(エクストリーム プログラミング)は有名です。マイクロサービスにおいも「進化的な設計」と呼ばれ、変更容易性が重視されます。 アジャイルにおいて、変更容易性をより高め、スコープの変動に追従するためには、「基盤やCI/CDの仕組みが確立されている」ことが前提となり、実は「クラウドネイティブ」にも共通する前提となります。
クラウドを簡単に使えるような仕組みとしてAWS Elastic Beanstalkのようなアプリケーションのデプロイや管理を簡単にするサービスが生まれてきており、非機能面はクラウド製品に任せ、利用者はアプリケーション開発により注力できるようになってきています。これを更に推し進めた先進的な動きとしては、サーバレスアーキテクチャがあり、その名の通りサーバ運用を一切しないやり方も出てきています。
例えば、AWSの機能には「Auto Scaling」と呼ばれるリソースの自動拡張機能があります。また、Pivotalが提供するCloud Foundryの「Circuit Breaker Dashboard」は、一つのサービスの故障が他へ伝搬するのを防ぎます。
小さな粒度で構成されるマイクロサービスはこれらの機能との親和性が高く、クラウドネイティブなアーキテクチャと呼ばれます。
クラウドイミグラントと「The Twelve-Factor App」
「〜ネイティブ」を、対義語である「〜イミグラント」と比較説明しましょう。
例えば「デジタルネイティブ」は、生まれたころからITに親しんでいる世代を指します。最近は、就学前の小さな子供がiPadを触ってYoutubeの動画を見ているといったことも珍しくありません。対義語としての「デジタルイミグラント」は人生の途中からITを親しむようになった世代で、最初はITにとっつきにくいと感じる方もいます。
また筆者は、CやVBといった手続き型言語を学習後にオブジェクト指向言語を学んだいわば「オブジェクト指向イミグラント」なのですが、ちょっと気を抜くとついつい手続き型のコーディングスタイルとなってしまっていました。JavaやScalaといたオブジェクト指向言語を初めてのプログラミング言語として学習した「オブジェクト指向ネイティブ」はあまりそう言った心配がありません。
英語やフランス語等を学習する際もそうですが、ネイティブはある種感覚的にできてしまう部分も、イミグラントにとっては、文法等を教科書で理解してからでないと、使えるようになりません。
クラウドネイティブな開発スタイルとして、マイクロサービスと並び評されることの多いのが先述の「The Twelve-Factor App」です。
その名の通り12の要素を踏まえてアプリケーションを作ろうという発想であり、以下の通り定義されています。
- I. コードベース
バージョン管理されている1つのコードベースと複数のデプロイ- II. 依存関係
依存関係を明示的に宣言し分離する- III. 設定
設定を環境変数に格納する- IV. バックエンドサービス
バックエンドサービスをアタッチされたリソースとして扱う- V. ビルド、リリース、実行
ビルド、リリース、実行の3つのステージを厳密に分離する- VI. プロセス
アプリケーションを1つもしくは複数のステートレスなプロセスとして実行する- VII. ポートバインディング
ポートバインディングを通してサービスを公開する- VIII. 並行性
プロセスモデルによってスケールアウトする
「V. ビルド、リリース、実行」などCI/CDに関わる事項や、「VII. ポートバインディング」のようにマイクロサービスの公開に関わる事項などが盛り込まれています。
一つ一つ詳細な説明はしませんが、これまで非クラウドにて開発してきた方(もしくはシステム)、つまり「クラウドイミグラント」にとっては、「The Twelve-Factor App」のように体系的に整理されたものが、より求められるのではないでしょうか。
* * *
今回は、マイクロサービスと並び注目されてきている「クラウドネイティブ」について説明しました。
マイクロサービスとクラウドは相性が良く、またその効果を高めるには、これまでのウォーターフォールやオンプレミスの考え方とは異なるアプローチが必要になってきます。
次回は、「クラウドネイティブなアーキテクチャ」を支える技術を深堀りします。
著者紹介
![]() |
正野 勇嗣 (SHONO Yuji ) - NTTデータ シニア・エキスパート
2011年頃まで開発自動化技術のR&Dに従事。その後、開発プロジェクト支援やトラブルシューティング等に主戦場を移す。「ソースコード自動生成」に加えて、JenkinsやMaven等の「ビルド自動化」、JsTestDriverやSelenium等の「テスト自動化」を扱うようになり、多様化する開発自動化技術動向に興味。
最近は第四の自動化であるInfrastructure as Code等の「基盤自動化」の魅力に惹かれている。開発自動化技術に関する雑誌・記事執筆も行う。2児のパパ。
※ 本記事は掲載時点の情報であり、最新のものとは異なる場合がございます。予めご了承ください。
関連リンク
ダウンロードBOXに入れる
記事をダウンロードBOXに追加します。よろしいですか?
ブックマーク
記事をブックマークに追加します。よろしいですか?
会員ログイン
人気ランキング
-
[2018/04/24 08:00] サーバ/ストレージ
-
2018年4月27日(金) 14:00~17:30(受付開始13:30)
「あなたは会社を守れるか?」 仮想のサイバー攻撃と、その対策を実体験する 次世代エンドポイントセキュリティ「Traps」ハンズオンセミナー -
2018年5月17日(木)
事例で学ぶWindows10移行セミナー 業務効率とセキュリティを両立する方法とは? 移行から移行後の管理のポイントを詳しく紹介 -
2018年5月18日(金) 19:00~20:00
オイシックスのプロモーション担当者が語る! 成果につながる、お客様目線の動画マーケティング -
2018年5月23日(水) 18:30~20:00
資生堂を切り口に女性活躍のヒントを探る! ~個を知り、個を活かすには? 事例に学ぶ組織改革~ -
2018年5月25日(金) 14:30~17:00(受付14:00)
2018年のセキュリティ・トレンドから学ぶ、日本の中小企業がとるべき対策とは ~担当者必見!! 中小企業向け最新セキュリティ対策セミナー~
今注目のIT用語の意味を事典でチェック!