SlideShare a Scribd company logo
Casual
Convergence
@azukiwasher on July 24 2013
13年7月27日土曜日
About me
•Name: Nobuhiro Uchiyama
•Ruby Programmer
•Non-DevOps
•Don’t know “Chef” very well
•Chef helps and drives us!
13年7月27日土曜日
Topic for Today
•Convergence for everyone
13年7月27日土曜日
Convergence
•The process of actions
configures a specific part of the
system.
•Provide this process to end-
users settings (email, www,
etc.) ...?
13年7月27日土曜日
Interface for DevOps
•chef-solo
•knife
•knife-solo, etc.
13年7月27日土曜日
Interface for End-users
•Web app
•Server (AgileSolo)
13年7月27日土曜日
Interface for End-users
End-user
User’s item
Web app AgileSolo
13年7月27日土曜日
AgileSolo
•Ruby gem
•Wraps Chef::Application::Solo
•Provides HTTP endpoint (puma)
•Overrides “run_application” in
Solo
13年7月27日土曜日
Flow (1)
#	
  Request	
  Data:	
  @data.json
{
	
  	
  "solo":{
	
  	
  	
  	
  "run_list":"recipe[sample::default]",
	
  	
  	
  	
  "name":"sample",
	
  	
  	
  	
  "items":{
	
  	
  	
  	
  	
  	
  "id":"items",
	
  	
  	
  	
  	
  	
  "data":{
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "lines":["foo",	
  "hoge"]
	
  	
  	
  	
  	
  	
  }
	
  	
  	
  	
  }
	
  	
  }
}
13年7月27日土曜日
Flow (2)
#	
  HTTP	
  Request
$	
  curl	
  -­‐-­‐request	
  PUT	
  
-­‐-­‐header	
  "Content-­‐Type:	
  application/json"	
  
-­‐-­‐data	
  @data.json	
  
'http:/localhost:9292/solo'
13年7月27日土曜日
Flow (3)
#{chef_repo}/data_bags/sample/items.json
{
	
  	
  "id":"items",
	
  	
  "data":{
	
  	
  	
  	
  "lines":["foo","bar"]
	
  	
  }
}
13年7月27日土曜日
Flow (4)
#{chef_repo}/site-­‐cookbooks/sample/recipes/default.rb
items	
  =	
  data_bag('sample')
items.map	
  do	
  |item|
	
  	
  file	
  ::File.join('..',	
  '/tmp/',	
  "#{item}.json")	
  do
	
  	
  	
  	
  content	
  JSON.pretty_generate(data_bag_item('sample',item))
	
  	
  end
end
13年7月27日土曜日
Implementation (1)
#	
  lib/agile_solo/consumer.rb
module	
  AgileSolo
	
  	
  class	
  Consumer	
  <	
  Command
	
  	
  	
  	
  attr_reader	
  :name,	
  :run_list,	
  :data,	
  :chef_repo
	
  	
  	
  	
  def	
  initialize(payload)
	
  	
  	
  	
  	
  	
  @name	
  =	
  payload['name']
	
  	
  	
  	
  	
  	
  @run_list	
  =	
  payload['run_list']
	
  	
  	
  	
  	
  	
  @data	
  =	
  MultiJson.dump(payload['items'])
	
  	
  	
  	
  	
  	
  @chef_repo	
  =	
  AgileSolo::Config.chef_repo
	
  	
  	
  	
  	
  	
  Chef::Config[:data_bag_path]	
  =	
  File.join(@chef_repo,	
  'data_bags')
	
  	
  	
  	
  	
  	
  chef_solo.config[:config_file]	
  =	
  File.join(@chef_repo,	
  'solo.rb')
	
  	
  	
  	
  	
  	
  chef_solo.config[:override_runlist]	
  =	
  [@run_list]
	
  	
  	
  	
  end
	
  	
  	
  	
  def	
  chef_solo
	
  	
  	
  	
  	
  	
  @chef_solo	
  ||=	
  AgileSolo::Application::Solo.new
	
  	
  	
  	
  end
	
  	
  
	
  ..	
  snip	
  ..
13年7月27日土曜日
Implementation (2)
#	
  lib/agile_solo/consumer.rb
