SlideShare a Scribd company logo

Applying software engineering to configuration management

"Applying software engineering to configuration management" at Cfgmgmtcamp 2015 http://cfgmgmtcamp.eu/

1 of 41
Download to read offline
Applying software engineering
to configuration management
Bart Vanbrabant, PhD
iMinds-Distrinet / Impera
● Research started with PoDIM by Thomas Delaet
● LISA 07: Best paper award with PoDIM
● Master thesis 2008: apply PoDIM concepts to Puppet
● Security in cfg mgmt side step
● LISA 10: A survey of system configuration tools
● Summer 2010: First prototype of Impera tool
● June 2014: My PhD “A framework for integrated configuration
management of distributed systems”
● Late 2014: Open Source release on Github and University
spin-off: https://github.com/impera-io
About
Why configuration management?
● Automate configuration (deployment,
configuration and re-configuration) of software
● Keep all configuration parameters consistent
to avoid errors
● Cloud computing has increased scale and
dynamics
● Continuous deployment increases dynamics
even more
● Application in cloud are distributed systems
(SOA)
Managed applications
● Applications are business driver of why the
operations are there in the first place
● Application architecture:
o components
o services that interact
o logical architecture
o abstract deployment architecture
Configuration management
● Current tools focus on managing individual
components on machines
o files
o packages
o services
● Abstraction level mismatch between
o how the application is architected and developed
o how it is operated
● Both configuration management and monitoring
are in function of system resources
Abstraction blend
● Operations already a blend of abstraction
levels
● Mixing very high level with very low level
o e.g. large website on Amazon
o own web servers (managed in function of low-level
resources)
o combined with ELB (services, managed through
API)
● Blend will only increase
o mash up of as-a-service
o missing components self-hosted on virtual machines

Recommended

Our Puppet Story (Linuxtag 2014)
Our Puppet Story (Linuxtag 2014)Our Puppet Story (Linuxtag 2014)
Our Puppet Story (Linuxtag 2014)DECK36
 
Deploying PHP applications with Phing
Deploying PHP applications with PhingDeploying PHP applications with Phing
Deploying PHP applications with PhingMichiel Rook
 
Modules of the twenties
Modules of the twentiesModules of the twenties
Modules of the twentiesPuppet
 
Developing IT infrastructures with Puppet
Developing IT infrastructures with PuppetDeveloping IT infrastructures with Puppet
Developing IT infrastructures with PuppetAlessandro Franceschi
 
Scalable Cloud-Native Masterless Puppet, with PuppetDB and Bolt, Craig Watson...
Scalable Cloud-Native Masterless Puppet, with PuppetDB and Bolt, Craig Watson...Scalable Cloud-Native Masterless Puppet, with PuppetDB and Bolt, Craig Watson...
Scalable Cloud-Native Masterless Puppet, with PuppetDB and Bolt, Craig Watson...Puppet
 
Puppet Systems Infrastructure Construction Kit
Puppet Systems Infrastructure Construction KitPuppet Systems Infrastructure Construction Kit
Puppet Systems Infrastructure Construction KitAlessandro Franceschi
 

More Related Content

What's hot

Always up to date, testable and maintainable documentation with OpenAPI
Always up to date, testable and maintainable documentation with OpenAPIAlways up to date, testable and maintainable documentation with OpenAPI
Always up to date, testable and maintainable documentation with OpenAPIGOG.com dev team
 
Practical PHP Deployment with Jenkins
Practical PHP Deployment with JenkinsPractical PHP Deployment with Jenkins
Practical PHP Deployment with JenkinsAdam Culp
 
Puppet Camp Dallas 2014: How Puppet Ops Rolls
Puppet Camp Dallas 2014: How Puppet Ops RollsPuppet Camp Dallas 2014: How Puppet Ops Rolls
Puppet Camp Dallas 2014: How Puppet Ops RollsPuppet
 
Porting legacy apps to Griffon
Porting legacy apps to GriffonPorting legacy apps to Griffon
Porting legacy apps to GriffonJames Williams
 
Puppet Continuous Integration with PE and GitLab
Puppet Continuous Integration with PE and GitLabPuppet Continuous Integration with PE and GitLab
Puppet Continuous Integration with PE and GitLabAlessandro Franceschi
 
Configuring Highly Scalable Compile Masters, Vasco Cardoso, AWS
Configuring Highly Scalable Compile Masters, Vasco Cardoso, AWSConfiguring Highly Scalable Compile Masters, Vasco Cardoso, AWS
Configuring Highly Scalable Compile Masters, Vasco Cardoso, AWSPuppet
 
Tamir Dresher - Demystifying the Core of .NET Core
Tamir Dresher  - Demystifying the Core of .NET CoreTamir Dresher  - Demystifying the Core of .NET Core
Tamir Dresher - Demystifying the Core of .NET CoreTamir Dresher
 
