SlideShare ist ein Scribd-Unternehmen logo
1 von 48
Downloaden Sie, um offline zu lesen
Copyright © Virtual Technology, Inc
サーバ構築ゼロで
フロントエンドが主役の開発を
2018/7/25 BPStudy#131 ⽵嵜 伸⼀郎(@stakezaki)
1
Copyright © Virtual Technology, Inc
⽵嵜 伸⼀郎 (たけざき しんいちろう)
twitter id:stakezaki
(有)バーチャルテクノロジー代表取締役
元⽇本IBM
元株式会社暮らしのデザインCTO
2
Copyright © Virtual Technology, Inc
vte.cx 半端ないって!
あいつ 半端ないって!
だってjavascriptだけで
Webサービス作れるんやで!
そんなん出来ひんやん 普通!
3
vte.cx(ブイテックス)
著作権フリー画像
Copyright © Virtual Technology, Inc
DEMO
4
Copyright © Virtual Technology, Inc
何で作ったか?
• 楽しく仕事したい
• ゴールドラッシュではツルハシを売れ
• 既存技術に満⾜できなかった
5
「成功の確率はとても低いことをよく知っています。
それでもスタートアップを始めるのはそれがどうしてもやりたいことだからです。」
<本⾳>
Copyright © Virtual Technology, Inc
楽しく仕事したい
• やっつけ仕事でなく楽しく開発したい
– ミドルウェアや⾃社サービスの開発は楽しい。
しかし、受託開発は⾟い。=やっつけ感
– ⼈材派遣商売はいつか⾏き詰まる。
• 弊社エンジニアの⼀⼈がうつ病に
6
派遣の仕事をやめ、 vte.cxの受託案件だけに絞った
これで、⾃社サービスと同じような開発スタイルで
「持ち帰り」で「アジャイル」開発することが可能になった
また、積極的にOSSにしていくことでモチベーションアップ
Copyright © Virtual Technology, Inc
ゴールドラッシュではツルハシを売れ
• ゴールドラッシュで最も⼤きな成功を収めたの
は採掘者たちに必需品を売った⼈
• ⼀般ユーザ向けにサービスを提供する(⾃⾝で
⾦を採掘する)か、⼀般ユーザ向けにサービス
を開発しているデベロッパー向けにツールを売
るか(ツルハシを売る)
7
BaaS=ツルハシ
Copyright © Virtual Technology, Inc
業務アプリのお決まり機能を提供
• ログイン認証
• データ⼊⼒フォーム
• ⼀覧表⽰
• ページネーション
• CSVアップロード
• PDF帳票出⼒
• メール送信
• データ分析
8
スクラッチで作る必要がない
⼯数削減、短納期で開発可能
エンジニアはきっと⾶びつく
だろうと考えていた
Copyright © Virtual Technology, Inc
しかしエンジニアに全く興味持ってもらえず
9
フレームワーク
売ってまーす。
しーん
・ ・ ・
ツルハシ(BaaS)
使いませんか?
「つまり、エンジニアが欲しがるものを作っていなかった」
お客様
(エンジニア)
Copyright © Virtual Technology, Inc
エンドユーザに直接アプローチ
10
⼀緒に作りましょう!
早いし安いよ!
受注システム
欲しいなあ
WoW!
お客様
(エンドユーザ)
顧客の抱える課題の専⾨家になり顧客に愛されるプロダクトを作ることだけに集中
Copyright © Virtual Technology, Inc
こんなこと⾔われた
11
Copyright © Virtual Technology, Inc
Firebaseとは競合しません!
• vte.cxは業務システム(例えば、受発注システム
や在庫管理システムなど)をターゲットとして
います。
12
• ログイン認証
• データ⼊⼒フォーム
• ⼀覧表⽰
• ページネーション
• CSVアップロード
• PDF帳票出⼒
• メール送信
• データ分析
Vte.cxが得意とするところ
Copyright © Virtual Technology, Inc
想定しているお客様
• ⾃社でWebサービスを⽴ち上げたい
• 開発+サービスの運⽤もまかせたい
• SaaS/パッケージ製品では機能がフィット
しない。カスタマイズできるものがほしい
13
これって
機能追加できる?
お客様
はい、
すぐにできます。
vte.cx開発者
BaaS
Copyright © Virtual Technology, Inc
ビジネス領域
14
所有
利⽤
特化 ⼀般
SaaS
IaaS
PaaS BaaS
パッケージSI フレームワーク+
カスタマイズ
オンプレミス
クラウド
• 圧倒的な パフォーマンス+スケーラビリティ を 低価格 で提供
• SaaSでは対応できない 特定顧客向けソリューション を素早く提供
コンペの多く
がココ
2/17
PHP	FW
超高速
開発
Copyright © Virtual Technology, Inc
特定顧客向けソリューションをやる理由
15
• 最初はツルハシ(BaaS)だけで商売できたらいいな
と思っていたがうまくいかないことがわかった
• 潜在ユーザーを信じて戦い続けるのは鉄のメンタ
ルと経済⾁体双⽅の体⼒が要る。たぶん、負ける
• やはりキラーアプリケーションが必要
• お客様と共同開発でOSS化
• 現在、受注在庫管理システム、倉庫管理シス
テムを開発中(OSSで公開予定)
• 私達は開発⾃体は好き。ミドルウェアだけでなく
新規のサービスを作っていきたいし⾃分たちで作
ることで改善点もわかる(ドックフーディング)
Copyright © Virtual Technology, Inc
BaaS+OSS戦略で勝算アリ!?
• 既存システム(受注・在庫管理システム
等)のOSSを提供、カストマイズする戦略
• 圧倒的な開発スピードと低コスト
• 運⽤費はもともと安い(オンプレ⽐1/10)
16
オンプレのパッケージには絶対負けないはず
※個⼈的感覚
Copyright © Virtual Technology, Inc
何で作ったか?
• 楽しく仕事したい
• ゴールドラッシュではツルハシを売れ
• 既存技術に満⾜できなかった
17
ここからは技術的な話が中⼼になります。
あくまで個⼈的で主観的な内容です。
またお客様にとってみたらどうでもいい話
Copyright © Virtual Technology, Inc
l
View Service Resource
既存技術に満⾜できなかった
2007年頃、ECサイトをオンプレミスで開発(⼀応、マイクロサービス)
品質最悪
スケールしない
三重苦
管理が⼤変
Copyright © Virtual Technology, Inc
いったい何をやっているのだろう?
•膨⼤な⼯数
•解決しない課題
•⾒えないメリット
19
Copyright © Virtual Technology, Inc
乗り越えなきゃいけない課題
• 運⽤管理を楽にする
• スケーラビリティを確保
• アプリの品質向上
• 可⽤性向上
20
Copyright © Virtual Technology, Inc
「先進の技術」なんてのはIT屋の寝⾔
• エンドユーザはシステム開発を必要悪と
して認めているにすぎない。開発しない
で済むならそうしたいと思っている。
• ⼀⽅のエンジニアは新技術を採⽤したが
りそれによって⼯数が膨れても当然とい
う顔をする。
21
サーバレス、マイクロサービス、OpenAPI、GraphQL、・・・
楽しさという罠にハマり、やりたいことをやるのがエンジニア
Copyright © Virtual Technology, Inc
本質的なことに集中しよう
• 「本来の、本質的な」=バーチャル
• お客様はWebサービスを素早く構築して
世の中に出したいと思っているはず
• いかに内部の設計が素晴らしくても膨⼤
な⼯数と時間がかかってしまっては意味
がない
22
Copyright © Virtual Technology, Inc
いろいろやめた
• PHPをやめてReactのSPAに
• RDBをやめKVS(Datastore)+BigQuery
• Microservicesをやめてk8s構成に
• Thin Server Architecture
ではなくBFFの導⼊
23
Copyright © Virtual Technology, Inc
SPA(Single Page Application)
• サーバーでHTMLを⽣成するよりも、
クライアントで動的に画⾯を更新する⽅が効率的
• ユーザーの操作に応じてインタラクティブに動く
リッチクライアントを実現できる
24
これってネイティブアプリ?
お客様
いいえ、Webアプリです。
開発者
SPA
Copyright © Virtual Technology, Inc
フロントエンド中⼼の世界感
• HTML、CSS、JavaScriptなどのコーディングだ
けで本格的なWebシステムを作れるようにした
• サーバサイドのAPI (API設計とスキーマ)もフロ
ントエンドエンジニアが⾃由に作れるようにした
• JavaScriptのエコシステムを採⽤することでロッ
クインを排除した
25
Copyright © Virtual Technology, Inc
vte.cxのこだわり
• バックエンドの複雑さを隠蔽
– サーバ構成の都合をクライアントに押し付けない
– Microservicesでありがちな認証などの考慮をクライア
ントにさせない
• Webアプリのことだけに集中させる
– 重要なのはAPIとスキーマ設計(+ACL)
– 静的コンテンツを含めSame Originで管理する
• ローカル開発環境やCI/CD環境を提供
– JavaScriptエコシステムを利⽤したローカル開発環境
– 複数のブランチに対応したサービスを⾃由に作成可能
– CircleCIなどによる⾃動デプロイ
26
Copyright © Virtual Technology, Inc
Thin Server Architecture
27
・・・
REST
• クライアントからRESTでサーバリソースにアクセス
• サーバからはJSONやXMLのデータを返すのみ
データ
Copyright © Virtual Technology, Inc28
• URLをフォルダに⾒⽴てて⾃由に設定・追加可能
• リソースを様々なフォーマットに変換可能
• XML、JSON、MessagePack等などのデータ
• HTMLやCSS、JavaScript、PDF、画像などの静的コンテンツ
REST APIと直感的な規約
Copyright © Virtual Technology, Inc
API以外の余計なことは考えたくない
29
適当に分散して勝⼿にスケールすることを期待
これが真のサーバレスではないのか!?
Copyright © Virtual Technology, Inc
ちなみにサーバレス アーキテクチャー
(FaaS)
30
API	Gateway
Lambda
Cognito SNSDynamoDB
Cloud	Front
S3
clientmobile client
Copyright © Virtual Technology, Inc
Webプラットフォームとしては時期尚早
• 静的コンテンツとAPIが異なるドメイン
– CORSの設定なんか画⾯からやりたくない
– イベント・ドリブンでWebアプリ作れんの?
– あとセッション管理どうすんの?
• デプロイどうすんの?
• Spinup、200ms問題
• サービス利⽤には認証が必要
– CognitoのSecurity Token Service
• たぶん、Knativeも同じ31
Copyright © Virtual Technology, Inc
Kubernetes !!これでしょ!
•無停⽌メンテナンス
•可⽤性向上
•スケールアウト
•ログ⼀元管理
32
Copyright © Virtual Technology, Inc
サーバ側すべてをサービス化
• DBの設定⾃体はそれほど難しくないがその後の運⽤が⼤変=>KVSに
• トラフィックが増えたらサーバを増やす、運⽤状態をモニターする、その
他無数の管理業務がある=>k8sの運⽤監視、StackDriver
33
すべてをサービス化することで運⽤コストを劇的に下げる
Copyright © Virtual Technology, Inc
WebスケールIT
• グーグルやアマゾン、フェイスブックといった
⼤⼿のクラウド特有のアーキテクチャによる分
散システムで、⾼度に⾃動化された運⽤管理に
より、システム規模の拡張にも、負荷を最⼩限
に抑えることが可能な特⻑を備えるもの
• このアーキテクチャを適⽤させることにより、
⼩規模のサービス・プロバイダーでも、「⼤規
模なクラウド・サービス・プロバイダーと同じ
能⼒を提供するグローバル・クラスのコン
ピューティング様式」を実現することが可能
34
Copyright © Virtual Technology, Inc
Microservicesをやめた
• 機能が増えたらその都度サービスを⽴てるのか?
• BaaSでは論理的にサービスを追加でき⾃由にAPI
を作ることができる。それで⼗分では?
35
“ソフトウェアシステムの⼤多数は、
単⼀のモノリシックアプリケーション
として構築されるべきである”
by Martin Fowler
Copyright © Virtual Technology, Inc
36
ビジネスロジック PDFService
モノリスにしてkubernetes構成
ビジネスロジック
+PDFService
ビジネスロジック
+PDFService
分散するとスケーラビリティと
可⽤性の対応が難しくなる
Microserviceによる構成
オーケストレーションツールにスケーラ
ビリティと可⽤性の対応を任せられる
ビジネスロジック と PDFServiceは⾮⼲渉化
されており、変更がお互いに影響されること
はない
ノード1 ノード2
ノード1
ノード2
機能単位でわけるならモノリスで⼗分
Copyright © Virtual Technology, Inc
マルチテナントで実現するMicroservices
それぞれが独⽴して動作するアプリケーション
37
Microservicesの単位は実はもっと⼤きい
販売管理
サービス
受注出荷管理
サービス
API連携
Copyright © Virtual Technology, Inc38
しかしフロントの責務が増える
http://www.slideshare.net/fullscreen/sagawafumio/ss-38480894/6
Copyright © Virtual Technology, Inc
BFF(Backend for Frontend)の導⼊
• クライアント偏重の是正
– ⾮同期コールバック地獄に陥りがちなクライアントより
サーバで処理実⾏した⽅が有利であることに気づく
• Thin Server Architectureを⾒直し
– サーバサイドの開発はやはり必要
– Server Side Javascriptでビジネスロジック記述
• Isomorphic(Universal)
– SSR、動的PDF出⼒
– サーバで同期実⾏
39
例えば、
鏡と明細の
マージ編集
Copyright © Virtual Technology, Inc
FrontendとServer Side
40
Browser
(React)
Backends for
Frontends
(Server Side
JavaScripr)
Datastore
Bigquery
vte.cx API
Frontend Server Side
BFFはServer SideにあるFrontend機能のこと
Client Side
Copyright © Virtual Technology, Inc
GraphQLではなくBFFで
• GraphQLが解決しようとしていること
– クライアントからリクエストを何度も発⾏する
必要がある(N+1問題)
– 提供されているAPIが不⼗分だと、クライアント
側でテーブル結合する必要があるなど
• そもそもAPI変更コストが⼤きいという前提がまずい
– サーバ側の変更は基本的に⼤変なのでAPIはなるべく変更した
くないという背景(変更に数週間かかるなど)
– APIは最⼤公約数的なものになってしまいがち
41
結局はクライアントで頑張る発想から超えられないGraphQL
⼀⽅、柔軟にAPIを作成でき、かつ、開発コストも低い
BFF(ServersideJS)があればGraphQLは不要ではないか!?
Copyright © Virtual Technology, Inc
型
• 型があれば10%〜20%のバグを減らすこ
とができるとの調査結果
• サーバサイドにおける動的型付け⾔語疲れ
42
Copyright © Virtual Technology, Inc
エントリスキーマ
• シンプルなシンタックス
– 「項⽬名(型)= 正規表現」の形式で記述
– Indexを指定可能
– 正規表現でバリデーション
• ソフトスキーマ
– 項⽬の追加が可能
– 運⽤中でも変更可
43
Copyright © Virtual Technology, Inc
エントリスキーマから
TypeScriptの型を⾃動⽣成
44
管理画⾯からTS型定義ファイル出⼒が可能
Copyright © Virtual Technology, Inc
まとめ:採⽤してよかった技術
• SPA(React/React Native)
• TypeScript
• ソフトスキーマ
• BFF(Server Side JavaScript)
• Kubernetes(GKE)
• Google Datastore
• Google Bigtable
45
圧倒的な開発⽣産性
⾼いクオリティ
スケーラビリティ
⾼可⽤性
低コスト
運⽤保守(DevOps)
Copyright © Virtual Technology, Inc
まとめ:採⽤しなかった技術
• Microservices
• Serverless(FaaS)
• OpenAPI
• GraphQL
46
Copyright © Virtual Technology, Inc
ビジョン
”もうフルスタックエンジニアはいらない。
HTMLとJSの知識さえあればWebサービスを
開発できる。
そのような世界を私たちは⽬指しています。”
47
Copyright © Virtual Technology, Inc48
support@virtual-tech.net
パートナー募集中!

