クラウド主流以前はノウハウと実績を重視
システムインテグレーションによるシステム構築を提案するとき、要件に応じて最適なアーキテクチャの採用や技術要求に合わせた構成を考えます。
でもデータベースの選定について、ベンダー毎にデータベースの得手・不得手があり、ベンダー社内で開発実績や運用ノウハウを持つデータベースを優先する事が多かったことが考えられます。
- A社:MySQLに扱いなれている
- B社:PostgreSQLを拡張した運用経験がある
- C社:Oracleを使ったシステム設計が得意
環境構築や運用経験がないデータベースを新規案件の提案に使うのはベンダーとして説得力に欠けますし、クライアントとしては運用実績が無いデータベースを提案されても開発後の運用フェーズでトラブルが起こった際に解決できないのでは無いか?と不安です。
利用実績のないデータベースを新しく提案・導入するのは勇気のいるチャレンジでした。
クラウドのマネージドデータベースサービスが続々と登場
ここ数年でAWS、Google Cloud Platform、Microsoft Azureに代表されるPaaSからクラウドのマネージドデータベースサービス(以後クラウドDBと呼ぶ)が続々と提供されています。
これらサービスは運用上で必要になる機能、使いやすいウェブ UIとマニュアルが提供されています。
そのため現時点で専門的な知識を持っていなくても、比較的容易に運用上の問題に取り組む事ができます。
またマネージドサービスが主流で、環境構築やOSやミドルウェアのアップデートを利用者が行う必要がありません。これらはサービス側が吸収しています。
次に、よく利用されるクラウドDBを紹介します。
Amazon RDS
Amazon RDS:https://aws.amazon.com/jp/rds/
AWS上でシステム構築する際に同時に使われるのがAmazon RDSです。以下6種類のデータベースを利用できます。
- PostgreSQL
- MySQL
- Maria DB
- Oracle
- Microsoft SQL Server
- Amazon Aurora
クラウドDBで最も有名なサービスの1つです。拡張性とスケーラビリティに優れ、ダウンタイムなく安全にトラフィックへの対処を行えます。
高負荷なデータベースの運用に付きまとうリスクにハードウェア障害がありますが、Amazon RDSではハードウェア障害が起こると自動的にホストの交換が行われます。
商用データベースでシェアを持つOracleとSQL Server が利用できるため、幅広い開発案件で選択できます。
Amazon DynamoDB
Amazon DynamoDB:https://aws.amazon.com/jp/documentation/dynamodb/
AWSで使うNoSQLデータベースと言えばこのDynamoDBです。
MemcachedやRedis、MongoDBと同じNoSQLデータベースでDynamoDBはデータの永続性が保証されているのが特徴です。
Cloud SQL
Cloud SQL:https://cloud.google.com/sql/
Google Cloud PlatformのフルマネージドなMySQL データベースサービスです。「データベース管理者は不要です」とまで言い切る程の高可用性(耐障害性・安定性)が特徴です。
セキュリティパッチを自動的に適用してくれる、データベース情報に必要な暗号化が自動的に行われる等のクラウドサービスを使う上で心配なセキュリティ上の問題を解決しています。
利用料金は時間割です。
Cloud Datastore
Cloud Datastore:https://cloud.google.com/datastore/
Google Cloud PlatformのNoSQLデータベースです。Google Cloud Platform 版のDynamoDBと認識している方が多いのではないでしょうか。
データ量に応じた自動的なスケーリングと、独自の使いやすいクエリ言語が特徴です。
利用料金は利用量に応じた従量課金です。
Cloud Bigtable
Cloud Bigtable:https://cloud.google.com/bigtable/
Google Cloud PlatformのNoSQLデータベースです。Bigtableは検索やGmail等のGoogle社が提供する多くのサービスで使われています。
同じNoSQLデータベースのCloud DatastoreはMemcachedやRedisの代替えとして検討されますが、Cloud Bigtableは大規模なデータ分析基盤としてHadoopやHBase、Cassandraの代替えやインテグレーション先として検討されます。
SQL Database
SQL Database:https://azure.microsoft.com/ja-jp/services/sql-database/
Microsoft Azureのリレーショナル型クラウドDBです。ダウンタイムなしでの性能向上とスケール対応が可能です。
同じMicrosoft社の商用データベースであるSQL Serverとの互換性を意識して開発されており、SQL Serverからのデータ移行方法についてのマニュアルが整備されています。またマイグレーションのためのツールも公開されています。
DocumentDB
DocumentDB:https://azure.microsoft.com/ja-jp/services/documentdb/
Microsoft AzureのクラウドNoSQLデータベースです。AWSにはDynamoDB、Google Cloud PlatformにはCloud Datastoreがあります。
DocumentDBはJSONの取り扱いに特化したNoSQLで主にウェブアプリケーションやゲームアプリケーションで利用されています。
SQLのようなクエリ言語を利用でき、データベース内のストアードプロシージャやトリガーにJavaScriptを実行できます。
クラウドDBによって起こった変化
新規データベースの導入ハードルが下がる
今までは想定する運用状況に合わせたデータベースサーバーを構築するノウハウが自社内に必要でした。
クラウドDBでは高可用性とスケーラビリティ確保をクラウドサービスが担保しているため自社内で経験がなくても環境構築し易くなりました。
今まで扱っていないデータベースもクラウドDBであれば比較的安心して導入できます。
データベース運用でありがちなトラブルが減る
例として、今まではパフォーマンスの問題に対処するために以下のような作業を行っていました。
- サービス・サーバーを停止
- ディスクやハードウェアの交換
- データベースをバージョンアップする
- データベースのチューニング、またはパッチを当てる
- 冗長化対応したネットワークを構築
(Photo by:Kevin Jarrett)
これらは比較的リスクが高く、密に検証しなければ次の障害を引き起こす原因になっていました。クラウドDBでは自動的にもしくは半自動的にスケーラビリティの確保ができるため上に挙げたリスクの高い作業を行う必要が無くなります。
学習コスト・運用コストの低減
データベースの運用は環境構築から始まり、バックアップ、パフォーマンスチューニング、スケーリング、ロギング、トラブルシューティング、リカバリー等のノウハウが必要で新しいデータベースを採用するのは高い学習コストが必要でした。
また、運用上のトラブルや障害対応、冗長化などのリスク対処も時間・経験が必要で同様に学習コストが必要でした。
クラウドDBはサービス自身が運用上で起こる多くの問題に対応している、または対応できる機能を提供しているため学習コスト・運用コストを抑えられます。
まとめ
データベースのクラウドサービス化によって、今まで「自社にノウハウが無いから」と敬遠していたデータベースも導入し易くなっています。
勿論サービス利用料金が掛かりますが、クラウドサービス内で自動化され、かつ安定している機能を使う方が社内コストを比べると安上がりな企業も多いと思います。
自社ノウハウに依存せず、機能要件にあったデータベースを選定できるクラウドDBはシステム開発・サービス運用において重要になりつつあります。
今からでも検討と検証を合わせて行ってみてはどうでしょうか?各社が続々と導入している理由が見えてくると思います。
(Photo by:NEC Corporation of America)
本ブログは、Git / Subversion のクラウド型ホスティングサービス「tracpath(トラックパス)」を提供している株式会社オープングルーヴが運営しています。
開発の効率化をしたい!もっと便利なツールを使いたい!そんなお悩みをtracpathで解決!
「tracpath(トラックパス)」は、企業内の情報システム部門や、ソフトウェア開発・アプリケーション開発チームに対して、開発の効率化を支援し、品質向上を実現します。
さらに、システム運用の効率化・自動化支援サービスも提供しています。
”つくる情熱を支えるサービス”を提供し、まるで専属のインフラエンジニアのように、あなたのチームを支えていきます。
No Comments