Top Banner
Configuration in Modern Software Development Nicolai Ruckel FOSD meeting 2019, Weimar
15

Nicolai Ruckel FOSD meeting 2019, Weimar · FOSD meeting 2019, Weimar. 2 $ ls target discovery-microservice-0.1.0.jar discovery-microservice-0.2.0.jar Current best practice FROM java:8

Jul 29, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Nicolai Ruckel FOSD meeting 2019, Weimar · FOSD meeting 2019, Weimar. 2 $ ls target discovery-microservice-0.1.0.jar discovery-microservice-0.2.0.jar Current best practice FROM java:8

Configuration in Modern Software Development

Nicolai Ruckel

FOSD meeting 2019, Weimar

Page 2: Nicolai Ruckel FOSD meeting 2019, Weimar · FOSD meeting 2019, Weimar. 2 $ ls target discovery-microservice-0.1.0.jar discovery-microservice-0.2.0.jar Current best practice FROM java:8

2

$ ls targetdiscovery-microservice-0.1.0.jardiscovery-microservice-0.2.0.jar

Current best practice

FROM java:8ADD discovery-microservice-0.1.0.jar app.jarEXPOSE 8761ENTRYPOINT ["java","-jar","/app.jar"]

Dockerfile:

[...] <artifactId>discovery-microservice</artifactId> <version>0.1.0</version> <packaging>jar</packaging>

[...]

pom.xml

application.properties

Dockerfile

pom.xmlbootstrap.yml

[...] <artifactId>discovery-microservice</artifactId> <version>0.2.0</version> <packaging>jar</packaging>

[...]

pom.xml

mongodb.conf

Page 3: Nicolai Ruckel FOSD meeting 2019, Weimar · FOSD meeting 2019, Weimar. 2 $ ls target discovery-microservice-0.1.0.jar discovery-microservice-0.2.0.jar Current best practice FROM java:8

3

Current best practice

Dockerfile

Jenkinsfile

pom.xml

push trigger

deploy

bootstrap.yml

Docker image

build andrun tests

deploytravis.yml

deployment.yml

docker-compose.ymlDockerfile

server.xml

build.gradle

EXPOSE 8081

application.propertiesmongodb.conf port: 8081

ufw allow 8081

port=’8081’

Page 4: Nicolai Ruckel FOSD meeting 2019, Weimar · FOSD meeting 2019, Weimar. 2 $ ls target discovery-microservice-0.1.0.jar discovery-microservice-0.2.0.jar Current best practice FROM java:8

4

“An escape from configuration hell”(Matt Welsh, http://matt-welsh.blogspot.com/2013/05/what-i-wish-systems-researchers-would.html)

Page 5: Nicolai Ruckel FOSD meeting 2019, Weimar · FOSD meeting 2019, Weimar. 2 $ ls target discovery-microservice-0.1.0.jar discovery-microservice-0.2.0.jar Current best practice FROM java:8

5

How do developers cope with this?

Interviews with developers from different companies

● IT consultants● 480 employees● 16 European locations

● e-commerce● 345.000 employees

● experts for software testing● 42 employees● more than 250 customers

Page 6: Nicolai Ruckel FOSD meeting 2019, Weimar · FOSD meeting 2019, Weimar. 2 $ ls target discovery-microservice-0.1.0.jar discovery-microservice-0.2.0.jar Current best practice FROM java:8

6

Configuration in daily work

70 %10 %

IT consultant:● Builds up (and configures)

infrastructure● New team for every project

Developer:● Responsible for one or

more services● Configuration of

environment is done by separate platform team

Page 7: Nicolai Ruckel FOSD meeting 2019, Weimar · FOSD meeting 2019, Weimar. 2 $ ls target discovery-microservice-0.1.0.jar discovery-microservice-0.2.0.jar Current best practice FROM java:8

7

Where is configuration stored?

● Configuration in same repository as code● Optional: Additional configuration project for platform

service-specificparameters

Jenkinsfile

Environment-Jenkinsfile

Page 8: Nicolai Ruckel FOSD meeting 2019, Weimar · FOSD meeting 2019, Weimar. 2 $ ls target discovery-microservice-0.1.0.jar discovery-microservice-0.2.0.jar Current best practice FROM java:8

8

Upgrading frameworks breaks configuration

Example: Upgrade Spring Boot 1.x to 2.x● Consequences: performance

problems, run time errors, …● Configuration problems with

dependencies

Page 9: Nicolai Ruckel FOSD meeting 2019, Weimar · FOSD meeting 2019, Weimar. 2 $ ls target discovery-microservice-0.1.0.jar discovery-microservice-0.2.0.jar Current best practice FROM java:8

9

Convention over configuration

● Define defaults● Only configure what differs from default● Reduces number of decisions● Requires a great learning curve

Page 10: Nicolai Ruckel FOSD meeting 2019, Weimar · FOSD meeting 2019, Weimar. 2 $ ls target discovery-microservice-0.1.0.jar discovery-microservice-0.2.0.jar Current best practice FROM java:8

10

Types of configuration

● Technical configuration● Domain-specific configuration

Page 11: Nicolai Ruckel FOSD meeting 2019, Weimar · FOSD meeting 2019, Weimar. 2 $ ls target discovery-microservice-0.1.0.jar discovery-microservice-0.2.0.jar Current best practice FROM java:8

11

Future Work

● We need more interviews● Generate theories● Develop tools and methods for solving

configuration problems

Page 12: Nicolai Ruckel FOSD meeting 2019, Weimar · FOSD meeting 2019, Weimar. 2 $ ls target discovery-microservice-0.1.0.jar discovery-microservice-0.2.0.jar Current best practice FROM java:8

12

Configuration Network

Page 13: Nicolai Ruckel FOSD meeting 2019, Weimar · FOSD meeting 2019, Weimar. 2 $ ls target discovery-microservice-0.1.0.jar discovery-microservice-0.2.0.jar Current best practice FROM java:8

13

Thank you for your attention!

Page 15: Nicolai Ruckel FOSD meeting 2019, Weimar · FOSD meeting 2019, Weimar. 2 $ ls target discovery-microservice-0.1.0.jar discovery-microservice-0.2.0.jar Current best practice FROM java:8

15

Images

Icons:● Freepik● Srip● Eucalyp● Smashicons● Elegant Themes● Yannick

Geek and Poke comic:geek-and-poke.com