This article is a summary of my presentation at the O’Reilly Software Architecture Conference in London.
Maintaining an API gateway these days generally involves handling different types of user facing apps such as a web, mobile (of different platforms) and IOT devices. The Backend for Frontend (BFF) pattern specifically addresses this aspect of software solutions.
At Intellectual Apps we build software solutions, and in creating solutions for our clients we frequently get to build web and mobile apps within a single solution. This often means that we have a single API gateway for all the apps to communicate through. Over numerous clients/projects/products we started to notice a lot of repetition in the modules we built into software solutions, so naturally we sort to find a way we could share functionality across solutions in an easy way and this lead us to start experimenting with microservices.
We need to build ABC, so that our client can do 123. Developers nod their head in confirmation that they understand what needs to be done. Been there before?
What usually follows is the lack of shared understanding between the team members, this means that everyone has their own idea of what ABC is and how it should get implemented. So being that the awesome development team understands what needs to be done, they go straight to implementation and after that all they’ll need to do is test the product and deliver to the client. Saving time right?
I was in New York on the 12th of April to deliver a talk at the O’Reilly software architecture conference on how my team and I built a report-casting mobile app for the 2015 Nigeria elections.On the surface, the talk was just about how we, as a team, built two mobile apps with a shared REST API running in the cloud. It was also about how we used an agile approach for the first time. In a real sense though, my talk was actually about how software development is inherently a social activity; the effect of corporate culture on software development (Conway’s law) and the pains associated with software development.