My summary of jPrime 2022

Replicating production on your laptop using the magic of containers by Jamie Lee Coleman

  • 1979 — chroot
  • 2006 — cgroups
  • 2008 — LXC
  • 2013 — Docker
  • 2014 — Kubernetes
  • Virtualization at the OS-level
  • Portability with images
  • Run anywhere
  • Isolation
  • Isolated development environments
  • Portable
  • Preconfigured images available in public registries
  • Fast startup of applications
  • Not many pre-requisites compared with bare-metal software
  • Version control of dependencies
  • Can develop in the cloud
  • True-to production testing
  • Data access, e.g., access to databases
  • Integration testing
  • Automatic updating and version control
  • Complex setup on development machines
  • Portable testing environment
  • Integration tests — data access, application integration, UI/acceptance tests
  • Additional power with contributed modules
  • Supports JUnit 4/5 and Spock
  • You can create a fresh instance of a browser
  • No state is stored across executions
  • Video recording is a must if something goes wrong
public static GenericContainer<?> postgres = new GenericContainer<>("postgres")
  • OpenLiberty
  • Payara Micro
  • Payara Server
  • Wildfly
  • Quarkus

Docker Who: small containers through time and space by Dmitry Chuyko

  • Keep the application itself small
  • Use smaller dependencies
  • Choose the right OS and dependencies
  • Use a small JRE
  • Consider Native Image
  • “No OS”, i.e., distroless
  • Simplicity
  • Resources efficiency
  • Attention to correctness
  • Ease of deployment
  • First-class support for UT8 test

Integration Testing with Spring Boot by Catalin Tudose

  • Acceptance testing: what the user is expecting
  • System testing: testing the system as a whole
  • Integration testing: testing that interactions with “something” from the outside, e.g., databases, work
  • Unit: methods, classes

Demystifying “Event” related software concepts and methodologies by Milen Dyankov
  • Append-only: no deletion, no change to an existing event, no insertion before the last. Not implementing those operations allow for optimization of the storage engine.
  • Full sequential read: traditional databases are designed to serve different purposes.
  • Replay: it’s like a full sequential read but filtered by things one is interested in
  • Read aggregate’s events: from a producer’s point of view, all events produced by one producer
  • Snapshot: you don’t want clients to rebuild the state from a collection of events. Hence, the store should be able to give a snapshot state and all events that happened afterward.
  • Partitioning and archiving: like in accounting, events that happened after a particular time are irrelevant. You don’t want to delete them for auditing purposes, but you can offload them to other slower and less expensive systems.
  1. Axon Server is a message router and event server.
  2. Axon Framework is an Open Source framework for building DDD and CQRS systems

DiscoAPI — OpenJDK distributions as a service by Gerrit Grunwald

  • Many distros: who heard about Tencent Kona?
  • Multiple versions
  • No central place
  • Different VMs
  • It checks if there’s an update available
  • It list possible alternatives
  • It reads the release notes
  • It lists related CVEs. It’s a hint: it doesn’t check the specific JDK but the parent OpenJDK.

Evolving your APIs by your humble servitor




Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store