Implementing feature toggles for a Spring Boot application - Part 3
Posted on Mon, Nov 28, 2016
In the third part of this series about implementing feature toggles for a Spring Boot application, we will take a look at exposing the state of feature flags as a Spring Boot management end point for monitoring and testing purposes.
Implementing feature toggles for a Spring Boot application - Part 2
Posted on Sat, Nov 26, 2016
In the second part of this series about implementing feature toggles for a Spring Boot application, we will look at exposing the features to the Angular front-end so that features can be toggled in UI components.
Implementing feature toggles for a Spring Boot application - Part 1
Posted on Mon, Nov 21, 2016
In one of our recent projects at work, we implemented feature toggles for a Spring MVC / Angular JS code base and this series of blog posts discusses our motivations and requirements, the approach we took and what we learned from it.
Setting up a secure etcd cluster behind a proxy
Posted on Fri, Nov 11, 2016
This is a blog post that explains how to set up a highly available etcd cluster behind a proxy and securing the communication between a client and the proxy, between the proxy and the individual member in the cluster and between members in the cluster.
A very basic introduction to deploying a Java application using Kubernetes
Posted on Fri, Nov 4, 2016
I have been playing around with Kubernetes and Docker lately. To borrow the description of Kubernetes from their website, “Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications.” One of the first things I did was to try and see what it would take to go from an application to deploying it. I started with a simple Java application and had to set up the development environment.
Handling Deserialization errors in Spring Redis Sessions
Posted on Wed, Nov 2, 2016
One of the challenges of using storing spring sessions in Redis is that the objects that gets stored as part of a session often undergoes changes as the application evolves and these changes cause de-serialization exceptions to be thrown after a deployment when a session created before the deployment is presented to the application. This blog post discusses a method to work around this issue.
CSRF Protection with Spring Security and Angular JS
Posted on Wed, Jul 20, 2016
Both Spring Security and Angular JS provide support for CSRF protection. However, getting these to work together to provide protection from CSRF requires some non-obvious configuration. This blog post explains how to add CSRF protection to an application that uses Spring Security with an Angular JS front end.
Controlling Redis auto-configuration for Spring Boot Session
Posted on Sat, Jul 16, 2016
If you have been using Spring Boot, chances are that you are using the Spring Session library to handle sessions. Spring Session has the ability to persist the sessions to various data stores, including Redis. The default behaviors of Spring Boot when combined with Spring Session is to start using Redis as the session store the moment
spring-session-data-redis is detected in the class path, thereby making it hard to conditionally turn Redis support ON and OFF. This blog post explores why this is the default behavior and presents a solution to control this behavior.
JWT authentication with Spring Web - Part 5
Posted on Wed, Jul 13, 2016
In parts 1 through 4 of this series, we built a Spring API that can issue a JWT when a user successfully authenticates and verify the JWT presented by the client for subsequent requests. In this blog post - the last in the series, we will build a simple Angular JS application with authentication that uses this API as the backend. These are the blog posts in this series:
JWT authentication with Spring Web - Part 4
Posted on Thu, Jul 7, 2016
In parts 1 through 3 of this series, we built a Spring API that can issue a JWT when a user successfully authenticates. In this blog post, we will add the capability to verify the JWT presented by the client for subsequent requests. These are the blog posts in this series: