先週のAWS関連ブログ 〜7/10(日) - Infrastracture as Code、WordCamp Kansaiなど

どうも、セクションナイン吉田真吾@yoshidashingo)です。

週末にKINGSGLAIVE FINAL FANTASY XVを観てきました。FFXVメディアミックスのいちコンテンツではありますが、FFをプレイしない人でも十分に楽しめる「ストーリー」「映像クオリティ」でした。9/30が楽しみです。

ということでさっそく行ってみましょう。

AWS公式

1. AWS Black Belt Online Seminar「Parse.comからAWSへのモバイルアプリの移行」の資料公開

  • 2017年1月に閉鎖されるParse.com上のサービスをAWSに移行する方法
  • マッピング
    • Parse ServerとMongoDB→EC2あるいは元からライフサイクル管理するようにBeanstalk上で構築・管理
    • Parse Push → Amazon SNS mobile push
    • Parse Analytics → Amazon Mobile Analytics
    • Parse Users → AWS Cognito User Pools
  • Pushの移行が特に手間がかかる(Push実装自体手間がかかるのでしかたない)

www.slideshare.net

aws.typepad.com

2. [OpsJAWS: やってみようシリーズ] Sumologicの検索(CloudTrailのログ解析)

  • パートナーによる寄稿シリーズ「OpsJAWS: やってみようシリーズ」、Sumologic第2弾
  • Sumologicに取り込んだCloudTrailログを検索したり、さらにノイズを取り除いて自分が見たい情報を見られるようにするためのクエリ方法の解説

aws.typepad.com

AWS関連

先週は Infrastructure as Code のイベントやWordCamp Kansai 2016などでAWS関連のセッションなどがありました。

Recruit Technologies Open Lab #03 テーマ:Infrastructure as Code

www.youtube.com

3. Infrastructure as Code のこれまでとこれから

  • 現状、以下の4層のコンセンサスのうち、Infrastructure as Codeのスコープは「Infrastructure Definition Tools」と「Server Configuration Tools」
    • プログラマブルにリソースを提供する動的インフラプラットフォーム(Dynamic Infrastructure Platform)
    • インフラレイヤーをプログラマブルにプロビジョニングするインフラ定義ツール(Infrastructure Definition Tools)
    • いわゆるConfiguration Managementであるサーバー設定ツール(Server Configuration Tools)
    • Orchestrationレイヤーであり、ライフサイクル管理に欠かせないインフラサービス部分(Infrastructure Services)
  • 今後はDynamic Infrastructure Platform選択肢の増加や、コンテナ技術によりホストマシンとコンテナそれぞれにスコープが分離し、プロビジョニングの単純化がされる。また、Microservices化により各サーバーのコンポーネントは単機能化するがシステム内のインフラの数は増えて複雑化するので、Infrastructure Services(Orchestration)がより重要になる。

speakerdeck.com

4. Infrastructure as Code

  • コード化により、インフラにもアプリ開発のベストプラクティスが適用できるようになった。コードの再利用やCIや自動テスト
  • Reproducible Build(ビルドの再現可能性)が重要であるので、コード化で重要なのは実は単なる構築の自動化ができるということではなく、あるべき状態をコード化して冪等にそれを再現できること。

speakerdeck.com

5. Infrastructure as Codeと組織文化

  • コンウェイの法則のとおり、アーキテクチャは組織のコミュニケーション構造を反映したものになるので、組織構造抜きには考えられない。
  • インフラとアプリが分離されたチーム構成を取ることが多いが、垣根が存在する弊害がさまざまある。
  • 組織構造(3-1)で示すとおり、インフラとアプリは開発チーム内にいて、セキュリティや標準化など、デリバリーのリードタイムとは別の軸で専門的に動くもののみ共通的な横断チームとすることが提案されている。
    • 自分も大いに賛成で、本来サーバーの購入やキッティング、ラックの準備や場所の割当てなど社内の一箇所で慣れた人がやらないと非効率だしなにより統制が取れなかったという事情はあったと思うが、仮想化やクラウドを基盤にして、アプリ開発のベストプラクティスをインフラにも適用するのであれば、組織構造もそれに合わせて変化させる必要があるだろうと思う。

slide.meguro.ryuzee.com

6. 運用・監視もコード化する。開発者が監視まで考える方法論

  • 何を監視するか継続的に考えながら実装するのが大事なので、インフラ任せにならずアプリによって最適なものを設定を考え、必要に応じてアプリ側でプラグインを自分で作ったりするのも大事。
  • 誰でも監視設定できるのが理想

運用・監視もコード化する。開発者が監視まで考える方法論

7. プロビジョニングツールはMakeで決まりだろ

  • 宣言的記述による差分適用により冪等性を担保するというアプローチは実際ツラいこともあり、そもそも複雑なサーバーの状態管理をするのではなく単機能化して「組み合せ方」を考えるのはどうか

speakerdeck.com

