SlideShare une entreprise Scribd logo
1  sur  43
Télécharger pour lire hors ligne
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
2017/02/20
決済金融から始める
データドリブン
カンパニー
江藤 徳宏
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 2
自己紹介
• 担当サービス
• Yahoo! ウォレット
• 本人確認
• 役割
• 運用エンジニア & 保守開発
• 学生時代の専門
• 数理科学(非線形偏微分方程式)
• 趣味
• ランニング(ラン歴3年、東京マラソン2015完走)
• スマホゲーム(パズドラ、PokemonGO)
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 3
Yahoo! ウォレット
働いているところ
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 4
データドリブン企業
ここ1年で、「ネット企業」から「データドリブン企業」へ!
ほとんどのサービスで、
データを利活用できるようにする
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 5
データドリブンへの路
データ利活用しよう!
そのためのマインドマップを作成しました
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 6
データドリブンへの路
CI/CD
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 7
CI/CD
• テスト (commit build)
• コミットされたソースがテストされる
CI(Continuous Integration)
↑これらを自動的に行う!
• パッケージング (component build)
• レビューが完了したソースはメインブランチにマージ
される
• メインブランチへの変更をテストする
• テスト成功時のみ、パッケージを作成する
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 8
CI/CD
• アセンブリ(assembly build)
• パッケージ群の構成リストを作成する
CD(Continuous Delivery)
↑これらを自動的に行う!
• デプロイ(deploy build)
• アセンブリで作成された構成リストにてサーバへのリリー
スを実施
• まっさらなサーバであれば、サービスが利用できる状態に
持っていく
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 9
CI/CD
• ソフト面(CI)
• テストがない
• テストなど必要ないと思っている
• ハード面(CD)
• 構成管理ができていない
• /etc/hostsは?
• routeは?
• LANGは?
• ディレクトリを手動で作っている
• リリース方法が原始的(手置き)
CI/CD 阻害要因
レガシーシステム
(技術的負債)
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 10
今回のLTの目的
• 既存(古い)システム
• レガシーコードで書かれているものが多い
• テストがないので、改修が困難
• レガシーシステムと戦う方法
• テストのすすめ
• 構成管理のすすめ
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
CI
テストのすすめ
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 12
テストしづらいコード
モック化したい箇所が
ベタ書きだったら・・・
※実際の現場は、
こんなものではない
ですよ。。
この部分だけ
ごまかしたい
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 13
レガシーコードを斬る!
よく使うモッキングフレームワークその1
Phake
https://github.com/mlively/Phake
% cat composer.json
{
"require-dev": {
"phake/phake": "@stable”
}
}
% composer install
★導入方法
特徴
• MockObjectと似ている
• 1メソッドだけモックにすることが可能
• コールバック関数への置換
• 呼び出し検証機能
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 14
レガシーコードを斬る!
ソース
まるごと関数でラップする
protected以上とする
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 15
レガシーコードを斬る!
テスト
テスト対象クラスをpartialMockメソッドでインスタンス化
どの関数がどの引数で呼ばれたときに何がしを返す
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 16
レガシーコードを斬る!
よく使うモッキングフレームワークその2
AspectMock
https://github.com/Codeception/AspectMock
% cat composer.json
{
"require-dev": {
"codeception/aspect-mock": "*"
}
}
% composer install
★導入方法
特徴
• グローバル関数をドラスティックに変更
• コールバック関数への置換
• 呼び出し検証機能
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 17
レガシーコードを斬る!
ソース
名前空間を指定する
この関数だけモック化
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 18
レガシーコードを斬る!
テスト
名前空間、関数名、返却値を指定するだけ。
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 19
テストのまとめ
• コミットされたソースについては、全部グリーンになること
• 何をテストしたいのか、観点を明確にする
• MockObjectでテストできないようなコードは書かない
(できればTDD実践!)
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 20
テストのまとめ
レガシーコードに出会ったら・・・・・・
• 封印する
• フルスクラッチ
• 手を加えるならば必ずテストを書く
• in/outテスト
• 適切なモッキングフレームワークを使う
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
CD
構成管理のすすめ
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 22
CD
構成管理
• システムの構成要素を一元管理する
• ネットワーク設定
• アカウント、sudo権限
• hosts
• syslog
• パッケージ群(独自、rpm) etc…
管理するだけでなく、簡単に適用したい
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 23
Chef
• システムのあるべき姿を「リソース」という単位で管理
Yahoo!ウォレットでは、Chefを導入中
• 「リソース」を束ねて、「レシピ」にまとめる
• 「レシピ」を適用する機能群を「ロール」にまとめる
• デプロイ先のサーバ群を「環境」にまとめ、ロールを紐づける
• デプロイを実行する
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 24
Chef
Web AP DB
ATS
Apache
PHP
Web APL
ATS
Apache
Jetty
Logic APL
MySQL Server
ATS = Apache Traffic Server
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 25
Chef(環境とロール)
web-dev db-dev開発環境
本番環境 web-prod ap-prod db-prod
web-role ap-role db-role
ap-dev
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 26
Chef(レシピ)
web-recipe ap-recipe db-recipe
ATS install
Apache install
PHP install Jetty install
Web APL install Logic APL install MySQL install
レシピは再利用できるように、細かく分けるのがコツ
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 27
Chef(ロールとレシピ)
web-dev ap-dev db-dev
web-prod ap-prod db-prod
web-role ap-role db-role
web-recipe ap-recipe db-
recipe
run_list run_list run_list
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 28
Chef(CI + デプロイ)
web-dev
web-role
web-recipe
PC
Chef-client
Chef-server
git push
Chefdk
git.corp
web-dev-env
web-dev
CI-tool
web hook
Upload recipe
knife ssh
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 29
Chef(課題)
web01
web-role
web-recipe
Chef-server
web-prod-env
web01
LB
web04web02 web03
Internet
CI-tool
web02
web03 web04
web-prod-envへリリース!
環境に紐づく全ノード取得
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 30
Chef(課題)
web01
LB
web04web02 web03
Internet
CI-tool
サービスアウト&リリース
なんらかの理由でデプロイ失敗。。
web-role
web-recipe
Chef-server
web-prod-env
web01 web02
web03 web04
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 31
Chef(課題)
web01
LB
web04web02 web03
Internet
CI-tool
サービスアウト&リリース
web-role
web-recipe
Chef-server
web-prod-env
web01 web02
web03 web04
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 32
Chef(課題)
web01
LB
web04web02 web03
Internet
CI-tool
サービスアウト&リリース
web-role
web-recipe
Chef-server
web-prod-env
web01 web02
web03 web04
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 33
Chef(課題)
web01
LB
web04web02 web03
Internet
CI-tool
サービスアウト&リリース
web-role
web-recipe
Chef-server
web-prod-env
web01 web02
web03 web04
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 34
Chef(課題)
web01
LB
web04web02 web03
Internet
CI-tool
見事に全滅
web-role
web-recipe
Chef-server
web-prod-env
web01 web02
web03 web04
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 35
Chef(課題解決)
web01
web-role
web-recipe
Chef-server
LB
web04web02 web03
Internet
CI-tool
web03 web04
前半の環境に紐づく全ノード取得 web-prod-env-1
web-prod-env-2
web01 web02
前半だけリリース!
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 36
Chef(課題解決)
web01
LB
web04web02 web03
Internet
CI-tool
サービスアウト&リリース
環境を分けよう! web-role
web-recipe
Chef-server
web03 web04
web-prod-env-1
web-prod-env-2
web01 web02
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 37
Chef(課題解決)
この件についてはissueが上がっているので、
きっと近いうちに修正されるはず!
https://github.com/chef/chef/issues/5399
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 38
Chef(cookbook)
Rubyとリソースの組み合わせ
レシピ/recipes
リソース1 リソース2
リソース3 リソース4
材料1
材料集/files
リリースする資材
テンプレート1
材料2
これらを総称して、cookbookと呼ぶ
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 39
Chef(ATSを入れるレシピ)
%w(pkgconfig libtool gcc make openssl tcl pcre libcap
flex hwloc lua ncurses curl).each do |pkg|
yum_package pkg do
action :install
end
end
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 40
Chef(ATSを入れるレシピ)
remote_file '/tmp/master.zip' do
source 'https://github.com/apache/trafficserver/archive/master.zip'
mode '0444'
end
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 41
Chef(ATSを入れるレシピ)
execute 'expand ATS' do
command <<-EOF
cd /tmp/; unzip master.zip
cd trafficserver-master; autoreconf -if
./configure --prefix=/opt/ats
make; make check; make install
EOF
end
Install_ats.rb
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 42
今後のロードマップ
• eコマース事業拡大に伴い、ウォレットへの需要は高まる
• 売り場での決済時アクセスが増える
• パーソナライズのための情報提供を安全に完全に行う
• プロダクトの品質を、高カバレッジな自動テストで担保
• 実機から仮想環境へ。ペットから家畜への移行が必要
• より正確で迅速なデプロイ作業をChefで実現
Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved.
情報技術で
人々のマネーライフの課題を解決する
決済金融カンパニー
43

