SlideShare ist ein Scribd-Unternehmen logo
1 von 36
Downloaden Sie, um offline zu lesen
S T Y L I G H T . C O M
Helping Data Teams with
Puppet
S T Y L I G H T . C O M
S E R G I I K H O M E N K O , D A T A S C I E N T I S T ,
S E R G I I . K H O M E N K O @ S T Y L I G H T . C O M , @ l c 0 d 3 r
W h o ? W h a t ? W h y ?
S e t t i n g u p y o u r B I w i t h p u p p e t .
S m a l l t i p s a n d t r i c k s
P u p p e t y o u r r a n k i n g
A G E N D A
Data scientist at one of the biggest fashion communities,
STYLIGHT. Data analysis and visualization hobbyist.
Speaker at Berlin Buzzwords 2014, ApacheCon Europe 2014
Founder and speaker at Munich Golang UG, Munich Tableau UG.
Speaker at Munich UseR Group, Munich Search UG, Munich
Quantified Self UG.
Sergii Khomenko
Milos Radovanovic
Passionate about DevOps stuff:
1. microservices
2. docker
3. 12 factor apps
4. continuous integration/deployment
L i v e i n 1 2 c o u n t r i e s
STYLIGHT – international community
S T Y L I G H T . C O M
Setting up your BI with
puppet.
T a b l e a u - r e p o r t i n g a n d a d - h o c s
P y t h o n / T a l e n d E T L t o o l s
Minimum Viable BI
R U N N I N G P U P P E T I N A S T A N D A L O N E M O D E
Minimum Viable BI
We use Puppet for *nix servers and can’t merge
with Windows machine
Standalone mode for Puppet
– easier to start and develop
– windows machines are separated from *nix ones
R U N N I N G P U P P E T I N A S T A N D A L O N E M O D E
Minimum Viable BI
cd c:folderwithour-bi
git pull origin master
IF %ERRORLEVEL% NEQ 0 set
context=GIT_FAILURE && goto error_handler
puppet apply --modulepath=puppetmodules puppetwin-
node-name.net.pp
IF %ERRORLEVEL% NEQ 0 set
context=PUPPET_FAILURE && goto error_handler
goto end
R U N N I N G P U P P E T I N A S T A N D A L O N E M O D E
Minimum Viable BI
:error_handler
echo entering error_handler
EVENTCREATE /T ERROR /L APPLICATION /SO
Puppet_Scheduler /ID 100 /D "EXECUTION FAILED
REASON %context%"
goto end
:end
echo DONE
Minimum Viable BI
Standalone mode for Puppet
– configuration is totally separated
– custom modules --modulepath=puppetmodules
–  Github hosted configuration
–  Error handling via Windows event log
R U N N I N G P U P P E T I N A S T A N D A L O N E M O D E
Minimum Viable BI
node  'ʹwin-­‐‑node-­‐‑name.net'ʹ  {	
	
        scheduled_task  {'ʹrefresh-­‐‑1'ʹ:	
            ensure        =>  present,	
            enabled      =>  true,	
            command      =>  'ʹC:pathtoyourscript.bat'ʹ,	
            arguments  =>  'ʹsome  args  'ʹ,	
            
S C H E D U L I N G I S I M P O R T A N T
Minimum Viable BI
            user  =>  'ʹyour-­‐‑user'ʹ,	
            password  =>  'ʹyour-­‐‑password'ʹ,	
	
            trigger      =>  {	
                schedule      =>  daily,	
                start_time  =>  'ʹ06:00'ʹ,	
            }	
        }	
S C H E D U L I N G I S I M P O R T A N T
Minimum Viable BI
# Can't use the Puppet's scheduled_task as it does not
support to run the schedule task every 5 minutes.
https://github.com/sdliangzhihua/windows-puppet-
example/blob/master/manifest.pp#L68
S Y N C M Y C O N F I G U R A T I O N E V E R Y 1 5 M I N
Minimum Viable BI
$cmd = 'C:Windowssystem32cmd.exe'
$job_name = 'sync_code'
exec { 'CreateCodeSyncScheduledTask':
command => "${cmd} /C schtasks /create /sc
MINUTE /mo 15 /tn ${job_name} /tr C:your
puppet.bat /ru administrator /f",
onlyif => ["${cmd} /C schtasks /query /tn ${job_name}
& if errorlevel 1 (exit /b 0) else exit /b 1"],
S Y N C M Y C O N F I G U R A T I O N E V E R Y 1 5 M I N
S T Y L I G H T . C O M
Small tips and tricks
do  not  repeat  yourself  and  other  tricks
Minimum Viable BI
node  'ʹwin-­‐‑node-­‐‑name.net'ʹ  {	
	
        scheduled_task  {'ʹrefresh-­‐‑1'ʹ:	
            ensure        =>  present,	
            enabled      =>  true,	
            command      =>  'ʹC:pathtoyourscript.bat'ʹ,	
            arguments  =>  'ʹsome  args  'ʹ,	
            
S C H E D U L I N G I S I M P O R T A N T
Small tips and tricks
class  job_scheduler(	
        $ensure                        =  $job_scheduler::params::ensure,	
        $enabled                    =  $job_scheduler::params::enabled,	
        $user                                =  $job_scheduler::params::user,	
        $password              =  $job_scheduler::params::password,	
        $working_dir    =  $job_scheduler::params::working_dir,	
)inherits  job_scheduler::params{	
	
}
Small tips and tricks
define  job_scheduler::job	
(	
        $arguments              ='ʹtableau_adobe.py'ʹ,	
        $command                  ='ʹc:Py27-­‐‑32python.exe'ʹ,	
        $schedule_type      ='ʹdaily'ʹ,	
        $start_time            ='ʹ08:15'ʹ,	
        $day_of_week          ='ʹevery'ʹ,	
)	
{
Small tips and tricks
define  job_scheduler::tableau_job	
(	
        $arguments              ='ʹdefault-­‐‑tableau'ʹ,	
        $command                  ='ʹc:foldertableau.bat'ʹ,	
        $schedule_type      ='ʹdaily'ʹ,	
        $start_time            ='ʹ21:00'ʹ,	
        $day_of_week          ='ʹevery'ʹ,	
)	
{
Small tips and tricks
# Params with default values for the tableau job
# that might be changed in a job definition
#
# 1. $arguments ='default-argument',
# 2. $command ='c:folderscript.bat',
# 3. $schedule_type ='daily',
# 4. $start_time ='21:00',
# 5. $day_of_week ='every',
####################
Small tips and tricks
job_scheduler::tableau_job {
’some job': start_time => '01:00', arguments => ’args';
’default refresh-1': start_time => '06:00';
'default refresh-2': start_time => '10:00';
'weekly update': start_time => '03:35', arguments =>
'weekly-update', schedule_type => weekly, day_of_week =>
['mon'];
}
Small tips and tricks
job_scheduler::redshift_job  {	
            'ʹRS  tagged  products'ʹ:                  start_time  =>  'ʹ00:40'ʹ,  params  =>  
'ʹ..datasourcessomething.tds'ʹ;	
            'ʹRS  another  job'ʹ:  start_time  =>  'ʹ00:50'ʹ,  params  =>  'ʹ..
datasourceselse.tds'ʹ
S T Y L I G H T . C O M
Puppet your ranking
Lean,  flexible,  powerful
A r a n k i n g i s a r e l a t i o n s h i p
b e t w e e n a s e t o f i t e m s s u c h t h a t ,
f o r a n y t w o i t e m s , t h e f i r s t i s
e i t h e r ' r a n k e d h i g h e r t h a n ' ,
' r a n k e d l o w e r t h a n ' o r ' r a n k e d
e q u a l t o ' t h e s e c o n d .
Ranking specifics:
•  Seasonal influence
•  Trends
•  Cold start of new countries, shops
•  Multiple dimensions of ranking model
Requirements:
•  Decreasing time to implement new ranking
model
•  Keeping working infrastructure alive
•  A/B testing without changing entire
infrastructure
•  Performance level - “still fast” and
“transparent”
Lean approach to Ranking
M u l t i p l e p o i n t s o f e v a l u a t i o n
Jboss Solr-loadbalancer nginx Solr
nginx Solr
nginx Solr
Common search infrastructure
Updated infrastructure
Jboss Solr-loadbalancer nginx Solr
nginx Solr
nginx Solr
Jboss Solr-loadbalancer nginx Solr
Front-end loadbalancer
q = +brand:adidas shop:monshowroom^3
q = +adidas monshowroom
defType = dismax
qf = brand shop^3
sort = user_ratings desc, score desc
qq = adidas
q = {!boost b=$b defType=dismax v=$qq}
b = prod(popularity, clicks)
Lean approach to Ranking
Lean approach to Ranking
solr0x.node.company.pp
include nginx
nginx::config { "solr_dev": }
nginx::solr-ranking { "delta2":
urls => [
“/some.thing?
gender=women&brand=2271&tag=1161&tag=877&tag=468",
"/some.thing?
gender=men&brand=11235&tag=10203&tag=10299&tag=10326"
],
Lean approach to Ranking
<% urls.each do |url| -%>
if ($args ~* <% if url['gender'] > 0 -%>gender_id%3A<
%= url['gender'] %>.*<% end -%><% url['tags'].each
do |tag| -%>tag_id%3A<%= tag %>.*<% end -%><%
if url['brand'] > 0 -%>brand_id%3A%28<%=
url['brand'] %>%29<% end -%>) {
set $orig $args;
set $args "q={!boost+b=%24b+defType=dismax+v=
%24qq}&qq=id:*";
rewrite ^(.*)$ "$1?$orig" break;
}
<% end -%>
nginx / templates / conf / solr-rewrites.conf.erb
Stages to evaluate a model:
•  R ranking model
•  Independent Solr-node
1.  For internal use-cases
2.  Testing for some of pages
3.  A/B roll out for % of users
•  Production roll out
Lean approach to Ranking
M u l t i p l e p o i n t s o f e v a l u a t i o n
Thanks for your
attention!
S T Y L I G H T . C O M
Sergii Khomenko
Data Scientist
STYLIGHT GmbH
sergii.khomenko@stylight.com
@lc0d3r
Nymphenburger Straße 86
80636 Munich, Germany

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (19)

WordPress in 30 minutes
WordPress in 30 minutesWordPress in 30 minutes
WordPress in 30 minutes
 
API Pain Points (PHPNE)
API Pain Points (PHPNE)API Pain Points (PHPNE)
API Pain Points (PHPNE)
 
Five things for you - Yahoo developer offers
Five things for you - Yahoo developer offersFive things for you - Yahoo developer offers
Five things for you - Yahoo developer offers
 
Fluent Refactoring (Cascadia Ruby Conf 2013)
Fluent Refactoring (Cascadia Ruby Conf 2013)Fluent Refactoring (Cascadia Ruby Conf 2013)
Fluent Refactoring (Cascadia Ruby Conf 2013)
 
Session8
Session8Session8
Session8
 
Api pain points
Api pain pointsApi pain points
Api pain points
 
Django tips & tricks
Django tips & tricksDjango tips & tricks
Django tips & tricks
 
Wsomdp
WsomdpWsomdp
Wsomdp
 
How to Build a Web App (for Non-Programmers)
How to Build a Web App (for Non-Programmers)How to Build a Web App (for Non-Programmers)
How to Build a Web App (for Non-Programmers)
 
Noah Brier: How to build web apps
Noah Brier: How to build web appsNoah Brier: How to build web apps
Noah Brier: How to build web apps
 
WordPressでIoTをはじめよう
WordPressでIoTをはじめようWordPressでIoTをはじめよう
WordPressでIoTをはじめよう
 
Playing With The Web
Playing With The WebPlaying With The Web
Playing With The Web
 
Bacon.js — Gérer efficacement les flux de données en Javascript
Bacon.js — Gérer efficacement les flux de données en JavascriptBacon.js — Gérer efficacement les flux de données en Javascript
Bacon.js — Gérer efficacement les flux de données en Javascript
 
DBIx::Skinnyと仲間たち
DBIx::Skinnyと仲間たちDBIx::Skinnyと仲間たち
DBIx::Skinnyと仲間たち
 
Select * from internet
Select * from internetSelect * from internet
Select * from internet
 
Command
CommandCommand
Command
 
Cheap frontend tricks
Cheap frontend tricksCheap frontend tricks
Cheap frontend tricks
 
HTML5 & The Open Web - at Nackademin
HTML5 & The Open Web -  at NackademinHTML5 & The Open Web -  at Nackademin
HTML5 & The Open Web - at Nackademin
 
PHP an intro -1
PHP an intro -1PHP an intro -1
PHP an intro -1
 

Andere mochten auch

E-Book Cuentanos Tu Fitur
E-Book Cuentanos Tu FiturE-Book Cuentanos Tu Fitur
E-Book Cuentanos Tu FiturHosteltur
 
La Marca Mas Importante del Mundo
La Marca Mas Importante del MundoLa Marca Mas Importante del Mundo
La Marca Mas Importante del MundoElsa Velasco
 
Seafood Trade Magazine - Oct 2014 - Tạp chí Thương mại Thủy sản
Seafood Trade Magazine - Oct 2014 - Tạp chí Thương mại Thủy sảnSeafood Trade Magazine - Oct 2014 - Tạp chí Thương mại Thủy sản
Seafood Trade Magazine - Oct 2014 - Tạp chí Thương mại Thủy sảnbanh cang
 
Presentacion Para Plasma Ecommerce Dayv01
Presentacion Para Plasma Ecommerce Dayv01Presentacion Para Plasma Ecommerce Dayv01
Presentacion Para Plasma Ecommerce Dayv01mari_suarezalais
 
Closing Compliance Gap
Closing Compliance GapClosing Compliance Gap
Closing Compliance GapSEEBURGER
 
Promociones economicas febrero 2014
Promociones economicas febrero 2014Promociones economicas febrero 2014
Promociones economicas febrero 2014Antonio Mendez
 
Casa de putas
Casa de putasCasa de putas
Casa de putasenquica
 
Cuando yo me_vaya_-_carlos_boaglio-an
Cuando yo me_vaya_-_carlos_boaglio-anCuando yo me_vaya_-_carlos_boaglio-an
Cuando yo me_vaya_-_carlos_boaglio-anfranchyintercultural
 
SwissQ Agile Trends & Benchmarks 2012 (Deutsch)
 SwissQ Agile Trends & Benchmarks 2012 (Deutsch) SwissQ Agile Trends & Benchmarks 2012 (Deutsch)
SwissQ Agile Trends & Benchmarks 2012 (Deutsch)SwissQ Consulting AG
 
Las mejores ptc
Las mejores ptcLas mejores ptc
Las mejores ptcmatias9387
 
Företagspresentation 2010 Eng
Företagspresentation 2010 EngFöretagspresentation 2010 Eng
Företagspresentation 2010 Engguestdcb6f06
 
Internet, Convergencia y la Transformación de las Telcos
Internet, Convergencia y la Transformación de las TelcosInternet, Convergencia y la Transformación de las Telcos
Internet, Convergencia y la Transformación de las TelcosGuillermo Lutzky
 
Excursión Mondariz, Castillo de Villasobroso
Excursión Mondariz, Castillo de VillasobrosoExcursión Mondariz, Castillo de Villasobroso
Excursión Mondariz, Castillo de VillasobrosoAna Cebreiros
 
Fustel de coulanges and the action francaise
Fustel de coulanges and the action francaiseFustel de coulanges and the action francaise
Fustel de coulanges and the action francaisealma
 
Una evolución que no para de comunicar
Una evolución que no para de comunicarUna evolución que no para de comunicar
Una evolución que no para de comunicarUniminutoo
 
Rino ramirez-oropeza
Rino  ramirez-oropezaRino  ramirez-oropeza
Rino ramirez-oropezaGuencho Diaz
 
Fleet Challenges in the Humanitarian Community
Fleet Challenges in the Humanitarian CommunityFleet Challenges in the Humanitarian Community
Fleet Challenges in the Humanitarian Communityguest96ac6b
 

Andere mochten auch (20)

E-Book Cuentanos Tu Fitur
E-Book Cuentanos Tu FiturE-Book Cuentanos Tu Fitur
E-Book Cuentanos Tu Fitur
 
La Marca Mas Importante del Mundo
La Marca Mas Importante del MundoLa Marca Mas Importante del Mundo
La Marca Mas Importante del Mundo
 
Seafood Trade Magazine - Oct 2014 - Tạp chí Thương mại Thủy sản
Seafood Trade Magazine - Oct 2014 - Tạp chí Thương mại Thủy sảnSeafood Trade Magazine - Oct 2014 - Tạp chí Thương mại Thủy sản
Seafood Trade Magazine - Oct 2014 - Tạp chí Thương mại Thủy sản
 
Presentacion Para Plasma Ecommerce Dayv01
Presentacion Para Plasma Ecommerce Dayv01Presentacion Para Plasma Ecommerce Dayv01
Presentacion Para Plasma Ecommerce Dayv01
 
Closing Compliance Gap
Closing Compliance GapClosing Compliance Gap
Closing Compliance Gap
 
Promociones economicas febrero 2014
Promociones economicas febrero 2014Promociones economicas febrero 2014
Promociones economicas febrero 2014
 
Casa de putas
Casa de putasCasa de putas
Casa de putas
 
Cuando yo me_vaya_-_carlos_boaglio-an
Cuando yo me_vaya_-_carlos_boaglio-anCuando yo me_vaya_-_carlos_boaglio-an
Cuando yo me_vaya_-_carlos_boaglio-an
 
Atelier avis client et E-réputation
Atelier avis client et E-réputationAtelier avis client et E-réputation
Atelier avis client et E-réputation
 
SwissQ Agile Trends & Benchmarks 2012 (Deutsch)
 SwissQ Agile Trends & Benchmarks 2012 (Deutsch) SwissQ Agile Trends & Benchmarks 2012 (Deutsch)
SwissQ Agile Trends & Benchmarks 2012 (Deutsch)
 
Las mejores ptc
Las mejores ptcLas mejores ptc
Las mejores ptc
 
Företagspresentation 2010 Eng
Företagspresentation 2010 EngFöretagspresentation 2010 Eng
Företagspresentation 2010 Eng
 
Internet, Convergencia y la Transformación de las Telcos
Internet, Convergencia y la Transformación de las TelcosInternet, Convergencia y la Transformación de las Telcos
Internet, Convergencia y la Transformación de las Telcos
 
Excursión Mondariz, Castillo de Villasobroso
Excursión Mondariz, Castillo de VillasobrosoExcursión Mondariz, Castillo de Villasobroso
Excursión Mondariz, Castillo de Villasobroso
 
Fustel de coulanges and the action francaise
Fustel de coulanges and the action francaiseFustel de coulanges and the action francaise
Fustel de coulanges and the action francaise
 
Corso 11 don giovanni in sicilia
Corso 11   don giovanni in siciliaCorso 11   don giovanni in sicilia
Corso 11 don giovanni in sicilia
 
Una evolución que no para de comunicar
Una evolución que no para de comunicarUna evolución que no para de comunicar
Una evolución que no para de comunicar
 
Rino ramirez-oropeza
Rino  ramirez-oropezaRino  ramirez-oropeza
Rino ramirez-oropeza
 
Fleet Challenges in the Humanitarian Community
Fleet Challenges in the Humanitarian CommunityFleet Challenges in the Humanitarian Community
Fleet Challenges in the Humanitarian Community
 
Manual municipios docentes_web
Manual municipios docentes_webManual municipios docentes_web
Manual municipios docentes_web
 

Ähnlich wie Helping Data Teams with Puppet / Puppet Camp London - Apr 13, 2015

Py conkr 20150829_docker-python
Py conkr 20150829_docker-pythonPy conkr 20150829_docker-python
Py conkr 20150829_docker-pythonEric Ahn
 
Py conkr 20150829_docker-python
Py conkr 20150829_docker-pythonPy conkr 20150829_docker-python
Py conkr 20150829_docker-pythonEric Ahn
 
Testing TYPO3 Applications
Testing TYPO3 ApplicationsTesting TYPO3 Applications
Testing TYPO3 ApplicationsAndré Wuttig
 
Don't RTFM, WTFM - Open Source Documentation - German Perl Workshop 2010
Don't RTFM, WTFM - Open Source Documentation - German Perl Workshop 2010Don't RTFM, WTFM - Open Source Documentation - German Perl Workshop 2010
Don't RTFM, WTFM - Open Source Documentation - German Perl Workshop 2010singingfish
 
Serverless Functions and Vue.js
Serverless Functions and Vue.jsServerless Functions and Vue.js
Serverless Functions and Vue.jsSarah Drasner
 
Beyond PHP - It's not (just) about the code
Beyond PHP - It's not (just) about the codeBeyond PHP - It's not (just) about the code
Beyond PHP - It's not (just) about the codeWim Godden
 
PAC 2020 Santorin - Andreas Grabner
PAC 2020 Santorin - Andreas Grabner PAC 2020 Santorin - Andreas Grabner
PAC 2020 Santorin - Andreas Grabner Neotys
 
Curscatalyst
CurscatalystCurscatalyst
CurscatalystKar Juan
 
Perl web frameworks
Perl web frameworksPerl web frameworks
Perl web frameworksdiego_k
 
Reduce, Reuse, Refactor
Reduce, Reuse, RefactorReduce, Reuse, Refactor
Reduce, Reuse, Refactorcklosowski
 
Performance Instrumentation for PL/SQL: When, Why, How
Performance Instrumentation for PL/SQL: When, Why, HowPerformance Instrumentation for PL/SQL: When, Why, How
Performance Instrumentation for PL/SQL: When, Why, HowKaren Morton
 
PyLadies Talk: Learn to love the command line!
PyLadies Talk: Learn to love the command line!PyLadies Talk: Learn to love the command line!
PyLadies Talk: Learn to love the command line!Blanca Mancilla
 
How I Built a Power Debugger Out of the Standard Library and Things I Found o...
How I Built a Power Debugger Out of the Standard Library and Things I Found o...How I Built a Power Debugger Out of the Standard Library and Things I Found o...
How I Built a Power Debugger Out of the Standard Library and Things I Found o...doughellmann
 
Best Practices in Plugin Development (WordCamp Seattle)
Best Practices in Plugin Development (WordCamp Seattle)Best Practices in Plugin Development (WordCamp Seattle)
Best Practices in Plugin Development (WordCamp Seattle)andrewnacin
 
Nagios Conference 2014 - Rodrigo Faria - Developing your Plugin
Nagios Conference 2014 - Rodrigo Faria - Developing your PluginNagios Conference 2014 - Rodrigo Faria - Developing your Plugin
Nagios Conference 2014 - Rodrigo Faria - Developing your PluginNagios
 
Performance schema in_my_sql_5.6_pluk2013
Performance schema in_my_sql_5.6_pluk2013Performance schema in_my_sql_5.6_pluk2013
Performance schema in_my_sql_5.6_pluk2013Valeriy Kravchuk
 
SDPHP - Percona Toolkit (It's Basically Magic)
SDPHP - Percona Toolkit (It's Basically Magic)SDPHP - Percona Toolkit (It's Basically Magic)
SDPHP - Percona Toolkit (It's Basically Magic)Robert Swisher
 
EP2016 - Moving Away From Nodejs To A Pure Python Solution For Assets
EP2016 - Moving Away From Nodejs To A Pure Python Solution For AssetsEP2016 - Moving Away From Nodejs To A Pure Python Solution For Assets
EP2016 - Moving Away From Nodejs To A Pure Python Solution For AssetsAlessandro Molina
 

Ähnlich wie Helping Data Teams with Puppet / Puppet Camp London - Apr 13, 2015 (20)

Py conkr 20150829_docker-python
Py conkr 20150829_docker-pythonPy conkr 20150829_docker-python
Py conkr 20150829_docker-python
 
Py conkr 20150829_docker-python
Py conkr 20150829_docker-pythonPy conkr 20150829_docker-python
Py conkr 20150829_docker-python
 
Testing TYPO3 Applications
Testing TYPO3 ApplicationsTesting TYPO3 Applications
Testing TYPO3 Applications
 
Don't RTFM, WTFM - Open Source Documentation - German Perl Workshop 2010
Don't RTFM, WTFM - Open Source Documentation - German Perl Workshop 2010Don't RTFM, WTFM - Open Source Documentation - German Perl Workshop 2010
Don't RTFM, WTFM - Open Source Documentation - German Perl Workshop 2010
 
Serverless Functions and Vue.js
Serverless Functions and Vue.jsServerless Functions and Vue.js
Serverless Functions and Vue.js
 
Beyond PHP - It's not (just) about the code
Beyond PHP - It's not (just) about the codeBeyond PHP - It's not (just) about the code
Beyond PHP - It's not (just) about the code
 
PAC 2020 Santorin - Andreas Grabner
PAC 2020 Santorin - Andreas Grabner PAC 2020 Santorin - Andreas Grabner
PAC 2020 Santorin - Andreas Grabner
 
Curscatalyst
CurscatalystCurscatalyst
Curscatalyst
 
Perl web frameworks
Perl web frameworksPerl web frameworks
Perl web frameworks
 
Reduce, Reuse, Refactor
Reduce, Reuse, RefactorReduce, Reuse, Refactor
Reduce, Reuse, Refactor
 
Performance Instrumentation for PL/SQL: When, Why, How
Performance Instrumentation for PL/SQL: When, Why, HowPerformance Instrumentation for PL/SQL: When, Why, How
Performance Instrumentation for PL/SQL: When, Why, How
 
PyLadies Talk: Learn to love the command line!
PyLadies Talk: Learn to love the command line!PyLadies Talk: Learn to love the command line!
PyLadies Talk: Learn to love the command line!
 
How I Built a Power Debugger Out of the Standard Library and Things I Found o...
How I Built a Power Debugger Out of the Standard Library and Things I Found o...How I Built a Power Debugger Out of the Standard Library and Things I Found o...
How I Built a Power Debugger Out of the Standard Library and Things I Found o...
 
Best Practices in Plugin Development (WordCamp Seattle)
Best Practices in Plugin Development (WordCamp Seattle)Best Practices in Plugin Development (WordCamp Seattle)
Best Practices in Plugin Development (WordCamp Seattle)
 
Method::Signatures
Method::SignaturesMethod::Signatures
Method::Signatures
 
SOLID Ruby, SOLID Rails
SOLID Ruby, SOLID RailsSOLID Ruby, SOLID Rails
SOLID Ruby, SOLID Rails
 
Nagios Conference 2014 - Rodrigo Faria - Developing your Plugin
Nagios Conference 2014 - Rodrigo Faria - Developing your PluginNagios Conference 2014 - Rodrigo Faria - Developing your Plugin
Nagios Conference 2014 - Rodrigo Faria - Developing your Plugin
 
Performance schema in_my_sql_5.6_pluk2013
Performance schema in_my_sql_5.6_pluk2013Performance schema in_my_sql_5.6_pluk2013
Performance schema in_my_sql_5.6_pluk2013
 
SDPHP - Percona Toolkit (It's Basically Magic)
SDPHP - Percona Toolkit (It's Basically Magic)SDPHP - Percona Toolkit (It's Basically Magic)
SDPHP - Percona Toolkit (It's Basically Magic)
 
EP2016 - Moving Away From Nodejs To A Pure Python Solution For Assets
EP2016 - Moving Away From Nodejs To A Pure Python Solution For AssetsEP2016 - Moving Away From Nodejs To A Pure Python Solution For Assets
EP2016 - Moving Away From Nodejs To A Pure Python Solution For Assets
 

Mehr von Sergii Khomenko

Handle your Lambdas - From event-based processing to Continuous Integration /...
Handle your Lambdas - From event-based processing to Continuous Integration /...Handle your Lambdas - From event-based processing to Continuous Integration /...
Handle your Lambdas - From event-based processing to Continuous Integration /...Sergii Khomenko
 
From Data Science to Production - deploy, scale, enjoy! / PyData Amsterdam - ...
From Data Science to Production - deploy, scale, enjoy! / PyData Amsterdam - ...From Data Science to Production - deploy, scale, enjoy! / PyData Amsterdam - ...
From Data Science to Production - deploy, scale, enjoy! / PyData Amsterdam - ...Sergii Khomenko
 
Building Data applications with Go: from Bloom filters to Data pipelines / FO...
Building Data applications with Go: from Bloom filters to Data pipelines / FO...Building Data applications with Go: from Bloom filters to Data pipelines / FO...
Building Data applications with Go: from Bloom filters to Data pipelines / FO...Sergii Khomenko
 
Building data pipelines: from simple to more advanced - hands-on experience /...
Building data pipelines: from simple to more advanced - hands-on experience /...Building data pipelines: from simple to more advanced - hands-on experience /...
Building data pipelines: from simple to more advanced - hands-on experience /...Sergii Khomenko
 
Scaling up Business Intelligence from the scratch and to 15 countries worldwi...
Scaling up Business Intelligence from the scratch and to 15 countries worldwi...Scaling up Business Intelligence from the scratch and to 15 countries worldwi...
Scaling up Business Intelligence from the scratch and to 15 countries worldwi...Sergii Khomenko
 
Secure Data Scalability at Stylight with Tableau Online and Amazon Redshift /...
Secure Data Scalability at Stylight with Tableau Online and Amazon Redshift /...Secure Data Scalability at Stylight with Tableau Online and Amazon Redshift /...
Secure Data Scalability at Stylight with Tableau Online and Amazon Redshift /...Sergii Khomenko
 
Scaling your Tableau - Migrating from Tableau Online to a proper DWH solution...
Scaling your Tableau - Migrating from Tableau Online to a proper DWH solution...Scaling your Tableau - Migrating from Tableau Online to a proper DWH solution...
Scaling your Tableau - Migrating from Tableau Online to a proper DWH solution...Sergii Khomenko
 
Building Ranking Infrastructure: Data-Driven, Lean, Flexible - Sergii Khomenk...
Building Ranking Infrastructure: Data-Driven, Lean, Flexible - Sergii Khomenk...Building Ranking Infrastructure: Data-Driven, Lean, Flexible - Sergii Khomenk...
Building Ranking Infrastructure: Data-Driven, Lean, Flexible - Sergii Khomenk...Sergii Khomenko
 
From simple to more advanced: Lessons learned in 13 months with Tableau
From simple to more advanced: Lessons learned in 13 months with TableauFrom simple to more advanced: Lessons learned in 13 months with Tableau
From simple to more advanced: Lessons learned in 13 months with TableauSergii Khomenko
 
Crunching data with go: Tips, tricks, use-cases
Crunching data with go: Tips, tricks, use-casesCrunching data with go: Tips, tricks, use-cases
Crunching data with go: Tips, tricks, use-casesSergii Khomenko
 
Lean Ranking infrastructure with Solr
Lean Ranking infrastructure with SolrLean Ranking infrastructure with Solr
Lean Ranking infrastructure with SolrSergii Khomenko
 
Data Visualization with R
Data Visualization with RData Visualization with R
Data Visualization with RSergii Khomenko
 

Mehr von Sergii Khomenko (12)

Handle your Lambdas - From event-based processing to Continuous Integration /...
Handle your Lambdas - From event-based processing to Continuous Integration /...Handle your Lambdas - From event-based processing to Continuous Integration /...
Handle your Lambdas - From event-based processing to Continuous Integration /...
 
From Data Science to Production - deploy, scale, enjoy! / PyData Amsterdam - ...
From Data Science to Production - deploy, scale, enjoy! / PyData Amsterdam - ...From Data Science to Production - deploy, scale, enjoy! / PyData Amsterdam - ...
From Data Science to Production - deploy, scale, enjoy! / PyData Amsterdam - ...
 
Building Data applications with Go: from Bloom filters to Data pipelines / FO...
Building Data applications with Go: from Bloom filters to Data pipelines / FO...Building Data applications with Go: from Bloom filters to Data pipelines / FO...
Building Data applications with Go: from Bloom filters to Data pipelines / FO...
 
Building data pipelines: from simple to more advanced - hands-on experience /...
Building data pipelines: from simple to more advanced - hands-on experience /...Building data pipelines: from simple to more advanced - hands-on experience /...
Building data pipelines: from simple to more advanced - hands-on experience /...
 
Scaling up Business Intelligence from the scratch and to 15 countries worldwi...
Scaling up Business Intelligence from the scratch and to 15 countries worldwi...Scaling up Business Intelligence from the scratch and to 15 countries worldwi...
Scaling up Business Intelligence from the scratch and to 15 countries worldwi...
 
Secure Data Scalability at Stylight with Tableau Online and Amazon Redshift /...
Secure Data Scalability at Stylight with Tableau Online and Amazon Redshift /...Secure Data Scalability at Stylight with Tableau Online and Amazon Redshift /...
Secure Data Scalability at Stylight with Tableau Online and Amazon Redshift /...
 
Scaling your Tableau - Migrating from Tableau Online to a proper DWH solution...
Scaling your Tableau - Migrating from Tableau Online to a proper DWH solution...Scaling your Tableau - Migrating from Tableau Online to a proper DWH solution...
Scaling your Tableau - Migrating from Tableau Online to a proper DWH solution...
 
Building Ranking Infrastructure: Data-Driven, Lean, Flexible - Sergii Khomenk...
Building Ranking Infrastructure: Data-Driven, Lean, Flexible - Sergii Khomenk...Building Ranking Infrastructure: Data-Driven, Lean, Flexible - Sergii Khomenk...
Building Ranking Infrastructure: Data-Driven, Lean, Flexible - Sergii Khomenk...
 
From simple to more advanced: Lessons learned in 13 months with Tableau
From simple to more advanced: Lessons learned in 13 months with TableauFrom simple to more advanced: Lessons learned in 13 months with Tableau
From simple to more advanced: Lessons learned in 13 months with Tableau
 
Crunching data with go: Tips, tricks, use-cases
Crunching data with go: Tips, tricks, use-casesCrunching data with go: Tips, tricks, use-cases
Crunching data with go: Tips, tricks, use-cases
 
Lean Ranking infrastructure with Solr
Lean Ranking infrastructure with SolrLean Ranking infrastructure with Solr
Lean Ranking infrastructure with Solr
 
Data Visualization with R
Data Visualization with RData Visualization with R
Data Visualization with R
 

Kürzlich hochgeladen

Call Girls Indiranagar Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
Call Girls Indiranagar Just Call 👗 7737669865 👗 Top Class Call Girl Service B...Call Girls Indiranagar Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
Call Girls Indiranagar Just Call 👗 7737669865 👗 Top Class Call Girl Service B...amitlee9823
 
Midocean dropshipping via API with DroFx
Midocean dropshipping via API with DroFxMidocean dropshipping via API with DroFx
Midocean dropshipping via API with DroFxolyaivanovalion
 
Carero dropshipping via API with DroFx.pptx
Carero dropshipping via API with DroFx.pptxCarero dropshipping via API with DroFx.pptx
Carero dropshipping via API with DroFx.pptxolyaivanovalion
 
BigBuy dropshipping via API with DroFx.pptx
BigBuy dropshipping via API with DroFx.pptxBigBuy dropshipping via API with DroFx.pptx
BigBuy dropshipping via API with DroFx.pptxolyaivanovalion
 
FESE Capital Markets Fact Sheet 2024 Q1.pdf
FESE Capital Markets Fact Sheet 2024 Q1.pdfFESE Capital Markets Fact Sheet 2024 Q1.pdf
FESE Capital Markets Fact Sheet 2024 Q1.pdfMarinCaroMartnezBerg
 
Smarteg dropshipping via API with DroFx.pptx
Smarteg dropshipping via API with DroFx.pptxSmarteg dropshipping via API with DroFx.pptx
Smarteg dropshipping via API with DroFx.pptxolyaivanovalion
 
BDSM⚡Call Girls in Mandawali Delhi >༒8448380779 Escort Service
BDSM⚡Call Girls in Mandawali Delhi >༒8448380779 Escort ServiceBDSM⚡Call Girls in Mandawali Delhi >༒8448380779 Escort Service
BDSM⚡Call Girls in Mandawali Delhi >༒8448380779 Escort ServiceDelhi Call girls
 
VIP Model Call Girls Hinjewadi ( Pune ) Call ON 8005736733 Starting From 5K t...
VIP Model Call Girls Hinjewadi ( Pune ) Call ON 8005736733 Starting From 5K t...VIP Model Call Girls Hinjewadi ( Pune ) Call ON 8005736733 Starting From 5K t...
VIP Model Call Girls Hinjewadi ( Pune ) Call ON 8005736733 Starting From 5K t...SUHANI PANDEY
 
Call Girls Hsr Layout Just Call 👗 7737669865 👗 Top Class Call Girl Service Ba...
Call Girls Hsr Layout Just Call 👗 7737669865 👗 Top Class Call Girl Service Ba...Call Girls Hsr Layout Just Call 👗 7737669865 👗 Top Class Call Girl Service Ba...
Call Girls Hsr Layout Just Call 👗 7737669865 👗 Top Class Call Girl Service Ba...amitlee9823
 
Mature dropshipping via API with DroFx.pptx
Mature dropshipping via API with DroFx.pptxMature dropshipping via API with DroFx.pptx
Mature dropshipping via API with DroFx.pptxolyaivanovalion
 
ELKO dropshipping via API with DroFx.pptx
ELKO dropshipping via API with DroFx.pptxELKO dropshipping via API with DroFx.pptx
ELKO dropshipping via API with DroFx.pptxolyaivanovalion
 
Generative AI on Enterprise Cloud with NiFi and Milvus
Generative AI on Enterprise Cloud with NiFi and MilvusGenerative AI on Enterprise Cloud with NiFi and Milvus
Generative AI on Enterprise Cloud with NiFi and MilvusTimothy Spann
 
VidaXL dropshipping via API with DroFx.pptx
VidaXL dropshipping via API with DroFx.pptxVidaXL dropshipping via API with DroFx.pptx
VidaXL dropshipping via API with DroFx.pptxolyaivanovalion
 
Accredited-Transport-Cooperatives-Jan-2021-Web.pdf
Accredited-Transport-Cooperatives-Jan-2021-Web.pdfAccredited-Transport-Cooperatives-Jan-2021-Web.pdf
Accredited-Transport-Cooperatives-Jan-2021-Web.pdfadriantubila
 
Invezz.com - Grow your wealth with trading signals
Invezz.com - Grow your wealth with trading signalsInvezz.com - Grow your wealth with trading signals
Invezz.com - Grow your wealth with trading signalsInvezz1
 

Kürzlich hochgeladen (20)

Call Girls Indiranagar Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
Call Girls Indiranagar Just Call 👗 7737669865 👗 Top Class Call Girl Service B...Call Girls Indiranagar Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
Call Girls Indiranagar Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
 
Midocean dropshipping via API with DroFx
Midocean dropshipping via API with DroFxMidocean dropshipping via API with DroFx
Midocean dropshipping via API with DroFx
 
Call Girls In Shalimar Bagh ( Delhi) 9953330565 Escorts Service
Call Girls In Shalimar Bagh ( Delhi) 9953330565 Escorts ServiceCall Girls In Shalimar Bagh ( Delhi) 9953330565 Escorts Service
Call Girls In Shalimar Bagh ( Delhi) 9953330565 Escorts Service
 
Sampling (random) method and Non random.ppt
Sampling (random) method and Non random.pptSampling (random) method and Non random.ppt
Sampling (random) method and Non random.ppt
 
Carero dropshipping via API with DroFx.pptx
Carero dropshipping via API with DroFx.pptxCarero dropshipping via API with DroFx.pptx
Carero dropshipping via API with DroFx.pptx
 
BigBuy dropshipping via API with DroFx.pptx
BigBuy dropshipping via API with DroFx.pptxBigBuy dropshipping via API with DroFx.pptx
BigBuy dropshipping via API with DroFx.pptx
 
FESE Capital Markets Fact Sheet 2024 Q1.pdf
FESE Capital Markets Fact Sheet 2024 Q1.pdfFESE Capital Markets Fact Sheet 2024 Q1.pdf
FESE Capital Markets Fact Sheet 2024 Q1.pdf
 
Smarteg dropshipping via API with DroFx.pptx
Smarteg dropshipping via API with DroFx.pptxSmarteg dropshipping via API with DroFx.pptx
Smarteg dropshipping via API with DroFx.pptx
 
BDSM⚡Call Girls in Mandawali Delhi >༒8448380779 Escort Service
BDSM⚡Call Girls in Mandawali Delhi >༒8448380779 Escort ServiceBDSM⚡Call Girls in Mandawali Delhi >༒8448380779 Escort Service
BDSM⚡Call Girls in Mandawali Delhi >༒8448380779 Escort Service
 
VIP Model Call Girls Hinjewadi ( Pune ) Call ON 8005736733 Starting From 5K t...
VIP Model Call Girls Hinjewadi ( Pune ) Call ON 8005736733 Starting From 5K t...VIP Model Call Girls Hinjewadi ( Pune ) Call ON 8005736733 Starting From 5K t...
VIP Model Call Girls Hinjewadi ( Pune ) Call ON 8005736733 Starting From 5K t...
 
(NEHA) Call Girls Katra Call Now 8617697112 Katra Escorts 24x7
(NEHA) Call Girls Katra Call Now 8617697112 Katra Escorts 24x7(NEHA) Call Girls Katra Call Now 8617697112 Katra Escorts 24x7
(NEHA) Call Girls Katra Call Now 8617697112 Katra Escorts 24x7
 
CHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Saket (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Anomaly detection and data imputation within time series
Anomaly detection and data imputation within time seriesAnomaly detection and data imputation within time series
Anomaly detection and data imputation within time series
 
Call Girls Hsr Layout Just Call 👗 7737669865 👗 Top Class Call Girl Service Ba...
Call Girls Hsr Layout Just Call 👗 7737669865 👗 Top Class Call Girl Service Ba...Call Girls Hsr Layout Just Call 👗 7737669865 👗 Top Class Call Girl Service Ba...
Call Girls Hsr Layout Just Call 👗 7737669865 👗 Top Class Call Girl Service Ba...
 
Mature dropshipping via API with DroFx.pptx
Mature dropshipping via API with DroFx.pptxMature dropshipping via API with DroFx.pptx
Mature dropshipping via API with DroFx.pptx
 
ELKO dropshipping via API with DroFx.pptx
ELKO dropshipping via API with DroFx.pptxELKO dropshipping via API with DroFx.pptx
ELKO dropshipping via API with DroFx.pptx
 
Generative AI on Enterprise Cloud with NiFi and Milvus
Generative AI on Enterprise Cloud with NiFi and MilvusGenerative AI on Enterprise Cloud with NiFi and Milvus
Generative AI on Enterprise Cloud with NiFi and Milvus
 
VidaXL dropshipping via API with DroFx.pptx
VidaXL dropshipping via API with DroFx.pptxVidaXL dropshipping via API with DroFx.pptx
VidaXL dropshipping via API with DroFx.pptx
 
Accredited-Transport-Cooperatives-Jan-2021-Web.pdf
Accredited-Transport-Cooperatives-Jan-2021-Web.pdfAccredited-Transport-Cooperatives-Jan-2021-Web.pdf
Accredited-Transport-Cooperatives-Jan-2021-Web.pdf
 
Invezz.com - Grow your wealth with trading signals
Invezz.com - Grow your wealth with trading signalsInvezz.com - Grow your wealth with trading signals
Invezz.com - Grow your wealth with trading signals
 

Helping Data Teams with Puppet / Puppet Camp London - Apr 13, 2015

  • 1. S T Y L I G H T . C O M Helping Data Teams with Puppet S T Y L I G H T . C O M S E R G I I K H O M E N K O , D A T A S C I E N T I S T , S E R G I I . K H O M E N K O @ S T Y L I G H T . C O M , @ l c 0 d 3 r
  • 2. W h o ? W h a t ? W h y ? S e t t i n g u p y o u r B I w i t h p u p p e t . S m a l l t i p s a n d t r i c k s P u p p e t y o u r r a n k i n g A G E N D A
  • 3. Data scientist at one of the biggest fashion communities, STYLIGHT. Data analysis and visualization hobbyist. Speaker at Berlin Buzzwords 2014, ApacheCon Europe 2014 Founder and speaker at Munich Golang UG, Munich Tableau UG. Speaker at Munich UseR Group, Munich Search UG, Munich Quantified Self UG. Sergii Khomenko Milos Radovanovic Passionate about DevOps stuff: 1. microservices 2. docker 3. 12 factor apps 4. continuous integration/deployment
  • 4.
  • 5.
  • 6. L i v e i n 1 2 c o u n t r i e s STYLIGHT – international community
  • 7. S T Y L I G H T . C O M Setting up your BI with puppet.
  • 8. T a b l e a u - r e p o r t i n g a n d a d - h o c s P y t h o n / T a l e n d E T L t o o l s Minimum Viable BI
  • 9. R U N N I N G P U P P E T I N A S T A N D A L O N E M O D E Minimum Viable BI We use Puppet for *nix servers and can’t merge with Windows machine Standalone mode for Puppet – easier to start and develop – windows machines are separated from *nix ones
  • 10. R U N N I N G P U P P E T I N A S T A N D A L O N E M O D E Minimum Viable BI cd c:folderwithour-bi git pull origin master IF %ERRORLEVEL% NEQ 0 set context=GIT_FAILURE && goto error_handler puppet apply --modulepath=puppetmodules puppetwin- node-name.net.pp IF %ERRORLEVEL% NEQ 0 set context=PUPPET_FAILURE && goto error_handler goto end
  • 11. R U N N I N G P U P P E T I N A S T A N D A L O N E M O D E Minimum Viable BI :error_handler echo entering error_handler EVENTCREATE /T ERROR /L APPLICATION /SO Puppet_Scheduler /ID 100 /D "EXECUTION FAILED REASON %context%" goto end :end echo DONE
  • 12. Minimum Viable BI Standalone mode for Puppet – configuration is totally separated – custom modules --modulepath=puppetmodules –  Github hosted configuration –  Error handling via Windows event log R U N N I N G P U P P E T I N A S T A N D A L O N E M O D E
  • 13. Minimum Viable BI node  'ʹwin-­‐‑node-­‐‑name.net'ʹ  {        scheduled_task  {'ʹrefresh-­‐‑1'ʹ:            ensure        =>  present,            enabled      =>  true,            command      =>  'ʹC:pathtoyourscript.bat'ʹ,            arguments  =>  'ʹsome  args  'ʹ,             S C H E D U L I N G I S I M P O R T A N T
  • 14. Minimum Viable BI            user  =>  'ʹyour-­‐‑user'ʹ,            password  =>  'ʹyour-­‐‑password'ʹ,            trigger      =>  {                schedule      =>  daily,                start_time  =>  'ʹ06:00'ʹ,            }        } S C H E D U L I N G I S I M P O R T A N T
  • 15. Minimum Viable BI # Can't use the Puppet's scheduled_task as it does not support to run the schedule task every 5 minutes. https://github.com/sdliangzhihua/windows-puppet- example/blob/master/manifest.pp#L68 S Y N C M Y C O N F I G U R A T I O N E V E R Y 1 5 M I N
  • 16. Minimum Viable BI $cmd = 'C:Windowssystem32cmd.exe' $job_name = 'sync_code' exec { 'CreateCodeSyncScheduledTask': command => "${cmd} /C schtasks /create /sc MINUTE /mo 15 /tn ${job_name} /tr C:your puppet.bat /ru administrator /f", onlyif => ["${cmd} /C schtasks /query /tn ${job_name} & if errorlevel 1 (exit /b 0) else exit /b 1"], S Y N C M Y C O N F I G U R A T I O N E V E R Y 1 5 M I N
  • 17. S T Y L I G H T . C O M Small tips and tricks do  not  repeat  yourself  and  other  tricks
  • 18. Minimum Viable BI node  'ʹwin-­‐‑node-­‐‑name.net'ʹ  {        scheduled_task  {'ʹrefresh-­‐‑1'ʹ:            ensure        =>  present,            enabled      =>  true,            command      =>  'ʹC:pathtoyourscript.bat'ʹ,            arguments  =>  'ʹsome  args  'ʹ,             S C H E D U L I N G I S I M P O R T A N T
  • 19. Small tips and tricks class  job_scheduler(        $ensure                        =  $job_scheduler::params::ensure,        $enabled                    =  $job_scheduler::params::enabled,        $user                                =  $job_scheduler::params::user,        $password              =  $job_scheduler::params::password,        $working_dir    =  $job_scheduler::params::working_dir, )inherits  job_scheduler::params{ }
  • 20. Small tips and tricks define  job_scheduler::job (        $arguments              ='ʹtableau_adobe.py'ʹ,        $command                  ='ʹc:Py27-­‐‑32python.exe'ʹ,        $schedule_type      ='ʹdaily'ʹ,        $start_time            ='ʹ08:15'ʹ,        $day_of_week          ='ʹevery'ʹ, ) {
  • 21. Small tips and tricks define  job_scheduler::tableau_job (        $arguments              ='ʹdefault-­‐‑tableau'ʹ,        $command                  ='ʹc:foldertableau.bat'ʹ,        $schedule_type      ='ʹdaily'ʹ,        $start_time            ='ʹ21:00'ʹ,        $day_of_week          ='ʹevery'ʹ, ) {
  • 22. Small tips and tricks # Params with default values for the tableau job # that might be changed in a job definition # # 1. $arguments ='default-argument', # 2. $command ='c:folderscript.bat', # 3. $schedule_type ='daily', # 4. $start_time ='21:00', # 5. $day_of_week ='every', ####################
  • 23. Small tips and tricks job_scheduler::tableau_job { ’some job': start_time => '01:00', arguments => ’args'; ’default refresh-1': start_time => '06:00'; 'default refresh-2': start_time => '10:00'; 'weekly update': start_time => '03:35', arguments => 'weekly-update', schedule_type => weekly, day_of_week => ['mon']; }
  • 24. Small tips and tricks job_scheduler::redshift_job  {            'ʹRS  tagged  products'ʹ:                  start_time  =>  'ʹ00:40'ʹ,  params  =>   'ʹ..datasourcessomething.tds'ʹ;            'ʹRS  another  job'ʹ:  start_time  =>  'ʹ00:50'ʹ,  params  =>  'ʹ.. datasourceselse.tds'ʹ
  • 25. S T Y L I G H T . C O M Puppet your ranking Lean,  flexible,  powerful
  • 26. A r a n k i n g i s a r e l a t i o n s h i p b e t w e e n a s e t o f i t e m s s u c h t h a t , f o r a n y t w o i t e m s , t h e f i r s t i s e i t h e r ' r a n k e d h i g h e r t h a n ' , ' r a n k e d l o w e r t h a n ' o r ' r a n k e d e q u a l t o ' t h e s e c o n d .
  • 27. Ranking specifics: •  Seasonal influence •  Trends •  Cold start of new countries, shops •  Multiple dimensions of ranking model
  • 28. Requirements: •  Decreasing time to implement new ranking model •  Keeping working infrastructure alive •  A/B testing without changing entire infrastructure •  Performance level - “still fast” and “transparent” Lean approach to Ranking M u l t i p l e p o i n t s o f e v a l u a t i o n
  • 29. Jboss Solr-loadbalancer nginx Solr nginx Solr nginx Solr Common search infrastructure
  • 30. Updated infrastructure Jboss Solr-loadbalancer nginx Solr nginx Solr nginx Solr Jboss Solr-loadbalancer nginx Solr Front-end loadbalancer
  • 31. q = +brand:adidas shop:monshowroom^3 q = +adidas monshowroom defType = dismax qf = brand shop^3 sort = user_ratings desc, score desc qq = adidas q = {!boost b=$b defType=dismax v=$qq} b = prod(popularity, clicks) Lean approach to Ranking
  • 32. Lean approach to Ranking solr0x.node.company.pp include nginx nginx::config { "solr_dev": } nginx::solr-ranking { "delta2": urls => [ “/some.thing? gender=women&brand=2271&tag=1161&tag=877&tag=468", "/some.thing? gender=men&brand=11235&tag=10203&tag=10299&tag=10326" ],
  • 33. Lean approach to Ranking <% urls.each do |url| -%> if ($args ~* <% if url['gender'] > 0 -%>gender_id%3A< %= url['gender'] %>.*<% end -%><% url['tags'].each do |tag| -%>tag_id%3A<%= tag %>.*<% end -%><% if url['brand'] > 0 -%>brand_id%3A%28<%= url['brand'] %>%29<% end -%>) { set $orig $args; set $args "q={!boost+b=%24b+defType=dismax+v= %24qq}&qq=id:*"; rewrite ^(.*)$ "$1?$orig" break; } <% end -%> nginx / templates / conf / solr-rewrites.conf.erb
  • 34. Stages to evaluate a model: •  R ranking model •  Independent Solr-node 1.  For internal use-cases 2.  Testing for some of pages 3.  A/B roll out for % of users •  Production roll out Lean approach to Ranking M u l t i p l e p o i n t s o f e v a l u a t i o n
  • 36. S T Y L I G H T . C O M Sergii Khomenko Data Scientist STYLIGHT GmbH sergii.khomenko@stylight.com @lc0d3r Nymphenburger Straße 86 80636 Munich, Germany