SlideShare une entreprise Scribd logo
1  sur  30
Télécharger pour lire hors ligne
Copyright © Virtual Technology, Inc
APIだけで
フロントエンド開発を可能にした話
2016/2/10 有限会社バーチャルテクノロジー
1
Copyright © Virtual Technology, Inc
•  ⽵嵜 伸⼀郎 (たけざき しんいちろう)
twitter id:stakezaki
元⽇本IBM(ソフトウェア事業部)
元株式会社暮らしのデザインCTO
•  Virtual Technologyにて
   企業向けKVS・BaaS等を開発
ReflexWorks
vte.cx
2
Copyright © Virtual Technology, Inc3	
⼤規模 Web帳票システム by ReflexWorks
 APIのスループット	
	7万ユーザ/日 40万伝票/日 
 600tps	!	
  ※	DBはその10倍以上
Copyright © Virtual Technology, Inc
vte.cx (ブイテックス) engine
• http://admin.1.vte.cx
4	
2015/12	βリリース
Copyright © Virtual Technology, Inc
vte.cx engine の概要
KVS	
Web	
スマホ	
 
•  Web(スマホ)システム向けBaaS(Backend as a Service)
–  CMS(Content Management System)機能
–  トランザクションサポート
–  ユーザ・グループ管理
–  サーバサイドJavaScript
–  EXCEL⼊出⼒機能
–  PDF帳票出⼒機能
オンライントランザクション処理	 データ分析	
※ 2016年春リリース予定
Copyright © Virtual Technology, Inc
サーバレスアーキテクチャーの課題
6
Copyright © Virtual Technology, Inc
今注⽬のサーバレス アーキテクチャー
7	
API	Gateway	
Lambda	
Cognito	 SNS	DynamoDB	
Cloud	Front	
S3	
client
mobile client
Copyright © Virtual Technology, Inc
サーバレスアーキテクチャーは
Webアプリに使えるか?
8
Copyright © Virtual Technology, Inc
設定地獄の懸念
• 静的コンテンツとAPIが異なるドメイン
–  CORSの設定、あと、セッションどうすんの?
• 各サービス利⽤には認証が必要
–  CognitoのSecurity Token Serviceで設定
• そもそも考慮の必要がなかったことでは?
• サーバレスのはずなのにサーバの設定が必
要ってどういうこと?
9
Copyright © Virtual Technology, Inc
API以外の余計なことは考えたくない
10	
サーバの中で複数のサービスに分かれようが
クライアントにとってはどうでもいい
適当に分散して勝⼿にスケール
これが真のサーバレス
Copyright © Virtual Technology, Inc
vte.cxのアプローチ
11
Copyright © Virtual Technology, Inc
サーバレスWeb開発の⽬標
• vte.cxはフロントエンドエンジニアだけで
 Webアプリを開発することを⽬標にした
 サーバサイドのことは本当に何も考えない
• SPA(SinglePageApplication)の採⽤と⾃由なAPI設計
–  HTMLやJavaScriptのコーディングのみ
–  ACIDトランザクションに対応
• ローカル開発環境の提供と簡単なデプロイ
12
Copyright © Virtual Technology, Inc
- ポイント1 -
サーバサイドレンダリングをやめSPAを採⽤
•  SPAは優れたUXを提供することを⽬的とする
 1つのWebページで提供されるアプリケーション
