In a large-scale distributed system, it's inevitable that some requests will fail. Even if your collaborating systems work perfectly, sooner or later you will experience temporary network issues and other intermittent errors. That's why a lot of people try to paint over this issue by implementing retries in their applications …
read moreOther articles
The Curse of Convenience Methods
In the old days, many Java APIs were fairly low level and pretty generic. You often had to explicitly select a concrete implementation, provide lots of parameters, and generally needed to know how things worked. This has changed in recent years - modern APIs provide lots of convenience functionality that raises …
read moreLet's Use TLS
I have followed the HTTP/2 specification process closely and I like how the new protocol improves web performance and makes old workarounds obsolete. One drawback of deploying HTTP/2 is that most browser vendors only implement it on top of TLS. Since I've seen a lot of broken TLS …
read morePreventing Cascading Failure
With the advent of reactive programming and frameworks like Netflix' Hystrix, classic stability patterns like Nygard's Circuit Breaker Pattern have entered mainstream software development. The circuit breaker is used inside your clients to cut the connection to a collaborating system (the server) once you notice the server doesn't answer in …
read moreA Case for Guard Clauses
One of my pet peeves in programming is that few people use guard clauses. A guard clause is an almost trivial concept that greatly improves readability. Inside a method, handle your special cases right away and return immediately.
Have a look at the following example:
private int doSomething() { if (everythingIsGood …
read moreDevelopment Done Right
In my projects, I've always been the one who took care of infrastructure, standardization and quality assurance from the development perspective. The funny thing is that I'm no admin and no QA guy, so most of it wasn't even my job. In this article, I'm going to list a few …
read moreSaving Session Data in Web Applications
There are many ways to store session data in web applications. They all differ in scalability, failover capabilities, and complexity. I'll give you a quick rundown on the major themes.
Session Data on the Client
You can often implement simple personalization features or workflows by storing state on the client …
Efficient Development Environment Setup
Development environments and their configuration can become quite complex. It's not unusual that a complete workstation setup takes half a day or more and requires extensive help from other project members. Using virtual machines for the runtime environment can help to reduce setup and maintenance costs.
For large Java web …
read moreProfessional Deployment and Operation of Web Applications
There are millions of web applications on the Internet that are under constant development. Paying software developers to work on bug fixes and new features is quite expensive already, but what's often neglected is the cost for deployment and operation. Well-run organizations invest in their deployment and runtime infrastructure and …
read more