SlideShare a Scribd company logo
1 of 40
© Recochoku Co.,Ltd. Proprietary and Confidential
2016/10/06
WIZY開発の裏側
Yuto Matsuki
© Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06
Index
2
1. WIZYの構成
2. WIZYの裏側
1. フロント
2. バックエンド
3. インフラ
3. まとめ
© Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06
WIZYのシステム構成
3
© Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06
WIZYのシステム構成
4
© Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06
WIZYの裏側
5
© Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06
WIZYを支える技術
6
© Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06
WIZYのメイン言語
Python
7
© Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06
メイン言語にPythonを選択した理由
8
• 環境構築の容易さ(virtualenv/pip)
• 環境構築手順がシンプルで面倒くさい事が起きにくい
• システム環境を汚さずにインストールできる。不要になれば消すだけ
$ python -V
Python 2.7.12
$ brew install python3
$ pyvenv-3.5 venv
$ source venv/bin/activate
$ python -V
Python 3.5.2
© Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06
メイン言語にPythonを選択した理由
9
• 書きやすい。読みやすい。チーム開発に向いていそう
ちょっとしたことがシンプルに書けて嬉しい
括弧の代わりにインデントでブロックを表すことによるメリット
• コードが短くなる
• 人によって書き方の差が発生しにくい
読みやすいコードを書く文化がある「Readability counts.」
if -1 < item.limit < item_supports:
raise Exception(‘在庫切れ’)
© Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06
Pythonのバージョンについて
10
AWSのAmazon Linuxは標準で2.7がインストールされているため
プロトタイプまではPython2.7で開発していたが
この本にPython3系を使うべきと
書いてあったためPython3で書き直しました。
(ほぼ互換性があったためすぐに対応できた)
© Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06
WIZYのフロントエンド
11
© Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06
WIZYを支える技術(フロントエンド)
12
© Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06
WIZYのフロントエンド
13
• Semantic-UI
• オープンソースのCSSフレームワーク
• 他と比較してHTMLが綺麗に書けるのが特徴
• 見た目だけでなく入力チェックなどの機能も備える
• Backbone.js
• フロントMVCを実現するJavaScriptフレームワーク
• 低機能な分シンプル。AngularJSなどと比べると学習コストが低い
• アイテム購入画面をシングルページで作成するために採用
© Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06
アイテム購入画面
14
• checkout.html
• view.js
• validator.js
アイテム選択 配送先入力 支払い方法選択 入力確認▶ ▶ ▶
… Backbone.jsのView(普通は画面ごとに分けて作ります)
… Semantic-UIの入力チェック定義
© Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06
  レイアウト部分
Semantic-UI+Backbone.jsで作る購入画面
15
checkout.html (レイアウト部分)
  ← アイテム選択画面
 ← 配送先入力画面
   ←支払い方法選択画面
← 入力確認画面
checkout.html (配送先入力画面)
最初はシンプルだったのでこの方式でも良かったが、
色々と修正しているうちに1000行ほどのHTMLになってしまった。。
© Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06
Semantic-UI+Backbone.jsで作る購入画面
16
ビューの切り替え処理
view.js (ビュー定義) view.js (next_pageイベント)
class=nextのクリックイベント
© Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06
Semantic-UI+Backbone.jsで作る購入画面
17
入力チェック
http://semantic-ui.com/behaviors/form.html
validator.js (入力チェック定義)
© Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06
WIZYのバックエンド
18
© Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06
WIZYを支える技術(バックエンド)
19
© Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06
WIZYのバックエンド
20
• Swagger
• 言語に依存しないAPI仕様記述のための書式
• API仕様からAPIドキュメントを生成できる
• 言語ごとのクライアントを生成することも可能
• Redis
• APIレスポンスのキャッシュ
• DBの負荷軽減/パフォーマンス向上には欠かせない存在
• 安定したパフォーマンスを出すための実装も必要(後述)
© Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06
WIZYのバックエンド
Swagger
21
© Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06
swagger-codegen
22
YAMLで仕様を管理。YAMLから生成
https://github.com/swagger-api/swagger-codegen
© Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06
Swaggerを導入するメリット
23
複数の言語にも対応しているのでAPIとクライアントを綺麗に分離できる
APIドキュメントとソースコードの同期が自動的に保たれる
APIの実装APIの仕様クライアントの実装
© Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06
WIZYのバックエンド
Redis
24
© Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 25
WIZYでは更新がほとんど無く参照の割合が非常に高いため
APIのレスポンスをRedisにキャッシュしています
APIの実装APIの仕様クライアントの実装
キャッシュ実装
© Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06
キャッシュ実装
26
• 有効期限を設定してキャッシュする場合
キャッシュがある場合はキャッシュを返す
キャッシュにない場合はDBから取得してキャッシュに保存する
APIリクエスト
キャッシュを更新
有効期限
時間の流れ
この期間にアクセスが集中すると
パフォーマンスが低下してしまう
© Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06
キャッシュ実装
27
• この問題に対応するキャッシュの使い方
キャッシュの更新は最低1人が行えば良いので
誰かがDBを見に行っている間は古い情報を返しておく
APIリクエスト
キャッシュを更新
有効期限
時間の流れ
キャッシュ更新中は古いデータを返す
フラグ
データ
次来た人が更新しに来ないよう
フラグを立ててから更新
© Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06
WIZYのインフラ
28
© Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06
WIZYを支える技術(インフラ)
29
© Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06
WIZYのインフラ
30
• docker
• 仮想化技術/アプリケーションをイメージで配布できる
• 画面のテスト/開発環境/デモ環境として利用
• EC2よりも起動が早いので今後は本番サービスでも検討
• Packer
• AMI(Amazon Machine Image)の作成に利用
• 各種ミドルウェアのインストールや設定の変更を自動化
• EC2の起動 > AMI作成 > EC2破棄の手順を自動で行える
© Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06
開発〜リリースの流れ
31
wizy.jp
ステージ環境
検証環境
AWS開発環境 AWS検証環境 AWS本番環境
develop release master
© Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06
開発〜リリースの流れ
32
wizy.jp
ステージ環境
検証環境
AWS開発環境 AWS検証環境 AWS本番環境
develop release master
ソースコードをpush
UnitTestが通ったら
dockerイメージ作成
作成したイメージを
立ち上げてUIテスト
開発環境
結果を通知
capybara
dockerイメージ
dockerコンテナ
© Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06
開発〜リリースの流れ
33
wizy.jp
ステージ環境
検証環境
AWS開発環境 AWS検証環境 AWS本番環境
develop release master
Packerのリポジトリ
Packerが自動でEC2
を起動しAMIを作成
作成したAMIから
EC2を立ち上げる
検証環境
Python用AMI
Web/APIサーバ
構成管理のリポジトリ
© Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06
開発〜リリースの流れ
34
wizy.jp
ステージ環境
検証環境
AWS開発環境 AWS検証環境 AWS本番環境
develop release master
v1.0
本番環境(1/5)
本番環境ELB
wizy.jp
Web/APIサーバ
CloudFormation
© Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06
開発〜リリースの流れ
35
wizy.jp
ステージ環境
検証環境
AWS開発環境 AWS検証環境 AWS本番環境
develop release master
v1.0
本番環境(2/5)
本番環境ELB
wizy.jp
Web/APIサーバ
v1.1
ステージ環境ELBWeb/APIサーバ
CloudFormation
© Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06
開発〜リリースの流れ
36
wizy.jp
ステージ環境
検証環境
AWS開発環境 AWS検証環境 AWS本番環境
develop release master
v1.0
本番環境(3/5)
本番環境ELB
wizy.jp
Web/APIサーバ
v1.1
ステージ環境ELBWeb/APIサーバ
CloudFormation
© Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06
開発〜リリースの流れ
37
wizy.jp
ステージ環境
検証環境
AWS開発環境 AWS検証環境 AWS本番環境
develop release master
v1.0
本番環境(4/5)
本番環境ELB
wizy.jp
Web/APIサーバ
v1.1
ステージ環境ELBWeb/APIサーバ
CloudFormation
© Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06
開発〜リリースの流れ
38
wizy.jp
ステージ環境
検証環境
AWS開発環境 AWS検証環境 AWS本番環境
develop release master本番環境(5/5)
本番環境ELB
wizy.jp
v1.1 Web/APIサーバ
CloudFormation
© Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06
WIZY初期開発を振り返って
39
• Semantic-UIの入力チェック機能は便利だが万能ではないので注意
• Swaggerの導入でAPIの仕様管理がしやすくて良かった
• キャッシュの実装は最初からそこまでいらなかったかも
今後について
• 環境立ち上げ/切り替えが手作業なので慣れたら自動化したい
• dockerを検証/本番環境でも利用したい
© Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 40
これからもWIZYを宜しくお願いします!
ご静聴ありがとうございました!

More Related Content

What's hot

Amazon SageMaker の紹介 + デモ
Amazon SageMaker の紹介 + デモ Amazon SageMaker の紹介 + デモ
Amazon SageMaker の紹介 + デモ recotech
 
Global Azure Bootcamp 2019@Tokyo資料【ExpressRoute構築でハメられた】
Global Azure Bootcamp 2019@Tokyo資料【ExpressRoute構築でハメられた】Global Azure Bootcamp 2019@Tokyo資料【ExpressRoute構築でハメられた】
Global Azure Bootcamp 2019@Tokyo資料【ExpressRoute構築でハメられた】Dai Iwai
 
Swaggerを利用した新規サービス開発
Swaggerを利用した新規サービス開発Swaggerを利用した新規サービス開発
Swaggerを利用した新規サービス開発recotech
 
Amazon Kinesis Streams デモ
Amazon Kinesis Streams デモAmazon Kinesis Streams デモ
Amazon Kinesis Streams デモrecotech
 
Oracle も Serverless サービスやっています
Oracle も Serverless サービスやっていますOracle も Serverless サービスやっています
Oracle も Serverless サービスやっていますSuguruSugiyama
 
rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th
rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41thrablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th
rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41thKoichiro Sumi
 
プロトタイプとMVPの開発上のギャップの大きさ。リンスタ関ヶ原 東軍先鋒 #devlove
プロトタイプとMVPの開発上のギャップの大きさ。リンスタ関ヶ原 東軍先鋒 #devloveプロトタイプとMVPの開発上のギャップの大きさ。リンスタ関ヶ原 東軍先鋒 #devlove
プロトタイプとMVPの開発上のギャップの大きさ。リンスタ関ヶ原 東軍先鋒 #devloveKoichiro Sumi
 
【CTO Night&Day 2018】CTOとしてエンジニアに対して責任を持ち続けること
【CTO Night&Day 2018】CTOとしてエンジニアに対して責任を持ち続けること【CTO Night&Day 2018】CTOとしてエンジニアに対して責任を持ち続けること
【CTO Night&Day 2018】CTOとしてエンジニアに対して責任を持ち続けることLIFULL Co., Ltd.
 
管理画面の作り方ディスカス 新宿.rb 36th #shinjukurb
管理画面の作り方ディスカス 新宿.rb 36th #shinjukurb管理画面の作り方ディスカス 新宿.rb 36th #shinjukurb
管理画面の作り方ディスカス 新宿.rb 36th #shinjukurbKoichiro Sumi
 
