SlideShare uma empresa Scribd logo
1 de 36
Baixar para ler offline
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

Mais conteúdo relacionado

Mais procurados

Mais procurados (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
 

Destaque

Informe sostenibilidad 09
Informe sostenibilidad 09Informe sostenibilidad 09
Informe sostenibilidad 09pozos12
 
Metodología de desarrollo multimedia
Metodología de desarrollo multimediaMetodología de desarrollo multimedia
Metodología de desarrollo multimediaElvin Hernandez
 
13. ve tu a saber hoja de vida
13. ve tu a saber hoja de vida13. ve tu a saber hoja de vida
13. ve tu a saber hoja de vidaJulián Carreño
 
Liquid Opportunities: Barcelona International Sailing Essentials (ENG)
Liquid Opportunities: Barcelona International Sailing Essentials (ENG)Liquid Opportunities: Barcelona International Sailing Essentials (ENG)
Liquid Opportunities: Barcelona International Sailing Essentials (ENG)Laia Tutzo
 
Mada ralph paglia recruit screen hire
Mada ralph paglia recruit screen hireMada ralph paglia recruit screen hire
Mada ralph paglia recruit screen hireRalph Paglia
 
Nitrogen Cycling Processes Across an Oyster Aquaculture Chronosequence
Nitrogen Cycling Processes Across an Oyster Aquaculture ChronosequenceNitrogen Cycling Processes Across an Oyster Aquaculture Chronosequence
Nitrogen Cycling Processes Across an Oyster Aquaculture Chronosequenceriseagrant
 
Guerra Fria 2
Guerra Fria 2Guerra Fria 2
Guerra Fria 2san_kart
 
Jobs And Economic Development2011
Jobs And Economic Development2011Jobs And Economic Development2011
Jobs And Economic Development2011Gary Crossley
 
Disey03
Disey03Disey03
Disey03urir9
 
Como diferenciar tu tienda online de la competencia a través del SEO
Como diferenciar tu tienda online de la competencia a través del SEOComo diferenciar tu tienda online de la competencia a través del SEO
Como diferenciar tu tienda online de la competencia a través del SEOOptimizedStores
 
Tarea Específica Nº 2
Tarea Específica Nº 2Tarea Específica Nº 2
Tarea Específica Nº 2Fe R M
 
La Commune de Cugand (85)
La Commune de Cugand (85)La Commune de Cugand (85)
La Commune de Cugand (85)Alexandra855
 
Form pendaftaran OLIMPIADE EKSYAR KSEI FE UNJ (SELEB 7)
Form pendaftaran OLIMPIADE EKSYAR KSEI FE UNJ (SELEB 7)Form pendaftaran OLIMPIADE EKSYAR KSEI FE UNJ (SELEB 7)
Form pendaftaran OLIMPIADE EKSYAR KSEI FE UNJ (SELEB 7)kseifeunj
 

Destaque (20)

Informe sostenibilidad 09
Informe sostenibilidad 09Informe sostenibilidad 09
Informe sostenibilidad 09
 
Mobil Texnologiyalar
Mobil TexnologiyalarMobil Texnologiyalar
Mobil Texnologiyalar
 
Metodología de desarrollo multimedia
Metodología de desarrollo multimediaMetodología de desarrollo multimedia
Metodología de desarrollo multimedia
 
6th MuscleTech Workshop 2014
6th MuscleTech Workshop 20146th MuscleTech Workshop 2014
6th MuscleTech Workshop 2014
 
13. ve tu a saber hoja de vida
13. ve tu a saber hoja de vida13. ve tu a saber hoja de vida
13. ve tu a saber hoja de vida
 
Liquid Opportunities: Barcelona International Sailing Essentials (ENG)
Liquid Opportunities: Barcelona International Sailing Essentials (ENG)Liquid Opportunities: Barcelona International Sailing Essentials (ENG)
Liquid Opportunities: Barcelona International Sailing Essentials (ENG)
 
Mada ralph paglia recruit screen hire
Mada ralph paglia recruit screen hireMada ralph paglia recruit screen hire
Mada ralph paglia recruit screen hire
 
Nitrogen Cycling Processes Across an Oyster Aquaculture Chronosequence
Nitrogen Cycling Processes Across an Oyster Aquaculture ChronosequenceNitrogen Cycling Processes Across an Oyster Aquaculture Chronosequence
Nitrogen Cycling Processes Across an Oyster Aquaculture Chronosequence
 
Guerra Fria 2
Guerra Fria 2Guerra Fria 2
Guerra Fria 2
 
Jobs And Economic Development2011
Jobs And Economic Development2011Jobs And Economic Development2011
Jobs And Economic Development2011
 
Biohort Katalog 2011
Biohort Katalog 2011Biohort Katalog 2011
Biohort Katalog 2011
 
Desayuno ii alcorcon concilia
Desayuno ii alcorcon conciliaDesayuno ii alcorcon concilia
Desayuno ii alcorcon concilia
 
Disey03
Disey03Disey03
Disey03
 
Practica8
Practica8Practica8
Practica8
 
Como diferenciar tu tienda online de la competencia a través del SEO
Como diferenciar tu tienda online de la competencia a través del SEOComo diferenciar tu tienda online de la competencia a través del SEO
Como diferenciar tu tienda online de la competencia a través del SEO
 
Física 2 trabajo primer parcial
Física 2 trabajo primer parcialFísica 2 trabajo primer parcial
Física 2 trabajo primer parcial
 
Diccionario pictorico
Diccionario pictoricoDiccionario pictorico
Diccionario pictorico
 
Tarea Específica Nº 2
Tarea Específica Nº 2Tarea Específica Nº 2
Tarea Específica Nº 2
 
La Commune de Cugand (85)
La Commune de Cugand (85)La Commune de Cugand (85)
La Commune de Cugand (85)
 
Form pendaftaran OLIMPIADE EKSYAR KSEI FE UNJ (SELEB 7)
Form pendaftaran OLIMPIADE EKSYAR KSEI FE UNJ (SELEB 7)Form pendaftaran OLIMPIADE EKSYAR KSEI FE UNJ (SELEB 7)
Form pendaftaran OLIMPIADE EKSYAR KSEI FE UNJ (SELEB 7)
 

Semelhante a Puppet Camp London 2015 - Helping Data Teams with Puppet

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
 

Semelhante a Puppet Camp London 2015 - Helping Data Teams with Puppet (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
 

Mais de Puppet

Puppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepoPuppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepoPuppet
 
Puppetcamp r10kyaml
Puppetcamp r10kyamlPuppetcamp r10kyaml
Puppetcamp r10kyamlPuppet
 
2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)Puppet
 
Puppet camp vscode
Puppet camp vscodePuppet camp vscode
Puppet camp vscodePuppet
 
Modules of the twenties
Modules of the twentiesModules of the twenties
Modules of the twentiesPuppet
 
Applying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance codeApplying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance codePuppet
 
KGI compliance as-code approach
KGI compliance as-code approachKGI compliance as-code approach
KGI compliance as-code approachPuppet
 
Enforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationEnforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationPuppet
 
Keynote: Puppet camp compliance
Keynote: Puppet camp complianceKeynote: Puppet camp compliance
Keynote: Puppet camp compliancePuppet
 
Automating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNowAutomating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNowPuppet
 
Puppet: The best way to harden Windows
Puppet: The best way to harden WindowsPuppet: The best way to harden Windows
Puppet: The best way to harden WindowsPuppet
 
Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020Puppet
 
Accelerating azure adoption with puppet
Accelerating azure adoption with puppetAccelerating azure adoption with puppet
Accelerating azure adoption with puppetPuppet
 
Puppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael PinsonPuppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael PinsonPuppet
 
ServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkPuppet
 
Take control of your dev ops dumping ground
Take control of your  dev ops dumping groundTake control of your  dev ops dumping ground
Take control of your dev ops dumping groundPuppet
 
100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy SoftwarePuppet
 
Puppet User Group
Puppet User GroupPuppet User Group
Puppet User GroupPuppet
 
Continuous Compliance and DevSecOps
Continuous Compliance and DevSecOpsContinuous Compliance and DevSecOps
Continuous Compliance and DevSecOpsPuppet
 
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick MaludyThe Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick MaludyPuppet
 

Mais de Puppet (20)

Puppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepoPuppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepo
 
Puppetcamp r10kyaml
Puppetcamp r10kyamlPuppetcamp r10kyaml
Puppetcamp r10kyaml
 
2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)
 
Puppet camp vscode
Puppet camp vscodePuppet camp vscode
Puppet camp vscode
 
Modules of the twenties
Modules of the twentiesModules of the twenties
Modules of the twenties
 
Applying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance codeApplying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance code
 
KGI compliance as-code approach
KGI compliance as-code approachKGI compliance as-code approach
KGI compliance as-code approach
 
Enforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationEnforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automation
 
Keynote: Puppet camp compliance
Keynote: Puppet camp complianceKeynote: Puppet camp compliance
Keynote: Puppet camp compliance
 
Automating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNowAutomating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNow
 
Puppet: The best way to harden Windows
Puppet: The best way to harden WindowsPuppet: The best way to harden Windows
Puppet: The best way to harden Windows
 
Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020
 
Accelerating azure adoption with puppet
Accelerating azure adoption with puppetAccelerating azure adoption with puppet
Accelerating azure adoption with puppet
 
Puppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael PinsonPuppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael Pinson
 
ServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin Reeuwijk
 
Take control of your dev ops dumping ground
Take control of your  dev ops dumping groundTake control of your  dev ops dumping ground
Take control of your dev ops dumping ground
 
100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software
 
Puppet User Group
Puppet User GroupPuppet User Group
Puppet User Group
 
Continuous Compliance and DevSecOps
Continuous Compliance and DevSecOpsContinuous Compliance and DevSecOps
Continuous Compliance and DevSecOps
 
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick MaludyThe Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
 

Último

10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024Mind IT Systems
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesVictorSzoltysek
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfVishalKumarJha10
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfproinshot.com
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...software pro Development
 

Último (20)

10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 

Puppet Camp London 2015 - Helping Data Teams with Puppet

  • 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