Devoxx UK 2024 - Day 2
CI/CD Patterns and Antipatterns - Things your Pipeline Should (Not) Do
Just go with the talk.
The points that grabbed my attention were:
- Pattern #5: Scripted pipeline - Something I will look at implementing better. My takeaway was that the example using
make
in the pipeline just makes it easier for developers to set up local environment, run tests, builds, etc. in the same way they are run in the pipeline. - Caching Container Images
- Rules of thumb for build agent sizing
- Developer time costs more than hardware/cloud
- Pipeline resources should be:
- At least as powerful as worst developer hardware
- Ideally as powerful as the best developer hardware
Other stuff mentioned and I should read up on:
Codespaces, Gitpod, Devpod … what cloud and container-based IDEs can do for you
I’ve used Codespaces to write these articles.
Interesting to know of the alternatives:
When developing, troubleshooting, etc. the hardest part to debug is the environment, DEV != REF != OPS but also each developer may be running differently. Having a consistent environment helps with:
- Collaboration
- Debugging
- Onboarding
- Consistency
- Cloud hosted allows developers to use any architecture, e.g. ARM.
Copespaces:
- Github offering
- VS Code ✅
- IntelliJ ❓ - with a gateway that is currently in Beta.
Github:
- Not linked to a specific git cloud provider.
- But only supports a cloud provider, i.e. GitLab, GitHub, BitBucket.
- Can use their cloud or yours.
- Does not support
.devcontainers
config. - Uses
.gitpod.yml
+Dockerfile
. - Browser extension for launching direct from GitHub.
DevPod:
- Any git repo including local git folder.
- VS Code ✅
- IntelliJ ✅
- Runs on multiple providers:
- Local Docker, like vanilla dev containers.
- Local VM
- Local / On Prem K8s
- Cloud …
Other:
- Reference to Gitea - run your own GitHub?
- Slides had examples of running the following in containerised environment:
- Docker in Docker for developing containers.
- Minikube.
- Really running alongside the container.
From Java 17 to 21: A Showcase of JDK Security Enhancements
Relating to JDK security.
- Key sizes - defaults, supported, etc. all increasing
- Post Quantum Cryptographic Algorithms
- LMS (HBS) - Leighton-Micali Hash-Based Signatures.
- Can verify signatures.
- SHA-1
- Vulnerable to collision attacks
- No longer the default
- JDK 18 disabled SHA-1 for jar signatures where timestamp > 01/01/2019
- 3DES - restricted since JDK 19
- TLS-ECDH - restricted since JDK 20
- TLS 1.2 - preferred since JDK 20
- Java Security Manager (JSM)
- Disabled by default since JDK 18
- Some JAAS API need JSM so need to enable.
- Keystore Attributes
- Can be accessed without password since JDK 18
- TLS/DTLS API improvements
- Key Encryption Mechanism (KEM)
- Secure Key Negotiation
- New API in JDK 21
- KeyPairGeneration
- Encapsulate
- Decapsulate
- More in JDK 23
- cacerts - since JDK 20
- No longer uses JKS
- Password less PKCS#12
- Public certificates no longer encrypted
- No longer need to change the default password
- Tools
- Larger key sizes by default
- Warnings on weak algorithms
See also:
Managing Kubernetes workloads: extend the platform with operators
Good introduction to operators.
- Custom Resource Definition (CRD)
- Operator
- Containerised application
- Understands your new kind
- Creates all resources for your complex application
deployment
pvc
- …
- Can also do external stuff, not limited to K8S resources (like Helm)
- Configure load balancer
- Setup external DNS
- Alternatives
- Ansible
- Helm
- Kustomise
Better than Helm? (so they say)
- Helm relies on built-in resources
- Templating of many yaml files - this can be hidden in the operator
- Does not watch/monitor/update etc
- But is good for deploying
- Operator is good for upgrading/scaling
There is the OperatorHub.io registry.
For developing Operators see:
Don’t Get Burned! Secure Coding Essentials in Java to protect your applications
Good working examples in talks showing how to identify (with Snyk), presenter work for Snyk but was not pushing the product) a number of common application vulnerabilities.
- SQL Injection
- File path traversal - using Burp Suite,
- XML
- XSS - reflective and stored
Other:
- Hashing / Encryption
- Use the right technique for the right job
- Use Argon2id for password hashing.
- Use AES with GCM/CCM for encryption.
- Need to consider how to upgrade in algorithms in the future, multiple times as standards change.
- OpenRewrite for upgrading code for Spring Boot version.
dontgetburned - the app from the demo.
How To Not Strangle Your Coworkers: Resolving Conflict with Collaboration
Very worthwhile talk. Need to re-watch this.
From Silos to DevOps to Platform Engineering: embracing GitOps and going behind the hype
Very entertaining once you got over the accents.
Gitops:
- Single source of truth
- Everything as code
- Operations through git workflows
- Collaboration
- Visibility
- Security / Reliability
- Provisioning / Deployment
See also:
- Kratix
- Argo CD
- Clever Cloud for developing –> deploy.
Follow up - maybe read Team Topologies.
Mayday Mark 2! More Software Lessons From Aviation Disasters
Did not cover recent Boeing problems but the presenter did mention someone else had covered these in depth.
The first talk in the series is Stories: Mayday! Software lessons from an aviation disaster.