NAPALMで作るネットワークオペレーション自動化への道のり
NAPALMで作るネットワークオペレーション自動化への道のりNAPALMで作るネットワークオペレーション自動化への道のり
NAPALMで作るネットワークオペレーション自動化への道のりToshiya Mabuchi
 
JAWS DAYS 2017直前! AWS総復習
JAWS DAYS 2017直前! AWS総復習JAWS DAYS 2017直前! AWS総復習
JAWS DAYS 2017直前! AWS総復習Masanori Hayashi
 
LIFULL HOME'Sにおけるサイトの高速化と今後の対応
LIFULL HOME'Sにおけるサイトの高速化と今後の対応LIFULL HOME'Sにおけるサイトの高速化と今後の対応
LIFULL HOME'Sにおけるサイトの高速化と今後の対応LIFULL Co., Ltd.
 
25 + 5分で開発速度を上げる時間管理術!ポモドーロテクニックのご紹介
25 + 5分で開発速度を上げる時間管理術!ポモドーロテクニックのご紹介25 + 5分で開発速度を上げる時間管理術!ポモドーロテクニックのご紹介
25 + 5分で開発速度を上げる時間管理術!ポモドーロテクニックのご紹介KazukiHirayama
 
【 ヒカ☆ラボ 】LIFULL Home's androidアプリの開発の裏側について
【 ヒカ☆ラボ 】LIFULL Home's androidアプリの開発の裏側について【 ヒカ☆ラボ 】LIFULL Home's androidアプリの開発の裏側について
【 ヒカ☆ラボ 】LIFULL Home's androidアプリの開発の裏側についてLIFULL Co., Ltd.
 
【ITpro EXPO 2014】hinemos を活用した oss ミドルウェアの稼働分析ソリューションのご紹介
【ITpro EXPO 2014】hinemos を活用した oss ミドルウェアの稼働分析ソリューションのご紹介【ITpro EXPO 2014】hinemos を活用した oss ミドルウェアの稼働分析ソリューションのご紹介
【ITpro EXPO 2014】hinemos を活用した oss ミドルウェアの稼働分析ソリューションのご紹介Hinemos
 
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介gree_tech
 
エンジニア 新年の抱負 超Lt会 vol_5_平山
エンジニア 新年の抱負 超Lt会 vol_5_平山エンジニア 新年の抱負 超Lt会 vol_5_平山
エンジニア 新年の抱負 超Lt会 vol_5_平山KazukiHirayama
 

What's hot (20)

Swift losf
Swift losfSwift losf
Swift losf
 
Amazon SageMaker の紹介 + デモ
Amazon SageMaker の紹介 + デモ Amazon SageMaker の紹介 + デモ
Amazon SageMaker の紹介 + デモ
 
Global Azure Bootcamp 2019@Tokyo資料【ExpressRoute構築でハメられた】
Global Azure Bootcamp 2019@Tokyo資料【ExpressRoute構築でハメられた】Global Azure Bootcamp 2019@Tokyo資料【ExpressRoute構築でハメられた】
Global Azure Bootcamp 2019@Tokyo資料【ExpressRoute構築でハメられた】
 
Swaggerを利用した新規サービス開発
Swaggerを利用した新規サービス開発Swaggerを利用した新規サービス開発
Swaggerを利用した新規サービス開発
 
Amazon Kinesis Streams デモ
Amazon Kinesis Streams デモAmazon Kinesis Streams デモ
Amazon Kinesis Streams デモ
 
Oracle も Serverless サービスやっています
Oracle も Serverless サービスやっていますOracle も Serverless サービスやっています
Oracle も Serverless サービスやっています
 
rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th
rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41thrablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th
rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th
 
プロトタイプとMVPの開発上のギャップの大きさ。リンスタ関ヶ原 東軍先鋒 #devlove
プロトタイプとMVPの開発上のギャップの大きさ。リンスタ関ヶ原 東軍先鋒 #devloveプロトタイプとMVPの開発上のギャップの大きさ。リンスタ関ヶ原 東軍先鋒 #devlove
プロトタイプとMVPの開発上のギャップの大きさ。リンスタ関ヶ原 東軍先鋒 #devlove
 
【CTO Night&Day 2018】CTOとしてエンジニアに対して責任を持ち続けること
【CTO Night&Day 2018】CTOとしてエンジニアに対して責任を持ち続けること【CTO Night&Day 2018】CTOとしてエンジニアに対して責任を持ち続けること
【CTO Night&Day 2018】CTOとしてエンジニアに対して責任を持ち続けること
 
管理画面の作り方ディスカス 新宿.rb 36th #shinjukurb
管理画面の作り方ディスカス 新宿.rb 36th #shinjukurb管理画面の作り方ディスカス 新宿.rb 36th #shinjukurb
管理画面の作り方ディスカス 新宿.rb 36th #shinjukurb
 
NAPALMで作るネットワークオペレーション自動化への道のり
NAPALMで作るネットワークオペレーション自動化への道のりNAPALMで作るネットワークオペレーション自動化への道のり
NAPALMで作るネットワークオペレーション自動化への道のり
 
Feedlyのススメ
FeedlyのススメFeedlyのススメ
Feedlyのススメ
 
JAWS DAYS 2017直前! AWS総復習
JAWS DAYS 2017直前! AWS総復習JAWS DAYS 2017直前! AWS総復習
JAWS DAYS 2017直前! AWS総復習
 