Contenu connexe

Tendances

行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋
行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋
行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋Yahoo!デベロッパーネットワーク
 
スポーツナビアプリ スモールチームでのアプリ強化の進め方 #yjcamp
スポーツナビアプリ スモールチームでのアプリ強化の進め方 #yjcampスポーツナビアプリ スモールチームでのアプリ強化の進め方 #yjcamp
スポーツナビアプリ スモールチームでのアプリ強化の進め方 #yjcampYahoo!デベロッパーネットワーク
 
ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4
ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4
ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4Yahoo!デベロッパーネットワーク
 
ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術
ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術
ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術Yahoo!デベロッパーネットワーク
 
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていることYahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていることYahoo!デベロッパーネットワーク
 
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①Yahoo!デベロッパーネットワーク
 
決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニー決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニーTokuhiro Eto
 
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜gree_tech
 
Yahoo! JAPANが持つデータ分析ソリューションの紹介 #yjdsnight
Yahoo! JAPANが持つデータ分析ソリューションの紹介 #yjdsnightYahoo! JAPANが持つデータ分析ソリューションの紹介 #yjdsnight
Yahoo! JAPANが持つデータ分析ソリューションの紹介 #yjdsnightYahoo!デベロッパーネットワーク
 

Tendances (20)

Prestoクエリログの保存/分析機能の構築 #yjdsnight
Prestoクエリログの保存/分析機能の構築 #yjdsnightPrestoクエリログの保存/分析機能の構築 #yjdsnight
Prestoクエリログの保存/分析機能の構築 #yjdsnight
 
行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋
行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋
行列ができるECサイトの悩み~ショッピングや決済の技術的問題と処方箋
 
市場で勝ち続けるための品質とテストの技術①
市場で勝ち続けるための品質とテストの技術①市場で勝ち続けるための品質とテストの技術①
市場で勝ち続けるための品質とテストの技術①
 
私たち企業がアクセシビリティに取り組む理由 #accfes
私たち企業がアクセシビリティに取り組む理由 #accfes私たち企業がアクセシビリティに取り組む理由 #accfes
私たち企業がアクセシビリティに取り組む理由 #accfes
 
タブブラウザSDKを作った話 #yjcamp
タブブラウザSDKを作った話 #yjcampタブブラウザSDKを作った話 #yjcamp
タブブラウザSDKを作った話 #yjcamp
 
スポーツナビアプリ スモールチームでのアプリ強化の進め方 #yjcamp
スポーツナビアプリ スモールチームでのアプリ強化の進め方 #yjcampスポーツナビアプリ スモールチームでのアプリ強化の進め方 #yjcamp
スポーツナビアプリ スモールチームでのアプリ強化の進め方 #yjcamp
 
ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4
ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4
ヤフーの広告レポートシステムをSpring Cloud Stream化するまで #jjug_ccc #ccc_a4
 
YJTC18 A-1 大規模サーバの戦略
YJTC18 A-1 大規模サーバの戦略YJTC18 A-1 大規模サーバの戦略
YJTC18 A-1 大規模サーバの戦略
 