ここまで見るとそれぞれのセッションの実践部分が、mizzyさんの4層のコンセンサス内容で見事に抽象化して説明してあるなと思いました。

WordCamp Kansai 2016

8. 「ざっくり分かる WordPress サイトのチューニング」を WordCamp 2016 で発表してきました。

  • チューニングに必要なのはまず「計測」、そして手間と効果を考えた「キャッシュ」戦略
  • 代表的な計測方法や、レイヤーごとの代表的なキャッシュ方法を解説

blog.shin1x1.com speakerdeck.com

9. AWS+WordPress.SkeletonでスケーラブルなWordPressサイトをつくる

  • WordPressのスケーラビリティを確保するのは複数ノードにおける「メディアファイルの同期」と「コアやプラグインやテーマの更新」という観点で難易度が高い
  • メディアファイルはS3などにオフロードすると良い
  • 更新はWordPress.Skeletonを使うことで、PHPのComposer(パッケージ管理システム)で依存性も含めて管理が可能、実際のアップデートはBlue-Greenでダイナミックにバージョンごと切り替えを行う。
  • バージョンによりDBのマイグレーションが必要な場合や言語ファイルなどについては依然として課題は残る。

speakerdeck.com

10. WordPress RESTful API & Amazon API Gateway

  • WordPressをヘッドレスCMS化するにあたり、APIのベストプラクティスの適用(キャッシュやスロットリング)は難しいが、API Gatewayを使うことで、WordPressおよびそのサーバー管理と切り離された切り離されたAPIからサーバーレスにデータの配信などを行うことでスケールさせることが可能。
  • WordPressをフロントに利用するパターンや、JavaScript経由でデータのみ非同期に連携する方法が解説されている。

www.slideshare.net

先週のAWS関連ブログ 〜7/4(月)

どうも、セクションナイン吉田真吾@yoshidashingo)です。

先日はてな東京オフィスに伺い、CTO田中さんやMackerelチームの杉山さんたちにまかないランチをごちそうになり、「なるほど、これなら絶対健康になるな」と実感しました。福利厚生をお考えの会社さんは採用をオススメします。

それでは今週も行ってみましょう。

AWS公式

6月にあったアップデートをまとめて紹介します。

1. Amazon EMR 4.7.0 – Apache TezとPhoenix, 既存アプリのアップデート

  • Apache Tez (0.8.3):YARN上で動作し、YARN上のアプリケーションであるHive(SQL)やPig(Script)、MapReduce(バッチ)用のフレームワークをライブラリとして提供しており、アプリケーションをあまり変えずに性能向上を行うことができるのが売り。
  • Apache Phoenix (4.7.0):HBase(NoSQL)に対してACIDなトランザクション処理が高速に(内部的に並列処理で)SQL処理ができるアプリケーション
  • HBaseが1.2.1に、Mahoutが0.12.0に、Prestoが0.147にアップデート。EMRクラスタ上のアプリからRedshiftにアクセスするためのJDBCドライバを搭載。

リンク:Amazon EMR 4.7.0 – Apache TezとPhoenix, 既存アプリのアップデート | Amazon Web Services ブログ

2. AWS CodePipeline に OpsWorks とのインテグレーション機能が追加

  • AWS CodePipelineでデプロイメントプロバイダにOpsWorksを指定可能になり、以下のようなサポート状況になった。

f:id:yoshidashingo:20160705020214p:plain

リンク:AWS CodePipeline に OpeWorks とのインテグレーション機能が追加されました | Amazon Web Services ブログ

3. Amazon RDS SQL ServerのマルチAZサポートが東京リージョンでも(ついに!)利用可能に

  • SQL Serverを冗長化する場合に、東京リージョンではRDSがマルチAZサポートがないため、フェイルオーバークラスター(Enterprise Editionでのみ対応可能なOSレベルで対応するオプション)か、Standard Editionでも利用可能なクラプロやDRBDで冗長化していたが、ついにRDSがサポートしたためにバックアップ運用やホストやミドルウェアの保守が圧倒的に楽になった。
  • バージョンはSQL Server 2008 R2と2012、エディションなStandardとEnterprise

リンク:Amazon RDS for SQL ServerのマルチAZサポートが東京、シドニー、サンパウロリージョンで使用可能になりました! | Amazon Web Services ブログ

なお、EC2ではすでに最新の2016もサポート済み

リンク:Amazon EC2 Now Supports Microsoft SQL Server 2016 | AWS Partner Network (APN) Blog

4. Amazon RDS PostgreSQLでクロスリージョンリードレプリカが利用可能に

  • たとえばUSリージョンで更新されたデータが、東京リージョンのリードレプリカに非同期(論理)レプリされるため、マスターに負荷なく集計処理などが可能になる。
  • また、上記のUSリージョンのマスターが災害で利用不可になった場合でも、東京リージョンのリードレプリカをマスターに昇格することで事業を継続できる。