LIFULL HOME'Sにおけるサイトの高速化と今後の対応
LIFULL HOME'Sにおけるサイトの高速化と今後の対応LIFULL HOME'Sにおけるサイトの高速化と今後の対応
LIFULL HOME'Sにおけるサイトの高速化と今後の対応
 
25 + 5分で開発速度を上げる時間管理術!ポモドーロテクニックのご紹介
25 + 5分で開発速度を上げる時間管理術!ポモドーロテクニックのご紹介25 + 5分で開発速度を上げる時間管理術!ポモドーロテクニックのご紹介
25 + 5分で開発速度を上げる時間管理術!ポモドーロテクニックのご紹介
 
【 ヒカ☆ラボ 】LIFULL Home's androidアプリの開発の裏側について
【 ヒカ☆ラボ 】LIFULL Home's androidアプリの開発の裏側について【 ヒカ☆ラボ 】LIFULL Home's androidアプリの開発の裏側について
【 ヒカ☆ラボ 】LIFULL Home's androidアプリの開発の裏側について
 
【ITpro EXPO 2014】hinemos を活用した oss ミドルウェアの稼働分析ソリューションのご紹介
【ITpro EXPO 2014】hinemos を活用した oss ミドルウェアの稼働分析ソリューションのご紹介【ITpro EXPO 2014】hinemos を活用した oss ミドルウェアの稼働分析ソリューションのご紹介
【ITpro EXPO 2014】hinemos を活用した oss ミドルウェアの稼働分析ソリューションのご紹介
 
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介
 
エンジニア 新年の抱負 超Lt会 vol_5_平山
エンジニア 新年の抱負 超Lt会 vol_5_平山エンジニア 新年の抱負 超Lt会 vol_5_平山
エンジニア 新年の抱負 超Lt会 vol_5_平山
 
Spring I/O 2015 報告
Spring I/O 2015 報告Spring I/O 2015 報告
Spring I/O 2015 報告
 

Viewers also liked

WIZY企画の裏側
WIZY企画の裏側WIZY企画の裏側
WIZY企画の裏側recotech
 
#recotech_AWS移行してみたけどぶっちゃけどうよ。
#recotech_AWS移行してみたけどぶっちゃけどうよ。#recotech_AWS移行してみたけどぶっちゃけどうよ。
#recotech_AWS移行してみたけどぶっちゃけどうよ。recotech
 
Business contest KING 2016 コンテスト概要
Business contest KING 2016 コンテスト概要Business contest KING 2016 コンテスト概要
Business contest KING 2016 コンテスト概要悠人 長島
 
Как увеличить число загрузок приложения? – Анна Ященко, Google
Как увеличить число загрузок приложения? – Анна Ященко, GoogleКак увеличить число загрузок приложения? – Анна Ященко, Google
Как увеличить число загрузок приложения? – Анна Ященко, GoogleProcontent.Ru Magazine
 
Single Parent Homes
Single Parent HomesSingle Parent Homes
Single Parent Homessmartj08
 
Hajj, Pilgrimage
Hajj, PilgrimageHajj, Pilgrimage
Hajj, Pilgrimageguestf8d304
 
Chinwag Insight: Facebook Marketing - John Tawadros - BLiNQ Media - Facebook ...
Chinwag Insight: Facebook Marketing - John Tawadros - BLiNQ Media - Facebook ...Chinwag Insight: Facebook Marketing - John Tawadros - BLiNQ Media - Facebook ...
Chinwag Insight: Facebook Marketing - John Tawadros - BLiNQ Media - Facebook ...Chinwag
 
Keenan Gabby
Keenan GabbyKeenan Gabby
Keenan Gabbyjzeien66
 
Carbon cultures lecture 8 resources
Carbon cultures lecture 8 resourcesCarbon cultures lecture 8 resources
Carbon cultures lecture 8 resourcesStanford University
 
MODULO V
MODULO VMODULO V
MODULO VLizDv
 
The Positive Role that Meetings and Events Can Have on an Organization
The Positive Role that Meetings and Events Can Have on an OrganizationThe Positive Role that Meetings and Events Can Have on an Organization
The Positive Role that Meetings and Events Can Have on an OrganizationEsprit Productions
 
отчет о проведенных работах по благоустройству за 2016 - раменки
отчет о проведенных работах по благоустройству за 2016 - раменкиотчет о проведенных работах по благоустройству за 2016 - раменки
отчет о проведенных работах по благоустройству за 2016 - раменкиОлег Иванов
 
Letters of Recommendation
Letters of RecommendationLetters of Recommendation
Letters of Recommendationjeejman
 

Viewers also liked (20)

WIZY企画の裏側
WIZY企画の裏側WIZY企画の裏側
WIZY企画の裏側
 
#recotech_AWS移行してみたけどぶっちゃけどうよ。
#recotech_AWS移行してみたけどぶっちゃけどうよ。#recotech_AWS移行してみたけどぶっちゃけどうよ。
#recotech_AWS移行してみたけどぶっちゃけどうよ。
 
Business contest KING 2016 コンテスト概要
Business contest KING 2016 コンテスト概要Business contest KING 2016 コンテスト概要
Business contest KING 2016 コンテスト概要
 
Как увеличить число загрузок приложения? – Анна Ященко, Google
Как увеличить число загрузок приложения? – Анна Ященко, GoogleКак увеличить число загрузок приложения? – Анна Ященко, Google
Как увеличить число загрузок приложения? – Анна Ященко, Google
 
Single Parent Homes
Single Parent HomesSingle Parent Homes
Single Parent Homes
 
