Philipp Hauer's Blog

Java Ecosystem, Kotlin, Engineering Management, Sociology of Software Development

'MongoDB for Java Developers' (M101J) I: Experiences and Assessment

Posted on Feb 21, 2016

'MongoDB for Java Developers' (M101J) I: Experiences and Assessment

I attended the course “MongoDB for Java  Developer” (M101J). It was fun and I learned a lot about MongoDB. I like to share my gained knowledge and experience in a two-part series. In this first part I assess the course and state, whether or not the course is worth the time.

Don’t generate (everything). Or: Framework beats Generator

Posted on Jan 7, 2016

Don’t generate (everything). Or: Framework beats Generator

When we apply Model-Driven Software Development (MDSD) we write a generator which produces code out of a model. The promise is that among others, we can reduce the boilerplate code and accelerate the development. However, MDSD is not a cure-all and should be applied with sound judgment. In this post I cover some drawbacks of the generator approach, anti-patterns and present an alternative to generators: frameworks.

Analyzing the Memory Usage of a Vaadin Application

Posted on Dec 17, 2015

Analyzing the Memory Usage of a Vaadin Application

Does your Vaadin application scale well? As Vaadin holds the UI state of every user on the server-side, the used server memory increases with every active user. So can our Vaadin application deal with an increased amount of users in terms of the used memory? We will find out! In this post I present tools and approaches to investigate the memory footprint of our Vaadin application.

Databases as a Challenge for Continuous Delivery

Posted on Nov 28, 2015

Databases as a Challenge for Continuous Delivery

Applying Continuous Delivery means to automate the delivery pipeline and to release frequently.  However, databases are a big challenge, because with every deployment we may need to update and migrate our database before we can deploy our application. This post points out solutions for dealing with databases in a Continuous Delivery scenario.

Tutorial: Continuous Delivery with Docker and Jenkins

Posted on Nov 7, 2015

Tutorial: Continuous Delivery with Docker and Jenkins

Introducing Continuous Delivery means to automate the delivery process and to release our application frequently. This way, we improve the reliability of the release process, reduce the risk and get feedback faster. However, setting up a Continuous Delivery pipeline can be difficult in the beginning. In this step by step tutorial I will show you how to configure a simple Continuous Delivery pipeline using Git, Docker, Maven and Jenkins.

Discussing Docker. Pros and Cons.

Posted on Oct 25, 2015

Discussing Docker. Pros and Cons.

Docker allows us to easily create reproducible environments for our application. We automate the setup of the environment and eliminate manual error-prone tasks. This way we reduce the risks and the reliability of the deployment process. But there are also challenges and domains, where the usage of Docker can be difficult. This post discusses several advantages of Docker and points out some drawbacks.

Building a Dropwizard Microservice with Docker and Maven

Posted on Sep 20, 2015

Building a Dropwizard Microservice with Docker and Maven

Dropwizard produces a fat jar containing every dependency your microservice needs to run. This includes a web server. This way, no web server needs to be installed and configured on the target machine. However, there is some infrastructure left (like the JRE) which still has to be installed before the deployment. That’s where Docker enters the stage. With Docker we can produce an artifact containing really everything we need to run our microservice. In this post, we take a look at how we can integrate Docker into our Maven build, run our tests against the container and push the image to a repository.

Enriching RESTful Services with Swagger

Posted on Jul 28, 2015

Enriching RESTful Services with Swagger

Consuming RESTful services can be a laborious task, because there is much low-level-work to do. Jealously we looked at the WS*/SOAP guys: They can easily generate a nice client API based on the formal interface specification WSDL. This significantly simplifies the service consumption. For a long time the REST world lacks a widespread formal specification and generation tools. But Swagger sets out to change this.

Why Relational Databases are not the Cure-All. Strength and Weaknesses.

Posted on May 14, 2015

Why Relational Databases are not the Cure-All. Strength and Weaknesses.

Relational Databases seem to be the universal hammer in the toolbox of every developer. There is the notion that you can solve every problem with it – you just have to smash hard enough. However, if you use relational databases out of habit, you can easily run into troubles when it comes to schema evolution, scalability, performance or certain domains. This post discusses the strength and weaknesses of relational databases and points out alternatives.