SlideShare a Scribd company logo
1 of 39
Download to read offline
Rick Ossendrijver
Empowering Developers:
Picnic’s Java Platform Approach
2 • 22-November-23
Picnic’s Java Platform Team
1
Centralized Maven configuration
2
Agenda
Dependency management
3
Shared libraries
4
Static analysis and automation tooling
5
3 • 22-November-23
Picnic
4 • 22-November-23
Automated Fulfillment
Center
5 • 22-November-23
Picnic Tech
300
Engineers
35
Teams
5M
Lines of code
8
Years
6 • 22-November-23
Our goal
Empower our developers
Focus on business logic
Minimal overhead
Autonomy
Openness
Developers
Building blocks for
developers
Multiplier effect
Convention over
configuration
Coding standards
Centralized
configuration
Best practices
Automation
Developer productivity Uniformity
Code quality
Reducing technical
debt
Migrations
8 • 22-November-23
Java Platform Team
40 modules
Shared libraries Developer tooling
CI / CD
Monitoring
9 • 22-November-23
Picnic’s Java Platform Team
1
Centralized Maven configuration
2
Agenda
Dependency management
3
Shared libraries
4
Static analysis and automation tooling
5
10 • 22-November-23
Picnic Java Support Modules
Maven Parent
Shared Libraries
Tools
11 • 22-November-23
Maven Parent POM
Modules
Properties
Dependency management
Dependencies
Build
Profiles
12 • 22-November-23
Profiles
13 • 22-November-23
Plugins
14 • 22-November-23
Maven dependency plugin
[INFO] --- maven-dependency-plugin:3.6.1:analyze-only
(analyze-dependencies) @ cache-support ---
[ERROR] Unused declared dependencies found:
[ERROR] com.google.guava:guava:jar:32.1.3-jre:compile
[...]
[ERROR] Failed to execute goal
org.apache.maven.plugins:maven-dependency-plugin:3.6.1
:analyze-only (analyze-dependencies) on project
cache-support: Dependency problems found
15 • 22-November-23
Maven license plugin
[WARNING] License: 'Affero General Public License (AGPL)'
used by 1 dependencies:
- Example dependency that uses AGPL.
(com.example.dependency:example:12.1.3 -
https://github.com/example/dependency)
[...]
[ERROR] Failed to execute goal
org.codehaus.mojo:license-maven-plugin:2.3.0:add-third-pa
rty (check-third-party-licenses) on project picnic-meta:
There are some forbidden licenses used, please check your
dependencies.
[...]
16 • 22-November-23
Picnic’s Java Platform Team
1
Centralized Maven configuration
2
Agenda
Dependency management
3
Shared libraries
4
Static analysis and automation tooling
5
17 • 22-November-23
Maven dependency management
18 • 22-November-23
Maven dependency management
19 • 22-November-23
Maven enforcer plugin
[ERROR] Rule 1: DependencyConvergence failed with message:
[ERROR] Failed while enforcing releasability.
[ERROR] Dependency convergence error for
com.google.guava:guava:jar:31.1-jre paths to dependency are:
[...]
[ERROR] +-tech.picnic.example:example-api:jar:0.0.0-SNAPSHOT
[ERROR] +-com.google.guava:guava:jar:31.1-jre:compile
[ERROR] and
[ERROR] +-tech.picnic.example:example-api:jar:0.0.0-SNAPSHOT
[ERROR] +-com.google.truth:truth:jar:1.1.3:compile
[ERROR] +-com.google.guava:guava:jar:32.1.3-jre:compile
20 • 22-November-23
Dependency Upgrades at Picnic
Assign reviewers
Labels
Package managers
Automerge
Renovatebot / renovate
Universal dependency update tool that
fits into your workflows.
21 • 22-November-23
22 • 22-November-23
Picnic’s Java Platform Team
1
Centralized Maven configuration
2
Agenda
Dependency management
3
Shared libraries
4
Static analysis and automation tooling
5
23 • 22-November-23
Shared Libraries
24 • 22-November-23
Shared Libraries
25 • 22-November-23
26 • 22-November-23
Picnic’s Java Platform Team
1
Centralized Maven configuration
2
Agenda
Dependency management
3
Shared libraries
4
Static analysis and automation tooling
5
27 • 22-November-23
Static analysis
checkstyle/checkstyle
Helps programmers write Java code
that adheres to a coding standard.
SonarSource/sonarqube
Continuous Inspection.
28 • 22-November-23
Automation
Google/google-java-format
Reformats Java source code to comply
with Google Java Style.
29 • 22-November-23
OpenRewrite
Recipes
Large scale refactoring
Migrations
30 • 22-November-23
OpenRewrite
https://docs.openrewrite.org/recipes/java/spring/boot3/upgradespringboot_3_0
31 • 22-November-23
ArchUnit
https://www.archunit.org
▪ Architecture rules
▪ API
▪ Domain logic
▪ Freezing
b a r
32 • 22-November-23
ArchUnit
https://www.archunit.org
33 • 22-November-23
Open-source static analysis
Patching bugs
500+ Error Prone checks
Error Prone
Google/error-prone
Catch common Java mistakes
as compile-time errors
34 • 22-November-23
Picnic open-sourced: Error Prone Support!
800+ Refaster rules
40+ Error Prone bug checks
https://error-prone.picnic.tech
35 • 22-November-23
Error Prone BugPattern
36 • 22-November-23
Refaster rule
Developers
Building blocks for
developers
Multiplier effect
Convention over
configuration
Coding standards
Centralized
configuration
Best practices
Automation
Developer productivity Uniformity
Code quality
Reducing technical
debt
Migrations
Summary
38 • 22-November-23
The fellowship of the Java Platform Team
Jarmila Kaiser Oksana Evseeva
Pieter Dirk Soels
Luca Hennart Nathan Kooij
Rick Ossendrijver Stephan Schroevers
Picnic
Lexicographically ordered, how we like it.
39 • 22-November-23
Questions and feedback!
blog.picnic.nl
https://error-prone.picnic.tech
join.picnic.app
rickie rick_ossies

More Related Content

Similar to Java Platform Approach 1.0 - Picnic Meetup

Cloudstack Continuous Delivery
Cloudstack Continuous DeliveryCloudstack Continuous Delivery
Cloudstack Continuous Delivery
buildacloud
 
Session 3 - CloudStack Test Automation and CI
Session 3 - CloudStack Test Automation and CISession 3 - CloudStack Test Automation and CI
Session 3 - CloudStack Test Automation and CI
tcloudcomputing-tw
 
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
mfrancis
 
Power shell saturday ravikanth
Power shell saturday  ravikanthPower shell saturday  ravikanth
Power shell saturday ravikanth
Ravikanth Chaganti
 

Similar to Java Platform Approach 1.0 - Picnic Meetup (20)

Continuous Delivery Applied
Continuous Delivery AppliedContinuous Delivery Applied
Continuous Delivery Applied
 
How to successfully load test over a million concurrent users stp con demo
How to successfully load test over a million concurrent users stp con demoHow to successfully load test over a million concurrent users stp con demo
How to successfully load test over a million concurrent users stp con demo
 
CI CD Daridabad MuleSoft meetup
CI CD Daridabad MuleSoft meetupCI CD Daridabad MuleSoft meetup
CI CD Daridabad MuleSoft meetup
 
Cloudstack Continuous Delivery
Cloudstack Continuous DeliveryCloudstack Continuous Delivery
Cloudstack Continuous Delivery
 
Webinar June 2017 l Apica LoadTest to compliment HP Loadrunner
Webinar June 2017 l Apica LoadTest to compliment HP LoadrunnerWebinar June 2017 l Apica LoadTest to compliment HP Loadrunner
Webinar June 2017 l Apica LoadTest to compliment HP Loadrunner
 
Open shift deployment review getting ready for day 2 operations
Open shift deployment review   getting ready for day 2 operationsOpen shift deployment review   getting ready for day 2 operations
Open shift deployment review getting ready for day 2 operations
 
DevOps on AWS: Accelerating Software Delivery with the AWS Developer Tools
DevOps on AWS: Accelerating Software Delivery with the AWS Developer ToolsDevOps on AWS: Accelerating Software Delivery with the AWS Developer Tools
DevOps on AWS: Accelerating Software Delivery with the AWS Developer Tools
 
Session 3 - CloudStack Test Automation and CI
Session 3 - CloudStack Test Automation and CISession 3 - CloudStack Test Automation and CI
Session 3 - CloudStack Test Automation and CI
 
DevOps Pipeline for Liferay Application
DevOps Pipeline for Liferay ApplicationDevOps Pipeline for Liferay Application
DevOps Pipeline for Liferay Application
 
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
Improved developer productivity thanks to Maven and OSGi - Lukasz Dywicki (Co...
 
Intelligent Projects with Maven - DevFest Istanbul
Intelligent Projects with Maven - DevFest IstanbulIntelligent Projects with Maven - DevFest Istanbul
Intelligent Projects with Maven - DevFest Istanbul
 
Java User Group Cologne
Java User Group CologneJava User Group Cologne
Java User Group Cologne
 
CI-CD Jenkins, GitHub Actions, Tekton
CI-CD Jenkins, GitHub Actions, Tekton CI-CD Jenkins, GitHub Actions, Tekton
CI-CD Jenkins, GitHub Actions, Tekton
 
Power shell saturday ravikanth
Power shell saturday  ravikanthPower shell saturday  ravikanth
Power shell saturday ravikanth
 
CA World 2014 Release Automation Coexistence in the Enterprise
CA World 2014 Release Automation Coexistence in the EnterpriseCA World 2014 Release Automation Coexistence in the Enterprise
CA World 2014 Release Automation Coexistence in the Enterprise
 
Continuous delivery - tools and techniques
Continuous delivery - tools and techniquesContinuous delivery - tools and techniques
Continuous delivery - tools and techniques
 
(SACON) Satish Sreenivasaiah - DevSecOps Tools and Beyond
(SACON) Satish Sreenivasaiah - DevSecOps Tools and Beyond(SACON) Satish Sreenivasaiah - DevSecOps Tools and Beyond
(SACON) Satish Sreenivasaiah - DevSecOps Tools and Beyond
 
Let's build Developer Portal with Backstage
Let's build Developer Portal with BackstageLet's build Developer Portal with Backstage
Let's build Developer Portal with Backstage
 
What's new in Docker - InfraKit - Docker Meetup Berlin 2016
What's new in Docker - InfraKit - Docker Meetup Berlin 2016What's new in Docker - InfraKit - Docker Meetup Berlin 2016
What's new in Docker - InfraKit - Docker Meetup Berlin 2016
 
Agile2015 short paper presentation: Development of Complex Software with Agil...
Agile2015 short paper presentation: Development of Complex Software with Agil...Agile2015 short paper presentation: Development of Complex Software with Agil...
Agile2015 short paper presentation: Development of Complex Software with Agil...
 

Recently uploaded

Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
FIDO Alliance
 
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc
 
Microsoft BitLocker Bypass Attack Method.pdf
Microsoft BitLocker Bypass Attack Method.pdfMicrosoft BitLocker Bypass Attack Method.pdf
Microsoft BitLocker Bypass Attack Method.pdf
Overkill Security
 

Recently uploaded (20)

AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by Anitaraj
 
The Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightThe Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and Insight
 
(Explainable) Data-Centric AI: what are you explaininhg, and to whom?
(Explainable) Data-Centric AI: what are you explaininhg, and to whom?(Explainable) Data-Centric AI: what are you explaininhg, and to whom?
(Explainable) Data-Centric AI: what are you explaininhg, and to whom?
 
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsContinuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
 
WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024
 
Top 10 CodeIgniter Development Companies
Top 10 CodeIgniter Development CompaniesTop 10 CodeIgniter Development Companies
Top 10 CodeIgniter Development Companies
 
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptx
 
الأمن السيبراني - ما لا يسع للمستخدم جهله
الأمن السيبراني - ما لا يسع للمستخدم جهلهالأمن السيبراني - ما لا يسع للمستخدم جهله
الأمن السيبراني - ما لا يسع للمستخدم جهله
 
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
 
State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!
 
Simplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptxSimplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptx
 
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...Hyatt driving innovation and exceptional customer experiences with FIDO passw...
Hyatt driving innovation and exceptional customer experiences with FIDO passw...
 
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
TrustArc Webinar - Unified Trust Center for Privacy, Security, Compliance, an...
 
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
 
AI mind or machine power point presentation
AI mind or machine power point presentationAI mind or machine power point presentation
AI mind or machine power point presentation
 
Microsoft BitLocker Bypass Attack Method.pdf
Microsoft BitLocker Bypass Attack Method.pdfMicrosoft BitLocker Bypass Attack Method.pdf
Microsoft BitLocker Bypass Attack Method.pdf
 
Design and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data ScienceDesign and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data Science
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
2024 May Patch Tuesday
2024 May Patch Tuesday2024 May Patch Tuesday
2024 May Patch Tuesday
 

Java Platform Approach 1.0 - Picnic Meetup