Salvador Dali
Salvador DaliSalvador Dali
Salvador Dali
 
Hajj, Pilgrimage
Hajj, PilgrimageHajj, Pilgrimage
Hajj, Pilgrimage
 
Chinwag Insight: Facebook Marketing - John Tawadros - BLiNQ Media - Facebook ...
Chinwag Insight: Facebook Marketing - John Tawadros - BLiNQ Media - Facebook ...Chinwag Insight: Facebook Marketing - John Tawadros - BLiNQ Media - Facebook ...
Chinwag Insight: Facebook Marketing - John Tawadros - BLiNQ Media - Facebook ...
 
Keenan Gabby
Keenan GabbyKeenan Gabby
Keenan Gabby
 
Columbia bos 4301
Columbia bos 4301 Columbia bos 4301
Columbia bos 4301
 
S Ta R Chart Amboree
S Ta R Chart   AmboreeS Ta R Chart   Amboree
S Ta R Chart Amboree
 
Carbon cultures lecture 8 resources
Carbon cultures lecture 8 resourcesCarbon cultures lecture 8 resources
Carbon cultures lecture 8 resources
 
MODULO V
MODULO VMODULO V
MODULO V
 
UPDATED CV HSE
UPDATED CV HSEUPDATED CV HSE
UPDATED CV HSE
 
The Positive Role that Meetings and Events Can Have on an Organization
The Positive Role that Meetings and Events Can Have on an OrganizationThe Positive Role that Meetings and Events Can Have on an Organization
The Positive Role that Meetings and Events Can Have on an Organization
 
отчет о проведенных работах по благоустройству за 2016 - раменки
отчет о проведенных работах по благоустройству за 2016 - раменкиотчет о проведенных работах по благоустройству за 2016 - раменки
отчет о проведенных работах по благоустройству за 2016 - раменки
 
Tecnología Educativa
Tecnología EducativaTecnología Educativa
Tecnología Educativa
 
Роман Медведев, Pliq
Роман Медведев, PliqРоман Медведев, Pliq
Роман Медведев, Pliq
 
Politik Inn NYU 2015
Politik Inn NYU 2015Politik Inn NYU 2015
Politik Inn NYU 2015
 
Letters of Recommendation
Letters of RecommendationLetters of Recommendation
Letters of Recommendation
 

Similar to #recotech_WIZY開発の裏側

Activity Plan of API Lab AIZU@AiCT
Activity Plan of API Lab AIZU@AiCTActivity Plan of API Lab AIZU@AiCT
Activity Plan of API Lab AIZU@AiCTMasanobu Takagi
 
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!CData Software Japan
 
WordPress APIで作るモバイルアプリ
WordPress APIで作るモバイルアプリWordPress APIで作るモバイルアプリ
WordPress APIで作るモバイルアプリアシアル株式会社
 
20161111 java one2016-feedback
20161111 java one2016-feedback20161111 java one2016-feedback
20161111 java one2016-feedbackTakashi Ito
 
kintone 連携スマホアプリの開発・配布体験
kintone 連携スマホアプリの開発・配布体験kintone 連携スマホアプリの開発・配布体験
kintone 連携スマホアプリの開発・配布体験アシアル株式会社
 
【A-4】kintone API、JavaScript APIの実力
【A-4】kintone API、JavaScript APIの実力【A-4】kintone API、JavaScript APIの実力
【A-4】kintone API、JavaScript APIの実力Cybozucommunity
 
サーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話しサーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話しAkira Nagata
 
Monacaでつくるハイブリッドアプリ
MonacaでつくるハイブリッドアプリMonacaでつくるハイブリッドアプリ
MonacaでつくるハイブリッドアプリMonaca
 
いまさら聞けない!HTML5超入門
いまさら聞けない!HTML5超入門いまさら聞けない!HTML5超入門
いまさら聞けない!HTML5超入門Monaca
 
【Interop Tokyo 2016】 リコーのサービス基盤を支えるジュニパー
【Interop Tokyo 2016】 リコーのサービス基盤を支えるジュニパー【Interop Tokyo 2016】 リコーのサービス基盤を支えるジュニパー
【Interop Tokyo 2016】 リコーのサービス基盤を支えるジュニパーJuniper Networks (日本)
 
ノンコーディング・超高速のApi 開発・運用基盤「cdata api server」のご紹介
ノンコーディング・超高速のApi 開発・運用基盤「cdata api server」のご紹介ノンコーディング・超高速のApi 開発・運用基盤「cdata api server」のご紹介
ノンコーディング・超高速のApi 開発・運用基盤「cdata api server」のご紹介CData Software Japan
 
[DevSumi2019]Cloud Native アプリケーションに最適!Oracle Cloud Infrastructureの魅力!
[DevSumi2019]Cloud Native アプリケーションに最適!Oracle Cloud Infrastructureの魅力![DevSumi2019]Cloud Native アプリケーションに最適!Oracle Cloud Infrastructureの魅力!
[DevSumi2019]Cloud Native アプリケーションに最適!Oracle Cloud Infrastructureの魅力!オラクルエンジニア通信
 
ハイブリッドアプリ開発最前線から見たHtml5の理想と現実
ハイブリッドアプリ開発最前線から見たHtml5の理想と現実ハイブリッドアプリ開発最前線から見たHtml5の理想と現実
ハイブリッドアプリ開発最前線から見たHtml5の理想と現実Monaca
 
ゆるふわAzure Functions
ゆるふわAzure FunctionsゆるふわAzure Functions
ゆるふわAzure FunctionsKeiji Kamebuchi
 
