クラウドネイティブ内製化支援サービス:テクマトリックスNEOとは(Part1)
<目次>
目次[非表示]
- 1.はじめに
- 2.クラウドネイティブについて
- 3.クラウトネイティブのメリット
- 3.1.迅速なリリース
- 3.2.スケーラブルな環境
- 3.3.効率的な運用
- 3.4.コスト削減
- 3.5.コンテナで快適な動作環境
- 3.6.マイクロサービスアーキテクチャの実現
- 3.7.言語
- 3.8.イノベーションの実現
- 4.クラウドネイティブ導入の課題
- 4.1.企業文化の変化
- 4.2.スキルギャップ
- 4.3.セキュリティリスク
- 4.4.レガシーシステムの負担(人が足りない)
- 5.テクマトリックスNEO
はじめに
昨今、日本のみならず世界中でAIやブロックチェーン、クラウド、AR/VRといった新たなデジタル技術の活用可能性が急速に広がりを見せています。日本はその中において、「世界最先端のデジタル国家」の創造に向け、ITを最大限活用した簡素で効率的な社会システムを構築し、国民が安全に暮らせ、豊かさを実感できる社会を実現することを目指しています。
そのような情勢の中、あらゆる産業の中でDX(デジタルトランスフォーメーション)と呼ばれる新たなデジタル技術を活用したビジネスが現れてきました。
例えば一昔前までは映画や音楽を自宅で楽しむ場合には、CDやDVDといった物理的な媒体を購入・レンタルするようなモデルが主流でしたが、昨今では様々な企業から独自の動画配信サービスが開発され、ユーザーはスマートフォンなどの端末から好きな場所で好きなタイミングで動画や音楽を楽しむことができるようになっています。これによって映画館やレンタルビデオ店などは廃業に追い込まれています。これらのことは一例ですが、DXの取り組みが企業の死活問題となりつつあり、ITサービスを如何にスピーディに開発・提供・改善を行っていくかが、企業の業績に大きな影響を与える要因となっています。
様々な形で推進されつつあるDXですが、それを支える技術としてクラウドネイティブがあります。
クラウドネイティブについて
クラウドネイティブを推進している非営利団体である「CNCF(Cloud Native Computing Foundation)」によると、クラウドネイティブは以下のように定義されています。
クラウドネイティブ技術は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなどの近代的でダイナミックな環境において、スケーラブルなアプリケーションを構築および実行するための能力を組織にもたらします。 このアプローチの代表例に、コンテナ、サービスメッシュ、マイクロサービス、イミュータブルインフラストラクチャ、および宣言型APIがあります。これらの手法により、回復性、管理力、および可観測性のある疎結合システムが実現します。 これらを堅牢な自動化と組み合わせることで、エンジニアはインパクトのある変更を最小限の労力で頻繁かつ予測どおりに行うことができます。
(引用:https://github.com/cncf/toc/blob/main/DEFINITION.md#%E6%97%A5%E6%9C%AC%E8%AA%9E%E7%89%88)
クラウドネイティブはプラットフォームや実行環境を含めた技術の総称を指しています。コンテナやサービスメッシュ、CI/CDなどの技術を活用していくことで、企業はより早く、堅牢なシステムやサービスのリリースを行うことができるようになっていきます。
モダンなシステム開発では最早切り離せないクラウドネイティブですが、大きなメリットを組織にもたらす一方、導入にあたっては大きな課題も存在します。
クラウトネイティブのメリット
ここからはまずクラウドネイティブを活用すると発生するメリットについて見ていきます。
迅速なリリース
オンプレミス環境では物理的なリソース(サーバー、ロードバランサーなど)を用意する必要があるため、アプリケーション/システム開発に時間を要します。また、半導体不足による物理リソースの確保が非常に困難であったことは記憶に新しいのではないでしょうか。物理リソースの調達に時間がかかれば、その間にアプリケーション開発を行ったとしても限界があり、リリースを行うことも難しくなります。また準備を整えている間に市場ニーズが変化してしまうリスクもあり、如何にスムーズに機材の調達を行えるかはビジネス成否のカギになっているといえます。
そこでクラウドネイティブを活用することで、クラウドベンダーの提供しているサービスを使用することで物理的な機材調達の手間がなくなり、アプリケーション/システム開発やリリースを、スピード感を持って進めることができるようになります。
スケーラブルな環境
サービスのリリース前後で正確なユーザー数を予測することは難しいといえます。そのため準備をしておくべきサーバーなどの規模を正確に見積もることができない点は大きな課題となります。例えばロードバランサーなどの物理アプライアンスはハードウェアとしての性能上限が決まっており、購入する際には「この先数年間」で必要となるスペックの見通しを立てて購入する必要があります。
しかしクラウドサービスプロバイダーのサービスを活用すれば、物理的な意味でのハードウェア制約は存在しないため、ビジネスの規模に応じてリソースの拡大・縮小をフレキシブルに行うことが可能です。突発的なユーザー数増加に対してもスピーディに対応できます。
消費者ニーズの変化が激しい現代において、柔軟なスケーリングが可能な点は大きなメリットであるといえます。
効率的な運用
クラウドネイティブ活用の利点として、「効率的な運用が可能」というのも挙げられます。例えばAuto Scale(オートスケール)のような機能があります。これはサーバーの負荷状況に応じて台数を自動で増減してくれる機能です。負荷が高い時はサーバー台数を増やして負荷分散を行い、負荷が低い時はサーバー台数を減らすという、手動で実施すると大変な作業を自動で行ってくれます。また何らかの要因によってサーバーダウンが発生してしまったとき、既定の台数を維持するように働いてくれます。
またこれまでの物理的な制約がある中では難しかった、イミュータブルインフラストラクチャも比較的容易に実現可能です。これは一度運用を始めた本番環境には手を加えず一時点の状態で固定した(変化しない)インフラでの運用となります。パッチ適応など何らかの構成変更が発生する際には、構成変更後の新たなインフラセットを構築し、既存環境から新環境に切り替えて運用を続ける考え方です。これによって運用者は本番環境に直接手を加えるリスクを冒すことなくサービスを運用することが可能となり、また手を加え続けることで発生しがちなインフラのブラックボックス化を防ぐことも可能となります。
これらの機能・運用は一例ですが、後述のコンテナなども組み合わせていくことで開発者・運用者双方にとってより効率的な運用が可能なります。
コスト削減
従来のオンプレミスでの運用では、ハードウェア購入やデータセンター契約などの初期費用が発生していました。「2. スケーラブルな環境」でも述べたように、物理アプライアンスを購入する際には将来必要となるスペックをあらかじめ見通しを立てて購入する必要があるため、高額な初期費用が発生する可能性があります。またハードウェアそのものの維持、メンテナンスにかかるコストも大きく発生していました。
クラウドではハードウェア設置に関わる初期費用は発生せず、ビジネスの規模に応じてリソーススペックや台数を増減させることが可能であるため、必要最小限のコストでサービスを開始することが可能となります。またクラウドサービスは原則的に従量課金制となっているため、使用量が少ない場合はコスト削減が可能となります。そのほかにもハードウェアそのものの監視やメンテナンスにかかるコストは発生しないため、運用者はサービス運用に注力することが可能になるため、人的コストの削減も期待できます。
コンテナで快適な動作環境
これまでのオンプレミスでのサーバー運用では、物理筐体である大容量のサーバー上に仮想化技術を用いて複数の仮想サーバーを構築して運用していくことが主流でした。また現在のクラウドサービスでも仮想サーバーを構築して運用していくことは一般的かと思います。仮想サーバーでの運用は安定性やセキュリティの確保に関してメリットがありますがデメリットも存在します。例えば仮想サーバーを実行環境から移動させることは容易ではありません。また仮想サーバーはあらかじめ大きなリソースを確保して構築する必要があります。そのほか、起動自体も決して高速というわけではありません。
対してコンテナの活用についてですが、まずコンテナとはそれ自体がアプリケーションの実行環境(OS、ミドルウェア、ライブラリなど)がひとまとめになっているものです。ゲストOS上にコンテナ実行環境(Dockerなど)が整っていればアプリケーションの展開を行うことが可能であるため、移動も非常に容易です。安定性やセキュリティに関しては仮想サーバーと比較して別の観点での対策が必要となるデメリットはあるものの、必要なリソース量は少ないため、一つの仮想サーバー上で複数のコンテナを起動することも可能です。またコンテナで使用されるOSは高速で起動するように設計されています。
コンテナを用いることで、開発者が使用しているPC環境にとらわれずに開発環境を整えることも可能となります。開発者はコンテナ起動条件を記載したソースコードを共有することで、開発者それぞれの開発環境の中で同じコンテナを起動させる可能となります。そのため横展開も容易であり開発効率の向上が期待できます。またサービスの機能単位での開発を行うことで、機能の性質ごとに最適な技術の採用を行うことができ、アジャイル開発の推進や後述のマイクロサービスアーキテクチャの採用を行うことも可能になります。
マイクロサービスアーキテクチャの実現
先述のコンテナ技術を使用して、アプリケーションを機能やドメイン別に分割し、それぞれを独立したサービスとして開発・起動を行い、APIによって疎結合によって連結して一つのサービスとして動かすアーキテクチャを、マイクロサービスアーキテクチャと呼んでいます。
マイクロサービスアーキテクチャを用いれば、個々の機能の独立性を高められ結果として以下のようなメリットを得ることができます。
- 開発サイクルのスピードアップ
モノリシックなアプリケーションでは、一つの機能変更であってもアプリケーション全体の動作検証を行う必要がありますが、マイクロサービスではAPIのインターフェースが変わらない限り機能単位で開発を行うことができるため、結果として開発スピードが向上します。
- 柔軟なリソース配分
負荷が高いサービス(コンテナ)の数を増やすことで負荷分散が可能です。これによって柔軟なリソース配分が実現できます。
- 優れた障害分離性
マイクロサービスでは個々の機能が独立して動いているため、あるサービスが障害を起こし停止してしまった場合でもサービス全体が停止してしまう可能性が減ります。
言語
クラウドネイティブではJavaScript、pythonやgoなどの言語が多く使用される傾向があります。特にpythonは昨今機械学習などで注目されているように、技術力に大きく期待できるエンジニアを雇う上ではメリットがあります。またモダンな言語を扱うことは、エンジニアのモチベーションを高めてくれる側面もあります。
イノベーションの実現
クラウドネイティブ技術を活用し、これまでの環境やプロセスの見直し、あるいは変革を行っていくことで、既存システムの刷新や新規サービスの開発からリリースまでのスピードが格段に向上します。開発速度が向上することでニーズにあったサービスのリリースを、スピード感をもって行うことができるようになります。
クラウドネイティブ導入の課題
一方でクラウドネイティブ導入を推進したくとも、なかなか進まないといった声も多く聞きます。代表的な課題の例として以下の4つが挙げられます。
企業文化の変化
これまでクラウドネイティブを活用してこなかった企業からすると、インパクトのある変化がもたらされます。例えばCI/CDの導入を行おうとすると、開発のプロセスからリリースまでの手順、承認のプロセスなど業務のフローが変化していくことが考えられます。またクラウドサービスの全社的な導入となった場合など、企業の規模によっても左右されますが多数の部署をまたぐ非常に大きなプロジェクトになることが想定されます。
開発体制やサービスを提供してきた土台そのものが変化するため、クラウドネイティブ導入をしたくともなかなか進まないといったことが起こりえます。
スキルギャップ
これまでの開発プロジェクトでは、アプリケーション開発担当、基盤担当、運用担当、セキュリティ担当、それぞれが独立した専門分野を持ち、分野ごとのチームとして役割にそって動いてきました。
対してクラウドネイティブ開発プロジェクトでは、それぞれの役割の境界線が重なる部分が出てきます。クラウドネイティブでは様々なサービス(クラウド基盤やOSSなど)を組み合わせて一つのシステムを作り上げていくことになります。従って基盤担当がアプリケーション開発の知見を求められる場面や、逆にアプリケーション開発者が基盤の知識を求められる場面があります。
それぞれの専門分野に対して全てを理解する必要はありませんが、クラウドネイティブを扱っていく上で理解すべき技術領域は格段に広くなっています。
これらのスキルギャップをなかなか埋められず、クラウドネイティブ導入が進まないといったことが起こりえます。
セキュリティリスク
これまでのオンプレミス環境でのレガシーシステムでは、ポイントとなるゲートウェイやエンドポイントを守っていればよかったですが、クラウドネイティブ開発においてはそれだけでは不十分です。クラウドサービスプロバイダーを活用した環境で動いているシステムは、常にパブリックなネットワーク空間に露出しています。例えば仮想サーバーに接続する際のファイアーウォール設定や、ストレージサービスのセキュリティ設定、コンテナランタイムそのものの防備、アカウント権限など、これまでとは異なるセキュリティの観点が必要となります。
あらゆるセキュリティ標準が各団体から公開されていますが、それを自社のサービスに合わせて最適化していく作業もかなりの労力がかかるため、こうしたことが原因で、クラウドネイティブ導入がなかなか進まない一因になっています。
レガシーシステムの負担(人が足りない)
現在すでにサービスを運用している企業にとって、それを並行稼働させながら新しい技術体系の新システム開発に取り組むというのは、人材不足の現代では簡単なことではありません。クラウドネイティブを扱うことができる人材自体が少ないという問題もあります。それによってなかなか検討が進まず、現行のオンプレミス文化から抜け出すことができなくなってしまいます。
テクマトリックスNEO
こうしたクラウドネイティブ導入に際する様々な問題を解決するためのソリューションとして、テクマトリックス NEOはリリースされました。
テクマトリックス NEOは、日本にクラウドネイティブのテクノロジーをより早くより多く広めていくためのサービスです。クラウドネイティブ導入の伴走者として、初期教育から導入、運用まで幅広く支援をし、エンドユーザやベンダー企業のコンテナ化や自動化などといったクラウドネイティブのモダンな技術の利用を促進します。
NEOはギリシャ語で「新しい」という意味がありますが、映画マトリックスの主人公の名前がNEOでして救世主として出てきます。そこに着想を得て、我々もクラウドネイティブ導入の救世主になれるようにこの名前にしております。
次回の記事では、テクマトリックス NEOとはどのようなサービスなのかについて解説をしていきます。