最近、仕事に関わるところでも関わらないところでも、パブリッククラウドのマネージドサービスを使う機会が徐々に増えてきています。
使い始める前には、クラウドのマネージドサービスを活用できるかどうかは、
「いかにそのサービスの特徴や優位性、他サービスとの違いを理解しているか」
にかかっているのかな?と思っていたのですが、実際に使うようになってみると、それ以上に
「そのサービスが利用している/サービスのベースとなっている標準技術をいかに知っているか」
のほうが重要ではないか?と思うようになってきました。
というのも、他社が提供していないマネージドサービスであっても、そのベースにはよく使われているOSSが存在していることが多かったり、そうでなくても、デファクト/デジュレ問わず、「標準」の技術に立脚している、あるいは外部とのインターフェースに「標準的な規格」を用いているものが多かったりするからです。
ゆえに、「標準」を知らない人がクラウドのマネージドサービスを利用しようとする場合、サービスの設定やそれを利用するアプリケーションコードの記述などは、見様見真似でも8割くらいまでは短期間で実施できる一方、残りの2割くらいを埋めるのに、先の8割を実施する以上の時間が掛かってしまう…ということがしばしばあります。
これは、高級言語がカバーする機能の範囲が拡大し、その言語を習得したプログラマなら誰でも「とりあえず動く」コードが「書ける」ようになった一方で、その言語が「隠蔽」したロジック・アルゴリズムの部分を知っていて書くのと知らないて書くのとでは、コードの処理速度や安定性に大きな差が出ることがあるのと似ている気がします。
クラウドのマネージドサービスも、多くはインフラなど低レイヤの部分を「隠蔽」することで成り立っています。その部分について知らないなら知らないで使えなくはないのですが、原理が分かっていないと、
「なぜこの設定で動かないのだろう?」
「なぜ性能が出ないのだろう?」
「なぜこのAPIではこのパラメータが必要なんだろう?どうやって用意すればいいのだろう?」
…ということで、頻繁に手が止まります。
「コードを書く、システムを構築するのに必要になった時点で1から実現方法を調べる」というスタンスで仕事をしていると、どうしてもそうなりがちです。
そのために、このブログでは、勉強会や資格・検定、書籍などを通じてデファクト/デジュレな「標準」を学ぶことを奨励している…というのは、かなりこじつけっぽいですが。