リージョン:Amazon RDS for PostgreSQLでcross-region read replicaをご利用頂けるようになりました | Amazon Web Services ブログ

5. IAMのService Last Accessed Dataでより詳細な情報が取得されるようになった

  • 昨年末リリースされたIAMエンティティ(ユーザー、グループ、ロール)がAWSサービスに最後にアクセスした時刻を表示する機能「Service Last Accessed Data」に、以下の2点の情報がさらに取得されるようになった。
    • マネージドポリシーやグループに関連付けられている全てのIAMユーザーおよびロールのLast Accessed Data
    • あるIAMユーザー、ロール、グループに対して、サービスの権限を与えている全てのポリシー
  • これにより、どのユーザーやロールがサービスにアクセスしたかだけでなく、そのサービスにアクセス可能なすべてのユーザーやロールがいつ最終アクセスしたか確認可能であり、不要な権限を付与してしまっている可能性を見つけることが可能に。

リンク:【AWS発表】新機能:Service Last Accessed Dataからのより詳細な情報取得 | Amazon Web Services ブログ

6. Amazon RDS Oracleアップデート

  • 定期パッチセット、April 2016 Oracle Patch Set Updates (PSU)が利用可能に
  • Oracle Repository Creation Utility (RCU) 12c が利用可能に(上記PSUがあたっているバージョン)

リンク:Amazon RDS for OracleでOracle Repository Creation Utility (RCU) と April PSU Patchesをご利用頂けるようになりました | Amazon Web Services ブログ

7. AWS OpsWorksがCentOSをサポート

  • OpsWorksがCentOS 7をサポート

リンク:AWS OpsWorksがCentOSをサポート | Amazon Web Services ブログ

8. 暗号化された EBS スナップショットのクロスアカウントコピーが可能に

  • EBSはボリューム/スナップショットともにKMSで暗号化可能であり、非暗号化スナップショットはAWSアカウント間のコピーが可能であった
  • 共有元で管理されている暗号化に利用したKMSのキーとは別のカスタムキーで再暗号化したスナップショットとともにカスタムキーが共有先アカウントに共有され、それを用いて暗号化スナップショットからブートボリュームを作成できるため、安全な仕組みでスナップショット共有が可能

リンク:【新機能】 暗号化された EBS スナップショットのクロスアカウントコピー | Amazon Web Services ブログ

9. AWS CodePipelineで失敗したアクションのリトライが可能に

  • AWS CodePipelineで主導でパイプライン全体をリスタートしたり、対策前身用の別コミットを追加で行う必要があったが、失敗したアクションからリトライできるようになった。

リンク:AWS CodePipeline で、失敗したアクションのリトライが可能に | Amazon Web Services ブログ

10. ムンバイ(インド)リージョンがオープン

  • 13番目のリージョン、ムンバイがローンチ(ap-southeast-2)
  • AZは2つ。エッジロケーションは3つ(ムンバイ、チェンナイ、ニュー・デリー)

リンク:新たにアジアパシフィック(ムンバイ)リージョンがオープン | Amazon Web Services ブログ

11. AWS Black Belt Online Seminarと興味深いQ&Aをピックアップ

AWSサービスの権限管理

www.slideshare.net

Q10: Open AMを使ってもCloudTrailでユーザを識別できますか?また、複数のアカウントや同じアカウントの複数のロールを一つのOpenAMやActive Directoryのユーザ一つで管理できますか?

A10: サードパーティ様の製品と関連いたしますので、ベストエフォートのご回答となることをご了承いただきたく思います。

Cloud Trailで表示されるFederated Userのユーザー名ですが、厳密にはIdP(Open AMやAD等)が発行したSAMLアサーションの属性値を取得して決定しています。 具体的には’https://aws.amazon.com/SAML/Attributes/RoleSessionName’という属性です。Open AM側でSAMLアサーションを生成する際にこの属性値に、例えばユーザーのメールアドレスなど組織内で一意かつ全員が必ず持っている情報を利用できればユーザーを特定することは可能です。属性の詳しい条件はこちらをご参照ください。 http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_roles_providers_create_saml_assertions.html

また一つのIdP上のユーザーを複数のAWSアカウントにマッピングすることもできます。これはAWS側でSAMLを受け取りFederated Userのロールをマップする際にAWSアカウントIDも指定する仕組のためです。複数のロールがマッピングされたユーザーは、ログインの際にどのAWS上のロールでサインインするか選択する画面が表示されます。

Elastic Load Balancing

www.slideshare.net

Q4. ディレクトリ名を利用した振り分けは出来ないでしょうか? A4. 現時点では対応しておりません。

 

Q7. 瞬間的に急増した際に503が返るとありましたが、TPSの目安はありますか? A7. TPS の目安はありませんが、一般的に 5分間に 50% 以上トラフィックが増加する場合は、ご注意ください。

 

Q8. 正規表現などルールベースの負荷分散への対応予定はありますか? A8. 現時点では対応しておりません。

 

