SlideShare une entreprise Scribd logo
1  sur  22
Télécharger pour lire hors ligne
11/20/2015 Reproducibility of your development environment
http://localhost:4567/slides/environments.html#/?pdf-print 1/1
| |PyData2015 ContinuumAnalytics malev
Reproducibility of your
development environment
by / /
PyData NYC 2015
Marcos Vanetta @malev Continuum Analytics
| |PyData2015 ContinuumAnalytics malev
Marcos Vanetta ( )
Powered by tacos
Sponsored by Continuum Analytics
@malev
| |PyData2015 ContinuumAnalytics malev
Reproducibility
Reproducibility is the ability of an entire experiment or study to be
duplicated, either by the same researcher or by someone else working
independently.
| |PyData2015 ContinuumAnalytics malev
Development Environment
A computer system in which a computer program or software
component is deployed and executed.
A development environment is a collection of procedures and
tools for developing, testing and debugging an application or
program.
A development environment contains everything required by
a team to build and deploy software-intensive systems.
| |PyData2015 ContinuumAnalytics malev
Components
Method
Tools
Enablement
Organization
Infrastructure
Adoption
| |PyData2015 ContinuumAnalytics malev
Components
Method
Tools
Enablement
Organization
Infrastructure
Adoption
| |PyData2015 ContinuumAnalytics malev
Method
Roles, work products, tasks, and processes
Standards, guidelines, checklists, templates, and examples
Deployment topology
| |PyData2015 ContinuumAnalytics malev
Tools
Development tools and their integrations
Development tool configurations and installation scripts
Deployment topology, which considers the software and
hardware required
| |PyData2015 ContinuumAnalytics malev
Infrastructure
A development environment considers infrastructure in terms
of both hardware and software.
Locations, nodes, and connectivity
Software (such as operating systems, database management
systems, board-level controls, and test harnesses).
| |PyData2015 ContinuumAnalytics malev
How do we work with data?
Everything is production
Everything is NOT production
Multi-language
Local | Cloud | both
Data ~Gb | Data ~Tb | ...
| |PyData2015 ContinuumAnalytics malev
What do we want to reproduce?
Coding and documentation styles
Software dependencies (libraries, databases, etc.)
Configuration files and environmental variables
Data (dummy data and real data)
Keys (aws, ssh, etc)
| |PyData2015 ContinuumAnalytics malev
Coding and documentation styles
Coding styles
Linter ( , , , , etc)
IDE configuration
pep8 flake8 YAPF AirBnB JS Styleguide
EditorConfig
Sphinx MkDocs
| |PyData2015 ContinuumAnalytics malev
Dependencies
Database engines
Installation instructions
Schema
Configuration
Dummy data
Docker or Vagrant
Makefiles or bash scripts
SaaS
Migrations
Automate
| |PyData2015 ContinuumAnalytics malev
Dependencies: libraries
pip conda
Lot of packages Data packages mostrly
~ Multi platform Multi platform
Not so fast Fast
Included in Anaconda Included in Anaconda
Consider tools like or .pipreqs defrost
| |PyData2015 ContinuumAnalytics malev
Exporting your dependencies with pip
Reusing an environment
Keep it simple
$pipfreeze>requirements.txt
$catrequirements.txt
requests==2.8.1
virtualenv==13.0.1
wheel==0.26.0
$virtualenv.my-env
$source.my-env/bin/activate
(my-env)$pipinstall-rrequirements.txt
| |PyData2015 ContinuumAnalytics malev
Exporting your dependencies with conda
Reusing with conda
Keep it simple
$condaenvexport-nplease-work-fenvironment.yml
$catenvironment.yml
name:my-project
dependencies:
-bokeh=0.8.0=np19py27_0
-colorama=0.3.3=py27_0
-pip:
-flask
$condaenvcreate
...
$sourceactivatemy-project
discarding/Users/mvanetta/miniconda/binfromPATH
prepending/Users/mvanetta/miniconda/envs/my-project/bintoPATH
(my-project)$
| |PyData2015 ContinuumAnalytics malev
Using pill
$condainstallpilldeps-cmalev
$pillinit
$sourcepillin
$depsinstall
$sourcepillout
$rm-rf.pill
| |PyData2015 ContinuumAnalytics malev
Working with notebooks
Reusing your notebook
$condacreate-nproject
$condainstall-ybokehpandasjupyter
$ipythonnotebookiris.ipynb
$condaenvattach-nirisiris.ipynb
$anacondanotebookuploadiris.ipynb
$anacondanotebookdownloadmalev/iris
$condaenvcreateiris.ipynb
$sourceactivateiris
$ipythonnotebookiris.ipynb
| |PyData2015 ContinuumAnalytics malev
Configuration files and environmental variables
Essential part of configuration management
yaml, ini, json files
Generally stored in programmer's brains
Attach to the repo, document, use tools like
and automate.autoenv
| |PyData2015 ContinuumAnalytics malev
keys
Security concerns
Don't put it in the repo
Talk to your IT department
| |PyData2015 ContinuumAnalytics malev
Conclusions
We still have some work to do
We have a lot of manual work
It is an expensive process
| |PyData2015 ContinuumAnalytics malev
Questions

