みなさん、こんにちわ。こじまです。
今年は花粉症がマジでやばくて、もうカオスです!!!
さて、今回は僕が最近感じていることをタラタラと書いてみようと思います。
Well-Architected Framework
ここでは略してW-AFって書きます。(長いから・・・)
W-AFの概念自体は結構前からあったなーと思ってはいましたが、とっても有益な情報群だと思っております。
W-AFはちょうざっくり説明すると、ワークロードの品質向上に使用できる一連の基本原則で5つの柱で構成されています。
- コストの最適化
- オペレーショナルエクセレンス
- パフォーマンス効率
- 信頼性
- セキュリティ
Azureのベストプラクティスと特定のビジネスの優先順位に照らしてワークロードを最適化できるように支援することを目的としています。
さらにデザインパターンなどを組み合わせて全体を構成していきます。
ここら辺の話はゼンアーキテクツ三宅さんの話が非常にわかりやすいのでYoutube動画をみてくださいませ。
「あつまれ未来のアーキテクト!Azureでのアプリケーションアーキテクチャー設計を知ろう」
よくある話
今に始まった話ではないのだけどよくあるお話をちょっと書きますね。
クラウドデザインパターンというやつが流行ったときも同様に感じたのですが、これでもかとサービスアイコンを並べてイケてる風に作ったクラウド構成図ってよくあると思うんですが、実際にこれらをアプリケーション(サービス)でどのように実装し運用するのか全く見えてこないやつありませんか?
僕はクラウドの構成図はなるべく見やすく、実装、運用する側がちゃんと理解できるものを作るべきと思っていて、そういった当たり前のことをメチャクチャ端折っている例をよく見ます。
PaaSで構成されたシステムでは特に顕著ですが、リリースマネジメントやデプロイパイプラインとか、一筆書きみたいに簡単に作っているとだいたいそこでハマります。
それと、非機能要件を満たしているかというのも重要な部分で機能要件はクラウドの各サービスで補うが非機能要件は全然考慮されていないなんていうこともちらほら。
こういうのってちゃーんとクラウドを理解していないとなかなかできないんですよね。
非機能要件を理解する
イケてる構成図でも実際にサービスが動かなければ全く意味がないのです。非機能要件とはアプリの機能以外のすべての要件になるので非常に幅広いです。
その中でここだけは必須です、ここを満たさなければサービス提供できない、などの最低限の部分は見極めていると思いますがそれらをテストするってなかなかに難しいです。
エンジニアの腕の見せ所とはまさに非機能要件を確定させ、それを実現する仕組みですから「イケてる構成図作成」だけじゃないですよね。
クラウドに対する非機能要件
非機能要件をテストするには負荷テストを行ったり、セキュリティ診断をしたりとそれなりやることが多いのですが勘違いしちゃいけないのはクラウドだからやらなくても良いというのは大間違いです。
何故かたまに僕の耳にクラウドは非機能要件を吸収してくれる、みたいな夢のような話が入るんですが、あれは嘘です。
非機能要件はちゃんとテストしないといけないし、そのテスト結果に合わせた仕組みを作らないといけません。
W-AFでイケてる構成考えても非機能要件のテストさえできない状態では全く意味がないです。
非機能要件を探る方法
まずは従来からある負荷テストをやるのが一番いいと思います。
pnopさんが提供しているLoad Testerを使うとJMeterベースの負荷試験環境を簡単に作ることができて便利です。
脆弱性診断であればCI/CDに組み込んでしまうこともありですよね。
僕お勧めのサービスはこちらです。
他にも最近はマイクロサービスアーキテクチャー内での可用性テストとしてカオステストなんかもありますよね。
非機能要件を満たす構成というのがとっても大事なんです。
アプリ開発側から見たクラウドデザインパターン
一昔前に流行ったクラウドデザインパターンですが、僕的にお勧めの書籍があったりします。
まずは超わかりやすいのがこちら。ちょっと古いけど十分活用できます。
で、ここで終わってしまっている方が多いのですが、ここから先、アプリ開発内でどうやって実装していくかって話になると思います。
そこでこちらを推薦します。
こちらはAzureのクラウドデザインパターンですが、内容はアプリ内でどうやって実装するかにフォーカスされています。
本質的にいうと後者かと僕は思っていますが、例えばサーキットブレーカーパターンなどクラウドサービスだけでなくアプリでどのように実装するのか考えた場合ちゃんとコード内で実現できなければ意味がないですよね。
こういったことを踏まえて、じゃあクラウドどう使うのよ?って話になるんですよね。
今回はクラウド設計において、インフラ面だけじゃなくアプリ詳細レベルでの実装まで踏み込んでやりましょうって話ですがW-AFだけではカバーできないので僕お勧めのリンクを共有しておくので是非見てみてくださいませ。
それではまた花粉症と戦ってきます。