ご無沙汰しております、株式会社ビーイングで、手広くシステム開発を行ってきたレジェンドY(通称)です。
今回は、近年必須と思われる開発要素、「クラウドサービス」(以下クラウドと称す)に関する話をしたいと思います。
■それは2013年から始まった
それは2013年のことです。
「販売中のとある製品をクラウドサービスとして提供したい」という話が持ち上がりました。
当時のクラウドに関する時代背景としては、2011年に最大手のAWS(Amazon Web Service)の国内データセンターがようやく開設された頃になります。
現在では豊富なサービスメニューを誇るAWSですが、当時はメニューも質素で機能もかなり限定的な状況でした。
競合の Microsoft Azure に至っては、2014年に国内データセンター開設と、2013年当時まだ日本未上陸で、選択肢にもならない状況でした。
当然ですが、社内でノウハウのないAWSを、アカウントの開設から始まって、EC2(仮想マシン)の設置から、Route53(DNS)の設定、さらにS3(外部ストレージ)で必要なデータを配置&転送するなど、手探り状態で進めていったことを今でも覚えています。
その後、翌年には無事にシステムはサービスインの運びとなりましたが、この過程で得られたノウハウは今も色々なところに活かされています。
(そして、現在に到るまでの長きに渡ってサービスは絶賛提供中です!)
■サーバーの面倒は誰が見る?
さて、サービスを提供開始したのはいいものの、当社は基本的にパッケージソフトウェア開発を生業としているため、サーバーを常時監視しておくには?という課題に突き当たりました。(24時間...戦えません^^;)
これについて、当初1年ほどは、サーバー監視サービスを提供する企業に監視をお願いしていたのですが、その後は、
・Cloud Watch(監視機能)が進化して、障害時の自動通知機能が充実!Slackとも連動するように。
・ハードウェアが故障しても自動復旧する、Auto Recovery が2015年に登場!
などAWSが徐々に進化したため、これをキャッチアップすることで、現在はほとんど手間がかからないオートパイロットでの運営が可能になっています。
上記の中でも特に「Auto Recovery」は、ハードウェアトラブル時に、自動的に他のハードウェアに乗り換えて、何事もなかったかのようにサービス提供が続行するという、ナイスな機能で、サーバーの運用側からすると、年に幾度かはこの機能にお世話になっています。
(復旧完了!の通知が来るたびに、少しドキッとしますが、現時点で必ず復旧成功しているので頼りになります。)
余談ですが、2022年春からは特別な設定なしでも、仮想マシン起動でAuto Recoveryが標準装備となりました。
(あなたが構築した仮想マシンも知らないうちに設定されているはずです。)
■開発者のクラウドお作法
さて、クラウドを使用する場合大きく分けて、以下の2つの方法が存在します。
Aコース: クラウドサービスが提供しているブラウザ画面(WebUI)を操作して各種設定を実施する。
Bコース: プログラムを書いて、クラウドサービスのAPIを使って各種設定を実施する。
クラウドを運営する中の人が ”開発者” の場合は、Bコースを選択したほうが幸せになれると思います。
開発者たるもの「プログラムを書くことが生業」でプログラミングはお手の物(人によっては日本語で文章を書くより得意な場合も)なので、これを使ったクラウド操作はそれほど敷居が高くないはずです。
実際、自身の担当プロジェクトでは、「運用に必要な設定はすべてプログラムで記述し自動化する」ことを推進してきました。
その結果、新たにサーバーを1台立てるようなケースでも、コマンド1発で一連の複雑な設定が完了するようになっています。
(ボタンを押したあとは、出来上がるまで...じっと我慢して待つ必要はあります。)
また、運用手順をプログラムとして記述することのメリットとしては
・設定に人間が介在しないので、ヒューマンエラーが起こらない。
> プログラムなので、操作ミスや手順を飛ばすなどは、絶対に起こりません。
・作業者のスキルに依存せず誰でも、作業を実施できる。
> 最近は、クラウド設定の一部を、エンジニアじゃない事務の方にお願いできるように...。
・定期的にUIが変わるAWSコンソールに惑わされることがない。
> 数年に1度程度、 ”あちらの事情” でUIが大幅変更されますが、UI操作特有の「昨日まであったあのメニューはどこにいった?」という心配がない。
などがあります。
また、プログラムから呼び出すAPIは滅多に変更がない(変更があっても互換性が保たれることが多い)ので、変更に強く10年前のプログラムが今も元気に動作していたりもします。
■クラウドは続くよどこまでも...
当社において昔は、ごく一部のプロジェクトでしか扱うことのなかった「クラウド」ですが、今では多くのプロダクトが、クラウド前提のシステムになりつつあるため開発におけるクラウドのスキルの重要性がより高まっています。
クラウドに興味はあるもののあまり詳しくない...という人も当社では
・クラウドを学ぶ機会が色々と用意されている。
・担当プロダクトによっては、日々クラウドを使った開発を実践できる
などでスキルアップを図っていくことができるので大丈夫です!
もちろん、クラウドでの開発経験が豊富な方も、大歓迎です。
そういう方もぜひ当社の門を叩いてもらえればと思います。