Contenu connexe

En vedette

Can Your Web Hosting Survive The Digg Effect?
Can Your Web Hosting Survive The Digg Effect?Can Your Web Hosting Survive The Digg Effect?
Can Your Web Hosting Survive The Digg Effect?Sharksfly Marketing Inc.
 
Туберкулез: иллюстрированная история болезни
Туберкулез: иллюстрированная история болезни Туберкулез: иллюстрированная история болезни
Туберкулез: иллюстрированная история болезни Tania Evlampieva
 
State of Local Search Today - Social Goes Local
State of Local Search Today - Social Goes LocalState of Local Search Today - Social Goes Local
State of Local Search Today - Social Goes LocalSharksfly Marketing Inc.
 

En vedette (6)

Can Your Web Hosting Survive The Digg Effect?
Can Your Web Hosting Survive The Digg Effect?Can Your Web Hosting Survive The Digg Effect?
Can Your Web Hosting Survive The Digg Effect?
 
Туберкулез: иллюстрированная история болезни
Туберкулез: иллюстрированная история болезни Туберкулез: иллюстрированная история болезни
Туберкулез: иллюстрированная история болезни
 
State of Local Search Today - Social Goes Local
State of Local Search Today - Social Goes LocalState of Local Search Today - Social Goes Local
State of Local Search Today - Social Goes Local
 
2016 Lavorare Felici NEW
2016 Lavorare Felici NEW2016 Lavorare Felici NEW
2016 Lavorare Felici NEW
 
Guía capas de la tierra
Guía capas de la tierraGuía capas de la tierra
Guía capas de la tierra
 
Mongodb With Mongoid
Mongodb With MongoidMongodb With Mongoid
Mongodb With Mongoid
 

Similaire à Reproducibility of Development Environments

Taking AppSec to 11: AppSec Pipeline, DevOps and Making Things Better
Taking AppSec to 11: AppSec Pipeline, DevOps and Making Things BetterTaking AppSec to 11: AppSec Pipeline, DevOps and Making Things Better
Taking AppSec to 11: AppSec Pipeline, DevOps and Making Things BetterMatt Tesauro
 
Taking AppSec to 11 - BSides Austin 2016
Taking AppSec to 11 - BSides Austin 2016Taking AppSec to 11 - BSides Austin 2016
Taking AppSec to 11 - BSides Austin 2016Matt Tesauro
 
Open Data Science Conference Big Data Infrastructure – Introduction to Hadoop...
Open Data Science Conference Big Data Infrastructure – Introduction to Hadoop...Open Data Science Conference Big Data Infrastructure – Introduction to Hadoop...
Open Data Science Conference Big Data Infrastructure – Introduction to Hadoop...DataKitchen
 
Syhunt Presentation 2011
Syhunt Presentation 2011Syhunt Presentation 2011
Syhunt Presentation 2011syhunt
 
Introduction to data flow management using apache nifi
Introduction to data flow management using apache nifiIntroduction to data flow management using apache nifi
Introduction to data flow management using apache nifiAnshuman Ghosh
 
ApacheCon 2021 - Apache NiFi Deep Dive 300
ApacheCon 2021 - Apache NiFi Deep Dive 300ApacheCon 2021 - Apache NiFi Deep Dive 300
ApacheCon 2021 - Apache NiFi Deep Dive 300Timothy Spann
 
Continuous Delivery with a PaaS Application
Continuous Delivery with a PaaS ApplicationContinuous Delivery with a PaaS Application
Continuous Delivery with a PaaS ApplicationMark Rendell
 
Presto for the Enterprise @ Hadoop Meetup
Presto for the Enterprise @ Hadoop MeetupPresto for the Enterprise @ Hadoop Meetup
Presto for the Enterprise @ Hadoop MeetupWojciech Biela
 
Apache Flink Training: System Overview
Apache Flink Training: System OverviewApache Flink Training: System Overview
Apache Flink Training: System OverviewFlink Forward
 
Systematic Load Testing of Web Applications
Systematic Load Testing of Web ApplicationsSystematic Load Testing of Web Applications
Systematic Load Testing of Web ApplicationsJürg Stuker
 
Thinking DevOps in the era of the Cloud - Demi Ben-Ari
Thinking DevOps in the era of the Cloud - Demi Ben-AriThinking DevOps in the era of the Cloud - Demi Ben-Ari
Thinking DevOps in the era of the Cloud - Demi Ben-AriDemi Ben-Ari
 
Leveraging Open Source Automation: A Selenium WebDriver Example
Leveraging Open Source Automation: A Selenium WebDriver ExampleLeveraging Open Source Automation: A Selenium WebDriver Example
Leveraging Open Source Automation: A Selenium WebDriver ExampleTechWell
 
LCA13: Android Infrastructure Automation Improvements
LCA13: Android Infrastructure Automation ImprovementsLCA13: Android Infrastructure Automation Improvements
LCA13: Android Infrastructure Automation ImprovementsLinaro
 
[DSC Adria 23] Mikhail Rozhkov DVC in Machine Learning Engineering and MLOps ...
[DSC Adria 23] Mikhail Rozhkov DVC in Machine Learning Engineering and MLOps ...[DSC Adria 23] Mikhail Rozhkov DVC in Machine Learning Engineering and MLOps ...
[DSC Adria 23] Mikhail Rozhkov DVC in Machine Learning Engineering and MLOps ...DataScienceConferenc1
 
Best practices and lessons learnt from Running Apache NiFi at Renault
Best practices and lessons learnt from Running Apache NiFi at RenaultBest practices and lessons learnt from Running Apache NiFi at Renault
Best practices and lessons learnt from Running Apache NiFi at RenaultDataWorks Summit
 
CNCF_ A step to step guide to platforming your delivery setup.pdf
CNCF_ A step to step guide to platforming your delivery setup.pdfCNCF_ A step to step guide to platforming your delivery setup.pdf
CNCF_ A step to step guide to platforming your delivery setup.pdfLibbySchulze
 
Discover How Volvo Cars Uses a Time Series Database to Become Data-Driven
Discover How Volvo Cars Uses a Time Series Database to Become Data-DrivenDiscover How Volvo Cars Uses a Time Series Database to Become Data-Driven
Discover How Volvo Cars Uses a Time Series Database to Become Data-DrivenDevOps.com
 
Seminaire od devops 10traps 1.0
Seminaire od devops 10traps 1.0Seminaire od devops 10traps 1.0
Seminaire od devops 10traps 1.0Alain Delafosse
 

Similaire à Reproducibility of Development Environments (20)

Taking AppSec to 11: AppSec Pipeline, DevOps and Making Things Better
Taking AppSec to 11: AppSec Pipeline, DevOps and Making Things BetterTaking AppSec to 11: AppSec Pipeline, DevOps and Making Things Better
Taking AppSec to 11: AppSec Pipeline, DevOps and Making Things Better
 
Taking AppSec to 11 - BSides Austin 2016
Taking AppSec to 11 - BSides Austin 2016Taking AppSec to 11 - BSides Austin 2016
Taking AppSec to 11 - BSides Austin 2016
 
Open Data Science Conference Big Data Infrastructure – Introduction to Hadoop...
Open Data Science Conference Big Data Infrastructure – Introduction to Hadoop...Open Data Science Conference Big Data Infrastructure – Introduction to Hadoop...
Open Data Science Conference Big Data Infrastructure – Introduction to Hadoop...
 
Syhunt Presentation 2011
Syhunt Presentation 2011Syhunt Presentation 2011
Syhunt Presentation 2011
 
Introduction to data flow management using apache nifi
Introduction to data flow management using apache nifiIntroduction to data flow management using apache nifi
Introduction to data flow management using apache nifi
 
ApacheCon 2021 - Apache NiFi Deep Dive 300
ApacheCon 2021 - Apache NiFi Deep Dive 300ApacheCon 2021 - Apache NiFi Deep Dive 300
ApacheCon 2021 - Apache NiFi Deep Dive 300
 
Continuous Delivery with a PaaS Application
Continuous Delivery with a PaaS ApplicationContinuous Delivery with a PaaS Application
Continuous Delivery with a PaaS Application
 
Presto for the Enterprise @ Hadoop Meetup
Presto for the Enterprise @ Hadoop MeetupPresto for the Enterprise @ Hadoop Meetup
Presto for the Enterprise @ Hadoop Meetup
 
Apache Flink Training: System Overview
Apache Flink Training: System OverviewApache Flink Training: System Overview
Apache Flink Training: System Overview
 
Systematic Load Testing of Web Applications
Systematic Load Testing of Web ApplicationsSystematic Load Testing of Web Applications
Systematic Load Testing of Web Applications
 
Thinking DevOps in the era of the Cloud - Demi Ben-Ari
Thinking DevOps in the era of the Cloud - Demi Ben-AriThinking DevOps in the era of the Cloud - Demi Ben-Ari
Thinking DevOps in the era of the Cloud - Demi Ben-Ari
 
Leveraging Open Source Automation: A Selenium WebDriver Example
Leveraging Open Source Automation: A Selenium WebDriver ExampleLeveraging Open Source Automation: A Selenium WebDriver Example
Leveraging Open Source Automation: A Selenium WebDriver Example
 
LCA13: Android Infrastructure Automation Improvements
LCA13: Android Infrastructure Automation ImprovementsLCA13: Android Infrastructure Automation Improvements
LCA13: Android Infrastructure Automation Improvements
 
[DSC Adria 23] Mikhail Rozhkov DVC in Machine Learning Engineering and MLOps ...
[DSC Adria 23] Mikhail Rozhkov DVC in Machine Learning Engineering and MLOps ...[DSC Adria 23] Mikhail Rozhkov DVC in Machine Learning Engineering and MLOps ...
[DSC Adria 23] Mikhail Rozhkov DVC in Machine Learning Engineering and MLOps ...
 
Best practices and lessons learnt from Running Apache NiFi at Renault
Best practices and lessons learnt from Running Apache NiFi at RenaultBest practices and lessons learnt from Running Apache NiFi at Renault
Best practices and lessons learnt from Running Apache NiFi at Renault
 
AvenDATA and Devops
AvenDATA and DevopsAvenDATA and Devops
AvenDATA and Devops
 