Q16. ELBでヘッダ情報の付与はできますでしょうか? A16. 現時点では対応しておりません。

AWS Summit Tokyo 2016 と主要アップデートのふりかえり

www.slideshare.net

  • AWS Summit Tokyo 2016と今年の主要アップデートをふりかえり
  • サミット期間中の新サービス発表はなし

12. dblinkを利用して、Amazon RedshiftとRDS PostgreSQLのデータをジョインする

  • MPP処理向きでOLTP処理は苦手なRedshiftの弱点を克服するために、RedshiftとRDS PostgreSQLをdblinkで接続することで、以下のような効率的な処理が可能になる
    • BIやダッシュボードからのクエリをRDS PostgreSQLのマテリアライズドビューから返し、非同期にRedshiftに対してリフレッシュする
    • パーティション単位での結合をRDS PostgreSQLでブロックレンジインデックスで処理をする
    • PL/pgSQLのユーザ定義関数(UDF)からダイナミックSQLでRedshiftにクエリする
    • Redshiftから受け取った結果セットをRDS PostgreSQLでJSONに変換するなど

aws.typepad.com

その他参考:http://blogs.aws.amazon.com/bigdata/post/Tx3RS3V80XNRJH3/Real-time-in-memory-OLTP-and-Analytics-with-Apache-Ignite-on-AWS

13. Elastic Network Adapter(ENA)

  • 同一AZ内で論理的にグループ化したプレイスメントグループ内で「無料で利用できる20Gbps帯域のネットワークインタフェース」
  • 現状、X1インスタンス(64 cores / 128 vCPU / 1,952 GiBメモリ/10Gbps帯域)にのみ利用可能

リンク:Elastic Network Adapter – High Performance Network Interface for Amazon EC2 | AWS News Blog リンク:EC2 インスタンス向けの次世代ネットワークインターフェイス、Elastic Network Adapter (ENA) を導入

14. Amazon EFS(Elastic File System)が3リージョンで一般利用可能に

  • NFS(v4.0か4.1)で複数のEC2からマウント可能なEFSが「US East (Northern Virginia)」「US West (Oregon)」「Europe (Ireland)」で一般(商用)利用可能になった
  • EFSには「General Purpose」と「Max I/O」の2つのモードが指定可能
  • US East (Northern Virginia)で$0.30/GB/月ということでだいぶ安い

リンク:Amazon Elastic File System – Production-Ready in Three Regions | AWS News Blog リンク:Amazon Elastic File System (Amazon EFS) の一般提供開始 リンク:【プレスリリース】Amazon Web Services、 Amazon Elastic File Systemの提供を開始

15. Amazon SNSからのSMS送信が世界対応(もちろん日本の電話番号にも)

  • 送信元のリージョンが拡張された(東京リージョンも含む)
  • 世界中の電話番号(日本も含む)に送信可能に

リンク:New – Worldwide Delivery of Amazon SNS Messages via SMS | AWS News Blog リンク:Amazon SNS にワールドワイド SMS を追加

16. AWS Quick Start for Docker Datacenter (DDC)

  • クラスタ管理のDocker Universal Control Plane(UCP)とイメージレジストリのDocker Trusted Registry(DTR)を主要コンポーネントとする商用サポートなDocker公式ソリューション「Docker Datacenter (DDC)」のデプロイ方法やリファレンスアーキテクチャをまとめたクイックスタート(PDF)を公開

リンク:AWS Quick Start for Docker Datacenter (DDC) | AWS Partner Network (APN) Blog

17. Spotinstを使って高可用なウェブサービスをデプロイする方法

  • Spotinstというサービスを使ってスポットインスタンスの管理を行う方法を説明

リンク:How to Deploy a High Availability Web Service on AWS Using Spotinst | AWS Partner Network (APN) Blog

18. 以下はその他取り上げられていた良さげなエントリ

AirtimeはECSを用いてモノリスからマイクロサービスに完全オーバーホール

https://techblog.airtime.com/microservice-continuous-integration-made-easy-with-aws-ecs-10d470e31af0#.qdib1fdqttechblog.airtime.com

API GatewayとLambdaのエラーハンドリングパターン

Error Handling Patterns in Amazon API Gateway and AWS Lambda | AWS Compute Blog

5分でLambdaにチャットボットをデプロイする

Create and Deploy a Chat Bot to AWS Lambda in Five Minutes | AWS Compute Blog

AWS関連

19. AWSのオートスケールとなかよく付き合う

  • 実際に大規模に運用しているスケーリングポリシーは参考になる

speakerdeck.com

1台落ちたぐらいでくよくよしない

20. Amazon Kinesis + socket.io + D3.jsを使った webブラウザで行うリアルタイム可視化の仕組み

  • TwitterのストリームデータをKinesisで受け取ってLambdaでつないでSNS→Socket.ioでブラウザ上のD3.jsでリアルタイム可視化する話

