Amazon.comのシステムは広義のSOAでできている
ウェブサイトACM Queue上のACM Queue CastというポッドキャストでAmazon.comのCTOがインタビューを受け、Amazon.comのシステム・アーキテクチャについて語っている。リンク先には音声ファイルと共に、筆記録もあるので勉強にもいいと思う。私は以下の点が印象に残った。
- アマゾンのシステムは広い意味のService Oriented Architecture (SOA)でできている。SOAと言うと今はXMLを使ったウェブサービスを構成要素することが多いが、そういう狭い意味ではなく、疎結合された多くのサブ・システムによって構成されているという意味である。
- たとえばDBMSに直接アプリケーションがアクセスすることはなく、データ・サービスのAPIを通じてアクセスする。そのAPIはXMLを使ったウェブサービスの場合もあれば、別の技術に基づいたプロトコルで提供されていることもある。
- 各サービスを提供する部署は、サービスの開発・拡張・保守をおこない、また運用もおこなう。このため、開発陣には運用・保守に念頭を置いたサービス開発をおこなう動機付けがある。そして、サービスの性能・可用性などすべてに責任を負っている。どんなハードウェア・ソフトウェア技術を使っているかに関わりなく、最終的にサービスを期待通りに提供する責任がある。
- 大規模なシステムでは常にどこかが異常動作をしており、それを念頭に置いた設計をしなければならない。
- 大規模システムでは、世間で流通しているソフトウェア部品がそのまま使えることはあまりなく、カスタマイズやエンジニアリングを施さなければならない。