Presto in Yahoo! JAPAN #yjdsnight
Presto in Yahoo! JAPAN #yjdsnightPresto in Yahoo! JAPAN #yjdsnight
Presto in Yahoo! JAPAN #yjdsnight
 
セキュリティ教育とUX ~結ばれていた赤い糸~
セキュリティ教育とUX ~結ばれていた赤い糸~セキュリティ教育とUX ~結ばれていた赤い糸~
セキュリティ教育とUX ~結ばれていた赤い糸~
 
絶対にタダでは転ばない広告エンジニア #yjmu
絶対にタダでは転ばない広告エンジニア #yjmu絶対にタダでは転ばない広告エンジニア #yjmu
絶対にタダでは転ばない広告エンジニア #yjmu
 
ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術
ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術
ヤフオク!の快適なカスタマー体験を支えるモバイルアプリのライブアップデート技術
 
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていることYahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
Yahoo!ブラウザーアプリのプロダクトマネージャーが考えていること
 
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①
 
開発とテストが一体となったソフトウェア開発
開発とテストが一体となったソフトウェア開発開発とテストが一体となったソフトウェア開発
開発とテストが一体となったソフトウェア開発
 
決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニー決済金融から始めるデータドリブンカンパニー
決済金融から始めるデータドリブンカンパニー
 
animation_prototype_campfire_design
animation_prototype_campfire_designanimation_prototype_campfire_design
animation_prototype_campfire_design
 
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
 
Yahoo! JAPANが持つデータ分析ソリューションの紹介 #yjdsnight
Yahoo! JAPANが持つデータ分析ソリューションの紹介 #yjdsnightYahoo! JAPANが持つデータ分析ソリューションの紹介 #yjdsnight
Yahoo! JAPANが持つデータ分析ソリューションの紹介 #yjdsnight
 
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)LT⑦
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)LT⑦Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)LT⑦
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)LT⑦
 

Similaire à 決済金融から始めるデータドリブンカンパニー #yjmu

Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52Yahoo!デベロッパーネットワーク
 
Datadog monitoring with HashiCorp
Datadog monitoring with HashiCorpDatadog monitoring with HashiCorp
Datadog monitoring with HashiCorpMasatomo Ito
 
Voicepic@FukuiMASeminar
Voicepic@FukuiMASeminarVoicepic@FukuiMASeminar
Voicepic@FukuiMASeminarManabu Shimobe
 
Datadog monitoring with HashiCorp stack
Datadog monitoring with HashiCorp stackDatadog monitoring with HashiCorp stack
Datadog monitoring with HashiCorp stackMasatomo Ito
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップKoichiro Sumi
 
スタートアップ向け!1人日でできるサービスの高速化方法と成果
スタートアップ向け!1人日でできるサービスの高速化方法と成果スタートアップ向け!1人日でできるサービスの高速化方法と成果
スタートアップ向け!1人日でできるサービスの高速化方法と成果Koichiro Sumi
 
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版DIVE INTO CODE Corp.
 
IBM Blluemix を Pepper とつないでみよう
IBM Blluemix を Pepper とつないでみようIBM Blluemix を Pepper とつないでみよう
IBM Blluemix を Pepper とつないでみようTakuji Kawata
 
Effective web performance tuning for smartphone
Effective web performance tuning for smartphoneEffective web performance tuning for smartphone
Effective web performance tuning for smartphonedena_study
 
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座DIVE INTO CODE Corp.
 
Wndows 10 Fall Creators Update Insider Previewから見たアップデート内容
Wndows 10 Fall Creators Update Insider Previewから見たアップデート内容Wndows 10 Fall Creators Update Insider Previewから見たアップデート内容
Wndows 10 Fall Creators Update Insider Previewから見たアップデート内容Tomokazu Kizawa
 
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?Developers Summit
 
20170626 さくらインターネット Stripe Magento
20170626 さくらインターネット Stripe Magento20170626 さくらインターネット Stripe Magento
20170626 さくらインターネット Stripe MagentoHirokazu Nishi
 