CNCF_ A step to step guide to platforming your delivery setup.pdf
CNCF_ A step to step guide to platforming your delivery setup.pdfCNCF_ A step to step guide to platforming your delivery setup.pdf
CNCF_ A step to step guide to platforming your delivery setup.pdf
 
Discover How Volvo Cars Uses a Time Series Database to Become Data-Driven
Discover How Volvo Cars Uses a Time Series Database to Become Data-DrivenDiscover How Volvo Cars Uses a Time Series Database to Become Data-Driven
Discover How Volvo Cars Uses a Time Series Database to Become Data-Driven
 
Devops training
Devops trainingDevops training
Devops training
 
Seminaire od devops 10traps 1.0
Seminaire od devops 10traps 1.0Seminaire od devops 10traps 1.0
Seminaire od devops 10traps 1.0
 

Dernier

Cost estimation approach: FP to COCOMO scenario based question
Cost estimation approach: FP to COCOMO scenario based questionCost estimation approach: FP to COCOMO scenario based question
Cost estimation approach: FP to COCOMO scenario based questionSneha Padhiar
 
Input Output Management in Operating System
Input Output Management in Operating SystemInput Output Management in Operating System
Input Output Management in Operating SystemRashmi Bhat
 
Prach: A Feature-Rich Platform Empowering the Autism Community
Prach: A Feature-Rich Platform Empowering the Autism CommunityPrach: A Feature-Rich Platform Empowering the Autism Community
Prach: A Feature-Rich Platform Empowering the Autism Communityprachaibot
 
FUNCTIONAL AND NON FUNCTIONAL REQUIREMENT
FUNCTIONAL AND NON FUNCTIONAL REQUIREMENTFUNCTIONAL AND NON FUNCTIONAL REQUIREMENT
FUNCTIONAL AND NON FUNCTIONAL REQUIREMENTSneha Padhiar
 
TEST CASE GENERATION GENERATION BLOCK BOX APPROACH
TEST CASE GENERATION GENERATION BLOCK BOX APPROACHTEST CASE GENERATION GENERATION BLOCK BOX APPROACH
TEST CASE GENERATION GENERATION BLOCK BOX APPROACHSneha Padhiar
 
Comprehensive energy systems.pdf Comprehensive energy systems.pdf
Comprehensive energy systems.pdf Comprehensive energy systems.pdfComprehensive energy systems.pdf Comprehensive energy systems.pdf
Comprehensive energy systems.pdf Comprehensive energy systems.pdfalene1
 
Earthing details of Electrical Substation
Earthing details of Electrical SubstationEarthing details of Electrical Substation
Earthing details of Electrical Substationstephanwindworld
 
KCD Costa Rica 2024 - Nephio para parvulitos
KCD Costa Rica 2024 - Nephio para parvulitosKCD Costa Rica 2024 - Nephio para parvulitos
KCD Costa Rica 2024 - Nephio para parvulitosVictor Morales
 
Energy Awareness training ppt for manufacturing process.pptx
Energy Awareness training ppt for manufacturing process.pptxEnergy Awareness training ppt for manufacturing process.pptx
Energy Awareness training ppt for manufacturing process.pptxsiddharthjain2303
 
US Department of Education FAFSA Week of Action
US Department of Education FAFSA Week of ActionUS Department of Education FAFSA Week of Action
US Department of Education FAFSA Week of ActionMebane Rash
 
Main Memory Management in Operating System
Main Memory Management in Operating SystemMain Memory Management in Operating System
Main Memory Management in Operating SystemRashmi Bhat
 
11. Properties of Liquid Fuels in Energy Engineering.pdf
11. Properties of Liquid Fuels in Energy Engineering.pdf11. Properties of Liquid Fuels in Energy Engineering.pdf
11. Properties of Liquid Fuels in Energy Engineering.pdfHafizMudaserAhmad
 