Writing Custom Puppet Types and Providers to Manage Web-Based Applications
Writing Custom Puppet Types and Providers to Manage Web-Based ApplicationsWriting Custom Puppet Types and Providers to Manage Web-Based Applications
Writing Custom Puppet Types and Providers to Manage Web-Based ApplicationsTim Cinel
 
Virtual CD4PE Workshop
Virtual CD4PE WorkshopVirtual CD4PE Workshop
Virtual CD4PE WorkshopPuppet
 
How to build your own OpenStack distro using Puppet OpenStack
How to build your own OpenStack distro using Puppet OpenStackHow to build your own OpenStack distro using Puppet OpenStack
How to build your own OpenStack distro using Puppet OpenStackOpenStack
 
Why and how Pricing Assistant migrated from Celery to RQ - Paris.py #2
Why and how Pricing Assistant migrated from Celery to RQ - Paris.py #2Why and how Pricing Assistant migrated from Celery to RQ - Paris.py #2
Why and how Pricing Assistant migrated from Celery to RQ - Paris.py #2Sylvain Zimmer
 
Learning Puppet Chapter 1
Learning Puppet Chapter 1Learning Puppet Chapter 1
Learning Puppet Chapter 1Vishal Biyani
 
Modern Web Development with Perl
Modern Web Development with PerlModern Web Development with Perl
Modern Web Development with PerlDave Cross
 
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)James Titcumb
 
PuppetConf 2016 Moving from Exec to Types and Provides
PuppetConf 2016 Moving from Exec to Types and ProvidesPuppetConf 2016 Moving from Exec to Types and Provides
PuppetConf 2016 Moving from Exec to Types and ProvidesMartin Alfke
 
Scalable Django Architecture
Scalable Django ArchitectureScalable Django Architecture
Scalable Django ArchitectureRami Sayar
 
Zend Framework 1.8 workshop
Zend Framework 1.8 workshopZend Framework 1.8 workshop
Zend Framework 1.8 workshopNick Belhomme
 
When dynamic becomes static
When dynamic becomes staticWhen dynamic becomes static
When dynamic becomes staticWim Godden
 

What's hot (20)

Python at Facebook
Python at FacebookPython at Facebook
Python at Facebook
 
Always up to date, testable and maintainable documentation with OpenAPI
Always up to date, testable and maintainable documentation with OpenAPIAlways up to date, testable and maintainable documentation with OpenAPI
Always up to date, testable and maintainable documentation with OpenAPI
 
Practical PHP Deployment with Jenkins
Practical PHP Deployment with JenkinsPractical PHP Deployment with Jenkins
Practical PHP Deployment with Jenkins
 
Puppet Camp Dallas 2014: How Puppet Ops Rolls
Puppet Camp Dallas 2014: How Puppet Ops RollsPuppet Camp Dallas 2014: How Puppet Ops Rolls
Puppet Camp Dallas 2014: How Puppet Ops Rolls
 
Porting legacy apps to Griffon
Porting legacy apps to GriffonPorting legacy apps to Griffon
Porting legacy apps to Griffon
 
Puppet Continuous Integration with PE and GitLab
Puppet Continuous Integration with PE and GitLabPuppet Continuous Integration with PE and GitLab
Puppet Continuous Integration with PE and GitLab
 
Configuring Highly Scalable Compile Masters, Vasco Cardoso, AWS
Configuring Highly Scalable Compile Masters, Vasco Cardoso, AWSConfiguring Highly Scalable Compile Masters, Vasco Cardoso, AWS
Configuring Highly Scalable Compile Masters, Vasco Cardoso, AWS
 
Tamir Dresher - Demystifying the Core of .NET Core
Tamir Dresher  - Demystifying the Core of .NET CoreTamir Dresher  - Demystifying the Core of .NET Core
Tamir Dresher - Demystifying the Core of .NET Core
 
Writing Custom Puppet Types and Providers to Manage Web-Based Applications
Writing Custom Puppet Types and Providers to Manage Web-Based ApplicationsWriting Custom Puppet Types and Providers to Manage Web-Based Applications
Writing Custom Puppet Types and Providers to Manage Web-Based Applications
 
Virtual CD4PE Workshop
Virtual CD4PE WorkshopVirtual CD4PE Workshop
Virtual CD4PE Workshop
 
Getting Started With Aura
Getting Started With AuraGetting Started With Aura
Getting Started With Aura
 
How to build your own OpenStack distro using Puppet OpenStack
How to build your own OpenStack distro using Puppet OpenStackHow to build your own OpenStack distro using Puppet OpenStack
How to build your own OpenStack distro using Puppet OpenStack
 