Weitere ähnliche Inhalte

Was ist angesagt?

JAWSUG & JAZUG Sendai Azure Update 20140517
JAWSUG & JAZUG Sendai Azure Update 20140517JAWSUG & JAZUG Sendai Azure Update 20140517
JAWSUG & JAZUG Sendai Azure Update 20140517
Ayako Omori
 
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
Yuki Ando
 

Was ist angesagt? (20)

インフラCICDの勘所
インフラCICDの勘所インフラCICDの勘所
インフラCICDの勘所
 
Spring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作るSpring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作る
 
サーバーサイド技術者不足に効くChef
サーバーサイド技術者不足に効くChefサーバーサイド技術者不足に効くChef
サーバーサイド技術者不足に効くChef
 
JAWSUG & JAZUG Sendai Azure Update 20140517
JAWSUG & JAZUG Sendai Azure Update 20140517JAWSUG & JAZUG Sendai Azure Update 20140517
JAWSUG & JAZUG Sendai Azure Update 20140517
 
Angularreflex20141210
Angularreflex20141210Angularreflex20141210
Angularreflex20141210
 
Api gatewayの話
Api gatewayの話Api gatewayの話
Api gatewayの話
 
インターネット最前線のゲームインフラを支えるパブリッククラウド
インターネット最前線のゲームインフラを支えるパブリッククラウドインターネット最前線のゲームインフラを支えるパブリッククラウド
インターネット最前線のゲームインフラを支えるパブリッククラウド
 