『澳洲文凭』买麦考瑞大学毕业证书成绩单办理澳洲Macquarie文凭学位证书
『澳洲文凭』买麦考瑞大学毕业证书成绩单办理澳洲Macquarie文凭学位证书『澳洲文凭』买麦考瑞大学毕业证书成绩单办理澳洲Macquarie文凭学位证书
『澳洲文凭』买麦考瑞大学毕业证书成绩单办理澳洲Macquarie文凭学位证书rnrncn29
 
Python Programming for basic beginners.pptx
Python Programming for basic beginners.pptxPython Programming for basic beginners.pptx
Python Programming for basic beginners.pptxmohitesoham12
 
multiple access in wireless communication
multiple access in wireless communicationmultiple access in wireless communication
multiple access in wireless communicationpanditadesh123
 
Ch10-Global Supply Chain - Cadena de Suministro.pdf
Ch10-Global Supply Chain - Cadena de Suministro.pdfCh10-Global Supply Chain - Cadena de Suministro.pdf
Ch10-Global Supply Chain - Cadena de Suministro.pdfChristianCDAM
 
Robotics-Asimov's Laws, Mechanical Subsystems, Robot Kinematics, Robot Dynami...
Robotics-Asimov's Laws, Mechanical Subsystems, Robot Kinematics, Robot Dynami...Robotics-Asimov's Laws, Mechanical Subsystems, Robot Kinematics, Robot Dynami...
Robotics-Asimov's Laws, Mechanical Subsystems, Robot Kinematics, Robot Dynami...Sumanth A
 
CS 3251 Programming in c all unit notes pdf
CS 3251 Programming in c all unit notes pdfCS 3251 Programming in c all unit notes pdf
CS 3251 Programming in c all unit notes pdfBalamuruganV28
 
Engineering Drawing section of solid
Engineering Drawing     section of solidEngineering Drawing     section of solid
Engineering Drawing section of solidnamansinghjarodiya
 

Dernier (20)

Cost estimation approach: FP to COCOMO scenario based question
Cost estimation approach: FP to COCOMO scenario based questionCost estimation approach: FP to COCOMO scenario based question
Cost estimation approach: FP to COCOMO scenario based question
 
Input Output Management in Operating System
Input Output Management in Operating SystemInput Output Management in Operating System
Input Output Management in Operating System
 
Prach: A Feature-Rich Platform Empowering the Autism Community
Prach: A Feature-Rich Platform Empowering the Autism CommunityPrach: A Feature-Rich Platform Empowering the Autism Community
Prach: A Feature-Rich Platform Empowering the Autism Community
 
FUNCTIONAL AND NON FUNCTIONAL REQUIREMENT
FUNCTIONAL AND NON FUNCTIONAL REQUIREMENTFUNCTIONAL AND NON FUNCTIONAL REQUIREMENT
FUNCTIONAL AND NON FUNCTIONAL REQUIREMENT
 
TEST CASE GENERATION GENERATION BLOCK BOX APPROACH
TEST CASE GENERATION GENERATION BLOCK BOX APPROACHTEST CASE GENERATION GENERATION BLOCK BOX APPROACH
TEST CASE GENERATION GENERATION BLOCK BOX APPROACH
 
Comprehensive energy systems.pdf Comprehensive energy systems.pdf
Comprehensive energy systems.pdf Comprehensive energy systems.pdfComprehensive energy systems.pdf Comprehensive energy systems.pdf
Comprehensive energy systems.pdf Comprehensive energy systems.pdf
 
Earthing details of Electrical Substation
Earthing details of Electrical SubstationEarthing details of Electrical Substation
Earthing details of Electrical Substation
 
KCD Costa Rica 2024 - Nephio para parvulitos
KCD Costa Rica 2024 - Nephio para parvulitosKCD Costa Rica 2024 - Nephio para parvulitos
KCD Costa Rica 2024 - Nephio para parvulitos
 
