Shinpei Ohtani
5 min readFeb 23, 2016

--

マネージドサービスについて

AWSなどが提供するマネージドサービスを使うかどうかは利用者側の状況にひとえに依存すると思う。

まず気にするべきポイントは、マネージドサービスを使うことで得られるメリットを明確にすることだ。一般に、マネージドサービスはインフラストラクチャからよりアプリケーションに近いレイヤ、多くの場合特定のミドルウェアまで、を抱合して提供してくれるため、運用面での負担が減る。できるだけ利用する方がよいと思う。一方で、運用のやり方やスタイルは提供者側の目線にあわせないといけない。ここにギャップが生まれやすい。理由としては、提供者側の気にする点が全体最適化のうえでベストエフォートで提供できるラインはどこか・そのうえで提示できるSLAがどこにあるか、なのに対して、利用者側の気にする点はミクロな視点で特定リソースが安全に継続可能性が十分にある状態で妥当なコストで利用できるか、の違いがある。このギャップがうまることはない。なのでその妥協ができるかが一つのポイントになるし(ここでは妥協は悪い意味じゃない)、利用者はそれで合理的なメリットを得られるかが判断基準になる。

次に利用者側の状況を考える。ここでは具体例としてAmazon RDS for MySQLを考えてみる。自動フェイルオーバや自動スナップショットなど優れた機能を有するデータベースを搭載したマネージドサービスの代表格と言って良い。MySQL RDSを使う場合、多くがMySQLの運用にかかわる負担を軽減したい状況にあると思う。特に優秀なDBAを確保し続けるのは人材枯渇・コストの問題で相当難しくなりつつあるため、その場合は大変有効な手になると思うし、実際そのような場合にRDSを使うことをおすすめする場合が多くなる。一方で、RDSを利用を勧めない、またはRDSを利用していない人たちを観察すると、多くが優秀なDBAがすでに存在し、自分たちで出来る限りコントロールできる状況を作っている場合が(もちろん)多い。この場合、特に無理にRDSに移設する必要はない。特に日本(だけしか基本知らないので)顕著にあるのが、Multi Availability Zone(MAZ)のフェイルオーバが焦点の代表例になる。ゾーン間での自動フェイルオーバは素晴らしいが大体3–5分程度を所要するが、この時間を許容できない場合に自前でのMySQL MHAなどを利用して同一ゾーン間での自前フェイルオーバを選択する人もいる。事実、日本で別DC間でのフェイルオーバまで必要なケースの方が少なく、それよりも高速なフェイルオーバが望まれているように思える。なので、ここでの結論は、利用者側の人的スキルセットや今後の状況がマネージドサービスを選ぶ上での大きなファクターになること、マネージドサービスで提供している機能セットがどこまで自社ニーズにフィットしているかを冷静に見定める必要がある。多くの場合でマネージドサービスの方が使われている・叩かれている分だけよくできるのは当たり前だがそれでもギャップがある可能性は残り、そのギャップのインパクトを見たうえで利用する。

利用に際して、一から構築するのがおっくうな場合も多い。その場合もマネージドサービスは有効に思う。例えばAWS Elastic MapReduceはその際たる例に思える。Hadoopはプラットフォームの種類も多く、かつその上にのるプロダクトも多種多様だ。なので一から毎回構築していたらきりがないし、Javaのバージョン問題など様々あるだろうと容易に推察できる。これらをEC2上に一から作るのではなく、EMRを使えばSpark対応のクラスター、Presto用のクラスターなど多種多様に構築できる。利用者はその後EC2上のクラスターにも特段不自由なく戻れるので、こういった点での時間的コストの削減には使える場合もある。別にEMRをおしているわけではなくて、他のサービスでも同様のものがあるはずであくまで一例。

最後に利用者側で提供するのが難しいレベルでの可用性やスケーラビリティを持つマルチテナント型のサービスの場合がある。例えばAmazonのS3, DynamoDB, Aurora, Google BigQueryなどがあげられる。はっきり言っておくと、利用者が同じものを構築するのはかなり難しい。分散システム構築と運用20年くらいの専門家を20名くらい揃えればできるかもしれない。見た目上が同じであっても、耐久しているスケール・可用性・内部の仕組みなどを考えた場合、同一のものを提供できる可能性のほうが圧倒的に低いと見るべきだろう。これらは利用に際してのメリットが十分にあることが多いが、特性をきちんと把握したうえで利用するべきだろう。どんなものにも良い点もあれば、課題な部分もあるのでその課題のワークアラウンドが生きたノウハウかと思う。でもそれが語られることは少ないので、今後どんどん増やしていければと考えている。

総論当たり前のことしか言ってないが、利用するシーンや状況にあわせてミックスするのが現実的だろうとも思う。人的リソースなどを考えてRDSを使うサービスもあれば、確実にコントロールしたいのでEC2上でMySQL運用する場合もあるのが普通だし、そういう判断をしたうえでフルマネージドというのもありだと思う。手放しバンザイはやめよう。

なんかさくっと書いてみたけどこんなところだろうか。

--

--