企画者が押さえておきたいHtml5アプリ開発の要点
企画者が押さえておきたいHtml5アプリ開発の要点企画者が押さえておきたいHtml5アプリ開発の要点
企画者が押さえておきたいHtml5アプリ開発の要点Monaca
 
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座DIVE INTO CODE Corp.
 
2018/7/27 SAP on AWS お客様事例セミナー@大阪(BeeX資料2/2)
2018/7/27  SAP on AWS お客様事例セミナー@大阪(BeeX資料2/2)2018/7/27  SAP on AWS お客様事例セミナー@大阪(BeeX資料2/2)
2018/7/27 SAP on AWS お客様事例セミナー@大阪(BeeX資料2/2)BeeX.inc
 
OSSを利用したプロジェクト管理
OSSを利用したプロジェクト管理OSSを利用したプロジェクト管理
OSSを利用したプロジェクト管理Tadashi Miyazato
 
【HackerWars 】ニフティクラウドmobile backend
【HackerWars 】ニフティクラウドmobile backend【HackerWars 】ニフティクラウドmobile backend
【HackerWars 】ニフティクラウドmobile backend史識 川原
 

Similar to #recotech_WIZY開発の裏側 (20)

Activity Plan of API Lab AIZU@AiCT
Activity Plan of API Lab AIZU@AiCTActivity Plan of API Lab AIZU@AiCT
Activity Plan of API Lab AIZU@AiCT
 
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
Angular でもっとAPIファースト・もっとモダンデザインなWebアプリケーションを作ろう!
 
WordPress APIで作るモバイルアプリ
WordPress APIで作るモバイルアプリWordPress APIで作るモバイルアプリ
WordPress APIで作るモバイルアプリ
 
20161111 java one2016-feedback
20161111 java one2016-feedback20161111 java one2016-feedback
20161111 java one2016-feedback
 
kintone 連携スマホアプリの開発・配布体験
kintone 連携スマホアプリの開発・配布体験kintone 連携スマホアプリの開発・配布体験
kintone 連携スマホアプリの開発・配布体験
 
【A-4】kintone API、JavaScript APIの実力
【A-4】kintone API、JavaScript APIの実力【A-4】kintone API、JavaScript APIの実力
【A-4】kintone API、JavaScript APIの実力
 
サーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話しサーバーレスで ガチ本番運用までやってるお話し
サーバーレスで ガチ本番運用までやってるお話し
 
Monacaでつくるハイブリッドアプリ
MonacaでつくるハイブリッドアプリMonacaでつくるハイブリッドアプリ
Monacaでつくるハイブリッドアプリ
 
いまさら聞けない!HTML5超入門
いまさら聞けない!HTML5超入門いまさら聞けない!HTML5超入門
いまさら聞けない!HTML5超入門
 
【Interop Tokyo 2016】 リコーのサービス基盤を支えるジュニパー
【Interop Tokyo 2016】 リコーのサービス基盤を支えるジュニパー【Interop Tokyo 2016】 リコーのサービス基盤を支えるジュニパー
【Interop Tokyo 2016】 リコーのサービス基盤を支えるジュニパー
 
Bitbucket Pipelinesについて
Bitbucket PipelinesについてBitbucket Pipelinesについて
Bitbucket Pipelinesについて
 
ノンコーディング・超高速のApi 開発・運用基盤「cdata api server」のご紹介
ノンコーディング・超高速のApi 開発・運用基盤「cdata api server」のご紹介ノンコーディング・超高速のApi 開発・運用基盤「cdata api server」のご紹介
ノンコーディング・超高速のApi 開発・運用基盤「cdata api server」のご紹介
 
[DevSumi2019]Cloud Native アプリケーションに最適!Oracle Cloud Infrastructureの魅力!
[DevSumi2019]Cloud Native アプリケーションに最適!Oracle Cloud Infrastructureの魅力![DevSumi2019]Cloud Native アプリケーションに最適!Oracle Cloud Infrastructureの魅力!
[DevSumi2019]Cloud Native アプリケーションに最適!Oracle Cloud Infrastructureの魅力!
 
ハイブリッドアプリ開発最前線から見たHtml5の理想と現実
ハイブリッドアプリ開発最前線から見たHtml5の理想と現実ハイブリッドアプリ開発最前線から見たHtml5の理想と現実
ハイブリッドアプリ開発最前線から見たHtml5の理想と現実
 
ゆるふわAzure Functions
ゆるふわAzure FunctionsゆるふわAzure Functions
ゆるふわAzure Functions
 
企画者が押さえておきたいHtml5アプリ開発の要点
企画者が押さえておきたいHtml5アプリ開発の要点企画者が押さえておきたいHtml5アプリ開発の要点
企画者が押さえておきたいHtml5アプリ開発の要点
 
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
 
2018/7/27 SAP on AWS お客様事例セミナー@大阪(BeeX資料2/2)
2018/7/27  SAP on AWS お客様事例セミナー@大阪(BeeX資料2/2)2018/7/27  SAP on AWS お客様事例セミナー@大阪(BeeX資料2/2)
2018/7/27 SAP on AWS お客様事例セミナー@大阪(BeeX資料2/2)
 
OSSを利用したプロジェクト管理
OSSを利用したプロジェクト管理OSSを利用したプロジェクト管理
OSSを利用したプロジェクト管理
 
【HackerWars 】ニフティクラウドmobile backend
【HackerWars 】ニフティクラウドmobile backend【HackerWars 】ニフティクラウドmobile backend
【HackerWars 】ニフティクラウドmobile backend
 

More from recotech

