回答編集履歴

1 タイポ

mit0223

mit0223 score 2898

2017/02/25 17:20  投稿

私がこれを書き込む時点(2/25)で、回答数14で Panzer_vor さんの回答は+10までいってるのですが、まだベストアンサーがついてないので、とりあえず、参戦。
IoTと機械学習が大流行なので、今後この手の話はますます増えると思います。teratail としても、ぜひベストアンサーが欲しいところだと思います。
まず、一つのデータベースでいろいろなサービスを一気に実装する考え方(データベース中心アプローチ)をやめたほうが良いと思います。SOAあるいはマイクロサービスという考え方でアプリケーションを分解することを検討すべきです。たとえば、
- ログを収集してとりあえず貯めるだけのサービス(極端な話、テキストでも良い。非同期性や完全性を確保するためのもの)
- ログの多様性を吸収して変換し、データ内容に応じて他のサービスに配信(Contents Based Routing)するメッセージルータ(mule や servicemix のようなESB)
- 集計や分析のためのデータウェアハウス(という言葉は古いのか?、Hadoop, RedShiftなど)
- 集計結果をエンドユーザに提示するための、仮想的なデータベースサービス(すぐに例示できないけど、JBoss Data Virtualization とかかな)と JavaScript でリッチなUIを提供するWebクライアント(react, angularなど)
のようにサービスを階層化して分離します。サービスごとに変更のスピードが求められるもの、完全性が求められるもの、技術革新に追従する必要があるものなど要件がことなるので、Docker などでマイクロサービス化して、追加、交換などが用意になるように設計すべきだと思います。
のようにサービスを階層化して分離します。サービスごとに変更のスピードが求められるもの、完全性が求められるもの、技術革新に追従する必要があるものなど要件がことなるので、Docker などでマイクロサービス化して、追加、交換などが容易になるように設計すべきだと思います。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る