Architecture

July 22, 2018

Contributor: Abhishek Parmar


Carbon’s software spans a hybrid architecture across both the cloud and on-device computing. First, there is significant computational power inside each printer or washer, enabling fast, local computation behind our customers’ firewalls. Further, all of our devices are connected to our scalable cloud at AWS to provide a wide range of cross-fleet tools and analysis, and to provide access to a large amount of horsepower for some of our most challenging software tasks, such as our finite element analysis simulations. Our browser-based UI seamlessly spans local and cloud computing.

Our printers and washers communicate over a secure outbound tunnel to our cloud servers. Digital part models are generally stored on the printers themselves, behind the firewall, and they can optionally be secured by a user-selected password.

 

ADVANTAGES OF THIS HYBRID ARCHITECTURE: 
  • Better UX: Nontrivial local compute and storage helps with smooth rendering and manipulation of large 3D models.
  • Better security: For most operations, sensitive 3D models don’t have to leave the customer network.
  • On demand scaling: Leverage cloud when needed, such as for process and part performance simulations.

Here’s a summary of the different software components, languages, and operating systems we’re working on:

 

 

The entire software stack (from the browser-based UI all the way down to firmware) is structured as logical components that talk to each other using well defined protocol buffer interfaces. You can think of this as running several micro services even within a machine. There are several advantages of this approach, many well known but some surprising:

  • Team scaling: well defined interfaces allow different people to work in parallel
  • Freedom to use the best language for the task at hand
  • Better unit testing: even down to the firmware level
  • More readable code
  • Ability to use a “process per request” model; this is useful to isolate third-party code that may be buggy or leaks memory