”もと”中の人が語り尽くすSoftLayerセキュリティー(2016/10/13更新版)
”もと”中の人が語り尽くすSoftLayerセキュリティー(2016/10/13更新版)”もと”中の人が語り尽くすSoftLayerセキュリティー(2016/10/13更新版)
”もと”中の人が語り尽くすSoftLayerセキュリティー(2016/10/13更新版)
 
SoftLayer最新動向と賢い利用方法
SoftLayer最新動向と賢い利用方法 SoftLayer最新動向と賢い利用方法
SoftLayer最新動向と賢い利用方法
 
[SC05] 株式会社アシックス様における Azure AD 導入プロジェクトの実際
[SC05] 株式会社アシックス様における Azure AD 導入プロジェクトの実際[SC05] 株式会社アシックス様における Azure AD 導入プロジェクトの実際
[SC05] 株式会社アシックス様における Azure AD 導入プロジェクトの実際
 
SoftLayer Bluemix Summit 2015 はじめてのSoftLayer(サーバー、ストレージ編)
 SoftLayer Bluemix Summit 2015 はじめてのSoftLayer(サーバー、ストレージ編) SoftLayer Bluemix Summit 2015 はじめてのSoftLayer(サーバー、ストレージ編)
SoftLayer Bluemix Summit 2015 はじめてのSoftLayer(サーバー、ストレージ編)
 