speakerdeck.com

その他

21. Monitorama 2016

  • モニタリングのカンファレンス Monitorama が今年も開催された。

Monitorama Conference

blog.librato.com

WordCamp Europeに参加した〜SaaSify、そして第3の波:Serverless

どうも、セクションナイン吉田真吾@yoshidashingo)です。

ウィーンからこんばんわ、WordCamp EUのContributor Dayのクロージングを聞きながら執筆しています。昨日までの炎天下に比べて10度近く気温が下がったおかげで快適に過ごせています。

今回6/24〜26にオーストリアのウィーンで開催されたWordCamp EUに参加しました。

f:id:yoshidashingo:20160630120837p:plain

2016.europe.wordcamp.org

経緯

AMIMOTOという、AWS MarketplaceでWordPressのAMIを販売したり、それを使ったマネージドホスティングを提供しているDigitalcubeさんに「WordPressのユーザー層かつAWSを知らない層かつ、EUでは無名状態のAMIMOTOを広げる為に、第3者目線で問題点の洗い出しを、吉田さんの経験とセクションナインの業務コンサルとして見てもらえないか」と依頼されました。

また「DigitalCubeではAMIMOTO以外にServerlessな取り組みを積極的にやっているが、それをWordPressに活かしたいと考えているので、そのあたりで第3者としての意見が欲しい」といった依頼もいただきました。

ja.amimoto-ami.com

2013年,2014年とcloudpackのエバンジェリストとしてラスベガスのre:Inventに出展した経験から、海外で売る難しさはよくわかりますし、すでにMarketplaceでグローバルにプロダクトを販売しているAMIMOTOがどうマーケットとの関係を築けているか、あるいは最近自分の中で最も熱いトピック「Serverless」に対してWordPress界隈でどんな動きがあるかな?といった点に興味があり快諾しました。

本来こういった調査レポートは内部報告のみとするものですが、良くも悪くも全て包み隠さず一般公開しても構わないとデジタルキューブさんに許可をいただいたため、他の日本発のプロダクトやサービスが海外を目指す時にも同じように抱えうる問題点や悩みに対する参考情報にしてもらえると嬉しいと思います。

22時。ミュージアムの中庭にて。

もうひとつの目的

今回はAMIMOTO以外にもう一つ、WordPressのMicroservices化について調査する目的をもって参加していました。

WordPressは現在、世界中のWebの26.5%、マーケットシェアで59.5%を獲得している世界最大のユーザー規模を持つCMSです。しかもいまだにそのシェアが増えているという状況です。

w3techs.com

ここまでシェアが伸びた理由はいくつもあるでしょうが、そのひとつに、専門的な知識がなくてもテーマやプラグインを追加するだけで見た目の変更や機能追加がすぐにできるという便利さがあったと思います。

近年ではプラグインがサンドボックスになっていないことで突かれる脆弱性や、スケーラビリティの確保の難しさが指摘されるようになり、モノリシックであることの弊害が叫ばれるようになりました。それが顕著になるくらいエコシステムのビジネスが大きくなったし、引き続き専門知識がなくても使えるということから、非常に利用者の幅が増えてきたということでしょう。

AWSのエキスパートとして、そういった課題に対して、機能単位でAPIシステムや他事業者のサービスにオフロードする「Microservices Architecture化」や「Servicefull構成(あまりいい呼び方ではないけど)」、あるいはシングルページアプリケーション(SPA)化ができないものか、あるいはすでにうまくやっているところはあるかといった現状を確認しようと思いました。

1. グローバルにモノを売るということ

ということで、まずは「AMIMOTO」の話です。

AMIMOTOブースでよかった点は、AMIMOTOのエバンジェリストの西川さんのビジネスにおけるコミュニケーション能力が非常に高かったため、正しくサービスやプロダクトの意図や開発経緯が伝わっていた点です。わざわざ書かかせてもらいたいくらい素晴らしいコミュ力でした。

日本国内のイベントの出展ブースだと顧客の課題を聞かずに製品説明をひたすら行っている人がいたりしますが、少なくともこちらのお客さんは自分たちの抱える課題や意見を積極的に話してくれたうえで、それに対して出展者がどういう解決方法を提供するか、あるいは提供しないか(スコープが違えばその段階でそれ以上のものは提供しない)といったレベルの会話ができており、とても建設的でよかったなと感じました。

ではそれ以外はどうだったかというと、正直シブかったなと言わざるを得ない場面が多かったです。他社のブースに人が殺到していても、AMIMOTOブースに人が殺到することはなく、「何のサービスかわからない」ことにより避けられてしまっていたということが明らかでした。

何のサービスかわからない

AMIMOTOと言えば、日本ではAWSとコマーケティングしたり、積極的に都内や地方に巡業して勉強会やハンズオンを開催したり、各地方でのアンバサダー・マーケティング(網元起動隊)をしたりと、いまや日本国内においてはWordPressをAWSで稼働させるという点において知らない人はモグリだと言えるレベルで成功しているといって問題ないと思います。

