Future architecture: what you've got here won't get you there
For the past year, I've been a member of a team building a server-side framework that, initially, is focused on supporting browser-based client code here at Box. I plan to blog some about the things we're doing to make the Box platform even more epic than it already is.
My own background is diverse. Before Box, I spent a period doing client-side browser UI development in Flex, AngularJS and other technologies at Delphix and VMware. Before that I was an engineering manager and before that I spent a number of years as an interaction designer on a very wide range of products. The unifying theme across all my work has been to improve the user experiences of software products. Like many, I'm inspired by the idea of making applications that others enjoy using, and I like the work of (step by step) making something better.
The team I'm honored to have joined here is called the App Service Framework (ASF) team. Our charter is to build the server-side framework and tooling needed to deliver optimized experiences for our web applications. Sometimes we speak of an architectural pattern called BFF (Backend For Frontend, not Best-Friends Forever). The point is that the client code—in our case, the JavaScript running in a browser—can benefit significantly from having a friend on the server that can give it exactly what it needs.
The ASF team is actually just part of a larger effort, called Future Architecture. We all know (and this is so true throughout life, isn't it?) that "what got you here won't get you there". Future Architecture's charter is, in fact, to get Box "there". And it's a significant "there". Box already has more than 80K customers, and more than 57 million users, and you can see we're steadily growing. By adding things like machine-learning-based image recognition, GxP validation etc. etc. to our product and platform, the demands on our software is only going to grow. If you are a business, you should be asking: Why aren't all our documents in the safe Box platform?
Future Architecture is building out a micro services architecture that new features are being built on, and existing functionality from our older monolithic code base will migrate on to. We want to allow the application teams to write in the programming language they are most familiar with (JavaScript) on both the client and the server, so the ASF team's framework provides a micro service container running node.js, a web server, and other features. Initially, we see ourselves as providing a web-app-specific backend. The Box.com web app can call its own server side API's, which in turn can gather data from the Box platform, and then optimize the delivery of that data to the browser. We'll also provide features like server-side rendering to our application teams, as well.
But, there's more to this. Many of the web application development teams are building their own tools. To be sure, there is cross-pollination across these projects (there's been some awesome work with webpack and chunking of code that's happened across several, lately), but part of ASF's goals is to pull the tooling into a centralized place, relieving most application teams from needing to re-invent (or integrate someone else's invented) the wheel.
These topics, and others related to the ASF project, are things that I'll be exploring in future blog entries.