クラウドを活用した システム開発は適材適所
クラウドを活用したシステム開発は適材適所クラウドを活用したシステム開発は適材適所
クラウドを活用した システム開発は適材適所
 
【検証してみた】いま話題のVMware on IBM Cloud SoftLayer 配布版
【検証してみた】いま話題のVMware on IBM Cloud SoftLayer 配布版【検証してみた】いま話題のVMware on IBM Cloud SoftLayer 配布版
【検証してみた】いま話題のVMware on IBM Cloud SoftLayer 配布版
 
VMwareとIBMクラウドの提携で広がるハイブリッド・クラウドの世界
VMwareとIBMクラウドの提携で広がるハイブリッド・クラウドの世界VMwareとIBMクラウドの提携で広がるハイブリッド・クラウドの世界
VMwareとIBMクラウドの提携で広がるハイブリッド・クラウドの世界
 
20200219-iot@loft#8_security_of_smarthome
20200219-iot@loft#8_security_of_smarthome20200219-iot@loft#8_security_of_smarthome
20200219-iot@loft#8_security_of_smarthome
 
ホスティッドプライベートクラウド勉強会 ~Azure Pack on SoftLayer ~
ホスティッドプライベートクラウド勉強会 ~Azure Pack on SoftLayer ~ホスティッドプライベートクラウド勉強会 ~Azure Pack on SoftLayer ~
ホスティッドプライベートクラウド勉強会 ~Azure Pack on SoftLayer ~
 
Sb tech night#1_document_otsuki_202104
Sb tech night#1_document_otsuki_202104Sb tech night#1_document_otsuki_202104
Sb tech night#1_document_otsuki_202104
 
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
 
Azure ADアプリケーションを使用した認証のあれやこれ ASP.NET Core編
Azure ADアプリケーションを使用した認証のあれやこれ ASP.NET Core編Azure ADアプリケーションを使用した認証のあれやこれ ASP.NET Core編
Azure ADアプリケーションを使用した認証のあれやこれ ASP.NET Core編
 
JAZUG Nagoya Windows Azure Update 20140301
JAZUG Nagoya Windows Azure Update 20140301JAZUG Nagoya Windows Azure Update 20140301
JAZUG Nagoya Windows Azure Update 20140301
 

Ähnlich wie Bpstudy20180725

Realm platform2019
Realm platform2019Realm platform2019
Realm platform2019
昌桓 李
 
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介
Yuta Matsumura
 

Ähnlich wie Bpstudy20180725 (20)

Lt20190129
Lt20190129Lt20190129
Lt20190129
 
Real techlt20180829
Real techlt20180829Real techlt20180829
Real techlt20180829
 
React vtecx20171129
React vtecx20171129React vtecx20171129
React vtecx20171129
 
React vtecx20171025
React vtecx20171025React vtecx20171025
React vtecx20171025
 
Web study20171007
Web study20171007Web study20171007
Web study20171007
 
Internet of Toilet / Jaws festa 2016
Internet of Toilet / Jaws festa 2016Internet of Toilet / Jaws festa 2016
Internet of Toilet / Jaws festa 2016
 
React vtecx20170920
React vtecx20170920React vtecx20170920
React vtecx20170920
 
React vtecx20170822
React vtecx20170822React vtecx20170822
React vtecx20170822
 
BPStudy20121221
BPStudy20121221BPStudy20121221
BPStudy20121221
 
Essentials of container
Essentials of containerEssentials of container
Essentials of container
 