ただし海外での知名度ががないうえに、以下2点のような原因から顧客の背中が押せてないと感じました。

まずブースのぱっと見で何モノかわからない

ブースにいくつかメッセージが書いてありますが、文章中心で、ブースのビジュアルで「自分たちが何モノであるか」語りかけるものがありませんでした。

とくに、サービスなのか、ホスティング事業なのか、ソフトウェアなのか、という単純な違いからしてメッセージを発信できていなかったかなと思います。

ブースに人がくるためには、遠くから見てもそのサービスやプロダクトが何なのかが分かり、お客さんの抱える課題に「あれ、もしかしてあそこのサービスは〇〇な課題に対してエレガントな解決方法を知ってるかもしれない」という程度には語りかけられる必要があります。

そしてサービスの説明が長い

海外での知名度がほとんどないので、ブースの雰囲気を見て興味が湧いたお客さんがブースに内容の説明を求めにくるのですが、ソフトウェア(AMIをセルフサービスで利用)と、マネージドホスティングがあること、ソフトウェアについてはさらにモノリシックな構成のものからマイクロサービス化された構成(JINKEI)まで自由に展開できること、といった主旨を話すのに10分以上かかり、聞き終わる頃にはお客さんの中には興味が薄れてしまう場合が多くありました。

  • 「チューニング済みAMIプロダクト」なのか「AWSのマネージド・サービスを駆使したブループリント」なのか「デベロッパーや顧客がインフラレベルを意識しなくてもよいフルマネージドホスティング」なのかわからない
  • 上記はそれぞれ顧客にとって何を解決するから価値があるのか

象徴的なできごと:とある有名CEOからのアドバイス

ブースに来たとある有名CEOに以下のようなことを言われました。

  • 何をしているサービスか分からない
    • ホスティングサービスなのかプロダクトなのかわからない
  • これは誰に対して売りたいもの?
    • エンジニア?開発者?エージェント?カスタマー?
    • エンジニアにならAWSを使っているというだけで価値が分かるかもしれないけど、そうじゃなければよしなに動いていればいいと思うよ。
  • そもそもインフラはAWSじゃなくてもいいと思ってるお客さんのほうが多くて、各国のドメスティックなVPSとかを使っているのがほとんどだよ、AWSが簡単にスケールできるというなら、そういうピーキーなアクセスがあるメディアにだけターゲットを絞ってやったほうがいいと思うよ
  • そもそもユーザーストーリーみたいなのはある?

SaaSifyのスコープはプロダクト開発のみにかぎらない

AMIMOTOという強力なプロダクトでさえ海外だとあまりささっていないという状況を客観的に見てみると、マーケティングの重要性に気づかされます。

「一つのことをうまくやり、設定したペルソナに対して利用上の弊害を徹底的に排除する」というベストプラクティスでさえ、そばで見ているがゆえになかなか気づきにくいものだなと感じました。

そういうものがまだしっかりとしていない段階で出展することは、調査目的などの別の意図がないかぎりはかなり厳しい忸怩たる思いを持ち帰ることになるかなと思いますし、スコープを広く取るスタンスであれば、海外においては「販売代理やプロジェクトマネジメントを肩代わりしてくれるエージェンシー(広告代理店、制作会社)」が多数あるので、そちらがわとのつながりを強化する戦略なども合わせて考えてみたほうがよいだろうと思います。

AMIMOTOの価値はなにか

AMIMOTOの大きな特徴に「チューニング済みのAMIが提供される」「CFnによりスタックが管理できる」「マネージドホスティングもやっている」というのがありますが、これは機能ではあっても顧客に届ける価値ではないので、これを顧客の価値に合わせたメッセージに変える必要があります。もちろんAWS上にホストされていることすら、それ自体は価値ではありません。

現段階の顧客に対する価値を書き出してみると、以下のようになります。

  • チューニング済みのWordPress環境がすぐに準備できて、無限にスケールする環境を「自分かお任せで」構築できる
  • おまかせで信頼性高くホスティングをしてくれる

これだとあまり魅力的じゃない気がしませんか。