ヤフーのロギングSDKの挑戦〜データドリブン企業を目指して〜 #yjdsnight
ヤフーのロギングSDKの挑戦〜データドリブン企業を目指して〜 #yjdsnightヤフーのロギングSDKの挑戦〜データドリブン企業を目指して〜 #yjdsnight
ヤフーのロギングSDKの挑戦〜データドリブン企業を目指して〜 #yjdsnightYahoo!デベロッパーネットワーク
 
ハイブリットソーシャルゲームの現場
ハイブリットソーシャルゲームの現場ハイブリットソーシャルゲームの現場
ハイブリットソーシャルゲームの現場Shota Suzuki
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割Toru Yamaguchi
 
Yahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれから
Yahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれからYahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれから
Yahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれからYahoo!デベロッパーネットワーク
 

Similaire à 決済金融から始めるデータドリブンカンパニー #yjmu (20)

Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
 
Datadog monitoring with HashiCorp
Datadog monitoring with HashiCorpDatadog monitoring with HashiCorp
Datadog monitoring with HashiCorp
 
Voicepic@FukuiMASeminar
Voicepic@FukuiMASeminarVoicepic@FukuiMASeminar
Voicepic@FukuiMASeminar
 
2018/1/30 Django勉強会
2018/1/30 Django勉強会2018/1/30 Django勉強会
2018/1/30 Django勉強会
 
Datadog monitoring with HashiCorp stack
Datadog monitoring with HashiCorp stackDatadog monitoring with HashiCorp stack
Datadog monitoring with HashiCorp stack
 
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_cccSpring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップ
 
Design pattern in presto source code
Design pattern in presto source codeDesign pattern in presto source code
Design pattern in presto source code
 
スタートアップ向け!1人日でできるサービスの高速化方法と成果
スタートアップ向け!1人日でできるサービスの高速化方法と成果スタートアップ向け!1人日でできるサービスの高速化方法と成果
スタートアップ向け!1人日でできるサービスの高速化方法と成果
 
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
 
IBM Blluemix を Pepper とつないでみよう
IBM Blluemix を Pepper とつないでみようIBM Blluemix を Pepper とつないでみよう
IBM Blluemix を Pepper とつないでみよう
 
Effective web performance tuning for smartphone
Effective web performance tuning for smartphoneEffective web performance tuning for smartphone
Effective web performance tuning for smartphone
 
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
 
Wndows 10 Fall Creators Update Insider Previewから見たアップデート内容
Wndows 10 Fall Creators Update Insider Previewから見たアップデート内容Wndows 10 Fall Creators Update Insider Previewから見たアップデート内容
Wndows 10 Fall Creators Update Insider Previewから見たアップデート内容
 
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
 
20170626 さくらインターネット Stripe Magento
20170626 さくらインターネット Stripe Magento20170626 さくらインターネット Stripe Magento
20170626 さくらインターネット Stripe Magento
 
ヤフーのロギングSDKの挑戦〜データドリブン企業を目指して〜 #yjdsnight
ヤフーのロギングSDKの挑戦〜データドリブン企業を目指して〜 #yjdsnightヤフーのロギングSDKの挑戦〜データドリブン企業を目指して〜 #yjdsnight
ヤフーのロギングSDKの挑戦〜データドリブン企業を目指して〜 #yjdsnight
 
ハイブリットソーシャルゲームの現場
ハイブリットソーシャルゲームの現場ハイブリットソーシャルゲームの現場
ハイブリットソーシャルゲームの現場
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
 
Yahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれから
Yahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれからYahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれから
Yahoo! JAPANのサービス開発を10倍早くした社内PaaS構築の今とこれから
 

Plus de Yahoo!デベロッパーネットワーク

ヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかYahoo!デベロッパーネットワーク
 
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2Yahoo!デベロッパーネットワーク
 
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcYahoo!デベロッパーネットワーク
 
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo!デベロッパーネットワーク
 
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcYahoo!デベロッパーネットワーク
 
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtcYahoo!デベロッパーネットワーク
 
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcPC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcYahoo!デベロッパーネットワーク
 
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcモブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcYahoo!デベロッパーネットワーク
 
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcYahoo!デベロッパーネットワーク
 