第3回企業Webシステム開発セミナー「業務システムにHTML5を上手に取り入れるためには?」
第3回企業Webシステム開発セミナー「業務システムにHTML5を上手に取り入れるためには?」第3回企業Webシステム開発セミナー「業務システムにHTML5を上手に取り入れるためには?」
第3回企業Webシステム開発セミナー「業務システムにHTML5を上手に取り入れるためには?」
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
 
AWSオンリーで実現するIoTクラウド基盤
AWSオンリーで実現するIoTクラウド基盤AWSオンリーで実現するIoTクラウド基盤
AWSオンリーで実現するIoTクラウド基盤
 
SoftLayer Bluemix Community Festa 2016 はじめてのSoftLayer
SoftLayer Bluemix Community Festa 2016 はじめてのSoftLayerSoftLayer Bluemix Community Festa 2016 はじめてのSoftLayer
SoftLayer Bluemix Community Festa 2016 はじめてのSoftLayer
 
Realm platform2019
Realm platform2019Realm platform2019
Realm platform2019
 
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介
 
Real-time personalized recommendation using embedding
Real-time personalized recommendation using embeddingReal-time personalized recommendation using embedding
Real-time personalized recommendation using embedding
 
クラウドの新潮流! “クラウドネイティブなオンプレ”とは?
クラウドの新潮流! “クラウドネイティブなオンプレ”とは?クラウドの新潮流! “クラウドネイティブなオンプレ”とは?
クラウドの新潮流! “クラウドネイティブなオンプレ”とは?
 
JAZUG_TOHOKU_modeki_20230324_共有版.pdf
JAZUG_TOHOKU_modeki_20230324_共有版.pdfJAZUG_TOHOKU_modeki_20230324_共有版.pdf
JAZUG_TOHOKU_modeki_20230324_共有版.pdf
 
作って(壊して?)学ぶインターネットのしくみ サイバーエージェントの実験用ASの紹介 / Introduce experimental AS in ...
作って(壊して?)学ぶインターネットのしくみ サイバーエージェントの実験用ASの紹介 / Introduce experimental AS in ...作って(壊して?)学ぶインターネットのしくみ サイバーエージェントの実験用ASの紹介 / Introduce experimental AS in ...
作って(壊して?)学ぶインターネットのしくみ サイバーエージェントの実験用ASの紹介 / Introduce experimental AS in ...
 

Mehr von Shinichiro Takezaki (9)

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
 
Vtecxlt20151201
Vtecxlt20151201Vtecxlt20151201
Vtecxlt20151201
 
No nosql20130424
No nosql20130424No nosql20130424
No nosql20130424
 
Gaeja20121130
Gaeja20121130Gaeja20121130
Gaeja20121130
 
Reflex works20120818 1
Reflex works20120818 1Reflex works20120818 1
Reflex works20120818 1
 
Groovyコンファレンス
GroovyコンファレンスGroovyコンファレンス
Groovyコンファレンス
 

Kürzlich hochgeladen

物流は成長の準備ができていますか? 警告 1 日あたり 1 章を超えて消費しないでください コンテンツが覚醒と変化への意志を引き起こす
物流は成長の準備ができていますか? 警告 1 日あたり 1 章を超えて消費しないでください コンテンツが覚醒と変化への意志を引き起こす物流は成長の準備ができていますか? 警告 1 日あたり 1 章を超えて消費しないでください コンテンツが覚醒と変化への意志を引き起こす
物流は成長の準備ができていますか? 警告 1 日あたり 1 章を超えて消費しないでください コンテンツが覚醒と変化への意志を引き起こす
Michael Rada
 
Service-introduction-materials-misorae-leadership
Service-introduction-materials-misorae-leadershipService-introduction-materials-misorae-leadership
Service-introduction-materials-misorae-leadership
Yasuyoshi Minehisa
 

Kürzlich hochgeladen (8)

物流は成長の準備ができていますか? 警告 1 日あたり 1 章を超えて消費しないでください コンテンツが覚醒と変化への意志を引き起こす
物流は成長の準備ができていますか? 警告 1 日あたり 1 章を超えて消費しないでください コンテンツが覚醒と変化への意志を引き起こす物流は成長の準備ができていますか? 警告 1 日あたり 1 章を超えて消費しないでください コンテンツが覚醒と変化への意志を引き起こす
物流は成長の準備ができていますか? 警告 1 日あたり 1 章を超えて消費しないでください コンテンツが覚醒と変化への意志を引き起こす
 
事例DBサービス紹介資料(Case Study DB service introduction)
事例DBサービス紹介資料(Case Study DB service introduction)事例DBサービス紹介資料(Case Study DB service introduction)
事例DBサービス紹介資料(Case Study DB service introduction)
 
共有用_aio基本保守プラン_WordPressサイト_20240509.pdf
共有用_aio基本保守プラン_WordPressサイト_20240509.pdf共有用_aio基本保守プラン_WordPressサイト_20240509.pdf
共有用_aio基本保守プラン_WordPressサイト_20240509.pdf
 
セルフケア研修で使えるカードゲーム『攻略!きみのストレスを発見せよ!: ゲームで身につくストレスマネジメント』
セルフケア研修で使えるカードゲーム『攻略!きみのストレスを発見せよ!: ゲームで身につくストレスマネジメント』セルフケア研修で使えるカードゲーム『攻略!きみのストレスを発見せよ!: ゲームで身につくストレスマネジメント』
セルフケア研修で使えるカードゲーム『攻略!きみのストレスを発見せよ!: ゲームで身につくストレスマネジメント』
 
202405_VISIONARYJAPAN_engineerteam_entrancebook(ver2.1)
202405_VISIONARYJAPAN_engineerteam_entrancebook(ver2.1)202405_VISIONARYJAPAN_engineerteam_entrancebook(ver2.1)
202405_VISIONARYJAPAN_engineerteam_entrancebook(ver2.1)
 