たとえばJINKEI(CFnベース)でスタックを管理するメリットは「セキュアなプラットフォーム」で「無限にスケール」して「構成のメンテナンスの手間がかからない」ことです。当然このメリットを価値を考える人を想定しようとすると「大規模なメディア」や「個人情報/クレカなど扱うコマース」に限定されてきます。ターゲット顧客が限定されてしまうならはじめから限定してしまえばよいですね。ちょっとターゲットを絞ったメッセージに変えてみましょう。また、顧客の大半はインフラエンジニアじゃないうえ、そういうエンジニアはブース以外でも出会えるので、セルフで使う人はターゲットからはずしてみましょう。顧客の中に「メディアやコマースの事業者」と「事業者から制作と運営を請け負っているエージェンシー」が含まれますが、ひとまずここらへんまでをターゲットにしてみましょう。

  • 絶対に落とせない大規模メディア事業者専用プラットフォーム「AMIMOTOメディア」
    • 全世界どこからアクセスしても同一体験が可能なグローバルCDNネットワークをビルトイン
    • ノイジーネイバーに邪魔されない専用環境
    • 大量のトラフィックが来てもエラーを返さないオートスケールがビルトイン
    • SLAごとに選べるプロサービスやサポートプラン
  • セキュアで高機能でスケールするコマース専用プラットフォーム「AMIMOTOコマース」
    • PCI DSS準拠可能でセキュアに個人情報やクレジットカード情報を扱えます
    • 検索機能、レコメンドエンジン、WAF、改ざん検知などコマースに必要な機能をビルトイン
    • 高機能なのに無限にスケールされる信頼性高いプラットフォーム
    • SLAごとに選べるプロサービスやサポートプラン

だいぶマシになったんじゃないですかね。

顧客から見えるものを設計する

また、AMIMOTOのユーザーは利用開始後、直接AWSにログインして操作しないといけないので、複雑な機能性で避けられがちなAWSの管理が面倒と感じない顧客以外から避けられてしまいます。また、そもそもAMIMOTOとはなにかを理解するために何を見ればいいか考えたとき、MarketplaceなのかAWSの管理画面なのかホームページなのかよく分かりません。つまり「AMIMOTOはまだ半可品」なのです。

では顧客から見えるものを統一するという意味でどんなことをすればよいでしょう。そのヒントはダッシュボードにあると感じました。

AMIMOTOを顧客やエージェンシーにセルフで使ってもらうにしても、フルマネージドで環境を提供するにしても、以下のような情報はつねに顧客が見たいタイミングで見てもらえるようにするべきです。(以下は例)

  • インフラレイヤ
    • 99パーセンタイルのレスポンス時間
    • ライブラリの更新通知
    • CPUやメモリ、ディスクの利用状況
    • ドメイン/SSL管理
  • WordPressレイヤ
    • ワンクリックでのWordPress環境構築
    • ユーザー管理
    • GitHubなどのリポジトリとのインテグレーション
    • 複数のステージ管理(本番/ステージ/開発)
    • 本体やテーマ、プラグインのアップデート管理
    • アドオンとしての追加機能(検索、CDN、などなど)
    • PHPログ
    • アクセシビリティの準拠度合い
    • アクティビティ(ログインや記事更新の履歴)
    • バックアップ管理
    • SEO状況
  • サービス
    • プランのアップグレード
    • 支払い履歴

WordPressレイヤについては管理画面からプラグインで実装も可能ですが、JINKEIなど複雑なリソース管理が必要になると、一枚にラップするダッシュボードがないとビジネスとしての展開は難しいのではないかと感じます。

また、今回ブースを回って他社のダッシュボードの機能性を確認しましたが、それぞれ見た目もアーキテクチャも個性的だったので、以下で紹介してみたいと思います。

Pantheon

pantheon.io

  • エージェンシー(制作会社)向けのホスティングサービス
    • インフラにRackspaceを利用し、その上に独自のコンテナ技術(Dockerは当初使っていたが今は独自技術に変えたらしい)を利用してWordPressのWebのコンテナ、ストレージのコンテナ、DBのコンテナを配置してスケール変更しやすくしている。
    • 利用者はダッシュボードからWordPressのサイトをワンクリックでデプロイでき、2分くらいで完了します。
    • サイト自体のインストールはそこからさらにWordPressのインストール画面に遷移して実行する。
    • GitHubとのインテグレーションやテスト環境/本番環境の管理もこのダッシュボード
  • コンテナでのスタックの管理については、彼らの社内向けの別のダッシュボードを見させてもらいました。ダッシュボード上のGUI操作で、ある環境にWebのコンテナやローカルストレージのコンテナをドラッグ&ドロップして適用すると30秒程度で構成に反映されるというデモを行っており、こういう「素早いプロビジョニング」にコンテナ技術を活用し、物理リソースとリソースの割当てを切り離して管理している点が非常に上手いなと感じました。

Flywheel

getflywheel.com

  • インハウスのデザイナーやフリーランサーに人気があるホスティングサービス
  • インフラはDigitalOceanなので利用可能なリージョンはDOがあるところのみ
  • 共有サービスとのことなので、サイトは2分くらいでできるがおそらくモノリシックなヴァーチャルホストでの構成

Stacksight

http://stacksight.io

  • WordPressやDrupalサイトにおいて、ログやバックアップ、アクティビティ(管理)、SEOなどが管理できるダッシュボード

2. モノリス対API → 第3の波:サーバーレス