Plus de Yahoo!デベロッパーネットワーク (20)

ゼロから始める転移学習
ゼロから始める転移学習ゼロから始める転移学習
ゼロから始める転移学習
 
継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator継続的なモデルモニタリングを実現するKubernetes Operator
継続的なモデルモニタリングを実現するKubernetes Operator
 
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるかヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
 
オンプレML基盤on Kubernetes パネルディスカッション
オンプレML基盤on Kubernetes パネルディスカッションオンプレML基盤on Kubernetes パネルディスカッション
オンプレML基盤on Kubernetes パネルディスカッション
 
LakeTahoe
LakeTahoeLakeTahoe
LakeTahoe
 
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
 
Persistent-memory-native Database High-availability Feature
Persistent-memory-native Database High-availability FeaturePersistent-memory-native Database High-availability Feature
Persistent-memory-native Database High-availability Feature
 
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
データの価値を最大化させるためのデザイン~データビジュアライゼーションの方法~ #devsumi 17-E-2
 
eコマースと実店舗の相互利益を目指したデザイン #yjtc
eコマースと実店舗の相互利益を目指したデザイン #yjtceコマースと実店舗の相互利益を目指したデザイン #yjtc
eコマースと実店舗の相互利益を目指したデザイン #yjtc
 
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtcヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
ヤフーを支えるセキュリティ ~サイバー攻撃を防ぐエンジニアの仕事とは~ #yjtc
 
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtcYahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
Yahoo! JAPANのIaaSを支えるKubernetesクラスタ、アップデート自動化への挑戦 #yjtc
 
ビッグデータから人々のムードを捉える #yjtc
ビッグデータから人々のムードを捉える #yjtcビッグデータから人々のムードを捉える #yjtc
ビッグデータから人々のムードを捉える #yjtc
 
サイエンス領域におけるMLOpsの取り組み #yjtc
サイエンス領域におけるMLOpsの取り組み #yjtcサイエンス領域におけるMLOpsの取り組み #yjtc
サイエンス領域におけるMLOpsの取り組み #yjtc
 
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtcヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
ヤフーのAIプラットフォーム紹介 ~AIテックカンパニーを支えるデータ基盤~ #yjtc
 
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtcYahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
Yahoo! JAPAN Tech Conference 2022 Day2 Keynote #yjtc
 
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
 
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtcPC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
PC版Yahoo!メールリニューアル ~サービスのUI/UX統合と改善プロセス~ #yjtc
 
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtcモブデザインによる多職種チームのコミュニケーション改善 #yjtc
モブデザインによる多職種チームのコミュニケーション改善 #yjtc
 
「新しいおうち探し」のためのAIアシスト検索 #yjtc
「新しいおうち探し」のためのAIアシスト検索 #yjtc「新しいおうち探し」のためのAIアシスト検索 #yjtc
「新しいおうち探し」のためのAIアシスト検索 #yjtc
 
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtcユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
ユーザーの地域を考慮した検索入力補助機能の改善の試み #yjtc
 