Why and how Pricing Assistant migrated from Celery to RQ - Paris.py #2
Why and how Pricing Assistant migrated from Celery to RQ - Paris.py #2Why and how Pricing Assistant migrated from Celery to RQ - Paris.py #2
Why and how Pricing Assistant migrated from Celery to RQ - Paris.py #2
 
Learning Puppet Chapter 1
Learning Puppet Chapter 1Learning Puppet Chapter 1
Learning Puppet Chapter 1
 
Modern Web Development with Perl
Modern Web Development with PerlModern Web Development with Perl
Modern Web Development with Perl
 
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)
 
PuppetConf 2016 Moving from Exec to Types and Provides
PuppetConf 2016 Moving from Exec to Types and ProvidesPuppetConf 2016 Moving from Exec to Types and Provides
PuppetConf 2016 Moving from Exec to Types and Provides
 
Scalable Django Architecture
Scalable Django ArchitectureScalable Django Architecture
Scalable Django Architecture
 
Zend Framework 1.8 workshop
Zend Framework 1.8 workshopZend Framework 1.8 workshop
Zend Framework 1.8 workshop
 
When dynamic becomes static
When dynamic becomes staticWhen dynamic becomes static
When dynamic becomes static
 

Viewers also liked

Software Engineering Practice - Configuration management
Software Engineering Practice - Configuration managementSoftware Engineering Practice - Configuration management
Software Engineering Practice - Configuration managementRadu_Negulescu
 
Intro to Software Engineering - Software Design
Intro to Software Engineering - Software DesignIntro to Software Engineering - Software Design
Intro to Software Engineering - Software DesignRadu_Negulescu
 
Measurement and metrics in model driven software development
Measurement and metrics in model driven software developmentMeasurement and metrics in model driven software development
Measurement and metrics in model driven software developmentSelman Bozkır
 
Presentation - "A comparison of component-based software engineering and mode...
Presentation - "A comparison of component-based software engineering and mode...Presentation - "A comparison of component-based software engineering and mode...
Presentation - "A comparison of component-based software engineering and mode...Nikolay Grozev
 
Software Configuration Management
Software Configuration ManagementSoftware Configuration Management
Software Configuration ManagementBill Thayer
 
Software Engineering for Web Applications
Software Engineering for Web ApplicationsSoftware Engineering for Web Applications
Software Engineering for Web ApplicationsMoh'd Shakeb Baig
 
DISE - Introduction to Project Management
DISE - Introduction to Project ManagementDISE - Introduction to Project Management
DISE - Introduction to Project ManagementRasan Samarasinghe
 
Se 381 - lec 27 - 12 jun05 - ooa and ood and class diagrams
Se 381 -  lec 27 - 12 jun05 - ooa and ood and class diagramsSe 381 -  lec 27 - 12 jun05 - ooa and ood and class diagrams
Se 381 - lec 27 - 12 jun05 - ooa and ood and class diagramsbabak danyal
 
Software Requirements Elicitation Methods
Software Requirements Elicitation MethodsSoftware Requirements Elicitation Methods
Software Requirements Elicitation Methodsmnaeem22
 
Configuration Management in Software Engineering - SE29
Configuration Management in Software Engineering - SE29Configuration Management in Software Engineering - SE29
Configuration Management in Software Engineering - SE29koolkampus
 
Software testing & Quality Assurance
Software testing & Quality Assurance Software testing & Quality Assurance
Software testing & Quality Assurance Webtech Learning
 
Ch17-Software Engineering 9
Ch17-Software Engineering 9Ch17-Software Engineering 9
Ch17-Software Engineering 9Ian Sommerville
 
