手離れの良い「放ったらかしシステム」を作るエンジニアリングについての話

2021年12月13日

ビジネス

eyecatch 放ったらかしのシステムを作るのを究極の目標にしている、ユゲタです。 「手離れのいいシステム」って何かというと、その名の通り、作った後で、運用が苦労するシステムではなく、放ったらかしにしておいても、ちゃんと自動運用されていくシステムの事です。 あーだこーだやらないといけなくなって、それに時間や工数が取られてしまうと、付きっきりにならないと行けないシステムになります。 会社などのシステムでは、初期開発して、ロンチした後に、「運用フェーズ」に移行して、それから後は、追加開発などをする一方で、運用サポートという作業がついてまわります。 そんな中、全くノーメンテで運用しているというシステムも世の中には存在します。 放ったらかしと聞くと、なんだか放置されているように聞こえますが、誤解のないように言うと、運用時のシステム障害が少なく、システム改修の必要が少ないという感じになれば、誰もが幸せになるシステムと言えると思います。 また、同時に、システム不具合が少ないという事も放ったらかしの条件になってくるので、この点も誰も損をしないシステムと言ってもいいでしょう。

運用フェーズの放ったらかしの実態

その昔、コンシューマゲーム開発をしていたユゲタは、ゲーム制作現場で、不具合を出さないためのゲームソフトウェア作りを体感してきましたが、その後ゲームが発売されて、想定していないバグが含まれていて、 泣く泣くリコールをしたり、「仕様です」という返答をサポート担当者が言わざるを得なくなったという事例をたくさん見てきました。 もちろん、そうしたバグを生み出すのは、開発プログラマーの責任と思われても仕方がありませんが、現場ではバグを生み出す仕様を考えだした起案者や、設計担当のSEであったり、 そもそも、そのバグ自体に気が付かなかった、デバッガーの人たちの責任として、なすりつけ合いをする見苦しいチームも数多く見てきましたが、 やはり、そのバグの大きな一員となるプログラミングをした人は、言わずもがな、自分の責任という事は自ずと理解できているという雰囲気は醸し出していました。 でも、世の中には、10年以上もシステムアップデートを行わなくても動作し続けているシステムというのも実は身の回りにたくさんあることに気が付きませんか? 家電製品に組み込まれているプログラムや、昔から使われているマーケティングツールなどに、放ったらかしシステムが多いという特徴もあります。 ノーメンテ、ノーアップデートは、やはり使っている人も、それを運用する人にも、どちらにもメリットがあると考えられるので、改めてシステム構築の目指す一つのポイントとして考えてもいいかもしれませんね。 そして、ユゲタのように飽きっぽい性格の経営者がいるとしたら、作ったシステムを放ったらかし運用して、また次の新たなシステムを作りたいと思うでしょうからね。

放ったらかしシステムについての話

実際に「放ったらかしシステム」ってどういう風にすればいいかと、考えてみたいと思います。 ちなみに、インターネットシステムでの話に偏っていることを最初にご理解ください。
・システムにバグが存在しない。 ・サーバートラブルが無い。 ・問い合わせされる事(システムに対する質問)が少ない。 ・外部要因に左右されない。
ちなみに、ここで言っている「放ったらかし」は、「まるで手を付けない」という意味ではなく、「関わる作業を最小限にする」という意味に捉えてください。 それぞれの項目を深堀りしてみると次のようになります。

システムにバグが存在しない

当たり前の話ですが、システム不具合はすべての人にデメリットを与えます。 バグを無くすために、システムエンジニアは、プログラム言語環境から、開発環境、フレームワーク環境、実行環境、デバッグ環境などなど、 いろいろな仕組みを検討して、導入して、実施していると思いますが、おそらくバグの存在しないシステムは世の中にはないのではないかと思うぐらい、 次から次へと様々な種類のバグは潜んでいます。 中には、気にならないバグというものもあり、こういう程度のバグは見過ごしてもいいのですが、限りなくバグが発生しないプログラミングというのは、追求する一つのポイントかもしれませんね。

サーバートラブルが無い

ハードウェア要因、ネットワーク要因、サーバーOSやモジュールの要因、その他想定していなかった、外的要因によるトラブルで、 インターネットサービスにおけるサーバートラブルというのが、発生してしまいます。 AWSにすれば安心というモノではなく、システムの分散化をしたり、全く違うIDCを使っての冗長構成にしたりということをしても、 何かしらのサーバー障害は発生するものです。 でも、こうしたトラブルを減らすいウェアゆるサーバーの安定運用を行うことができれば、放ったらかしシステムに近づくことができるでしょう。

問い合わせされる事(システムに対する質問)が少ない

インターフェイスがわかりにくいシステムやサービスは、マニュアルが無いと何一つ操作することができません。 そして、マニュアルに頼るシステムは、利用するユーザーがめんどくさがって、使い始めからの拒絶感や、使っていくうちのストレスで、 継続性が無くなってしまいます。 そうした事も含めて、分かりやすいユーザーインターフェイスを整えるという事は極めて重要なシステムポイントと考えられます。 放ったらかしシステムを目指すのであれば、ヘルプモードやQAページなどは極力作らなくてもいいぐらいの操作感を検討することは必須なのかもしれませんね。

外部要因に左右されない

外部要因というのは、上記で書いた、サーバーやネットワークだけでなく、プログラミングでも、使っているライブラリのバージョンアップが必要になってきた場合に、 必然的に、そのアップデート対応をしなければならなくなってしまいます。 これって、ライブラリのアップデートウォッチもしなければいけないし、そうしたライブラリをたくさん使ってしまっていると、その数に応じた数だけ対応する回数が増えてきます。 以前から言っているように、「外部ライブラリをなるべく使わない」というユゲタ思考は、これがイヤだからなんですね。 初期開発で楽できる反面、運用でしんどくなってしまうのが、このライブラリの落とし穴なんですね。 ※これって、なかなか経験しないとこの思考にならないというのもあるので、経験の浅いエンジニアチーム等の場合は、必ず運用開始してこの障害が発生するというアルアルも存在します。

改めて魅力的に感じた放ったらかしシステム

システムを外部発注している経営者などからしたら、大金をはたいて作ったシステムを、それ以上の金額を掛けて運用するのは、本当にしんどいと考えてしまいます。 実際に作ってそれで完了と考える人も、ITがわからない人には多くいらっしゃるので、運用を保険というレベルではなく、メンテナンスしなければ、システムは使い物にならなくなるという事を認識させるのも、なかなかしんどい作業でもあります。 それも踏まえて、一度作ったシステムを限りなく放ったらかしにできるというシステムは、エンジニアの目指すべきシステムの将来像であるとも考えられますね。 実際に会社経営をするユゲタからしてみると、やはり、便利なシステムをどんどん創り出していきたいけど、創り出すエンジニアの数には限りがあるので、 効率的な運用をしたいとも考えます。 結果的に、放ったらかしにできるシステムが作れたら、それはもう勝ち組になれるのではないか?という結論にたどり着いたという事ですね。 まあ、サーバー監視やシステム監視は、随時行っているという現実は変わらないと思いますけどねwww

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。