Avintonではビッグデータ分析や機械学習プラットフォーム
こちらの詳しい内容は、Avintonのホームページを参照していますので、こちらもご確認ください。
いくつかのキーワードに分けて説明したいと思います:
- スケーラブルなクラスター
- クラウドネイティブ
- Kubernetes, マイクロサービス
- データ分析、機械学習のためのOSS技術
スケーラブルなクラスター
Avinton Data Platform では、複数個のサーバーを1つの「クラスター(集合)」として構成し、そのクラスター上で処理を分散して実行することができます。これまでは、一つのサーバーになるべくたくさんのリソース(CPUやメモリなど)を詰め込んで(垂直方向のスケール)重い処理を実行しようとしました。Avinton Data Platform では、たとえ安価なサーバーでも、1つのクラスターに集約することで、高い計算能力とストレージ容量、そして拡張性(水平方向のスケール)を提供することができます。
これにより、数TBのビッグデータ分析処理や、GPUを複数個要求するような重い機械学習も、短時間・高パフォーマンスで処理することができます。またオンプレミス環境での稼働ができるので、AWSなどのパブリッククラウドと比較して、長期的に見てコストパフォーマンスが高くなります。
もしプロジェクトの経過とともに、データサイズや要件が拡大し、さらに追加の処理能力やストレージ容量が必要になれば、新しいサーバーを比較的簡単にクラスターに追加することができます。このスケーラビリティ(拡張性)は、「Kubernetes」とその上で走る「クラウドネイティブアプリケーション」による恩恵が大きいです。(もちろん既存のサーバーのリソース(CPUやメモリ)をアップグレードする、垂直方向のスケーリングも可能です。)
Node が各ワークロードサーバーを示しています。
Nodeを水平方向に追加していくことで、より多くの計算リソースを提供できます。
クラウドネイティブ
クラウドネイティブなアプリケーション開発においては、
ソース: kubernetes.io
新しいサーバーをクラスターに追加する際には、コンテナが実行できさえすればOKで、プラットフォーム上で走っている個別のアプリケーションや依存関係を気にする必要がありません。
Kubernetes, マイクロサービス
分散プラットフォームを支える技術がKubernetesです。Kubernetesはコンテナ化されたアプリケーションの展開、管理、運用をサポートします。複数サーバ間で、アプリケーションへのリソース割り当て、ストレージやネットワークの設定、アプリケーションが停止した際には自己修復、などをほぼ自動で行ってくれます。開発者は、アプリケーションの理想の状態を定義するだけでよく、Kubernetesはその定義どおりにアプリケーションを維持します。もし、アプリケーションが停止した際には、理想の状態に戻そうとしてくれます。これを宣言型APIといい、開発者は一度アプリケーションの定義をすれば、細かい部分はKubernetesに任せることができます。
Kubernetesについて、詳しくはこちらをご覧ください。
Kubernetes上で動作するアプリケーションは、「
反対に従来型のアプローチは、「モノリシックアーキテクチャ」と呼ばれます。一つのアプリケーションの中にすべての機能が詰まっているパターンです。モノリシックな場合は、ソフトウェアの改修やテストにより多くの工程が必要になります。
マイクロサービスについては、AWSのこちらのページが分かりやすいです。
マイクロサービスでは、Dockerという技術が一般的に利用されることが多いです。Stackoverflowによる調査では、2021年に55%の開発者はDockerを使用した、と回答しています。Kubernetesも約20%のエンジニアが使用したと回答しています。今後も需要は高まることが予想されます。
Stack Over Flowの調査はこちらです。他の項目も面白いのでおすすめです。
データ分析、機械学習のためのOSS技術
Kubernetes上でビッグデータ分析、機械学習を処理するための基盤として、次のようなアプリケーション、フレームワークが利用されています。いずれもコンテナでKubernetes上で稼働しています。アプリケーションやフレームワーク、処理環境が理想の状態で動作しているように、Kubernetesがサポートしてくれています。理想の状態でない場合は、Kubernetesが自己修復を試みます。
- 分散ストレージ技術: HDFS, Ceph
-
- データを複数サーバに分散して保存することで、耐障害性や高パフォーマンスを実現
-
- データ処理フレームワーク: Spark
-
- 収集された生データを分析、変換、抽出、また機械学習への利用など
-
- 機械学習基盤: Kubeflow
-
- データ準備、パラメータチューニング、トレーニング、可視化、推論サーバーの作成など、機械学習の処理環境を提供
- 一連の処理をパイプラインとして自動化可能
-
- モニタリング/ロギングシステム: Prometheus, Grafana, Elasticsearchなど
-
- データ分析や機械学習のパフォーマンスを分析、トラブルシューティング
- Kubernetesクラスター自身の問題を検出
-
また、Kubernetes上で繰り返し処理の自動化を行うことは比較的簡単であり、一度コード開発が完了し、自動化パイプラインを構築すれば、何度も繰り返し実行することができます。例えば、毎月の売上データなど、定期的に同種のデータを収集できるならば、自動化パイプラインにデータをインプットし、あとは結果を待つだけです。
上記以外にもたくさんの最先端のソフトウェア、
まとめ
Avinton Data Platformでは、
余談
オンプレなのにクラウドネイティブ?
「クラウド」と聞くとAWSやAzure, GCPなどを想像する方も多いかと思いますが、こちらは「パブリッククラウド」と呼び区別されています。最近では、複数クラウドを併せて使用する「マルチクラウド」、プライベートとパブリックを併せて使用する「ハイブリッドクラウド」というアプローチも出現しています。
こちらは2020年のクラウド技術に関する世界的な調査の結果です。データセンターの分類ではプライベートクラウドの人気が増加しています。
おすすめ学習リソースなど
クラウド系
- クラウドネイティブとは
-
- Microsoftがクラウドネイティブ関連の用語について説明してくれています、比較的わかりやすいですが、.NETやAzureなどのMicrosoft固有のものは無視してOKです
-
- マイクロサービスについて
- メルカリがマイクロサービス化に取り組んだ際のブログ
Docker, コンテナ技術
- Docker チュートリアル
- Play with Docker
-
- ブラウザ上でDockerを遊べます
-
- Linuxで動かしながら学ぶtcp/ipネットワーク入門
-
- コンテナ間通信などを理解する上で、とても分かりやすいです。
-
Kubernetes
- 開発者のためのKubernetesガイド (ダウンロードにはVMwareのサイトへの登録が必要です。)
-
- VMwareが発行したKubernetesガイドです、15ページと短いのでおすすめです。
-
- Kubernetesの基本を学ぶ
-
- Kubernetesの公式チュートリアル
-
- Okteto
-
- 無料でKubernetes環境を利用できます。クラウド上で簡単にKubernetesをいじってみたい方におすすめです。(GCPやAWSでKubernetesをやろうとするとお金がかかります…!)
-
- Play with Kubernetes
-
- ブラウザ上でKubernetesを遊べます
-
あなたも、Avintonでこのような最先端技術を習得し活用してみませんか?
社員の成長を導きながら、AIやビッグデータなどの最先端技術をプロジェクトに活用していくことが私たちのビジョンです。Avintonの充実した技術研修でスキルアップを図り、あなたのキャリア目標を一緒に達成しませんか?