1-Introduction to Software Engineering (Object Oriented Software Engineering ...
1-Introduction to Software Engineering (Object Oriented Software Engineering ...1-Introduction to Software Engineering (Object Oriented Software Engineering ...
1-Introduction to Software Engineering (Object Oriented Software Engineering ...Hafiz Ammar Siddiqui
 
Software requirement elicitation
Software requirement elicitationSoftware requirement elicitation
Software requirement elicitationPankamol Srikaew
 
DISE - Software Testing and Quality Management
DISE - Software Testing and Quality ManagementDISE - Software Testing and Quality Management
DISE - Software Testing and Quality ManagementRasan Samarasinghe
 
Lecture 2 Software Engineering and Design Object Oriented Programming, Design...
Lecture 2 Software Engineering and Design Object Oriented Programming, Design...Lecture 2 Software Engineering and Design Object Oriented Programming, Design...
Lecture 2 Software Engineering and Design Object Oriented Programming, Design...op205
 
Maintenance Metrics
Maintenance MetricsMaintenance Metrics
Maintenance Metricskaskerrigan
 
Object Oriented Design in Software Engineering SE12
Object Oriented Design in Software Engineering SE12Object Oriented Design in Software Engineering SE12
Object Oriented Design in Software Engineering SE12koolkampus
 

Viewers also liked (20)

Software Engineering Practice - Configuration management
Software Engineering Practice - Configuration managementSoftware Engineering Practice - Configuration management
Software Engineering Practice - Configuration management
 
Intro to Software Engineering - Software Design
Intro to Software Engineering - Software DesignIntro to Software Engineering - Software Design
Intro to Software Engineering - Software Design
 
Measurement and metrics in model driven software development
Measurement and metrics in model driven software developmentMeasurement and metrics in model driven software development
Measurement and metrics in model driven software development
 
Quality metrices
Quality metricesQuality metrices
Quality metrices
 
Presentation - "A comparison of component-based software engineering and mode...
Presentation - "A comparison of component-based software engineering and mode...Presentation - "A comparison of component-based software engineering and mode...
Presentation - "A comparison of component-based software engineering and mode...
 
Software Configuration Management
Software Configuration ManagementSoftware Configuration Management
Software Configuration Management
 
Software Engineering for Web Applications
Software Engineering for Web ApplicationsSoftware Engineering for Web Applications
Software Engineering for Web Applications
 
DISE - Introduction to Project Management
DISE - Introduction to Project ManagementDISE - Introduction to Project Management
DISE - Introduction to Project Management
 
Se 381 - lec 27 - 12 jun05 - ooa and ood and class diagrams
Se 381 -  lec 27 - 12 jun05 - ooa and ood and class diagramsSe 381 -  lec 27 - 12 jun05 - ooa and ood and class diagrams
Se 381 - lec 27 - 12 jun05 - ooa and ood and class diagrams
 
Software Requirements Elicitation Methods
Software Requirements Elicitation MethodsSoftware Requirements Elicitation Methods
Software Requirements Elicitation Methods
 
Metrics
MetricsMetrics
Metrics
 
Configuration Management in Software Engineering - SE29
Configuration Management in Software Engineering - SE29Configuration Management in Software Engineering - SE29
Configuration Management in Software Engineering - SE29
 
Software testing & Quality Assurance
Software testing & Quality Assurance Software testing & Quality Assurance
Software testing & Quality Assurance
 
Ch17-Software Engineering 9
Ch17-Software Engineering 9Ch17-Software Engineering 9
Ch17-Software Engineering 9
 
1-Introduction to Software Engineering (Object Oriented Software Engineering ...
1-Introduction to Software Engineering (Object Oriented Software Engineering ...1-Introduction to Software Engineering (Object Oriented Software Engineering ...
1-Introduction to Software Engineering (Object Oriented Software Engineering ...
 
Software requirement elicitation
Software requirement elicitationSoftware requirement elicitation
Software requirement elicitation
 
DISE - Software Testing and Quality Management
DISE - Software Testing and Quality ManagementDISE - Software Testing and Quality Management
DISE - Software Testing and Quality Management
 
Lecture 2 Software Engineering and Design Object Oriented Programming, Design...
Lecture 2 Software Engineering and Design Object Oriented Programming, Design...Lecture 2 Software Engineering and Design Object Oriented Programming, Design...
Lecture 2 Software Engineering and Design Object Oriented Programming, Design...
 
Maintenance Metrics
Maintenance MetricsMaintenance Metrics
Maintenance Metrics
 
Object Oriented Design in Software Engineering SE12
Object Oriented Design in Software Engineering SE12Object Oriented Design in Software Engineering SE12
Object Oriented Design in Software Engineering SE12
 

Similar to Applying software engineering to configuration management

Pyramid Deployment and Maintenance
Pyramid Deployment and MaintenancePyramid Deployment and Maintenance
Pyramid Deployment and MaintenanceJazkarta, Inc.
 
Bangpypers april-meetup-2012
Bangpypers april-meetup-2012Bangpypers april-meetup-2012
Bangpypers april-meetup-2012Deepak Garg
 
Introduction to node.js By Ahmed Assaf
Introduction to node.js  By Ahmed AssafIntroduction to node.js  By Ahmed Assaf
Introduction to node.js By Ahmed AssafAhmed Assaf
 
Yaetos Tech Overview
Yaetos Tech OverviewYaetos Tech Overview
Yaetos Tech Overviewprevota
 
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud Run
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud RunDesigning flexible apps deployable to App Engine, Cloud Functions, or Cloud Run
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud Runwesley chun
 
OSDC.no 2015 introduction to node.js workshop
OSDC.no 2015 introduction to node.js workshopOSDC.no 2015 introduction to node.js workshop
OSDC.no 2015 introduction to node.js workshopleffen
 
Angular4 getting started
Angular4 getting startedAngular4 getting started
Angular4 getting startedTejinderMakkar
 
.NET Cloud-Native Bootcamp
.NET Cloud-Native Bootcamp.NET Cloud-Native Bootcamp
.NET Cloud-Native BootcampVMware Tanzu
 
V mware
V mwareV mware
V mwaredvmug1
 
Puppet Primer, Robbie Jerrom, Solution Architect VMware
Puppet Primer, Robbie Jerrom, Solution Architect VMwarePuppet Primer, Robbie Jerrom, Solution Architect VMware
Puppet Primer, Robbie Jerrom, Solution Architect VMwaresubtitle
 
SpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSASpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSAOracle Korea
 
Declarative Infrastructure Tools
Declarative Infrastructure Tools Declarative Infrastructure Tools
Declarative Infrastructure Tools Yulia Shcherbachova
 
Taking Your FDM Application to the Next Level with Advanced Scripting
Taking Your FDM Application to the Next Level with Advanced ScriptingTaking Your FDM Application to the Next Level with Advanced Scripting
Taking Your FDM Application to the Next Level with Advanced ScriptingAlithya
 
A Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy SystemA Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy Systemadrian_nye
 
Cloud Native Development
Cloud Native DevelopmentCloud Native Development
Cloud Native DevelopmentManuel Garcia
 
Microservices with kubernetes @190316
Microservices with kubernetes @190316Microservices with kubernetes @190316
Microservices with kubernetes @190316Jupil Hwang
 
Implementing a build manager in Ada
Implementing a build manager in AdaImplementing a build manager in Ada
Implementing a build manager in AdaStephane Carrez
 

Similar to Applying software engineering to configuration management (20)

Pyramid Deployment and Maintenance
Pyramid Deployment and MaintenancePyramid Deployment and Maintenance
Pyramid Deployment and Maintenance
 
Bangpypers april-meetup-2012
Bangpypers april-meetup-2012Bangpypers april-meetup-2012
Bangpypers april-meetup-2012
 
Introduction to node.js By Ahmed Assaf
Introduction to node.js  By Ahmed AssafIntroduction to node.js  By Ahmed Assaf
Introduction to node.js By Ahmed Assaf
 
Yaetos Tech Overview
Yaetos Tech OverviewYaetos Tech Overview
Yaetos Tech Overview
 
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud Run
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud RunDesigning flexible apps deployable to App Engine, Cloud Functions, or Cloud Run
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud Run
 
Sprint 17
Sprint 17Sprint 17
Sprint 17
 
OSDC.no 2015 introduction to node.js workshop
OSDC.no 2015 introduction to node.js workshopOSDC.no 2015 introduction to node.js workshop
OSDC.no 2015 introduction to node.js workshop
 
Angular4 getting started
Angular4 getting startedAngular4 getting started
Angular4 getting started
 
.NET Cloud-Native Bootcamp
.NET Cloud-Native Bootcamp.NET Cloud-Native Bootcamp
.NET Cloud-Native Bootcamp
 
V mware
V mwareV mware
V mware
 
Puppet Primer, Robbie Jerrom, Solution Architect VMware
Puppet Primer, Robbie Jerrom, Solution Architect VMwarePuppet Primer, Robbie Jerrom, Solution Architect VMware
Puppet Primer, Robbie Jerrom, Solution Architect VMware
 
SpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSASpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSA
 
Cypress Testing.pptx
Cypress Testing.pptxCypress Testing.pptx
Cypress Testing.pptx
 
Declarative Infrastructure Tools
Declarative Infrastructure Tools Declarative Infrastructure Tools
Declarative Infrastructure Tools
 
Taking Your FDM Application to the Next Level with Advanced Scripting
Taking Your FDM Application to the Next Level with Advanced ScriptingTaking Your FDM Application to the Next Level with Advanced Scripting
Taking Your FDM Application to the Next Level with Advanced Scripting
 
A Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy SystemA Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy System
 
Cloud Native Development
Cloud Native DevelopmentCloud Native Development
Cloud Native Development
 
Microservices with kubernetes @190316
Microservices with kubernetes @190316Microservices with kubernetes @190316
Microservices with kubernetes @190316
 
NodeJS
NodeJSNodeJS
NodeJS
 
Implementing a build manager in Ada
Implementing a build manager in AdaImplementing a build manager in Ada
Implementing a build manager in Ada
 

Recently uploaded

Issues affecting LGBT as they grow older.pptx
Issues affecting LGBT as they grow older.pptxIssues affecting LGBT as they grow older.pptx
Issues affecting LGBT as they grow older.pptxbill846304
 
Monthly HSE Report March for overall HSE
Monthly HSE Report March for overall HSEMonthly HSE Report March for overall HSE
Monthly HSE Report March for overall HSEOlgaOliveaJohn
 
Relationships in Teaching By Dr. Cherinet Aytenfsu Weldearegay (2023).pdf
Relationships in Teaching By Dr. Cherinet Aytenfsu Weldearegay (2023).pdfRelationships in Teaching By Dr. Cherinet Aytenfsu Weldearegay (2023).pdf
Relationships in Teaching By Dr. Cherinet Aytenfsu Weldearegay (2023).pdfDr. Cherinet Aytenfsu Weldearegay
 
Garcia_RobertDaniel_SPCSTA_PB1_2024-02.pptx
Garcia_RobertDaniel_SPCSTA_PB1_2024-02.pptxGarcia_RobertDaniel_SPCSTA_PB1_2024-02.pptx
Garcia_RobertDaniel_SPCSTA_PB1_2024-02.pptx0461620
 
Vazquez_Gabriel_SPCASTNG_PB1_2024-02.pdf
Vazquez_Gabriel_SPCASTNG_PB1_2024-02.pdfVazquez_Gabriel_SPCASTNG_PB1_2024-02.pdf
Vazquez_Gabriel_SPCASTNG_PB1_2024-02.pdfgabev3104
 
Reflection Vs Technical Rationality - By Dr. Cherinet Aytenfsu Weldearegay (2...
Reflection Vs Technical Rationality - By Dr. Cherinet Aytenfsu Weldearegay (2...Reflection Vs Technical Rationality - By Dr. Cherinet Aytenfsu Weldearegay (2...
Reflection Vs Technical Rationality - By Dr. Cherinet Aytenfsu Weldearegay (2...Dr. Cherinet Aytenfsu Weldearegay
 
Exploring Wisdom-Based Leadership.pptx
Exploring Wisdom-Based Leadership.pptxExploring Wisdom-Based Leadership.pptx
Exploring Wisdom-Based Leadership.pptxAkash Das
 
Freeman_Abigail Personal Brand Exploration
Freeman_Abigail Personal Brand ExplorationFreeman_Abigail Personal Brand Exploration
Freeman_Abigail Personal Brand Explorationabbytoliver
 
TheSimpsons_Fandom_Assignment_4.5pc.pptx
TheSimpsons_Fandom_Assignment_4.5pc.pptxTheSimpsons_Fandom_Assignment_4.5pc.pptx
TheSimpsons_Fandom_Assignment_4.5pc.pptxStevenLuker3
 

Recently uploaded (10)

Issues affecting LGBT as they grow older.pptx
Issues affecting LGBT as they grow older.pptxIssues affecting LGBT as they grow older.pptx
Issues affecting LGBT as they grow older.pptx
 
Tethex Cards - Crypto VISA Card - Invest 2 ENGLISH
Tethex Cards - Crypto VISA Card - Invest 2 ENGLISHTethex Cards - Crypto VISA Card - Invest 2 ENGLISH
Tethex Cards - Crypto VISA Card - Invest 2 ENGLISH
 
Monthly HSE Report March for overall HSE
Monthly HSE Report March for overall HSEMonthly HSE Report March for overall HSE
Monthly HSE Report March for overall HSE
 
Relationships in Teaching By Dr. Cherinet Aytenfsu Weldearegay (2023).pdf
Relationships in Teaching By Dr. Cherinet Aytenfsu Weldearegay (2023).pdfRelationships in Teaching By Dr. Cherinet Aytenfsu Weldearegay (2023).pdf
Relationships in Teaching By Dr. Cherinet Aytenfsu Weldearegay (2023).pdf
 
Garcia_RobertDaniel_SPCSTA_PB1_2024-02.pptx
Garcia_RobertDaniel_SPCSTA_PB1_2024-02.pptxGarcia_RobertDaniel_SPCSTA_PB1_2024-02.pptx
Garcia_RobertDaniel_SPCSTA_PB1_2024-02.pptx
 
Vazquez_Gabriel_SPCASTNG_PB1_2024-02.pdf
Vazquez_Gabriel_SPCASTNG_PB1_2024-02.pdfVazquez_Gabriel_SPCASTNG_PB1_2024-02.pdf
Vazquez_Gabriel_SPCASTNG_PB1_2024-02.pdf
 
Reflection Vs Technical Rationality - By Dr. Cherinet Aytenfsu Weldearegay (2...
Reflection Vs Technical Rationality - By Dr. Cherinet Aytenfsu Weldearegay (2...Reflection Vs Technical Rationality - By Dr. Cherinet Aytenfsu Weldearegay (2...
Reflection Vs Technical Rationality - By Dr. Cherinet Aytenfsu Weldearegay (2...
 
Exploring Wisdom-Based Leadership.pptx
Exploring Wisdom-Based Leadership.pptxExploring Wisdom-Based Leadership.pptx
Exploring Wisdom-Based Leadership.pptx
 
Freeman_Abigail Personal Brand Exploration
Freeman_Abigail Personal Brand ExplorationFreeman_Abigail Personal Brand Exploration
Freeman_Abigail Personal Brand Exploration
 
TheSimpsons_Fandom_Assignment_4.5pc.pptx
TheSimpsons_Fandom_Assignment_4.5pc.pptxTheSimpsons_Fandom_Assignment_4.5pc.pptx
TheSimpsons_Fandom_Assignment_4.5pc.pptx
 

Applying software engineering to configuration management

  • 1. Applying software engineering to configuration management Bart Vanbrabant, PhD iMinds-Distrinet / Impera
  • 2. ● Research started with PoDIM by Thomas Delaet ● LISA 07: Best paper award with PoDIM ● Master thesis 2008: apply PoDIM concepts to Puppet ● Security in cfg mgmt side step ● LISA 10: A survey of system configuration tools ● Summer 2010: First prototype of Impera tool ● June 2014: My PhD “A framework for integrated configuration management of distributed systems” ● Late 2014: Open Source release on Github and University spin-off: https://github.com/impera-io About
  • 3. Why configuration management? ● Automate configuration (deployment, configuration and re-configuration) of software ● Keep all configuration parameters consistent to avoid errors ● Cloud computing has increased scale and dynamics ● Continuous deployment increases dynamics even more ● Application in cloud are distributed systems (SOA)
  • 4. Managed applications ● Applications are business driver of why the operations are there in the first place ● Application architecture: o components o services that interact o logical architecture o abstract deployment architecture
  • 5. Configuration management ● Current tools focus on managing individual components on machines o files o packages o services ● Abstraction level mismatch between o how the application is architected and developed o how it is operated ● Both configuration management and monitoring are in function of system resources
  • 6. Abstraction blend ● Operations already a blend of abstraction levels ● Mixing very high level with very low level o e.g. large website on Amazon o own web servers (managed in function of low-level resources) o combined with ELB (services, managed through API) ● Blend will only increase o mash up of as-a-service o missing components self-hosted on virtual machines
  • 7. One tool (model) to rule them all ● Inconsistencies in configuration cause errors and downtime ● Many interdependencies between services and components ● One integrated configuration model ● Highest and lowest abstraction level in a single model (and everything in between)
  • 8. Software engineering (SE) ● SE has been raising the level of abstraction ● Our approach: apply concepts used in SE to cfg mgmt: o object-oriented programming o encapsulation o interfaces o component-based software development o refinement o …
  • 9. Impera tool ● Declarative configuration model ● Object-oriented modelling ● Relations as first class citizen ● Separation of type (interface) and implementation (refinement) to build up abstractions ● Re-usable modules ● Plug-in mechanism: o transformation in configuration model o export to 3rd party o resource handlers ● Transparent orchestration
  • 10. Entities and relations entity Server: number listen_port end
  • 11. Entities and relations entity Server: number listen_port end entity WebServer extends ip::services::Server, web::Container string document_root end
  • 12. Entities and relations entity Server: number listen_port end entity WebServer extends ip::services::Server, web::Container string document_root end std::Host host [1] -- [0:] Server servers Client clients [0:] -- [1:] Server server
  • 13. Entities and relations entity Server: number listen_port end entity WebServer extends ip::services::Server, web::Container string document_root end std::Host host [1] -- [0:] Server servers Client clients [0:] -- [1:] Server server index WebServer(host, listen_port)
  • 14. Entities and relations ... entity WebServer extends ip::services::Server, web::Container string document_root end std::Host host [1] -- [0:] Server servers Client clients [0:] -- [1:] Server server index WebServer(host, listen_port) typedef HttpWebServer as WebServer(listen_port=80)
  • 15. Instantiating a model srv1 = std::Host(name=”server-1”, os=fedora::fedora21) webserver = WebServer(host=serv1, document_root=”/var/www”)
  • 16. Refinement implementation apacheFedoraWebServer for WebServer: p_apache = std::Package(host=host, name=”httpd”, state=”installed”) f_cfg = std::ConfigFile(host=host, path=”/etc/httpd/conf/httpd.conf”, content=std::template(“apache/httpd.conf”), reload=true, requires=p_apache) f_svc = std::Service(host=host, name=”httpd”, state=”running”, onboot=true, requires=[f_cfg, p_apache]) end
  • 17. implementation apacheFedoraWebServer for WebServer: p_apache = std::Package(host=host, name=”httpd”, state=”installed”) f_cfg = std::ConfigFile(host=host, path=”/etc/httpd/conf/httpd.conf”, content=std::template(“apache/httpd.conf”), reload=true, requires=p_apache) f_svc = std::Service(host=host, name=”httpd”, state=”running”, onboot=true, requires=[f_cfg, p_apache]) end implement WebServer using apacheFedoraWebServer when std::familyof(host.os, "fedora") Refinement
  • 18. Refinement implementation apacheFedoraWebServer for WebServer: p_apache = std::Package(host=host, name=”httpd”, state=”installed”) f_cfg = std::ConfigFile(host=host, path=”/etc/httpd/conf/httpd.conf”, content=std::template(“apache/httpd.conf”), reload=true, requires=p_apache) f_svc = std::Service(host=host, name=”httpd”, state=”running”, onboot=true, requires=[f_cfg, p_apache]) end implement WebServer using apacheFedoraWebServer when std::familyof(host.os, "fedora")
  • 19. Instantiating a model srv1 = std::Host(name=”server-1”, os=fedora::fedora21) webserver = WebServer(host=serv1, document_root=”/var/www”) Result: ● ensure that the httpd package is installed ● ensure that the httpd.conf file has the content generated using a template ● ensure that the httpd server is running and starts at boot
  • 20. Building a model ● Configuration modules with: o model:  types: entities, relations, …  refinement o templates o files o plugins: model, resource handlers, dependency managers, … ● Initial model instantiates types ● Refine model until ready
  • 23. Derive configuration ● Implicit configuration ● Derive configuration from integrated configuration model o firewall rules based on network topology, network connection and security policy o monitoring configuration o backup o … ● Get this configuration for “free”
  • 24. Derive configuration ● Use types from generic modules to model required information o e.g. logging::LogFile(host=host, path=”/var/log/httpd/access_log”, type=”apache”) o Can be used to configure:  logstash  syslog  awstats  backup  logrotate  ...
  • 25. Plug-ins ● Declarative configuration model ● Integration of imperative code with plug-ins ● Python 3 plug-ins: o typed parameters:  accept parameters from configuration model  navigate configuration model  read-only view o typed return value: results from imperative code ● Impera schedules plug-in invocation and supports backtracking
  • 26. Plug-ins ● Model type system is meta-programmed into Python ● Each instance is represented by a Python object ● Access to configuration model by native code is mediated with proxy wrappers ● Template is a special type of plug-in with implicit arguments
  • 27. Plug-in example demo/plugins/__init__.py: @plugin def get_ipaddress(host: “ip::Host”) -> “ip::address”: # lookup IP in a database return db.lookup_ip(host.name)
  • 28. Plug-in example demo/plugins/__init__.py: @plugin def get_ipaddress(host: “ip::Host”) -> “ip::address”: # lookup IP in a database return db.lookup_ip(host.name) main.cf implementation lookupIP for ip::Host: self.ipaddres = demo::get_ipaddress(self)) end implement ip::Host using lookupIP server1 = ip::Host(name=”server-1”, os=fedora::fedora21)
  • 29. Orchestration ● Incremental roll-out of configuration changes ● Prune incomplete parts of the model ● Plug-ins can indicate that a parameter is unknown ● Orchestration is derived automatically based on availability of configuration parameters
  • 30. Plug-in example demo/plugins/__init__.py: @plugin def get_ipaddress(host: “ip::Host”) -> “ip::address”: # lookup IP in a database ip = db.lookup_ip(host.name) if ip is None: return Unknown(source=host) return ip
  • 31. Orchestration examples ● Cloud o IP address of VM only available when VM is provisioned at cloud provider o Deploy service updates only when VM is available ● OpenStack deployment o Complex service dependencies o e.g. network service requires uuid allocated by identity service in its configuration files
  • 33. Deploying changes ● two modes available ● client, server, agent o push and pull o fact renewal o enforcing dependencies over machine boundaries ● deploy o deploy directly, machine per machine o local or using ssh o runs embedded agent and server
  • 34. Demo ● Deploy a Drupal website on Amazon ● Use varnish as loadbalancer for 2 web servers ● Add a web server ● Switch to ELB
  • 38. Demo ELB @ AWS db-1 webhost-1 webhost-2 webhost-3
  • 39. Status ● Started in 2010 ● 5 master students ● Large hybrid cloud demonstrator (OpenStack and Amazon) ● Manage our own OpenStack: o deployment o accounts, tenants, networks, routers, … ● Open source on Github ● Basic documentation + tutorial
  • 40. Roadmap ● Integrate monitoring (management) ● State management and migration ● Increase compilation speed ● Improve documentation ● Automated testing for core and modules ● …
  • 41. Contact Bart Vanbrabant bart@impera.io @bartvanbrabant https://distrinet.cs.kuleuven.be Impera tool: ● https://github.com/impera-io/impera ● modules https://github.com/impera-io/* ● http://impera.readthedocs.org/en/latest/ ● https://impera.io | @impera_io