module	
  AgileSolo
	
  	
  class	
  Consumer	
  <	
  Command
	
  	
  	
  	
  attr_reader	
  :name,	
  :run_list,	
  :data,	
  :chef_repo
	
  	
  
	
  ..	
  snip	
  ..
	
  	
  	
  	
  def	
  execute
	
  	
  	
  	
  	
  	
  begin
	
  	
  	
  	
  	
  	
  	
  	
  update_data_bag
	
  	
  	
  	
  	
  	
  	
  	
  chef_solo.run
	
  	
  	
  	
  	
  	
  rescue	
  =>	
  e
	
  	
  	
  	
  	
  	
  	
  	
  puts	
  e.backtrace.join("n")
	
  	
  	
  	
  	
  	
  end
	
  	
  	
  	
  end
	
  	
  	
  	
  def	
  update_data_bag
	
  	
  	
  	
  	
  	
  File.open(file_path,	
  'w')	
  {	
  |f|	
  f.write(data)	
  }
	
  	
  	
  	
  end
	
  ..	
  snip	
  ..
end
13年7月27日土曜日
Implementation (3)
#	
  lib/agile_solo/application/solo.rb
require	
  'chef/application/solo'
module	
  AgileSolo
	
  	
  module	
  Application
	
  	
  	
  	
  class	
  Solo	
  <	
  Chef::Application::Solo
	
  	
  	
  	
  	
  	
  attr_reader	
  :chef_solo_json
	
  	
  	
  	
  	
  	
  def	
  run_application
	
  	
  	
  	
  	
  	
  	
  	
  begin
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  run_chef_client
	
  	
  	
  	
  	
  	
  	
  	
  rescue	
  SystemExit	
  =>	
  e
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  raise
	
  	
  	
  	
  	
  	
  	
  	
  rescue	
  Exception	
  =>	
  e
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  Chef::Application.fatal!("#{e.class}:	
  #{e.message}",	
  1)
	
  	
  	
  	
  	
  	
  	
  	
  end
	
  	
  	
  	
  	
  	
  end
	
  	
  	
  	
  end
	
  	
  end
end
13年7月27日土曜日
Wrap up
•Convergence for everyone
•Interface for End-users
•HTTP PUT Request (Sync)
•Kicks chef-solo (run_list,
data_bags)
13年7月27日土曜日
More efficient ...
•AMQP instead of HTTP
•Parallel convergence
•Async
•Agility
•Scalability
13年7月27日土曜日
Resources
AgileSolo
https://github.com/azukiwasher/agile_solo
13年7月27日土曜日

More Related Content

Viewers also liked

Commis chef cover letter
Commis chef cover letterCommis chef cover letter
Commis chef cover letterhowardlewis841
 
Kamlesh Cv
Kamlesh CvKamlesh Cv
Kamlesh Cv
Kamlesh Bansod
 
9 h s steels experience certificate
9 h s steels experience certificate9 h s steels experience certificate
9 h s steels experience certificateJB Enterprises
 
Text sample application letter
Text sample application letterText sample application letter
Text sample application letter
Mr Bounab Samir
 
Radisson Blu Hotel Delhi By 2020
Radisson Blu Hotel Delhi By 2020Radisson Blu Hotel Delhi By 2020
Radisson Blu Hotel Delhi By 2020
Debashish Mukherjee
 
Experience Letter
Experience LetterExperience Letter
Experience Letter
AiMSRoyaL
 

Viewers also liked (10)

Commis chef cover letter
Commis chef cover letterCommis chef cover letter
Commis chef cover letter
 
Pankaj Kumar -CV
Pankaj Kumar -CVPankaj Kumar -CV
Pankaj Kumar -CV
 
Kamlesh Cv
Kamlesh CvKamlesh Cv
Kamlesh Cv
 
Cv leonardo concezzi 2012
Cv leonardo concezzi 2012Cv leonardo concezzi 2012
Cv leonardo concezzi 2012
 
9 h s steels experience certificate
9 h s steels experience certificate9 h s steels experience certificate
9 h s steels experience certificate
 
Text sample application letter
Text sample application letterText sample application letter
Text sample application letter
 
Radisson Blu Hotel Delhi By 2020
Radisson Blu Hotel Delhi By 2020Radisson Blu Hotel Delhi By 2020
Radisson Blu Hotel Delhi By 2020
 
Experience Letter
Experience LetterExperience Letter
Experience Letter
 
experience certificates.PDF
experience  certificates.PDFexperience  certificates.PDF
experience certificates.PDF
 
Experience Letter
Experience LetterExperience Letter
Experience Letter
 

Similar to Casual convergence

Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframeworkSpring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframeworkToshiaki Maki
 
意図を表現するプログラミング
意図を表現するプログラミング意図を表現するプログラミング
意図を表現するプログラミングAtsuhiro Kubo
 
Sqale の Puppet と Chef (と テスト)
Sqale の Puppet と Chef (と テスト)Sqale の Puppet と Chef (と テスト)
Sqale の Puppet と Chef (と テスト)hiboma
 
Ext.direct
Ext.directExt.direct
Ext.direct
Shuhei Aoyama
 
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
BIGLOBE Tech Talk
 
企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624
Yusuke Suzuki
 
Rx java x retrofit
Rx java x retrofitRx java x retrofit
Rx java x retrofit
Shun Nakahara
 
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
bitter_fox
 
React Native GUIDE
React Native GUIDEReact Native GUIDE
React Native GUIDE
dcubeio
 
aws_opsworks
aws_opsworksaws_opsworks
aws_opsworks
Yukihiko SAWANOBORI
 
The master plan of scaling a web application
The master plan ofscaling a web applicationThe master plan ofscaling a web application
The master plan of scaling a web application
Yusuke Wada
 
Power Appsで Excel関数を利用する3つの方法
Power Appsで Excel関数を利用する3つの方法Power Appsで Excel関数を利用する3つの方法
Power Appsで Excel関数を利用する3つの方法
Nagao Hiroaki
 
実は怖くないDevOps
実は怖くないDevOps実は怖くないDevOps
実は怖くないDevOps
Masanori Ishigami
 
ScalaMatsuri 2016
ScalaMatsuri 2016ScalaMatsuri 2016
ScalaMatsuri 2016
Yoshitaka Fujii
 
Introduction to WildFly Swarm
Introduction to WildFly SwarmIntroduction to WildFly Swarm
Introduction to WildFly Swarm
Yoshimasa Tanabe
 
Introduction to JShell #JavaDayTokyo #jdt_jshell
Introduction to JShell #JavaDayTokyo #jdt_jshellIntroduction to JShell #JavaDayTokyo #jdt_jshell
Introduction to JShell #JavaDayTokyo #jdt_jshell
bitter_fox
 
Jenkins plugin memo
Jenkins plugin memoJenkins plugin memo
Jenkins plugin memoKiyotaka Oku
 
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Javaどこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
Toshiaki Maki
 

Similar to Casual convergence (20)

Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframeworkSpring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
 
意図を表現するプログラミング
意図を表現するプログラミング意図を表現するプログラミング
意図を表現するプログラミング
 
Sqale の Puppet と Chef (と テスト)
Sqale の Puppet と Chef (と テスト)Sqale の Puppet と Chef (と テスト)
Sqale の Puppet と Chef (と テスト)
 
Ext.direct
Ext.directExt.direct
Ext.direct
 
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
 
企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624
 
Rx java x retrofit
Rx java x retrofitRx java x retrofit
Rx java x retrofit
 
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
 
React Native GUIDE
React Native GUIDEReact Native GUIDE
React Native GUIDE
 
aws_opsworks
aws_opsworksaws_opsworks
aws_opsworks
 
The master plan of scaling a web application
The master plan ofscaling a web applicationThe master plan ofscaling a web application
The master plan of scaling a web application
 
Power Appsで Excel関数を利用する3つの方法
Power Appsで Excel関数を利用する3つの方法Power Appsで Excel関数を利用する3つの方法
Power Appsで Excel関数を利用する3つの方法
 
実は怖くないDevOps
実は怖くないDevOps実は怖くないDevOps
実は怖くないDevOps
 
scala-kaigi1-sbt
scala-kaigi1-sbtscala-kaigi1-sbt
scala-kaigi1-sbt
 
ScalaMatsuri 2016
ScalaMatsuri 2016ScalaMatsuri 2016
ScalaMatsuri 2016
 
Openstack chef-repo
Openstack chef-repoOpenstack chef-repo
Openstack chef-repo
 
Introduction to WildFly Swarm
Introduction to WildFly SwarmIntroduction to WildFly Swarm
Introduction to WildFly Swarm
 
Introduction to JShell #JavaDayTokyo #jdt_jshell
Introduction to JShell #JavaDayTokyo #jdt_jshellIntroduction to JShell #JavaDayTokyo #jdt_jshell
Introduction to JShell #JavaDayTokyo #jdt_jshell
 