RecoChoku tech night #09 -reinvent2018報告会- オープニング
RecoChoku tech night #09 -reinvent2018報告会-  オープニングRecoChoku tech night #09 -reinvent2018報告会-  オープニング
RecoChoku tech night #09 -reinvent2018報告会- オープニングrecotech
 
Reco choku tech night #09 -reinvent2018報告会-
Reco choku tech night #09 -reinvent2018報告会-Reco choku tech night #09 -reinvent2018報告会-
Reco choku tech night #09 -reinvent2018報告会-recotech
 
業界あるある Music偏
 業界あるある Music偏 業界あるある Music偏
業界あるある Music偏recotech
 
レコチョク・ラボが考える人工知能
レコチョク・ラボが考える人工知能レコチョク・ラボが考える人工知能
レコチョク・ラボが考える人工知能recotech
 
Oracle racからaurora my sqlへの移行
Oracle racからaurora my sqlへの移行Oracle racからaurora my sqlへの移行
Oracle racからaurora my sqlへの移行recotech
 
レコチョクのサービス群を支えるApiたち
レコチョクのサービス群を支えるApiたちレコチョクのサービス群を支えるApiたち
レコチョクのサービス群を支えるApiたちrecotech
 

More from recotech (6)

RecoChoku tech night #09 -reinvent2018報告会- オープニング
RecoChoku tech night #09 -reinvent2018報告会-  オープニングRecoChoku tech night #09 -reinvent2018報告会-  オープニング
RecoChoku tech night #09 -reinvent2018報告会- オープニング
 
Reco choku tech night #09 -reinvent2018報告会-
Reco choku tech night #09 -reinvent2018報告会-Reco choku tech night #09 -reinvent2018報告会-
Reco choku tech night #09 -reinvent2018報告会-
 
業界あるある Music偏
 業界あるある Music偏 業界あるある Music偏
業界あるある Music偏
 
レコチョク・ラボが考える人工知能
レコチョク・ラボが考える人工知能レコチョク・ラボが考える人工知能
レコチョク・ラボが考える人工知能
 
Oracle racからaurora my sqlへの移行
Oracle racからaurora my sqlへの移行Oracle racからaurora my sqlへの移行
Oracle racからaurora my sqlへの移行
 
レコチョクのサービス群を支えるApiたち
レコチョクのサービス群を支えるApiたちレコチョクのサービス群を支えるApiたち
レコチョクのサービス群を支えるApiたち
 