さてさて、話題は変わってもう一つの調査目的「モノリシックからAPIセントリックに変わっていく世界におけるWordPress自体の変化」についてですが、WordPressの作者「Matt Mullenweg」のQ&Aセッションで、今後はフロントをJavascript化してRESTful APIによりデータを取得する構成にしていこうという方向性が語られ、APIが注目のトピックだそうです。

wordpress.tv

モノリス

WordPressがモノリシックな構成であることは、簡単にセットアップできるうえ、管理画面さえ見ればなんでもできるというとても便利な利点がある反面、以下のような弊害もあります。

弊害1:水平スケールしにくい

  • コンテンツの作成場所(管理画面)と配信場所が基本的に1:1で配備されている。
  • テーマやプラグインなどもサーバー単位でのメンテナンスが必要である。

弊害2:プラグイン経由のセキュリティ脆弱性がサイト全体に影響を及ぼす

弊害3:モバイル対応がいまいち

  • コンテンツ作成者がWordPressの管理画面にログインしないといけないため、今後よりモバイルネイティブになっていく中で、モバイルアプリでのコンテンツ作成などに対応できない。

API

上記のような課題に対応するために、すでにコミュニティでは数年間、APIの実装について議論も実装も進んでいるそうで、現状で「コアのAPI」と「APIプラグイン」が利用可能になっています。

WordPress APIs

WordPress APIs « WordPress Codex

WordPress REST API(Plugin)

ja.wordpress.org

REST API Whitepaper

また、Human Madeという会社のメンバーが中心になり、「WordPress REST APIについての考察」についてホワイトペーパーも提供されています。

github.com

日本語訳:

github.com

メリット:ヘッドレスCMSの実現

  • CMSとテーマシステムを分離し、「フロントエンドとコンテンツ管理の分離」を実現することで、リッチなUI表現や複数のフロントエンド(PC、モバイル、アプリ、それ以外の可能性も)が実現可能になります。

f:id:yoshidashingo:20160630120519p:plainhttps://github.com/humanmade/rest-api-white-paper より転載

  • コンテンツ管理についても、管理画面を経由せず、モバイルアプリからパブリッシュしたりできるようになる。

フロントエンドとコンテンツ管理の分離についてのもう一つの選択肢「サーバーレス」

ヘッドレスCMSの実現のためのREST APIについては、「CMSの実装」としての課題解決方法ですが、ここで「フロントエンドとコンテンツ管理の分離」を目的にするのであれば、われわれにはもう一つの選択肢がすでにあることを思い出しました。それが「サーバーレスアーキテクチャ」による解決です。

Serverless WordPress = StaticPress + Static Site Hosting + CDN + More

StaticPressを用いたサーバーレスな「フロントエンドとコンテンツ管理の分離」は、CMSの実装方法による解決ではなく、アーキテクチャやエコシステムを用いて解決する「サービスフルなアプローチ」という意味で第3の選択肢です。

Shifter: The Jamstack WordPress hosting platform.

すでにたくさんのユーザーに活用されているStaticPress

StaticPressのプラグインをインストールし、静的ファイルに書き出し、Amazon S3などでStatic Site Hostingし、CDNなどに載せて配信することで、「フロントエンドとコンテンツ管理の分離」ができ、小さなパブリッシュ用の管理インスタンスを用意するだけで、WordPressを利用せずにグローバルに大規模に配信が可能になります。

f:id:yoshidashingo:20160630113830p:plain

モノリシック→ヘッドレスCMSほどギャップがない

  • コンテンツ管理側は基本的には現状のまま、スケーラビリティを考慮する必要がない。
  • 技術的に静的ファイルにしにくい「問合せフォーム」や「ユーザー認証基盤」をどの段階でGoogle FormやZopim、Auth0やCognitoに統合するかについては考慮する必要がある。
  • モノリシックからヘッドレス化するための対応コストや、今まで慣れ親しんだテーマを捨てて再度フロントをJavaScriptで実装することに比べて、圧倒的に簡単に実現できる。StaticPressで書き出してCDNから配信すればよいだけだから。

その他

  • サーバーレスCMSは、CMSの「コアの実装」ではなく、クラウドサービスやCDNサービスとの組合せが大前提な「アーキテクチャ」であることには注意が必要。
  • 今後はこういったアーキテクチャをさらにどれだけ簡単にセットアップできて利用できるかどうかが普及の鍵になるのではないかと思う。WordCampに参加していたユーザーやエージェンシーの人からは「AWSは複雑で難しい」と何度も言われたので、インハウスのエンジニアがいない層にいかにSaaSifyして提供するかといった課題。

まとめ

ということで、AMIMOTOの調査に行って色々気づきを得たうえ旅でした。

あと昨日のLTのスライド

www.slideshare.net

セクションナインでは、既存事業のSaaSify、あるいはサーバーレスアーキテクチャを用いて信頼性高く大規模なサービスを展開したい会社をクラウドエキスパートとして、マーケティングの分野まで含めて支援しています。必要に応じてご相談ください。

https://sec9.co.jpsec9.co.jp