Jenkins plugin memo
Jenkins plugin memoJenkins plugin memo
Jenkins plugin memo
 
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Javaどこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
 

Recently uploaded

論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
Yuuitirou528 default
 

Recently uploaded (14)

論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料CS集会#13_なるほどわからん通信技術 発表資料
CS集会#13_なるほどわからん通信技術 発表資料
 

Casual convergence

  • 1. Casual Convergence @azukiwasher on July 24 2013 13年7月27日土曜日
  • 2. About me •Name: Nobuhiro Uchiyama •Ruby Programmer •Non-DevOps •Don’t know “Chef” very well •Chef helps and drives us! 13年7月27日土曜日
  • 3. Topic for Today •Convergence for everyone 13年7月27日土曜日
  • 4. Convergence •The process of actions configures a specific part of the system. •Provide this process to end- users settings (email, www, etc.) ...? 13年7月27日土曜日
  • 6. Interface for End-users •Web app •Server (AgileSolo) 13年7月27日土曜日
  • 7. Interface for End-users End-user User’s item Web app AgileSolo 13年7月27日土曜日
  • 8. AgileSolo •Ruby gem •Wraps Chef::Application::Solo •Provides HTTP endpoint (puma) •Overrides “run_application” in Solo 13年7月27日土曜日
  • 9. Flow (1) #  Request  Data:  @data.json {    "solo":{        "run_list":"recipe[sample::default]",        "name":"sample",        "items":{            "id":"items",            "data":{                    "lines":["foo",  "hoge"]            }        }    } } 13年7月27日土曜日
  • 10. Flow (2) #  HTTP  Request $  curl  -­‐-­‐request  PUT   -­‐-­‐header  "Content-­‐Type:  application/json"   -­‐-­‐data  @data.json   'http:/localhost:9292/solo' 13年7月27日土曜日
  • 11. Flow (3) #{chef_repo}/data_bags/sample/items.json {    "id":"items",    "data":{        "lines":["foo","bar"]    } } 13年7月27日土曜日
  • 12. Flow (4) #{chef_repo}/site-­‐cookbooks/sample/recipes/default.rb items  =  data_bag('sample') items.map  do  |item|    file  ::File.join('..',  '/tmp/',  "#{item}.json")  do        content  JSON.pretty_generate(data_bag_item('sample',item))    end end 13年7月27日土曜日
  • 13. Implementation (1) #  lib/agile_solo/consumer.rb module  AgileSolo    class  Consumer  <  Command        attr_reader  :name,  :run_list,  :data,  :chef_repo        def  initialize(payload)            @name  =  payload['name']            @run_list  =  payload['run_list']            @data  =  MultiJson.dump(payload['items'])            @chef_repo  =  AgileSolo::Config.chef_repo            Chef::Config[:data_bag_path]  =  File.join(@chef_repo,  'data_bags')            chef_solo.config[:config_file]  =  File.join(@chef_repo,  'solo.rb')            chef_solo.config[:override_runlist]  =  [@run_list]        end        def  chef_solo            @chef_solo  ||=  AgileSolo::Application::Solo.new        end      ..  snip  .. 13年7月27日土曜日
  • 14. Implementation (2) #  lib/agile_solo/consumer.rb module  AgileSolo    class  Consumer  <  Command        attr_reader  :name,  :run_list,  :data,  :chef_repo      ..  snip  ..        def  execute            begin                update_data_bag                chef_solo.run            rescue  =>  e                puts  e.backtrace.join("n")            end        end        def  update_data_bag            File.open(file_path,  'w')  {  |f|  f.write(data)  }        end  ..  snip  .. end 13年7月27日土曜日
  • 15. Implementation (3) #  lib/agile_solo/application/solo.rb require  'chef/application/solo' module  AgileSolo    module  Application        class  Solo  <  Chef::Application::Solo            attr_reader  :chef_solo_json            def  run_application                begin                    run_chef_client                rescue  SystemExit  =>  e                    raise                rescue  Exception  =>  e                    Chef::Application.fatal!("#{e.class}:  #{e.message}",  1)                end            end        end    end end 13年7月27日土曜日
  • 16. Wrap up •Convergence for everyone •Interface for End-users •HTTP PUT Request (Sync) •Kicks chef-solo (run_list, data_bags) 13年7月27日土曜日
  • 17. More efficient ... •AMQP instead of HTTP •Parallel convergence •Async •Agility •Scalability 13年7月27日土曜日