試験代は結構高くて16,500円(税込)もするので、個人で自腹で受けている人は少ないかも知れません。
ただ私は受けて良かったなと思っています。
私はAWSのlishtsailを内部使用のためのシステムの為にもう4年くらいはを使っています。でも実際に使うその部分だけしか触っていなかったので、全体像は良く分かっていませんでした。オンプレミスの時から使い慣れているからという理由から、WebサーバーもWindowsサーバーだけを使っていて、データベースもWebサーバーに直接インストールしていました。ファイルの保存場所もこのWebサーバーに直接保存していました。
今回試験を受けるにあたり、教科書を買って勉強しました。こう言う資格試験の勉強の良い所は幅広く知識が身に着く所と、専門の人から見ればまだまだ浅いのでしょうが、世の中の標準的な実務を知ることが出来るところです。
例えば、データベースはWebサーバにインストールしてしまうと、手動でバックアップを取る必要があります。データファイル自体はタイマーを使って定期的にとる事も出来るのですが、これを全く別の安全な場所にコピーして保存するのは手動でやっていました。これが結構面倒臭いし、バックアップが常に最新のものにはなりません。また、Webサーバーに何かあると、一台しかないこのデータベースも停まってしまいます(可用性)。
これがAWSのデータベースを使うと、基本的にはマネージド・サービスですのでAWSが別のサーバーを電源が別の場所に立ててくれて、かつ、レプリケーションもとってくれるので、サーバーが止まる心配をする必要もなければ、バックアップを手動で取る必要もなくなります。
自己流と言うのは恐ろしいもので、そもそもデータベースを電源が別の場所に立ててレプリケーションをとると言う概念自体がなかったので、それだけでも試験代の元が取れるくらいに勉強になってしまいました。
また、ECSやFargateの存在を知ったことで、今までハードルが高かったDockerを使ったコンテナ上でWebサーバーを立てて、プログラムを走らせることがそれ程難しくなさそうなことが分かりました。それで実際に試してみたのですが、無事に自作のアプリをコンテナ上で走らせて、公開する事も出来ました。
www.yourtaxsecretary.com
コンテナ上でサーバーを立てる過程で、Webサーバーにはデータもファイルも保存しない、いわゆる「ステートを持たない」状態にするのが正しいのだと学びました。確かにコンテナにファイルを保存してしまったら、コンテナを破棄した時にデータも失われてしまいます。それでは、ライブラリを含めたコードを変更した時にコンテナを簡単に破棄・交換する事が出来ず、コンテナを使う意味が無くなってしまいます。
この他、ファイルを保存するs3、AWSが内部で仮想的に作るネットワークのVPC、AWS内で横断的に使えるセキュリティの仕組みのIAMなど、勉強するとその良さが分かってきて、本当によく出来たシステムのインフラだなと思いました。システムの勉強は範囲も広く深くて果てしないです。習得には相当の時間がかかります。しかし、極論を言うとAWSにどのような製品があるかを知りその使い方をマスターすれば、今まで多くの専門家エンジニアの方々が多大な時間を使って学び、その知識を使って構築してきたシステム環境を、完全ではないかも知れませんがある程度再現出来てしまうのだなと感じました。
自分の会社のビジネスに実際にシステムを作る必要がある人にとっては、いい時代が来たものです。こう言う構築が難しいシステムを簡単に使えるようにしてくれてるマネージドサービスを使わない手はありません。
私は次は、サーバーの面倒を全く見なくてもいいサーバーレスの仕組みであるlambdaに挑戦してみようと思っています。