#recotech_WIZY開発の裏側

  • 1. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 WIZY開発の裏側 Yuto Matsuki
  • 2. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 Index 2 1. WIZYの構成 2. WIZYの裏側 1. フロント 2. バックエンド 3. インフラ 3. まとめ
  • 3. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 WIZYのシステム構成 3
  • 4. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 WIZYのシステム構成 4
  • 5. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 WIZYの裏側 5
  • 6. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 WIZYを支える技術 6
  • 7. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 WIZYのメイン言語 Python 7
  • 8. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 メイン言語にPythonを選択した理由 8 • 環境構築の容易さ(virtualenv/pip) • 環境構築手順がシンプルで面倒くさい事が起きにくい • システム環境を汚さずにインストールできる。不要になれば消すだけ $ python -V Python 2.7.12 $ brew install python3 $ pyvenv-3.5 venv $ source venv/bin/activate $ python -V Python 3.5.2
  • 9. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 メイン言語にPythonを選択した理由 9 • 書きやすい。読みやすい。チーム開発に向いていそう ちょっとしたことがシンプルに書けて嬉しい 括弧の代わりにインデントでブロックを表すことによるメリット • コードが短くなる • 人によって書き方の差が発生しにくい 読みやすいコードを書く文化がある「Readability counts.」 if -1 < item.limit < item_supports: raise Exception(‘在庫切れ’)
  • 10. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 Pythonのバージョンについて 10 AWSのAmazon Linuxは標準で2.7がインストールされているため プロトタイプまではPython2.7で開発していたが この本にPython3系を使うべきと 書いてあったためPython3で書き直しました。 (ほぼ互換性があったためすぐに対応できた)
  • 11. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 WIZYのフロントエンド 11
  • 12. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 WIZYを支える技術(フロントエンド) 12
  • 13. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 WIZYのフロントエンド 13 • Semantic-UI • オープンソースのCSSフレームワーク • 他と比較してHTMLが綺麗に書けるのが特徴 • 見た目だけでなく入力チェックなどの機能も備える • Backbone.js • フロントMVCを実現するJavaScriptフレームワーク • 低機能な分シンプル。AngularJSなどと比べると学習コストが低い • アイテム購入画面をシングルページで作成するために採用
  • 14. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 アイテム購入画面 14 • checkout.html • view.js • validator.js アイテム選択 配送先入力 支払い方法選択 入力確認▶ ▶ ▶ … Backbone.jsのView(普通は画面ごとに分けて作ります) … Semantic-UIの入力チェック定義
  • 15. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06   レイアウト部分 Semantic-UI+Backbone.jsで作る購入画面 15 checkout.html (レイアウト部分)   ← アイテム選択画面  ← 配送先入力画面    ←支払い方法選択画面 ← 入力確認画面 checkout.html (配送先入力画面) 最初はシンプルだったのでこの方式でも良かったが、 色々と修正しているうちに1000行ほどのHTMLになってしまった。。
  • 16. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 Semantic-UI+Backbone.jsで作る購入画面 16 ビューの切り替え処理 view.js (ビュー定義) view.js (next_pageイベント) class=nextのクリックイベント
  • 17. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 Semantic-UI+Backbone.jsで作る購入画面 17 入力チェック http://semantic-ui.com/behaviors/form.html validator.js (入力チェック定義)
  • 18. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 WIZYのバックエンド 18
  • 19. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 WIZYを支える技術(バックエンド) 19
  • 20. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 WIZYのバックエンド 20 • Swagger • 言語に依存しないAPI仕様記述のための書式 • API仕様からAPIドキュメントを生成できる • 言語ごとのクライアントを生成することも可能 • Redis • APIレスポンスのキャッシュ • DBの負荷軽減/パフォーマンス向上には欠かせない存在 • 安定したパフォーマンスを出すための実装も必要(後述)
  • 21. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 WIZYのバックエンド Swagger 21
  • 22. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 swagger-codegen 22 YAMLで仕様を管理。YAMLから生成 https://github.com/swagger-api/swagger-codegen
  • 23. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 Swaggerを導入するメリット 23 複数の言語にも対応しているのでAPIとクライアントを綺麗に分離できる APIドキュメントとソースコードの同期が自動的に保たれる APIの実装APIの仕様クライアントの実装
  • 24. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 WIZYのバックエンド Redis 24
  • 25. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 25 WIZYでは更新がほとんど無く参照の割合が非常に高いため APIのレスポンスをRedisにキャッシュしています APIの実装APIの仕様クライアントの実装 キャッシュ実装
  • 26. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 キャッシュ実装 26 • 有効期限を設定してキャッシュする場合 キャッシュがある場合はキャッシュを返す キャッシュにない場合はDBから取得してキャッシュに保存する APIリクエスト キャッシュを更新 有効期限 時間の流れ この期間にアクセスが集中すると パフォーマンスが低下してしまう
  • 27. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 キャッシュ実装 27 • この問題に対応するキャッシュの使い方 キャッシュの更新は最低1人が行えば良いので 誰かがDBを見に行っている間は古い情報を返しておく APIリクエスト キャッシュを更新 有効期限 時間の流れ キャッシュ更新中は古いデータを返す フラグ データ 次来た人が更新しに来ないよう フラグを立ててから更新
  • 28. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 WIZYのインフラ 28
  • 29. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 WIZYを支える技術(インフラ) 29
  • 30. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 WIZYのインフラ 30 • docker • 仮想化技術/アプリケーションをイメージで配布できる • 画面のテスト/開発環境/デモ環境として利用 • EC2よりも起動が早いので今後は本番サービスでも検討 • Packer • AMI(Amazon Machine Image)の作成に利用 • 各種ミドルウェアのインストールや設定の変更を自動化 • EC2の起動 > AMI作成 > EC2破棄の手順を自動で行える
  • 31. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 開発〜リリースの流れ 31 wizy.jp ステージ環境 検証環境 AWS開発環境 AWS検証環境 AWS本番環境 develop release master
  • 32. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 開発〜リリースの流れ 32 wizy.jp ステージ環境 検証環境 AWS開発環境 AWS検証環境 AWS本番環境 develop release master ソースコードをpush UnitTestが通ったら dockerイメージ作成 作成したイメージを 立ち上げてUIテスト 開発環境 結果を通知 capybara dockerイメージ dockerコンテナ
  • 33. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 開発〜リリースの流れ 33 wizy.jp ステージ環境 検証環境 AWS開発環境 AWS検証環境 AWS本番環境 develop release master Packerのリポジトリ Packerが自動でEC2 を起動しAMIを作成 作成したAMIから EC2を立ち上げる 検証環境 Python用AMI Web/APIサーバ 構成管理のリポジトリ
  • 34. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 開発〜リリースの流れ 34 wizy.jp ステージ環境 検証環境 AWS開発環境 AWS検証環境 AWS本番環境 develop release master v1.0 本番環境(1/5) 本番環境ELB wizy.jp Web/APIサーバ CloudFormation
  • 35. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 開発〜リリースの流れ 35 wizy.jp ステージ環境 検証環境 AWS開発環境 AWS検証環境 AWS本番環境 develop release master v1.0 本番環境(2/5) 本番環境ELB wizy.jp Web/APIサーバ v1.1 ステージ環境ELBWeb/APIサーバ CloudFormation
  • 36. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 開発〜リリースの流れ 36 wizy.jp ステージ環境 検証環境 AWS開発環境 AWS検証環境 AWS本番環境 develop release master v1.0 本番環境(3/5) 本番環境ELB wizy.jp Web/APIサーバ v1.1 ステージ環境ELBWeb/APIサーバ CloudFormation
  • 37. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 開発〜リリースの流れ 37 wizy.jp ステージ環境 検証環境 AWS開発環境 AWS検証環境 AWS本番環境 develop release master v1.0 本番環境(4/5) 本番環境ELB wizy.jp Web/APIサーバ v1.1 ステージ環境ELBWeb/APIサーバ CloudFormation
  • 38. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 開発〜リリースの流れ 38 wizy.jp ステージ環境 検証環境 AWS開発環境 AWS検証環境 AWS本番環境 develop release master本番環境(5/5) 本番環境ELB wizy.jp v1.1 Web/APIサーバ CloudFormation
  • 39. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 WIZY初期開発を振り返って 39 • Semantic-UIの入力チェック機能は便利だが万能ではないので注意 • Swaggerの導入でAPIの仕様管理がしやすくて良かった • キャッシュの実装は最初からそこまでいらなかったかも 今後について • 環境立ち上げ/切り替えが手作業なので慣れたら自動化したい • dockerを検証/本番環境でも利用したい
  • 40. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 40 これからもWIZYを宜しくお願いします! ご静聴ありがとうございました!