Energy Awareness training ppt for manufacturing process.pptx
Energy Awareness training ppt for manufacturing process.pptxEnergy Awareness training ppt for manufacturing process.pptx
Energy Awareness training ppt for manufacturing process.pptx
 
US Department of Education FAFSA Week of Action
US Department of Education FAFSA Week of ActionUS Department of Education FAFSA Week of Action
US Department of Education FAFSA Week of Action
 
Designing pile caps according to ACI 318-19.pptx
Designing pile caps according to ACI 318-19.pptxDesigning pile caps according to ACI 318-19.pptx
Designing pile caps according to ACI 318-19.pptx
 
Main Memory Management in Operating System
Main Memory Management in Operating SystemMain Memory Management in Operating System
Main Memory Management in Operating System
 
11. Properties of Liquid Fuels in Energy Engineering.pdf
11. Properties of Liquid Fuels in Energy Engineering.pdf11. Properties of Liquid Fuels in Energy Engineering.pdf
11. Properties of Liquid Fuels in Energy Engineering.pdf
 
『澳洲文凭』买麦考瑞大学毕业证书成绩单办理澳洲Macquarie文凭学位证书
『澳洲文凭』买麦考瑞大学毕业证书成绩单办理澳洲Macquarie文凭学位证书『澳洲文凭』买麦考瑞大学毕业证书成绩单办理澳洲Macquarie文凭学位证书
『澳洲文凭』买麦考瑞大学毕业证书成绩单办理澳洲Macquarie文凭学位证书
 
Python Programming for basic beginners.pptx
Python Programming for basic beginners.pptxPython Programming for basic beginners.pptx
Python Programming for basic beginners.pptx
 
multiple access in wireless communication
multiple access in wireless communicationmultiple access in wireless communication
multiple access in wireless communication
 
Ch10-Global Supply Chain - Cadena de Suministro.pdf
Ch10-Global Supply Chain - Cadena de Suministro.pdfCh10-Global Supply Chain - Cadena de Suministro.pdf
Ch10-Global Supply Chain - Cadena de Suministro.pdf
 
Robotics-Asimov's Laws, Mechanical Subsystems, Robot Kinematics, Robot Dynami...
Robotics-Asimov's Laws, Mechanical Subsystems, Robot Kinematics, Robot Dynami...Robotics-Asimov's Laws, Mechanical Subsystems, Robot Kinematics, Robot Dynami...
Robotics-Asimov's Laws, Mechanical Subsystems, Robot Kinematics, Robot Dynami...
 
CS 3251 Programming in c all unit notes pdf
CS 3251 Programming in c all unit notes pdfCS 3251 Programming in c all unit notes pdf
CS 3251 Programming in c all unit notes pdf
 
Engineering Drawing section of solid
Engineering Drawing     section of solidEngineering Drawing     section of solid
Engineering Drawing section of solid
 

