The success of an online service with millions of users worldwide, and an interactive audience of several thousand, depends on a well architected and engineered software platform. Our engineering team has recently updated the software stack we use to build and deploy back-end (JVM-based) services for such an online service. In this post I share the choices we made, as well as some of the background (motivation behind the project, benefits we were looking to gain). This might help if you’re undertaking a similar strategic review and update of the software stack and deployment approach for your back-end services in the near future.
Author Archives: neiljbrown
Designing and building an open source REST API client
I’ve recently designed and built an open source API client for the REST API of a major enterprise video and webcast service, for use by its customers. It was a rewarding exercise that has helped me gain some valuable additional practical experience of emerging technology and tools for building and testing apps. This post outlines the value of the API client, its design, the technologies and tools I used, and how I rate them. I’ve open sourced the code to allow customers, and others, to view and reuse what I’ve built.
Java 8 – Examples of the major, new language features
Over the course of the last month or so, I’ve invested some time familiarising myself with the major new features in Java 8, learning how to apply them, and understanding the benefits which can be gained from using them. As part of this exercise I’ve produced some code examples (see below) for the following features:
- Lambda expressions
- Streams (aka bulk or aggregate data operations)
- Default methods
- Date/time API
- Optional type
Designing and implementing a RESTful resource model
This is the next in a series of posts on RESTful web API design based on my experience of designing and building a set of public RESTful web services for a popular online platform. This post highlights the importance of upfront design of a separate model for REST resources, and contains suggestions on how to implement such a resource model in an API service’s application architecture.
Versioning RESTful web APIs
When I was recently tasked with designing and building a new set of public-facing REST APIs for a popular online platform, one of the design challenges I faced was whether we should version our web APIs, and if so, how?
Historically there has been a lack of consensus in the industry on best practice in this area of web API design. And on initially researching the problem area I couldn’t find the answers I was looking for, or advice that I felt I could rely on.
This post distills the things I learned from further research and the experience of designing our own web APIs, with the aim of helping those of you that need to tackle a similar design problem. It covers:
- Reasons to consider versioning your web APIs.
- The aspects of a RESTful web API which do and don’t require versioning.
- A classification of the most popular API versioning solutions that are in use today, including which aspect(s) of a RESTful web API they aim to version;
- Points to consider when choosing a versioning solution(s).
It concludes by explaining my current thinking on the best approach to versioning and what solution we adopted for our APIs. I hope you find it useful!
Continue reading
First steps to Scala
I’ve been tracking discussions about the Scala language and listening with interest to people’s early experiences of using it on projects since the beginning of this year (2012). Based on what I’ve heard, including the advocacy of several highly respected technical folks in the Java community that I follow, I recently decided to invest some time learning the language.
So, why should an experienced Java developer invest time and effort learning Scala? Continue reading