Category Archives: Uncategorized

DevConf.cz 2020 in Brno

I was invited to DevConf.cz this year and I used this great opportunity to learn more about the new trends in the software development. Especially in the areas like microservices, clouds and continuous delivery.

Friday

Quarkus: Java development turned into delight

Unfortunately I arrived a bit late. But, the main point for me has been that for a start of a new project, I should use code.quarkus.io. Will take a look. I have seen in a demo that Quarkus compilation of a Java code may take more time and the resulting executable file is bigger than ordinary JAR file. However, this executable is native, without the need of a JRE and it executes very fast.

Keep Your Secrets Secret – Kerberos in Java

Kerberos basics were explained. Example with Wireshark. Then the talk focused on the GSS-API. I have learned that the GSS-API is a somewhat similar framework to the TLS framework. GSS stands for Generic Security Service. So the service implementation is pluggable. We saw also an example of Kerberos inside a JAAS client-server application.

CodeReady Containers: Run OpenShift 4 locally

Unfortunately I did not get much from this presentation. We have seen how we can setup an OpenShift console on a localhost machine. It is quite a complex task.

Cloud native CD/CI: Tekton and Jenkins X

Excellent talk by Paolo Carta! The complex topic was explained in a very clear way and there were many funny moments too 🙂 I have learned Jenkins CI is not suitable for the cloud. A new project called Tekton was introduced. Tekton was designed with intention to consume less resources and to be Kubernetes native.

Tekton pipelines are cloud native, orchestrated by Kubernetes and decoupled. We saw a demo, in which we saw a Kubernetes cluster setup. Tekton has its yaml configurations based on Kubernetes. We saw several recommendations and best practices, for example to separate repositories for code and configuration. Tekton is console based. We saw how to list tasks in Tekton and how to work with logs.

Defining Kubernetes pipelines is complex and error prone. That is why Jenkins X project emerged. It is a new project, an abstraction on top of Tekton. We were introduced the GitOps – it means every configuration is in Git. GitOps is opinionated. It has jx-staging and jx-production environments by default. It uses single Kubernetes cluster. Multiple clusters are not supported by Jenkins X yet.

Do we need a docker file? Not necessarily, we can use Kanikal or scaffold.

Overall excellent presentation, clear, illustrative and practical.

Dogfooding Tekton project with Tekton

Tekton is based on declarative pipelenes with Kubernetes custom resources (CRDs). It is possible to scale pipelines on demand with containers in Kubernetes. Images can be built with Kubernetes tools. It is possible to deploy applications to multiple platforms like serverless, virtual machines and Kubernetes. Tekton has a powerful command line tool.

Pipeline concept was introduced: Step, Task (runs in a pod), Pipeline, PipelineResource, PipelineRun, TaskRun

To sum it up Tekton is a platform to do a CI on top of Kubernetes. Tekton runs inside Kubernetes, but it can be deployed anywhere.

Deploy Complex Application Stacks with Ansible

Ansible basics were summed up, and its main idea to strive for idempotency. We saw a demo with deployment of a complex stack example: Elasticsearch, Logstash, Kibana, Nginx.

In the demo we were shown how the deployment is done, work with Ansible system facts, conditional vars, vars_files and ansible-lint project for testing your playbooks.

Most useful browser APIs

A bit different talk from the others, but I have seen several concepts useful for frontend developers, like several file drop handling options, long pooling, web socket, mouse cursor locking and a bit of canvas.

Saturday

Unfortunately I missed the Quarkus workshop by Daniel Oh. However I’ll definitely take a look once it’s available online.

Progressive migration from Jakarta EE to Microprofile

I liked the example with Italian cuisine and its comparison to code writing practices – spaghetti code 90′, monoliths (lasagne) 00′, microservices (tortelli) 10′.

Two methods for migration were introduced: progressive migration and migration by adding microprofile to the monolith app.

I have seen a simple example using Microprofile. The output of the Microprofile metric (invocation count) was quite verbose, so we were told that it could be effectively consumed by Prometheus (with its configuration in yaml). The internal application calls can be measured by a metric too, not just REST APIs (method findById example).

