Complete gig history
A typical workflow in a modern software dev project often looks like: Build code, put the built artifact into a container image, put the container image into a registry and deploy to Kubernetes. Each step has it’s own requirements and pitfalls alike. The overall goal is most often to bake those steps into easily repeatable pipelines and enable a high degree of automation and standardization. Dockerfiles seems to be the choice with the highest adoption when it comes to containerizing code artefacts. However most Dockerfiles (and also most sample's of Dockerfiles you find in tutorials) do not exploit it to the full potential. There are a lot of improvements to be done in how to build and optimize for VM-based applications. The talk will give deeper insights by comparing (simple and multi-stage) Dockerfiles to Cloud-Native Buildpacks (buildpacks.io/paketo.io), Google’s JIB and jlink under the evaluation criteria of - build time - build size - standardization - robustness - memory configuration - security The examples and live demo will have certain focus on Java-based frameworks (Spring Boot, Quarkus, Micronaut), but coverage of other languages will also be included and highlighted. Github @ https://github.com/maeddes/java-and-container Slides @ https://speakerdeck.com/maeddes/options-galore-from-source-code-to-container-image #vdc25
Understanding Kubernetes can be hard. Not only in the initial learning and understanding of the concepts, but also the aspect of keeping an overview of what is happening inside at the workloads of the cluster can be challenging. How can you quickly and easily tell if your apps are healthy, well utilised and running fine? This talk intends to look at the various aspects of Kubernetes observability and to introduce and compares multiple Open Source tools to achieve that. The range of tools covers different observability levels and requirements of different user groups. It starts with tools simply querying the Kubernetes API and delivering the outputs in an easy-to-understand UI, goes over the possibilities of services meshes and ends with application-side logging and monitoring. For each level of observability the user has to pay a certain price in terms of configuration and runtime overhead. In turn the quality and depth of the information is different. The intended take-away is to get a feeling which type of tooling is the right one for a given purpose. Most options will be shown in a live demonstration. Some of the technologies have a polyglot aspect and can be applied independent of the framework. This talk has a dominant focus on JVM-based applications.
Software Development based on a distributed (microservice) architecture provides both several advantages and new challenges. In order to take advantage of the distribution it requires implementation of service discovery, routing, load-balancing, resilience mechanisms and more. Java frameworks like Micronaut, Quarkus or Spring Boot provide dedicated implementations for API Gateways, Service Registries, Circuit Breakers and many more. These functionalities are declared as code dependencies and need to be set at build time. If the architecture is running on top of Kubernetes many of those features are provided out-of-the-box independent of the application. So-called service mesh implementations extend the Kubernetes functionality for getting more insights and control over the underlying network. A fairly new approach is emerging with the eBPF technology, which claims to enable service meshes with minimal overhead. With this talk I want to compare the approaches to figure out if one, the other or a combination of them might make sense. The talk is split into a theoretical and a live-demo part.