S先輩にきいてみたっ！- Amazon Web Serviceの拡張性と伸縮自在性 - 第9話 真実

さて、連載も佳境に入ってきました。

これまでの連載はご覧になっていただけましたか？
[第１話](http://qiita.com/ukiuni@github/items/c82cf2b0b3d16ab7c2a0)
[第２話](http://qiita.com/kazuqqfp/items/1e326e1452468c33800b)
[第３話](http://qiita.com/imafuku/items/b40a5a9b049c38fdbd48)
[第４話](http://qiita.com/aikawa2002/items/191d34b5b7c2c836a69f)
[第５話](http://qiita.com/alingogo/items/d3b4b0e61791555d28f0)
[第６話](http://qiita.com/kenszk/items/3942f55fae098c4840ed)
[第７話](http://qiita.com/chano2/items/e261c73e09f0cbd8667e)
[第８話](http://qiita.com/saber_chica/items/fb283b78cc52dcc4e12b)

第9話の今回のテーマは「拡張性と伸縮自在性」です。
なお、ストーリーはフィクションであり、実在の人物・団体とは一切関係ありません。

# 第９話 真実

「さてと…。」

いつもより少し硬く感じるキーボードを叩きながら、Aはつぶやいた。

「今日は、、、拡張性と伸縮自在性？」

AWS 認定ソリューションアーキテクト – プロフェッショナルレベル試験要覧を読むと、次のようにある。

```
7 ドメイン 7.0: 拡張性と伸縮自在性
7.1 疎結合されたシステムを設計する能力をデモンストレーションする
7.2 最も適切なフロントエンドスケーリングアーキテクチャを実装する能力をデモンストレーションする
7.3 最も適切な中間層スケーリングアーキテクチャを実装する能力をデモンストレーションする
7.4 最も適切なデータストレージスケーリングアーキテクチャを実装する能力をデモンストレーションする
7.5 垂直スケーリングと水平スケーリングの間のトレードオフを判断する
```

「…。恋は拡張しますか？愛は、伸縮自在ですか？」

夜の帳がもたらす気だるさからか、記憶が呼び起こす忌々しさからか、Aは独り言をつぶやき続けている。

「…。疎結合な僕らの関係。恋愛デモンストレーション。Wow。」
「…。さっぱりだな。さっぱりわからん。もう、僕には何も分からない。」

Aは、PCをそっと閉じた。

「S先輩、結婚するんだ。。。」
大通りの喧騒が漂う部屋の片隅で机に向かってAが思い出していたことは、たまたま聞いてしまった、S先輩の電話だった。
『[…ええ、わかったわ。それじゃぁ式場はそこね！そうね。…](http://qiita.com/saber_chica/items/fb283b78cc52dcc4e12b)』

苦い感情とともに、先週立ち聞きした内容を思い出す。

「そうだよな。S先輩、素敵だもんな。そういう話もあるよな。」

鉛を飲み込んだような感覚。悔やまれるのは、自分の自信のなさ。
少しでも、先輩に追いつこう。せめて仕事だけでも。

PCを開き、再び試験要項を読む。
「拡張性と伸縮自在性と聞いて、最初に思い浮かぶのは、利用のされ方によってサーバを増減させることだよな。」
「疎結合とは、サービスをサブシステム化して、各システム間をAPI通信、たとえばRESTで結合することによって、サービスの拡張性、および信頼性を担保することだよね。インフラ面でいうと、メモリ負荷がおおいサービスとCPU負荷が多いサービスをわけて、スケールアウトとスケールアップをわけて検討できるようにしておくとか。[マイクロサービスアーキテクチャ](http://arclamp.hatenablog.com/entry/2015/06/13/213830)という言葉もはやってるし、多分そのことだよね。」
「フロントエンドスケーリングアーキテクチャとは何だろう？フロントエンド、つまりUI周りのアーキテクチャだよね。いまだと殆どのアプリはWebで作るだろうから、WebUI周りのアーキテクチャ、それのスケーリング？あとは、中間層、つまりはビジネスロジックを持つ、コントラーとなる処理のスケールと、データ保存のスケールが出来るようなアーキテクチャが作れればいいのか。」
ーーググッて見る。
「お？アーキテクチャセンター？いろんなリファレンスアーキテクチャが載ってるのか。フムフム。[e コマースウェブサイト向けに伸縮自在なウェブフロントエンドを構築](http://media.amazonwebservices.com/architecturecenter/AWS_ac_ra_ecommerce_webfrontend_14.pdf)か。みてみよう。」
PDFを見ると、以下の様な構成を担保していることが伺える。

* CloudFront経由でサービスにアクセスすることで、ユーザから近いエッジロケーションで処理を受け付けることで高パフォーマンスを実現する。
* Beanstalkを使うことによって容量のプロビジョニング、負荷分散、スケーリングが自動化される。
* サービスごと（MARKETING AND RECOMMENDATION SERVICE、E-COMMERCE WEB SITE、CHECKOUT SERVICE）にBeanstalkを分けることによって、サービスごとに負荷が偏った時にも正しくスケールが行われる。MARKETING AND RECOMMENDATION SERVICEとE-COMMERCE WEB SITEはAPI結合、CHECKOUT SERVICEはユーザが直接アクセス可能なようにフロントエンドの処理を委譲する。
* ElastiCacheを使い、Sessionデータを保存することで、可用性を上げ、スケールアウトが可能な構成とする。
* DynamoDBを使い、高可用性やスケーラビリティーを担保する。

「フムフム。勉強になるな。他のアーキテクチャも見てみるか。次は[e コマースウェブサイトパート 2: チェックアウトパイプライン](http://media.amazonwebservices.com/architecturecenter/AWS_ac_ra_ecommerce_checkout_13.pdf)だ。」
…こうして、Aはアーキテクチャセンターのドキュメントを読み込んでいった。
「あ、もうこんな時間か…。」
「よく分からないところもあるな…。とくに『デモンストレーションする』ってなんだろう…。」
「…。」
「S先輩に聞いてみるか…。」
「うぅ…。いつもどおりに話せるかな…。」

-翌日----

（うぅ…。話せないまま、業務時間が終わっちゃった…。）
（S先輩ももう席にいないし、帰るか…。）
Aは重い足取りでエレベーターホールに向かった。
（なんか、今日は、いつもより疲れたたな…。）

「あ、A君、いま帰り？」
今日、一日中、話をする機会を伺いつつも話せなかった相手がそこにいた。
「うぉっっ！S先輩！？」
「あはは。驚きすぎ。いま帰りなの？晩ごはんでも一緒にいく？」
え？あれ？いいんですか？
「はい！お願いします！ちょうど、AWSで聞きたいこともあったので！」

会社近くの飲み屋にはいり、ビールで乾杯をした。

「そうなんです。「デモンストレーションする」っていうのがよくわからなくて。」
「あぁ、それはね。そんなにこだわらなくてもいいよ。」 S先輩は、英語の[原文](https://d0.awsstatic.com/training-and-certification/docs-sa-pro/AWS_certified_solutions_architect_professional_blueprint.pdf)を教えてくれた。
「だから、デモンストレーションするっていうのは、能力が備わっていること、くらいに読み替えてもいいと思うよ。」
「言葉に迷ったら、英語を見てみるといいよ。」

「なるほど。」
「…。そういえば、結婚されるらしいですね。おめでとうございます。」
ジョッキを握ったS先輩の動きが止まった。
「…。誰に聞いたの？」
「あ、先輩が電話で話しているのを小耳に挟んでしまって…。」
冷たい沈黙が続く。AはS先輩の手元を見つめるしかなかった。
「ぶっ、あははははは！」
S先輩が急に吹き出した。
「あ、ごめんごめん。すごい切羽詰まった顔してたよ。A君。」
「そう。結婚するの。妹が。海外で結婚式するから。そのためにお休みもらうの。」
「え！そうなんですか！あ、勘違いしました！」
トーンが急に明るくなったAの声を聞いて、S先輩がまた笑い出した。
「あははは！ふふふ…。はぁ。。。んー。すごい暗い顔してたね。…。どうして暗い顔してたの？」
小悪魔のような顔で覗きこんでくるS先輩。Aはその前では顔を真赤にして下を向くしかなかった。

さて！次回は最終回。
「クラウド移行およびハイブリッドなアーキテクチャ」をテーマにお送りします。よろしくお願いします