Another interesting example was open tracing example with Jaeger. It is used to trace calling of services and internal methods in microservices architecture. Tracing is similar to debugging, but we can’t see the called data, optionally we can set our own ‘value’ argument to @Traced annotation. With Fault tolerance we can add retry mechanism, setting max retries. Retries work both on REST API calls, but they are also supported in CDI. Another introduced features were OpenApi documentation, RestClient and health check.

I have already worked a bit with Microprofile. So it was nice to see its features in practice and to hear several best practices. I have asked many questions.

Building reactive microservices with MicroProfile

The reactive concept was demonstrated on a coffee shop example. Customers were ordering their coffee and their coffees were asynchronously prepared by baristas. We could see asynchronous (reactive) behavior very well on a real web page example.

Technically the talk was very interesting and it contained a lot of live coding and a lot of logic implementation, including integration with Apache Kafka.

Kogito workshop – From zero to cloud ready

This workshop was a bit special for me. I directly contributed to Drools and jBPM 5 and jBPM 6 in the past. The new Kogito project is another evolution of these two projects and I would describe it is a cloud ready combination of both jBPM and Drools.

Simply said BPMN process models are now understood and can be implemented as microservices.

This was an interactive workshop so my hands ‘got dirty’ as I downloaded VS Code and a few extensions and used them to implement a business process model as a cloud ready microservice. Kogito uses Quarkus internally for compilation of the microservices. The resulting microservices are native and cloud-ready.

Summary

The information technology world is changing very quickly. Last week I saw a presentation by a modern bank with its cloud architecture, which is able to deliver fast and has a very scalable cloud solution. At devconf.cz I have deepened my understanding of the cloud possibilities and learned a lot of new stuff. All the talks were very interesting for me.

Devconf.cz 2016 impressions

This weekend I travelled to Brno to attend Devconf.cz conference. In the last years I also gave there jBPM presentations or helped with a workshop. This time I went to Brno only as a visitor and I concentrated on visiting some interesting presentations on Saturday.
In the following lines I’ll try to resume and sum up my thoughts and impressions from the conference talks.

Docker for Java EE developers

Ok, Docker rocks. I was wondering if it was possible to just prepare a Docker image with a dev-ready application server for use in development. I face the following situation – setup of development environment takes quite a lot of time like hours or days. So it would be perfect if one could just use Docker image for development environment setup in couple of minutes. But when the Docker is running the prepared image, you often need to replace .war file with developed application. And from my point of view I think that one needs to know several unnecessarily complex Docker commands in order to do that. So it is not so easy to be used. Easy use is very important for me. It’s possible that I am missing something, so any comment below the article will be very appreciated!

C# on Linux

Open sourcing of .NET framework by Microsoft looks really interesting and promising. I look forward to the future, perhaps one day C# and .NET ecosystem will replace Java? 🙂 As a Java developer I have to admit the fact that Java has some design issues that were addresses well by newer C# language. On the other you do not have to use problematic syntax of Java, you can just stick to latest and/or proven techniques to overcome these minor shortcomings. I mean for example checked exceptions, getters and setters etc.

Reactive extensions/programming

This talk was really interesting. Good topic and good presentation with simple and nice examples. Now I am motivated to try this stuff in an example project. I’ve also heard before an opinion that doing concurrency stuff in reactive way can substantially minimize risks of race condition issues. So time to learn it!

Let’s encrypt Best Practices

I find security topics always interesting, not only because I studied IT security, but I was always fascinated by inventiveness of both people who develop the security technologies and algorithms and then those who misuse security flaws.

Go for Java developers

Main focus was put solely on particular differences between various Java and Go language constructs. Some of them I liked and some not. I heard also that it’s troublesome to debug in Go, because there is no debugger available. It was difficult to imagine how Go development works in reality.

Gentle introduction to Node.js (not only) for Java devs

I have already attended a talk about Node.js previous year. This time at least I learned something new once more. Interesting technology to try it out!