Reproducibility of Development Environments

  • 1. 11/20/2015 Reproducibility of your development environment http://localhost:4567/slides/environments.html#/?pdf-print 1/1 | |PyData2015 ContinuumAnalytics malev Reproducibility of your development environment by / / PyData NYC 2015 Marcos Vanetta @malev Continuum Analytics
  • 2. | |PyData2015 ContinuumAnalytics malev Marcos Vanetta ( ) Powered by tacos Sponsored by Continuum Analytics @malev
  • 3. | |PyData2015 ContinuumAnalytics malev Reproducibility Reproducibility is the ability of an entire experiment or study to be duplicated, either by the same researcher or by someone else working independently.
  • 4. | |PyData2015 ContinuumAnalytics malev Development Environment A computer system in which a computer program or software component is deployed and executed. A development environment is a collection of procedures and tools for developing, testing and debugging an application or program. A development environment contains everything required by a team to build and deploy software-intensive systems.
  • 5. | |PyData2015 ContinuumAnalytics malev Components Method Tools Enablement Organization Infrastructure Adoption
  • 6. | |PyData2015 ContinuumAnalytics malev Components Method Tools Enablement Organization Infrastructure Adoption
  • 7. | |PyData2015 ContinuumAnalytics malev Method Roles, work products, tasks, and processes Standards, guidelines, checklists, templates, and examples Deployment topology
  • 8. | |PyData2015 ContinuumAnalytics malev Tools Development tools and their integrations Development tool configurations and installation scripts Deployment topology, which considers the software and hardware required
  • 9. | |PyData2015 ContinuumAnalytics malev Infrastructure A development environment considers infrastructure in terms of both hardware and software. Locations, nodes, and connectivity Software (such as operating systems, database management systems, board-level controls, and test harnesses).
  • 10. | |PyData2015 ContinuumAnalytics malev How do we work with data? Everything is production Everything is NOT production Multi-language Local | Cloud | both Data ~Gb | Data ~Tb | ...
  • 11. | |PyData2015 ContinuumAnalytics malev What do we want to reproduce? Coding and documentation styles Software dependencies (libraries, databases, etc.) Configuration files and environmental variables Data (dummy data and real data) Keys (aws, ssh, etc)
  • 12. | |PyData2015 ContinuumAnalytics malev Coding and documentation styles Coding styles Linter ( , , , , etc) IDE configuration pep8 flake8 YAPF AirBnB JS Styleguide EditorConfig Sphinx MkDocs
  • 13. | |PyData2015 ContinuumAnalytics malev Dependencies Database engines Installation instructions Schema Configuration Dummy data Docker or Vagrant Makefiles or bash scripts SaaS Migrations Automate
  • 14. | |PyData2015 ContinuumAnalytics malev Dependencies: libraries pip conda Lot of packages Data packages mostrly ~ Multi platform Multi platform Not so fast Fast Included in Anaconda Included in Anaconda Consider tools like or .pipreqs defrost
  • 15. | |PyData2015 ContinuumAnalytics malev Exporting your dependencies with pip Reusing an environment Keep it simple $pipfreeze>requirements.txt $catrequirements.txt requests==2.8.1 virtualenv==13.0.1 wheel==0.26.0 $virtualenv.my-env $source.my-env/bin/activate (my-env)$pipinstall-rrequirements.txt
  • 16. | |PyData2015 ContinuumAnalytics malev Exporting your dependencies with conda Reusing with conda Keep it simple $condaenvexport-nplease-work-fenvironment.yml $catenvironment.yml name:my-project dependencies: -bokeh=0.8.0=np19py27_0 -colorama=0.3.3=py27_0 -pip: -flask $condaenvcreate ... $sourceactivatemy-project discarding/Users/mvanetta/miniconda/binfromPATH prepending/Users/mvanetta/miniconda/envs/my-project/bintoPATH (my-project)$
  • 17. | |PyData2015 ContinuumAnalytics malev Using pill $condainstallpilldeps-cmalev $pillinit $sourcepillin $depsinstall $sourcepillout $rm-rf.pill
  • 18. | |PyData2015 ContinuumAnalytics malev Working with notebooks Reusing your notebook $condacreate-nproject $condainstall-ybokehpandasjupyter $ipythonnotebookiris.ipynb $condaenvattach-nirisiris.ipynb $anacondanotebookuploadiris.ipynb $anacondanotebookdownloadmalev/iris $condaenvcreateiris.ipynb $sourceactivateiris $ipythonnotebookiris.ipynb
  • 19. | |PyData2015 ContinuumAnalytics malev Configuration files and environmental variables Essential part of configuration management yaml, ini, json files Generally stored in programmer's brains Attach to the repo, document, use tools like and automate.autoenv
  • 20. | |PyData2015 ContinuumAnalytics malev keys Security concerns Don't put it in the repo Talk to your IT department
  • 21. | |PyData2015 ContinuumAnalytics malev Conclusions We still have some work to do We have a lot of manual work It is an expensive process