A year ago Dave Syer posted an excellent, comprehensive overview of how to run Spring Boot applications in Docker.
He delves into the various ways to package Spring Boot applications into properly layered Docker images, highlighting the benefits and basic building blocks of each approach.
Continue reading →
In this post I suggest a way to publish your backend API typings as an NPM package. Frontend projects using can then depend on these typings to gain compile time type safety and code completion when using Typescript.
It’s quite common in a microservice style architecture to provide a type-safe client library that other services can use to communicate with your service. This can be package with a Retrofit client published to nexus by the maintainer of the service. Some projects might also generate that code from a OpenAPI spec or a gRPC proto file.
However, when we expose some of these APIs to the frontend, we lose the types. In this post I suggest a way to publish your backend API types as an NPM package. The frontend can then depend on these typings. Using typescript you now have compile time type safety and code completion. To see a sneak peak, scroll to the end :).
Continue reading →
Since MapStruct version 1.3.0.Final is out, we are able to better integrate with Lombok Builder pattern.
MapStruct is a library that takes away a lot of boilerplate code for mapping between POJO’s.
With MapStruct there is no need for implementing the real mapping itself.
With Lombok we can use a Builder pattern and mark an object as a Value(Object). It will result in an immutable object.
This blog post shows how we can use MapStruct to use the Builder pattern of Lombok.
Continue reading →
A big part of the fun of starting a new project is making a design and choosing an appropriate
technology stack. If you are a Java developer and need to access a SQL database, a common choice is
to use JPA with an ORM framework such as Hibernate. This adds a lot of complexity
to your project for multiple reasons. In my experience, writing performing queries requires careful analysis. Writing custom
queries is possible but more complex. For starters, JPQL/HQL queries are parsed at runtime and the criteria API is far
from user friendly. Moreover, the extensive use of annotations makes it harder to quickly see how the database
is structured.
Kotlin Exposed is a lightweight SQL library on top of JDBC that could serve as a good alternative.
When using Kotlin Exposed you start by describing your database structure using plain Kotlin code. The code
resembles SQL DDL statements very closely and does not require any annotations or reflection! You can use these
descriptions to write type safe queries. These queries can be written in two flavors: DSL and/or DAO.
This post focuses on the DSL flavor.
Continue reading →
After my last post, it would be a good time to do a bit more of a technical story.
The goal will be to set up a Hello World application using the Play framework,
a front-end based on Angular running on a Docker image, deployed in your local running Kubernetes!
So let’s play!
Play has been around for quite some time now.
It was built by web developers to make it more easy to develop web applications using either Java or Scala.
Play is reactive(1) by default, uses the MVC architecture(2) and is built on Akka(3).
Akka can be described as ‘the implementation of the Actor Model(4) on the JVM’.
Play is a lightweight, stateless framework that provides all components you need for web applications and REST services.
It’s easy to scale both horizontally and vertically.
The framework integrates a http server, CSRF protection and i18n support, supports Ebeans, JPA, Slick and does hot reloading of your code.
This makes it easy to directly see the results of your work.
Besides all that, it’s just FUN to use!
For more information about Play, just visit their site.
Continue reading →
Nowadays you can’t walk into an IT department without hearing discussions about containerization.
Should we move to OpenStack or OpenShift?
Do we want to use Pivotal Cloud Foundry?
What about Docker Swarm or Kubernetes?
How to integrate our new kubernetes cluster into our CI/CD pipelines?
Keep in mind that DevOps using unmanaged infra adds an extra layer of complexity to the development teams.
In the end, you might save money on an Ops team, but the tasks still need to be executed, leaving the work for the development team.
As an example, when you create some new code, make a pull-request, the CI/CD pipeline kicks in to automatically build your code, perform (unit) tests, deploy to the next environment, etc.
When an error occurs, the pull request would be rejected, leaving the developer to fix any possible issues, even infra.
Continue reading →
Separating concerns is something we as developers are used to thinking about in terms of code.
But the same also applies to identity management.
If you’ve dabbled in AWS, you can get started right away with a root account.
However, when it goes beyond dabbling, it might be a good idea to start splitting up responsibilities.
Continue reading →
While I’m working with Terraform, I’d thought I’d share the way I set up my DNS for my Virtual Private Cloud (VPC).
Continue reading →
ScalaDays 2019 is alweer een week voorbij, maar langzaam, maar zeker krijgt de enorme hoeveelheid hoge-kwaliteit input hun gevolgen in mijn kennis over Scala.
Naar aanleiding van een rode draad die ik vond tijdens deze ScalaDays, heb ik enige gedachten over het gebruik van Types in Scala geblogd.
Continue reading →
Today I’ve been working exactly minus 23 days at JDriven. So as you might expect, officially I’ll be starting there at the first of July. For my new employer, this is no reason at all not to invite you on the seminars they provide for their people, so yes this proved as well there is a reason to make this next step into choosing for JDriven. So last Thursday there I headed to headquarters at Nieuwegein for a full day workshop about Microservices, given by nobody else than Sam Newman!
Sam Newman
Okay, for the ones who don’t know, he is the author of the books ’Building Microservices’, ’Lightweight Systems for Realtime Monitoring’, and the forthcoming book ’Monolith to Microservices’, all published by O’Reilly. He’s also known being the co-creator of the Lego XP Game.
Continue reading →