company profile.pdf
company profile.pdfcompany profile.pdf
company profile.pdf
 
Service-introduction-materials-misorae-leadership
Service-introduction-materials-misorae-leadershipService-introduction-materials-misorae-leadership
Service-introduction-materials-misorae-leadership
 
ストックマーク株式会社がご提供しているAnews(エーニュース)概要紹介.pdf
ストックマーク株式会社がご提供しているAnews(エーニュース)概要紹介.pdfストックマーク株式会社がご提供しているAnews(エーニュース)概要紹介.pdf
ストックマーク株式会社がご提供しているAnews(エーニュース)概要紹介.pdf
 

Bpstudy20180725

  • 1. Copyright © Virtual Technology, Inc サーバ構築ゼロで フロントエンドが主役の開発を 2018/7/25 BPStudy#131 ⽵嵜 伸⼀郎(@stakezaki) 1
  • 2. Copyright © Virtual Technology, Inc ⽵嵜 伸⼀郎 (たけざき しんいちろう) twitter id:stakezaki (有)バーチャルテクノロジー代表取締役 元⽇本IBM 元株式会社暮らしのデザインCTO 2
  • 3. Copyright © Virtual Technology, Inc vte.cx 半端ないって! あいつ 半端ないって! だってjavascriptだけで Webサービス作れるんやで! そんなん出来ひんやん 普通! 3 vte.cx(ブイテックス) 著作権フリー画像
  • 4. Copyright © Virtual Technology, Inc DEMO 4
  • 5. Copyright © Virtual Technology, Inc 何で作ったか? • 楽しく仕事したい • ゴールドラッシュではツルハシを売れ • 既存技術に満⾜できなかった 5 「成功の確率はとても低いことをよく知っています。 それでもスタートアップを始めるのはそれがどうしてもやりたいことだからです。」 <本⾳>
  • 6. Copyright © Virtual Technology, Inc 楽しく仕事したい • やっつけ仕事でなく楽しく開発したい – ミドルウェアや⾃社サービスの開発は楽しい。 しかし、受託開発は⾟い。=やっつけ感 – ⼈材派遣商売はいつか⾏き詰まる。 • 弊社エンジニアの⼀⼈がうつ病に 6 派遣の仕事をやめ、 vte.cxの受託案件だけに絞った これで、⾃社サービスと同じような開発スタイルで 「持ち帰り」で「アジャイル」開発することが可能になった また、積極的にOSSにしていくことでモチベーションアップ
  • 7. Copyright © Virtual Technology, Inc ゴールドラッシュではツルハシを売れ • ゴールドラッシュで最も⼤きな成功を収めたの は採掘者たちに必需品を売った⼈ • ⼀般ユーザ向けにサービスを提供する(⾃⾝で ⾦を採掘する)か、⼀般ユーザ向けにサービス を開発しているデベロッパー向けにツールを売 るか(ツルハシを売る) 7 BaaS=ツルハシ
  • 8. Copyright © Virtual Technology, Inc 業務アプリのお決まり機能を提供 • ログイン認証 • データ⼊⼒フォーム • ⼀覧表⽰ • ページネーション • CSVアップロード • PDF帳票出⼒ • メール送信 • データ分析 8 スクラッチで作る必要がない ⼯数削減、短納期で開発可能 エンジニアはきっと⾶びつく だろうと考えていた
  • 9. Copyright © Virtual Technology, Inc しかしエンジニアに全く興味持ってもらえず 9 フレームワーク 売ってまーす。 しーん ・ ・ ・ ツルハシ(BaaS) 使いませんか? 「つまり、エンジニアが欲しがるものを作っていなかった」 お客様 (エンジニア)
  • 10. Copyright © Virtual Technology, Inc エンドユーザに直接アプローチ 10 ⼀緒に作りましょう! 早いし安いよ! 受注システム 欲しいなあ WoW! お客様 (エンドユーザ) 顧客の抱える課題の専⾨家になり顧客に愛されるプロダクトを作ることだけに集中
  • 11. Copyright © Virtual Technology, Inc こんなこと⾔われた 11
  • 12. Copyright © Virtual Technology, Inc Firebaseとは競合しません! • vte.cxは業務システム(例えば、受発注システム や在庫管理システムなど)をターゲットとして います。 12 • ログイン認証 • データ⼊⼒フォーム • ⼀覧表⽰ • ページネーション • CSVアップロード • PDF帳票出⼒ • メール送信 • データ分析 Vte.cxが得意とするところ
  • 13. Copyright © Virtual Technology, Inc 想定しているお客様 • ⾃社でWebサービスを⽴ち上げたい • 開発+サービスの運⽤もまかせたい • SaaS/パッケージ製品では機能がフィット しない。カスタマイズできるものがほしい 13 これって 機能追加できる? お客様 はい、 すぐにできます。 vte.cx開発者 BaaS
  • 14. Copyright © Virtual Technology, Inc ビジネス領域 14 所有 利⽤ 特化 ⼀般 SaaS IaaS PaaS BaaS パッケージSI フレームワーク+ カスタマイズ オンプレミス クラウド • 圧倒的な パフォーマンス+スケーラビリティ を 低価格 で提供 • SaaSでは対応できない 特定顧客向けソリューション を素早く提供 コンペの多く がココ 2/17 PHP FW 超高速 開発
  • 15. Copyright © Virtual Technology, Inc 特定顧客向けソリューションをやる理由 15 • 最初はツルハシ(BaaS)だけで商売できたらいいな と思っていたがうまくいかないことがわかった • 潜在ユーザーを信じて戦い続けるのは鉄のメンタ ルと経済⾁体双⽅の体⼒が要る。たぶん、負ける • やはりキラーアプリケーションが必要 • お客様と共同開発でOSS化 • 現在、受注在庫管理システム、倉庫管理シス テムを開発中(OSSで公開予定) • 私達は開発⾃体は好き。ミドルウェアだけでなく 新規のサービスを作っていきたいし⾃分たちで作 ることで改善点もわかる(ドックフーディング)
  • 16. Copyright © Virtual Technology, Inc BaaS+OSS戦略で勝算アリ!? • 既存システム(受注・在庫管理システム 等)のOSSを提供、カストマイズする戦略 • 圧倒的な開発スピードと低コスト • 運⽤費はもともと安い(オンプレ⽐1/10) 16 オンプレのパッケージには絶対負けないはず ※個⼈的感覚
  • 17. Copyright © Virtual Technology, Inc 何で作ったか? • 楽しく仕事したい • ゴールドラッシュではツルハシを売れ • 既存技術に満⾜できなかった 17 ここからは技術的な話が中⼼になります。 あくまで個⼈的で主観的な内容です。 またお客様にとってみたらどうでもいい話
  • 18. Copyright © Virtual Technology, Inc l View Service Resource 既存技術に満⾜できなかった 2007年頃、ECサイトをオンプレミスで開発(⼀応、マイクロサービス) 品質最悪 スケールしない 三重苦 管理が⼤変
  • 19. Copyright © Virtual Technology, Inc いったい何をやっているのだろう? •膨⼤な⼯数 •解決しない課題 •⾒えないメリット 19
  • 20. Copyright © Virtual Technology, Inc 乗り越えなきゃいけない課題 • 運⽤管理を楽にする • スケーラビリティを確保 • アプリの品質向上 • 可⽤性向上 20
  • 21. Copyright © Virtual Technology, Inc 「先進の技術」なんてのはIT屋の寝⾔ • エンドユーザはシステム開発を必要悪と して認めているにすぎない。開発しない で済むならそうしたいと思っている。 • ⼀⽅のエンジニアは新技術を採⽤したが りそれによって⼯数が膨れても当然とい う顔をする。 21 サーバレス、マイクロサービス、OpenAPI、GraphQL、・・・ 楽しさという罠にハマり、やりたいことをやるのがエンジニア
  • 22. Copyright © Virtual Technology, Inc 本質的なことに集中しよう • 「本来の、本質的な」=バーチャル • お客様はWebサービスを素早く構築して 世の中に出したいと思っているはず • いかに内部の設計が素晴らしくても膨⼤ な⼯数と時間がかかってしまっては意味 がない 22
  • 23. Copyright © Virtual Technology, Inc いろいろやめた • PHPをやめてReactのSPAに • RDBをやめKVS(Datastore)+BigQuery • Microservicesをやめてk8s構成に • Thin Server Architecture ではなくBFFの導⼊ 23
  • 24. Copyright © Virtual Technology, Inc SPA(Single Page Application) • サーバーでHTMLを⽣成するよりも、 クライアントで動的に画⾯を更新する⽅が効率的 • ユーザーの操作に応じてインタラクティブに動く リッチクライアントを実現できる 24 これってネイティブアプリ? お客様 いいえ、Webアプリです。 開発者 SPA
  • 25. Copyright © Virtual Technology, Inc フロントエンド中⼼の世界感 • HTML、CSS、JavaScriptなどのコーディングだ けで本格的なWebシステムを作れるようにした • サーバサイドのAPI (API設計とスキーマ)もフロ ントエンドエンジニアが⾃由に作れるようにした • JavaScriptのエコシステムを採⽤することでロッ クインを排除した 25
  • 26. Copyright © Virtual Technology, Inc vte.cxのこだわり • バックエンドの複雑さを隠蔽 – サーバ構成の都合をクライアントに押し付けない – Microservicesでありがちな認証などの考慮をクライア ントにさせない • Webアプリのことだけに集中させる – 重要なのはAPIとスキーマ設計(+ACL) – 静的コンテンツを含めSame Originで管理する • ローカル開発環境やCI/CD環境を提供 – JavaScriptエコシステムを利⽤したローカル開発環境 – 複数のブランチに対応したサービスを⾃由に作成可能 – CircleCIなどによる⾃動デプロイ 26
  • 27. Copyright © Virtual Technology, Inc Thin Server Architecture 27 ・・・ REST • クライアントからRESTでサーバリソースにアクセス • サーバからはJSONやXMLのデータを返すのみ データ
  • 28. Copyright © Virtual Technology, Inc28 • URLをフォルダに⾒⽴てて⾃由に設定・追加可能 • リソースを様々なフォーマットに変換可能 • XML、JSON、MessagePack等などのデータ • HTMLやCSS、JavaScript、PDF、画像などの静的コンテンツ REST APIと直感的な規約
  • 29. Copyright © Virtual Technology, Inc API以外の余計なことは考えたくない 29 適当に分散して勝⼿にスケールすることを期待 これが真のサーバレスではないのか!?
  • 30. Copyright © Virtual Technology, Inc ちなみにサーバレス アーキテクチャー (FaaS) 30 API Gateway Lambda Cognito SNSDynamoDB Cloud Front S3 clientmobile client
  • 31. Copyright © Virtual Technology, Inc Webプラットフォームとしては時期尚早 • 静的コンテンツとAPIが異なるドメイン – CORSの設定なんか画⾯からやりたくない – イベント・ドリブンでWebアプリ作れんの? – あとセッション管理どうすんの? • デプロイどうすんの? • Spinup、200ms問題 • サービス利⽤には認証が必要 – CognitoのSecurity Token Service • たぶん、Knativeも同じ31
  • 32. Copyright © Virtual Technology, Inc Kubernetes !!これでしょ! •無停⽌メンテナンス •可⽤性向上 •スケールアウト •ログ⼀元管理 32
  • 33. Copyright © Virtual Technology, Inc サーバ側すべてをサービス化 • DBの設定⾃体はそれほど難しくないがその後の運⽤が⼤変=>KVSに • トラフィックが増えたらサーバを増やす、運⽤状態をモニターする、その 他無数の管理業務がある=>k8sの運⽤監視、StackDriver 33 すべてをサービス化することで運⽤コストを劇的に下げる
  • 34. Copyright © Virtual Technology, Inc WebスケールIT • グーグルやアマゾン、フェイスブックといった ⼤⼿のクラウド特有のアーキテクチャによる分 散システムで、⾼度に⾃動化された運⽤管理に より、システム規模の拡張にも、負荷を最⼩限 に抑えることが可能な特⻑を備えるもの • このアーキテクチャを適⽤させることにより、 ⼩規模のサービス・プロバイダーでも、「⼤規 模なクラウド・サービス・プロバイダーと同じ 能⼒を提供するグローバル・クラスのコン ピューティング様式」を実現することが可能 34
  • 35. Copyright © Virtual Technology, Inc Microservicesをやめた • 機能が増えたらその都度サービスを⽴てるのか? • BaaSでは論理的にサービスを追加でき⾃由にAPI を作ることができる。それで⼗分では? 35 “ソフトウェアシステムの⼤多数は、 単⼀のモノリシックアプリケーション として構築されるべきである” by Martin Fowler
  • 36. Copyright © Virtual Technology, Inc 36 ビジネスロジック PDFService モノリスにしてkubernetes構成 ビジネスロジック +PDFService ビジネスロジック +PDFService 分散するとスケーラビリティと 可⽤性の対応が難しくなる Microserviceによる構成 オーケストレーションツールにスケーラ ビリティと可⽤性の対応を任せられる ビジネスロジック と PDFServiceは⾮⼲渉化 されており、変更がお互いに影響されること はない ノード1 ノード2 ノード1 ノード2 機能単位でわけるならモノリスで⼗分
  • 37. Copyright © Virtual Technology, Inc マルチテナントで実現するMicroservices それぞれが独⽴して動作するアプリケーション 37 Microservicesの単位は実はもっと⼤きい 販売管理 サービス 受注出荷管理 サービス API連携
  • 38. Copyright © Virtual Technology, Inc38 しかしフロントの責務が増える http://www.slideshare.net/fullscreen/sagawafumio/ss-38480894/6
  • 39. Copyright © Virtual Technology, Inc BFF(Backend for Frontend)の導⼊ • クライアント偏重の是正 – ⾮同期コールバック地獄に陥りがちなクライアントより サーバで処理実⾏した⽅が有利であることに気づく • Thin Server Architectureを⾒直し – サーバサイドの開発はやはり必要 – Server Side Javascriptでビジネスロジック記述 • Isomorphic(Universal) – SSR、動的PDF出⼒ – サーバで同期実⾏ 39 例えば、 鏡と明細の マージ編集
  • 40. Copyright © Virtual Technology, Inc FrontendとServer Side 40 Browser (React) Backends for Frontends (Server Side JavaScripr) Datastore Bigquery vte.cx API Frontend Server Side BFFはServer SideにあるFrontend機能のこと Client Side
  • 41. Copyright © Virtual Technology, Inc GraphQLではなくBFFで • GraphQLが解決しようとしていること – クライアントからリクエストを何度も発⾏する 必要がある(N+1問題) – 提供されているAPIが不⼗分だと、クライアント 側でテーブル結合する必要があるなど • そもそもAPI変更コストが⼤きいという前提がまずい – サーバ側の変更は基本的に⼤変なのでAPIはなるべく変更した くないという背景(変更に数週間かかるなど) – APIは最⼤公約数的なものになってしまいがち 41 結局はクライアントで頑張る発想から超えられないGraphQL ⼀⽅、柔軟にAPIを作成でき、かつ、開発コストも低い BFF(ServersideJS)があればGraphQLは不要ではないか!?
  • 42. Copyright © Virtual Technology, Inc 型 • 型があれば10%〜20%のバグを減らすこ とができるとの調査結果 • サーバサイドにおける動的型付け⾔語疲れ 42
  • 43. Copyright © Virtual Technology, Inc エントリスキーマ • シンプルなシンタックス – 「項⽬名(型)= 正規表現」の形式で記述 – Indexを指定可能 – 正規表現でバリデーション • ソフトスキーマ – 項⽬の追加が可能 – 運⽤中でも変更可 43
  • 44. Copyright © Virtual Technology, Inc エントリスキーマから TypeScriptの型を⾃動⽣成 44 管理画⾯からTS型定義ファイル出⼒が可能
  • 45. Copyright © Virtual Technology, Inc まとめ:採⽤してよかった技術 • SPA(React/React Native) • TypeScript • ソフトスキーマ • BFF(Server Side JavaScript) • Kubernetes(GKE) • Google Datastore • Google Bigtable 45 圧倒的な開発⽣産性 ⾼いクオリティ スケーラビリティ ⾼可⽤性 低コスト 運⽤保守(DevOps)
  • 46. Copyright © Virtual Technology, Inc まとめ:採⽤しなかった技術 • Microservices • Serverless(FaaS) • OpenAPI • GraphQL 46
  • 47. Copyright © Virtual Technology, Inc ビジョン ”もうフルスタックエンジニアはいらない。 HTMLとJSの知識さえあればWebサービスを 開発できる。 そのような世界を私たちは⽬指しています。” 47
  • 48. Copyright © Virtual Technology, Inc48 support@virtual-tech.net パートナー募集中!