–  クライアントはXHR等でサーバにリクエストし、結果
をJSONなどのデータで受取る
–  ページの再読込せずにJavaScriptで動的に更新する
13
Copyright © Virtual Technology, Inc14	
増えたフロントの責務と残る課題
h:p://www.slideshare.net/fullscreen/sagawafumio/ss-38480894/6	
ここをどうするか?
Copyright © Virtual Technology, Inc
- ポイント2 –
直感的なREST APIを作る
•  フロントエンジニアが⾃由に設計できるようにする
–  URIの設計
–  スキーマの設計
重要:データだけでなく
HTMLなどの静的
コンテンツも同じ扱い
Copyright © Virtual Technology, Inc16
Copyright © Virtual Technology, Inc17
Copyright © Virtual Technology, Inc18
Copyright © Virtual Technology, Inc19
Copyright © Virtual Technology, Inc
スキーマ
•  シンプルなシンタックス
– 「項⽬名(型)= 正規表現」の形式で記述
•  バリデーション
– 正規表現で値をチェック
•  ソフトスキーマ
– 項⽬の追加が可能
•  Index
– Index指定が可能
20	
booking
registration_no=d{0,7}-d{0,2}$
date(datestring)!=^d{0,2}/d{0,2}/d{0,2}$
type[]!=^Foo$|^Bar$|^Buzz$
payment_method_name!=^[0-9a-zA-Z]{0,15}$
shipper
customer_no=^d{0,6}$
company_name!=^[a-zA-Z0-9- .,/:@`~()'%]{0,50}$
zipcode!=^d{3}-d{4}$
Copyright © Virtual Technology, Inc
vte.cxのトランザクション管理
•  Feed(Collection)単位のAtomicトランザクション
–  分離レベル:REPEATABLE READ
•  かつ、Entry単位のバージョン⽐較
–  分離レベル:SNAPSHOT ISOLATION
–  全てのEntryはURLとリビジョンで管理される
–  リビジョン=更新されると+1される
21	
https://www.facebook.com/notes/virtual-technology/
bdbトランザクションとreflexworksの処理について/486790368009209
データの⼀貫性を確保しつつ⾼いスループットを実現
詳細:
Copyright © Virtual Technology, Inc
- ポイント3 -
ローカル開発環境
• リバースプロキシでクロスドメインを回避
• サービスのURLだけをサーバに向ける
22	
/d/master	
ローカル環境で
開発しているイメージ
Copyright © Virtual Technology, Inc
CircleCI
23	
GitHubにPushすることで⾃動的にサーバにデプロイ
※ 設定方法はAdvent	Calendar	の13日目に記載
Copyright © Virtual Technology, Inc
vte.cx開発⼿順
• 管理画⾯でサービスを新規作成
• Githubのvtecxblankをclone
• コンテンツを作成、APIを作成
• コンテンツをGitHubにpushすることで
サーバにデプロイ
–  もしくは、gulpコマンド⼀発
• データをREST APIで操作
たった、これだけ。
これですべてのWebシステムを開発できる
24
Copyright © Virtual Technology, Inc
本当は複雑なサーバサイド
•  マルチテナントアーキテクチャー
•  KVSであることを意識させない(ドキュメント型)
•  並列分散したノードがMicroservices的に連携
複雑さを一切
表に出さない
Copyright © Virtual Technology, Inc
まとめ
•  サーバの複雑さは隠蔽すべき
–  現状のサーバレスアーキテクチャーは構成の都合を
クライアントに押し付けているように思える
–  Microservicesも同様。モノリシックを分解してThin
にするのはいいが、認証などの考慮をクライアント
にさせるのは不味い
•  Webアプリのことだけに集中すべき
–  重要なのはAPIとスキーマ設計(+ACL)
–  静的コンテンツを含めSame Originで管理する
•  ローカル開発環境・デプロイ環境は重要
–  ⼤規模なWeb開発ではローカル開発環境は必須
–  コマンド⼀発かGithubにpushで⾃動デプロイ
26
Copyright © Virtual Technology, Inc
余談:MicroServices
隠蔽されるサーバ技術に標準化は必要か?
•  JSON Schema、Swagger(Open API)
•  AccessToken関連
–  JWT(JSON Web Token)
–  OAuth 2.0 Token Introspection (RFC7662)
などを駆使してMicroServicesを使いこなそうとしている正
直者が多い。⼀体誰得なの?
標準に準拠しているのとインターオペラビリティは別の問題
私たちは開発⽣産性の⽅が重要だと考えて、結局、(独⾃)ス
キーマとワンタイムトークン(RXID) を採⽤した
         詳しくは「WebAPI認証」で検索
27
Copyright © Virtual Technology, Inc
私たちのビジネスの話
• Webアプリの受託開発でvte.cxを活⽤
• オンプレミスvte.cx(ReflexWorks)の販売
• 将来的にBaaS vte.cxの有償版
–  全然流⾏る気配なし。
–  たぶん、BaaSはビジネスにならないだろう
28
Copyright © Virtual Technology, Inc29	
Qiita Advent Calendar 2015
h:p://qiita.com/advent-calendar/2015/vtecx?share=true
Copyright © Virtual Technology, Inc30	
ご清聴ありがとう
ございました	
Blogも書いています
ぶいてく

Contenu connexe

Tendances

【共通版】 IBM Cloud (SoftLayer) 最新動向情報 2017年11月版 v1.0
【共通版】 IBM Cloud (SoftLayer) 最新動向情報 2017年11月版 v1.0【共通版】 IBM Cloud (SoftLayer) 最新動向情報 2017年11月版 v1.0
【共通版】 IBM Cloud (SoftLayer) 最新動向情報 2017年11月版 v1.0Kazuhiko Isaji
 
パブリッククラウド動向とIBMの取り組み
パブリッククラウド動向とIBMの取り組みパブリッククラウド動向とIBMの取り組み
パブリッククラウド動向とIBMの取り組みKimihiko Kitase
 
20200708サーバーレスでのAPI管理の考え方
20200708サーバーレスでのAPI管理の考え方20200708サーバーレスでのAPI管理の考え方
20200708サーバーレスでのAPI管理の考え方Amazon Web Services Japan
 
VMware SDDC on IBM SoftLayer Cloud
VMware SDDC on IBM SoftLayer CloudVMware SDDC on IBM SoftLayer Cloud
VMware SDDC on IBM SoftLayer Cloudwatarukatsurashima
 
Amazon Web Services 最新事例集
Amazon Web Services 最新事例集Amazon Web Services 最新事例集
Amazon Web Services 最新事例集SORACOM, INC
 
Azure 高速サイトソリューション
Azure 高速サイトソリューションAzure 高速サイトソリューション
Azure 高速サイトソリューションHiromasa Oka
 
[CTO Night & Day 2019] Blockchain on AWS #ctonight
[CTO Night & Day 2019] Blockchain on AWS #ctonight[CTO Night & Day 2019] Blockchain on AWS #ctonight
[CTO Night & Day 2019] Blockchain on AWS #ctonightAmazon Web Services Japan
 
SoftLayerが CAMSSとゲーム配信 に適する技術的理由
SoftLayerが CAMSSとゲーム配信 に適する技術的理由SoftLayerが CAMSSとゲーム配信 に適する技術的理由
SoftLayerが CAMSSとゲーム配信 に適する技術的理由softlayerjp
 
クラウドを活用した システム開発は適材適所
クラウドを活用したシステム開発は適材適所クラウドを活用したシステム開発は適材適所
クラウドを活用した システム開発は適材適所Kimihiko Kitase
 
猫でも分かる Android WebKit
猫でも分かる Android WebKit猫でも分かる Android WebKit
猫でも分かる Android WebKitNaruto TAKAHASHI
 
サーバーサイド技術者不足に効くChef
サーバーサイド技術者不足に効くChefサーバーサイド技術者不足に効くChef
サーバーサイド技術者不足に効くChefMaho Takara
 
VMwareとIBMクラウドの提携で広がるハイブリッド・クラウドの世界
VMwareとIBMクラウドの提携で広がるハイブリッド・クラウドの世界VMwareとIBMクラウドの提携で広がるハイブリッド・クラウドの世界
VMwareとIBMクラウドの提携で広がるハイブリッド・クラウドの世界Shinobu Yasuda
 
Introducing IBM Cloud & Cognitive
Introducing IBM Cloud & CognitiveIntroducing IBM Cloud & Cognitive
Introducing IBM Cloud & CognitiveAtsumori Sasaki
 
”もと”中の人が語り尽くすSoftLayerセキュリティー(2016/10/13更新版)
”もと”中の人が語り尽くすSoftLayerセキュリティー(2016/10/13更新版)”もと”中の人が語り尽くすSoftLayerセキュリティー(2016/10/13更新版)
”もと”中の人が語り尽くすSoftLayerセキュリティー(2016/10/13更新版)Shinobu Yasuda
 
[AWS初心者向けWebinar] AWSではじめよう、IoTシステム構築
[AWS初心者向けWebinar] AWSではじめよう、IoTシステム構築[AWS初心者向けWebinar] AWSではじめよう、IoTシステム構築
[AWS初心者向けWebinar] AWSではじめよう、IoTシステム構築Amazon Web Services Japan
 
VMware + IBM Cloudで広がるハイブリッド・クラウドの世界
VMware + IBM Cloudで広がるハイブリッド・クラウドの世界VMware + IBM Cloudで広がるハイブリッド・クラウドの世界
VMware + IBM Cloudで広がるハイブリッド・クラウドの世界Shinobu Yasuda
 
awsで実現するミッションクリティカル業務のクラウド利用 VIP編
 awsで実現するミッションクリティカル業務のクラウド利用 VIP編 awsで実現するミッションクリティカル業務のクラウド利用 VIP編
awsで実現するミッションクリティカル業務のクラウド利用 VIP編Ken Sawada
 
Smart Tennis Lesson Serverless Design
Smart Tennis Lesson Serverless DesignSmart Tennis Lesson Serverless Design
Smart Tennis Lesson Serverless DesignRyuji TAKEHARA
 

Tendances (19)

【共通版】 IBM Cloud (SoftLayer) 最新動向情報 2017年11月版 v1.0
【共通版】 IBM Cloud (SoftLayer) 最新動向情報 2017年11月版 v1.0【共通版】 IBM Cloud (SoftLayer) 最新動向情報 2017年11月版 v1.0
【共通版】 IBM Cloud (SoftLayer) 最新動向情報 2017年11月版 v1.0
 
パブリッククラウド動向とIBMの取り組み
パブリッククラウド動向とIBMの取り組みパブリッククラウド動向とIBMの取り組み
パブリッククラウド動向とIBMの取り組み
 
20200708サーバーレスでのAPI管理の考え方
20200708サーバーレスでのAPI管理の考え方20200708サーバーレスでのAPI管理の考え方
20200708サーバーレスでのAPI管理の考え方
 
VMware SDDC on IBM SoftLayer Cloud
VMware SDDC on IBM SoftLayer CloudVMware SDDC on IBM SoftLayer Cloud
VMware SDDC on IBM SoftLayer Cloud
 
Amazon Web Services 最新事例集
Amazon Web Services 最新事例集Amazon Web Services 最新事例集
Amazon Web Services 最新事例集
 
Azure 高速サイトソリューション
Azure 高速サイトソリューションAzure 高速サイトソリューション
Azure 高速サイトソリューション
 
[CTO Night & Day 2019] Blockchain on AWS #ctonight
[CTO Night & Day 2019] Blockchain on AWS #ctonight[CTO Night & Day 2019] Blockchain on AWS #ctonight
[CTO Night & Day 2019] Blockchain on AWS #ctonight
 
SoftLayerが CAMSSとゲーム配信 に適する技術的理由
SoftLayerが CAMSSとゲーム配信 に適する技術的理由SoftLayerが CAMSSとゲーム配信 に適する技術的理由
SoftLayerが CAMSSとゲーム配信 に適する技術的理由
 
クラウドを活用した システム開発は適材適所
クラウドを活用したシステム開発は適材適所クラウドを活用したシステム開発は適材適所
クラウドを活用した システム開発は適材適所
 
猫でも分かる Android WebKit
猫でも分かる Android WebKit猫でも分かる Android WebKit
猫でも分かる Android WebKit
 
サーバーサイド技術者不足に効くChef
サーバーサイド技術者不足に効くChefサーバーサイド技術者不足に効くChef
サーバーサイド技術者不足に効くChef
 
03_AWS IoTのDRを考える
03_AWS IoTのDRを考える03_AWS IoTのDRを考える
03_AWS IoTのDRを考える
 
VMwareとIBMクラウドの提携で広がるハイブリッド・クラウドの世界
VMwareとIBMクラウドの提携で広がるハイブリッド・クラウドの世界VMwareとIBMクラウドの提携で広がるハイブリッド・クラウドの世界
VMwareとIBMクラウドの提携で広がるハイブリッド・クラウドの世界
 
Introducing IBM Cloud & Cognitive
Introducing IBM Cloud & CognitiveIntroducing IBM Cloud & Cognitive
Introducing IBM Cloud & Cognitive
 
”もと”中の人が語り尽くすSoftLayerセキュリティー(2016/10/13更新版)
”もと”中の人が語り尽くすSoftLayerセキュリティー(2016/10/13更新版)”もと”中の人が語り尽くすSoftLayerセキュリティー(2016/10/13更新版)
”もと”中の人が語り尽くすSoftLayerセキュリティー(2016/10/13更新版)
 
[AWS初心者向けWebinar] AWSではじめよう、IoTシステム構築
[AWS初心者向けWebinar] AWSではじめよう、IoTシステム構築[AWS初心者向けWebinar] AWSではじめよう、IoTシステム構築
[AWS初心者向けWebinar] AWSではじめよう、IoTシステム構築
 
VMware + IBM Cloudで広がるハイブリッド・クラウドの世界
VMware + IBM Cloudで広がるハイブリッド・クラウドの世界VMware + IBM Cloudで広がるハイブリッド・クラウドの世界
VMware + IBM Cloudで広がるハイブリッド・クラウドの世界
 
awsで実現するミッションクリティカル業務のクラウド利用 VIP編
 awsで実現するミッションクリティカル業務のクラウド利用 VIP編 awsで実現するミッションクリティカル業務のクラウド利用 VIP編
awsで実現するミッションクリティカル業務のクラウド利用 VIP編
 
Smart Tennis Lesson Serverless Design
Smart Tennis Lesson Serverless DesignSmart Tennis Lesson Serverless Design
Smart Tennis Lesson Serverless Design
 

Similaire à Enterpriseapi20160210

AWSマネージドサービスをフル活用したヘルスケアIoTプラットフォーム
AWSマネージドサービスをフル活用したヘルスケアIoTプラットフォームAWSマネージドサービスをフル活用したヘルスケアIoTプラットフォーム
AWSマネージドサービスをフル活用したヘルスケアIoTプラットフォームHiroki Takeda
 
AWSオンリーで実現するIoTクラウド基盤
AWSオンリーで実現するIoTクラウド基盤AWSオンリーで実現するIoTクラウド基盤
AWSオンリーで実現するIoTクラウド基盤Godai Nakamura
 
AWSにおけるマイクロソフトプラットフォームセキュリティ
AWSにおけるマイクロソフトプラットフォームセキュリティAWSにおけるマイクロソフトプラットフォームセキュリティ
AWSにおけるマイクロソフトプラットフォームセキュリティAmazon Web Services Japan
 
ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説Akira Inoue
 
Data API + AWS = (CMS どうでしょう 札幌編)
Data API + AWS =  (CMS どうでしょう 札幌編)Data API + AWS =  (CMS どうでしょう 札幌編)
Data API + AWS = (CMS どうでしょう 札幌編)Yuji Takayama
 
ハイブリットクラウド環境におけるモダンアプリケーション開発
ハイブリットクラウド環境におけるモダンアプリケーション開発ハイブリットクラウド環境におけるモダンアプリケーション開発
ハイブリットクラウド環境におけるモダンアプリケーション開発政雄 金森
 
AWS Lake Formation で実現、マイクロサービスのサーバーレスな分散トレーシング
AWS Lake Formation で実現、マイクロサービスのサーバーレスな分散トレーシングAWS Lake Formation で実現、マイクロサービスのサーバーレスな分散トレーシング
AWS Lake Formation で実現、マイクロサービスのサーバーレスな分散トレーシング江藤 武司
 
WebMatrix 2 と Azure Web Sites を使ったスマートフォンサイト構築のすすめ
WebMatrix 2 と Azure Web Sites を使ったスマートフォンサイト構築のすすめWebMatrix 2 と Azure Web Sites を使ったスマートフォンサイト構築のすすめ
WebMatrix 2 と Azure Web Sites を使ったスマートフォンサイト構築のすすめAkira Inoue
 
Amazon kinesisで広がるリアルタイムデータプロセッシングとその未来
Amazon kinesisで広がるリアルタイムデータプロセッシングとその未来Amazon kinesisで広がるリアルタイムデータプロセッシングとその未来
Amazon kinesisで広がるリアルタイムデータプロセッシングとその未来Shinpei Ohtani
 

Similaire à Enterpriseapi20160210 (20)

Vtecxlt20151201
Vtecxlt20151201Vtecxlt20151201
Vtecxlt20151201
 
Lt20190129
Lt20190129Lt20190129
Lt20190129
 
Real techlt20180829
Real techlt20180829Real techlt20180829
Real techlt20180829
 
Bpstudy20180725
Bpstudy20180725Bpstudy20180725
Bpstudy20180725
 
React vtecx20171129
React vtecx20171129React vtecx20171129
React vtecx20171129
 
React vtecx20171025
React vtecx20171025React vtecx20171025
React vtecx20171025
 
Angularreflex20141210
Angularreflex20141210Angularreflex20141210
Angularreflex20141210
 
React vtecx20170822
React vtecx20170822React vtecx20170822
React vtecx20170822
 
AWSマネージドサービスをフル活用したヘルスケアIoTプラットフォーム
AWSマネージドサービスをフル活用したヘルスケアIoTプラットフォームAWSマネージドサービスをフル活用したヘルスケアIoTプラットフォーム
AWSマネージドサービスをフル活用したヘルスケアIoTプラットフォーム
 
React vtecx20170920
React vtecx20170920React vtecx20170920
React vtecx20170920
 
AWSオンリーで実現するIoTクラウド基盤
AWSオンリーで実現するIoTクラウド基盤AWSオンリーで実現するIoTクラウド基盤
AWSオンリーで実現するIoTクラウド基盤
 
Contiv
ContivContiv
Contiv
 
AWSにおけるマイクロソフトプラットフォームセキュリティ
AWSにおけるマイクロソフトプラットフォームセキュリティAWSにおけるマイクロソフトプラットフォームセキュリティ
AWSにおけるマイクロソフトプラットフォームセキュリティ
 
ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説
 
Data API + AWS = (CMS どうでしょう 札幌編)
Data API + AWS =  (CMS どうでしょう 札幌編)Data API + AWS =  (CMS どうでしょう 札幌編)
Data API + AWS = (CMS どうでしょう 札幌編)
 
ハイブリットクラウド環境におけるモダンアプリケーション開発
ハイブリットクラウド環境におけるモダンアプリケーション開発ハイブリットクラウド環境におけるモダンアプリケーション開発
ハイブリットクラウド環境におけるモダンアプリケーション開発
 
AWS Lake Formation で実現、マイクロサービスのサーバーレスな分散トレーシング
AWS Lake Formation で実現、マイクロサービスのサーバーレスな分散トレーシングAWS Lake Formation で実現、マイクロサービスのサーバーレスな分散トレーシング
AWS Lake Formation で実現、マイクロサービスのサーバーレスな分散トレーシング
 
Web study20171007
Web study20171007Web study20171007
Web study20171007
 
WebMatrix 2 と Azure Web Sites を使ったスマートフォンサイト構築のすすめ
WebMatrix 2 と Azure Web Sites を使ったスマートフォンサイト構築のすすめWebMatrix 2 と Azure Web Sites を使ったスマートフォンサイト構築のすすめ
WebMatrix 2 と Azure Web Sites を使ったスマートフォンサイト構築のすすめ
 
Amazon kinesisで広がるリアルタイムデータプロセッシングとその未来
Amazon kinesisで広がるリアルタイムデータプロセッシングとその未来Amazon kinesisで広がるリアルタイムデータプロセッシングとその未来
Amazon kinesisで広がるリアルタイムデータプロセッシングとその未来
 

Plus de Shinichiro Takezaki

Plus de Shinichiro Takezaki (6)

Vtecx solution
Vtecx solutionVtecx solution
Vtecx solution
 
11 29プレゼン資料
11 29プレゼン資料11 29プレゼン資料
11 29プレゼン資料
 
20171025 date picker説明資料
20171025 date picker説明資料20171025 date picker説明資料
20171025 date picker説明資料
 
Vtecx20151216 2
Vtecx20151216 2Vtecx20151216 2
Vtecx20151216 2
 
No nosql20130424
No nosql20130424No nosql20130424
No nosql20130424
 
Groovyコンファレンス
GroovyコンファレンスGroovyコンファレンス
Groovyコンファレンス
 

Enterpriseapi20160210

  • 1. Copyright © Virtual Technology, Inc APIだけで フロントエンド開発を可能にした話 2016/2/10 有限会社バーチャルテクノロジー 1
  • 2. Copyright © Virtual Technology, Inc •  ⽵嵜 伸⼀郎 (たけざき しんいちろう) twitter id:stakezaki 元⽇本IBM(ソフトウェア事業部) 元株式会社暮らしのデザインCTO •  Virtual Technologyにて    企業向けKVS・BaaS等を開発 ReflexWorks vte.cx 2
  • 3. Copyright © Virtual Technology, Inc3 ⼤規模 Web帳票システム by ReflexWorks  APIのスループット 7万ユーザ/日 40万伝票/日   600tps !   ※ DBはその10倍以上
  • 4. Copyright © Virtual Technology, Inc vte.cx (ブイテックス) engine • http://admin.1.vte.cx 4 2015/12 βリリース
  • 5. Copyright © Virtual Technology, Inc vte.cx engine の概要 KVS Web スマホ   •  Web(スマホ)システム向けBaaS(Backend as a Service) –  CMS(Content Management System)機能 –  トランザクションサポート –  ユーザ・グループ管理 –  サーバサイドJavaScript –  EXCEL⼊出⼒機能 –  PDF帳票出⼒機能 オンライントランザクション処理 データ分析 ※ 2016年春リリース予定
  • 6. Copyright © Virtual Technology, Inc サーバレスアーキテクチャーの課題 6
  • 7. Copyright © Virtual Technology, Inc 今注⽬のサーバレス アーキテクチャー 7 API Gateway Lambda Cognito SNS DynamoDB Cloud Front S3 client mobile client
  • 8. Copyright © Virtual Technology, Inc サーバレスアーキテクチャーは Webアプリに使えるか? 8
  • 9. Copyright © Virtual Technology, Inc 設定地獄の懸念 • 静的コンテンツとAPIが異なるドメイン –  CORSの設定、あと、セッションどうすんの? • 各サービス利⽤には認証が必要 –  CognitoのSecurity Token Serviceで設定 • そもそも考慮の必要がなかったことでは? • サーバレスのはずなのにサーバの設定が必 要ってどういうこと? 9
  • 10. Copyright © Virtual Technology, Inc API以外の余計なことは考えたくない 10 サーバの中で複数のサービスに分かれようが クライアントにとってはどうでもいい 適当に分散して勝⼿にスケール これが真のサーバレス
  • 11. Copyright © Virtual Technology, Inc vte.cxのアプローチ 11
  • 12. Copyright © Virtual Technology, Inc サーバレスWeb開発の⽬標 • vte.cxはフロントエンドエンジニアだけで  Webアプリを開発することを⽬標にした  サーバサイドのことは本当に何も考えない • SPA(SinglePageApplication)の採⽤と⾃由なAPI設計 –  HTMLやJavaScriptのコーディングのみ –  ACIDトランザクションに対応 • ローカル開発環境の提供と簡単なデプロイ 12
  • 13. Copyright © Virtual Technology, Inc - ポイント1 - サーバサイドレンダリングをやめSPAを採⽤ •  SPAは優れたUXを提供することを⽬的とする  1つのWebページで提供されるアプリケーション –  クライアントはXHR等でサーバにリクエストし、結果 をJSONなどのデータで受取る –  ページの再読込せずにJavaScriptで動的に更新する 13
  • 14. Copyright © Virtual Technology, Inc14 増えたフロントの責務と残る課題 h:p://www.slideshare.net/fullscreen/sagawafumio/ss-38480894/6 ここをどうするか?
  • 15. Copyright © Virtual Technology, Inc - ポイント2 – 直感的なREST APIを作る •  フロントエンジニアが⾃由に設計できるようにする –  URIの設計 –  スキーマの設計 重要:データだけでなく HTMLなどの静的 コンテンツも同じ扱い
  • 16. Copyright © Virtual Technology, Inc16
  • 17. Copyright © Virtual Technology, Inc17
  • 18. Copyright © Virtual Technology, Inc18
  • 19. Copyright © Virtual Technology, Inc19
  • 20. Copyright © Virtual Technology, Inc スキーマ •  シンプルなシンタックス – 「項⽬名(型)= 正規表現」の形式で記述 •  バリデーション – 正規表現で値をチェック •  ソフトスキーマ – 項⽬の追加が可能 •  Index – Index指定が可能 20 booking registration_no=d{0,7}-d{0,2}$ date(datestring)!=^d{0,2}/d{0,2}/d{0,2}$ type[]!=^Foo$|^Bar$|^Buzz$ payment_method_name!=^[0-9a-zA-Z]{0,15}$ shipper customer_no=^d{0,6}$ company_name!=^[a-zA-Z0-9- .,/:@`~()'%]{0,50}$ zipcode!=^d{3}-d{4}$
  • 21. Copyright © Virtual Technology, Inc vte.cxのトランザクション管理 •  Feed(Collection)単位のAtomicトランザクション –  分離レベル:REPEATABLE READ •  かつ、Entry単位のバージョン⽐較 –  分離レベル:SNAPSHOT ISOLATION –  全てのEntryはURLとリビジョンで管理される –  リビジョン=更新されると+1される 21 https://www.facebook.com/notes/virtual-technology/ bdbトランザクションとreflexworksの処理について/486790368009209 データの⼀貫性を確保しつつ⾼いスループットを実現 詳細:
  • 22. Copyright © Virtual Technology, Inc - ポイント3 - ローカル開発環境 • リバースプロキシでクロスドメインを回避 • サービスのURLだけをサーバに向ける 22 /d/master ローカル環境で 開発しているイメージ
  • 23. Copyright © Virtual Technology, Inc CircleCI 23 GitHubにPushすることで⾃動的にサーバにデプロイ ※ 設定方法はAdvent Calendar の13日目に記載
  • 24. Copyright © Virtual Technology, Inc vte.cx開発⼿順 • 管理画⾯でサービスを新規作成 • Githubのvtecxblankをclone • コンテンツを作成、APIを作成 • コンテンツをGitHubにpushすることで サーバにデプロイ –  もしくは、gulpコマンド⼀発 • データをREST APIで操作 たった、これだけ。 これですべてのWebシステムを開発できる 24
  • 25. Copyright © Virtual Technology, Inc 本当は複雑なサーバサイド •  マルチテナントアーキテクチャー •  KVSであることを意識させない(ドキュメント型) •  並列分散したノードがMicroservices的に連携 複雑さを一切 表に出さない
  • 26. Copyright © Virtual Technology, Inc まとめ •  サーバの複雑さは隠蔽すべき –  現状のサーバレスアーキテクチャーは構成の都合を クライアントに押し付けているように思える –  Microservicesも同様。モノリシックを分解してThin にするのはいいが、認証などの考慮をクライアント にさせるのは不味い •  Webアプリのことだけに集中すべき –  重要なのはAPIとスキーマ設計(+ACL) –  静的コンテンツを含めSame Originで管理する •  ローカル開発環境・デプロイ環境は重要 –  ⼤規模なWeb開発ではローカル開発環境は必須 –  コマンド⼀発かGithubにpushで⾃動デプロイ 26
  • 27. Copyright © Virtual Technology, Inc 余談:MicroServices 隠蔽されるサーバ技術に標準化は必要か? •  JSON Schema、Swagger(Open API) •  AccessToken関連 –  JWT(JSON Web Token) –  OAuth 2.0 Token Introspection (RFC7662) などを駆使してMicroServicesを使いこなそうとしている正 直者が多い。⼀体誰得なの? 標準に準拠しているのとインターオペラビリティは別の問題 私たちは開発⽣産性の⽅が重要だと考えて、結局、(独⾃)ス キーマとワンタイムトークン(RXID) を採⽤した          詳しくは「WebAPI認証」で検索 27
  • 28. Copyright © Virtual Technology, Inc 私たちのビジネスの話 • Webアプリの受託開発でvte.cxを活⽤ • オンプレミスvte.cx(ReflexWorks)の販売 • 将来的にBaaS vte.cxの有償版 –  全然流⾏る気配なし。 –  たぶん、BaaSはビジネスにならないだろう 28
  • 29. Copyright © Virtual Technology, Inc29 Qiita Advent Calendar 2015 h:p://qiita.com/advent-calendar/2015/vtecx?share=true
  • 30. Copyright © Virtual Technology, Inc30 ご清聴ありがとう ございました Blogも書いています ぶいてく