決済金融から始めるデータドリブンカンパニー #yjmu

  • 1. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 2017/02/20 決済金融から始める データドリブン カンパニー 江藤 徳宏
  • 2. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 2 自己紹介 • 担当サービス • Yahoo! ウォレット • 本人確認 • 役割 • 運用エンジニア & 保守開発 • 学生時代の専門 • 数理科学(非線形偏微分方程式) • 趣味 • ランニング(ラン歴3年、東京マラソン2015完走) • スマホゲーム(パズドラ、PokemonGO)
  • 3. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 3 Yahoo! ウォレット 働いているところ
  • 4. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 4 データドリブン企業 ここ1年で、「ネット企業」から「データドリブン企業」へ! ほとんどのサービスで、 データを利活用できるようにする
  • 5. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 5 データドリブンへの路 データ利活用しよう! そのためのマインドマップを作成しました
  • 6. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 6 データドリブンへの路 CI/CD
  • 7. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 7 CI/CD • テスト (commit build) • コミットされたソースがテストされる CI(Continuous Integration) ↑これらを自動的に行う! • パッケージング (component build) • レビューが完了したソースはメインブランチにマージ される • メインブランチへの変更をテストする • テスト成功時のみ、パッケージを作成する
  • 8. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 8 CI/CD • アセンブリ(assembly build) • パッケージ群の構成リストを作成する CD(Continuous Delivery) ↑これらを自動的に行う! • デプロイ(deploy build) • アセンブリで作成された構成リストにてサーバへのリリー スを実施 • まっさらなサーバであれば、サービスが利用できる状態に 持っていく
  • 9. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 9 CI/CD • ソフト面(CI) • テストがない • テストなど必要ないと思っている • ハード面(CD) • 構成管理ができていない • /etc/hostsは? • routeは? • LANGは? • ディレクトリを手動で作っている • リリース方法が原始的(手置き) CI/CD 阻害要因 レガシーシステム (技術的負債)
  • 10. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 10 今回のLTの目的 • 既存(古い)システム • レガシーコードで書かれているものが多い • テストがないので、改修が困難 • レガシーシステムと戦う方法 • テストのすすめ • 構成管理のすすめ
  • 11. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. CI テストのすすめ
  • 12. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 12 テストしづらいコード モック化したい箇所が ベタ書きだったら・・・ ※実際の現場は、 こんなものではない ですよ。。 この部分だけ ごまかしたい
  • 13. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 13 レガシーコードを斬る! よく使うモッキングフレームワークその1 Phake https://github.com/mlively/Phake % cat composer.json { "require-dev": { "phake/phake": "@stable” } } % composer install ★導入方法 特徴 • MockObjectと似ている • 1メソッドだけモックにすることが可能 • コールバック関数への置換 • 呼び出し検証機能
  • 14. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 14 レガシーコードを斬る! ソース まるごと関数でラップする protected以上とする
  • 15. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 15 レガシーコードを斬る! テスト テスト対象クラスをpartialMockメソッドでインスタンス化 どの関数がどの引数で呼ばれたときに何がしを返す
  • 16. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 16 レガシーコードを斬る! よく使うモッキングフレームワークその2 AspectMock https://github.com/Codeception/AspectMock % cat composer.json { "require-dev": { "codeception/aspect-mock": "*" } } % composer install ★導入方法 特徴 • グローバル関数をドラスティックに変更 • コールバック関数への置換 • 呼び出し検証機能
  • 17. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 17 レガシーコードを斬る! ソース 名前空間を指定する この関数だけモック化
  • 18. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 18 レガシーコードを斬る! テスト 名前空間、関数名、返却値を指定するだけ。
  • 19. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 19 テストのまとめ • コミットされたソースについては、全部グリーンになること • 何をテストしたいのか、観点を明確にする • MockObjectでテストできないようなコードは書かない (できればTDD実践!)
  • 20. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 20 テストのまとめ レガシーコードに出会ったら・・・・・・ • 封印する • フルスクラッチ • 手を加えるならば必ずテストを書く • in/outテスト • 適切なモッキングフレームワークを使う
  • 21. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. CD 構成管理のすすめ
  • 22. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 22 CD 構成管理 • システムの構成要素を一元管理する • ネットワーク設定 • アカウント、sudo権限 • hosts • syslog • パッケージ群(独自、rpm) etc… 管理するだけでなく、簡単に適用したい
  • 23. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 23 Chef • システムのあるべき姿を「リソース」という単位で管理 Yahoo!ウォレットでは、Chefを導入中 • 「リソース」を束ねて、「レシピ」にまとめる • 「レシピ」を適用する機能群を「ロール」にまとめる • デプロイ先のサーバ群を「環境」にまとめ、ロールを紐づける • デプロイを実行する
  • 24. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 24 Chef Web AP DB ATS Apache PHP Web APL ATS Apache Jetty Logic APL MySQL Server ATS = Apache Traffic Server
  • 25. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 25 Chef(環境とロール) web-dev db-dev開発環境 本番環境 web-prod ap-prod db-prod web-role ap-role db-role ap-dev
  • 26. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 26 Chef(レシピ) web-recipe ap-recipe db-recipe ATS install Apache install PHP install Jetty install Web APL install Logic APL install MySQL install レシピは再利用できるように、細かく分けるのがコツ
  • 27. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 27 Chef(ロールとレシピ) web-dev ap-dev db-dev web-prod ap-prod db-prod web-role ap-role db-role web-recipe ap-recipe db- recipe run_list run_list run_list
  • 28. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 28 Chef(CI + デプロイ) web-dev web-role web-recipe PC Chef-client Chef-server git push Chefdk git.corp web-dev-env web-dev CI-tool web hook Upload recipe knife ssh
  • 29. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 29 Chef(課題) web01 web-role web-recipe Chef-server web-prod-env web01 LB web04web02 web03 Internet CI-tool web02 web03 web04 web-prod-envへリリース! 環境に紐づく全ノード取得
  • 30. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 30 Chef(課題) web01 LB web04web02 web03 Internet CI-tool サービスアウト&リリース なんらかの理由でデプロイ失敗。。 web-role web-recipe Chef-server web-prod-env web01 web02 web03 web04
  • 31. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 31 Chef(課題) web01 LB web04web02 web03 Internet CI-tool サービスアウト&リリース web-role web-recipe Chef-server web-prod-env web01 web02 web03 web04
  • 32. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 32 Chef(課題) web01 LB web04web02 web03 Internet CI-tool サービスアウト&リリース web-role web-recipe Chef-server web-prod-env web01 web02 web03 web04
  • 33. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 33 Chef(課題) web01 LB web04web02 web03 Internet CI-tool サービスアウト&リリース web-role web-recipe Chef-server web-prod-env web01 web02 web03 web04
  • 34. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 34 Chef(課題) web01 LB web04web02 web03 Internet CI-tool 見事に全滅 web-role web-recipe Chef-server web-prod-env web01 web02 web03 web04
  • 35. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 35 Chef(課題解決) web01 web-role web-recipe Chef-server LB web04web02 web03 Internet CI-tool web03 web04 前半の環境に紐づく全ノード取得 web-prod-env-1 web-prod-env-2 web01 web02 前半だけリリース!
  • 36. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 36 Chef(課題解決) web01 LB web04web02 web03 Internet CI-tool サービスアウト&リリース 環境を分けよう! web-role web-recipe Chef-server web03 web04 web-prod-env-1 web-prod-env-2 web01 web02
  • 37. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 37 Chef(課題解決) この件についてはissueが上がっているので、 きっと近いうちに修正されるはず! https://github.com/chef/chef/issues/5399
  • 38. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 38 Chef(cookbook) Rubyとリソースの組み合わせ レシピ/recipes リソース1 リソース2 リソース3 リソース4 材料1 材料集/files リリースする資材 テンプレート1 材料2 これらを総称して、cookbookと呼ぶ
  • 39. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 39 Chef(ATSを入れるレシピ) %w(pkgconfig libtool gcc make openssl tcl pcre libcap flex hwloc lua ncurses curl).each do |pkg| yum_package pkg do action :install end end
  • 40. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 40 Chef(ATSを入れるレシピ) remote_file '/tmp/master.zip' do source 'https://github.com/apache/trafficserver/archive/master.zip' mode '0444' end
  • 41. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 41 Chef(ATSを入れるレシピ) execute 'expand ATS' do command <<-EOF cd /tmp/; unzip master.zip cd trafficserver-master; autoreconf -if ./configure --prefix=/opt/ats make; make check; make install EOF end Install_ats.rb
  • 42. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 42 今後のロードマップ • eコマース事業拡大に伴い、ウォレットへの需要は高まる • 売り場での決済時アクセスが増える • パーソナライズのための情報提供を安全に完全に行う • プロダクトの品質を、高カバレッジな自動テストで担保 • 実機から仮想環境へ。ペットから家畜への移行が必要 • より正確で迅速なデプロイ作業をChefで実現
  • 43. Copyright © 2017 Yahoo Japan Corporation. All Rights Reserved. 情報技術で 人々のマネーライフの課題を解決する 決済金融カンパニー 43