クラウド化によって捨て去られる技術 | A Day In The Boy's Life

A Day In The Boy's Life

とあるエンジニアのとある1日のつぶやき。

最近、クラウド化の勢いによって新規システム構築やリプレイスの案件においてオンプレミスでやろうということが少なくなってきました。

クラウドを利用することのメリットは、構築のコスト削減というだけでなくリリースまでのスピード感や保守・運用の手間を軽減することなどがありますので、システム部門ではない人にとってはこの部分のメリットがどうしても魅力的に感じるようです(実際はどうなのかはおいといて)。


しかし、クラウドを利用することにより、システム部門の存在意義が薄くなるだけでなく、今までその分野を支えてきたエンジニアの質の変化というのも起きていたりして、企業全体にとっての歪みが生まれているようにも感じたりします。



捨てる技術と注ぐ技術


クラウドによるサービス構築をするということは、そのシステムを作らず業務に注力できるということにはなりますが、今まで自部門で構築していたものがなくなったとなれば、当然その分野における技術力というのは低下していきます。


少なくとも、運用フェーズにおいても何らかの改善のための要件決めや他システムとのインターフェース部分の作りこみや業務の組み立て方などで話ができるレベルの人材というのは必要になってきますが、あくまで話ができるレベルであって、その構築や内部設計レベルで対応・理解できる人材というのは存在意義がなくなるため希薄になります


この辺のことは、企業内のキャリアパスにおいてエンジニアとしてある一定の経験を積めば上流工程の仕事を任せていくという流れがあったりもして、経験を積めば積むほどエンジニアの職人技を磨いていかせるというよりは、より単価の高い仕事を取らせるための人材育成に持ち込もうという方針もあったりでその流れを加速させる結果になっている気もします。

まぁ、クラウド化したのが単なるウェブシステムというのであれば、単に労力を削減したぐらいで済む話ではありますけど、その技術がどこでどう関連しているのかということを理解せずに捨て去ってしまうと、後々のトラブルが発生した際に対応できるエンジニアが全然いなくってベンダー任せになったり、自社の運用は手放したといってもその分野の技術を利用したシステム構築案件を受注したりしたときにわかる人がいないといった事態にもなるために注意が必要です。


自社のコアコンピタンスとなる分野の技術を捨てるということはないでしょうけど、技術は関連するために少なからずエンジニアの能力も失われている部分が出てきます。

こういったことは別にIT業界だけの話ではなくって、時代の変化によってニッチとなってしまった分野の職人さんが減っているというのも同じことで、失ったことでどうなるのかという未来を考えておかなくてはなりません。

それがレガシーな技術であって新しいものに取って代わられているのであれば単に時代錯誤な代物として見切ってもよいかもしれませんが、その技術が完全に死なない以上、何らかのかかわりを持たざるを得ないことはよくあることです。


例えば、メールは死んだなんてことは数年前から言われていますけど、現在でもビジネスでの情報交換の主流はメールになってますし、じゃあそれを見切るかといってもシステムからメールを飛ばしたいなんて要件は当たり前についてきます。

プログラム的には単にメール送信のメソッドを呼び出すだけでよいのかもしれませんけど、そのメールの配送経路やプロトコルまで理解しておかないと組み立てられないシステムもあったりして、専門のエンジニアがいない場合に現場で困ることにもなったり、トラブルが起きたときに調査・対応ができる人がいないとなると致命的な状況に陥る可能性があります



クラウドを操る技術の汎用性


クラウドサービスを利用する際に、単に表向きのシステムを使うということだけでなく、自社のシステムと連携させて使うといったケースがあったりします。

この際にクラウド側で用意しているAPIを通して連携させたりもするのですが、そういったクラウドを利用するAPIの知識というのはそのサービス特有のものであったりして、他でも同様の事ができるわけでもありません

確かに、プロトコル的にHTTP(S)をつかってRESTなAPIを叩くというようなコアになる部分は同じかもしれませんが、一度作ればそういったところもラッピングされてしまうため、単にパラメータの変更だけで保守が成り立ってしまうことにもなります(それが一つのメリットであることは確かなのですが)。


こういった状況が続けば、当然高度な知識を持っていないエンジニアでも対応できるようになるわけですから組織としてのスキルレベルが低下することにもなるでしょうし、エンジニア自身もそのサービスでのやり方しか理解できなくなって応用が利かない状況にもなります。

これは現実問題としてよくある、レガシーなシステムを数十年触っていてそのシステムの仕事しかできない人材が出来上がったという状況と変わらないわけで、単にそれがクラウドという名の今風な環境に変わったというだけです。


こうやって溜め込まれていくナレッジというのは、現場のエンジニアに対してシステム構築や保守・運用の中核を担うためのスキルというよりは、サービスやツールを扱うためのマニュアルのようなものであって、現にそういったマニュアルを細かくアップデートすることを何度もやらせているのもよく見る光景です。

そして、そのマニュアルが多ければ多いほど現場のスキルが充実していっていると勘違いしていることもよく起きていることだったりします。


クラウドという名の雲の中に複雑な技術を隠してしまっているわけで、その中の技術というものに誰も興味を示さなくなるのでその分野のスキルを磨こうという人が出てきません。

今までの煩雑な保守・運用から開放された!という喜びの中で、使わなくなったスキルを何時までも維持したいと思う人は少ないでしょう。

しかし、そこで得た新たなスキルというのは利用しているクラウドの中で閉じた世界であって、汎用性があるものでなかったりします。


別にクラウド自体を否定しているわけではなくて、要は使いどころをきちんと考えようとか、それを使ったときに使わなくなる技術(つまりはその分野のエンジニアがいなくなるリスク)って何だっけ、ってちゃんと考えた方がいいよと思うわけです。

オンプレ万歳という時代がくるということは無いと思いますが、クライド化への傾倒によって自社の技術レベルが失われ競争力も低下するリスクが出てこないのかということをちゃんと考えとかないとシステム部門としても何かあった際にベンダーに丸投げするだけではますます存在価値がなくなってくることになってしまうと思います。