The core idea of Microapps is basically using the web (and REST specifically) as a component architecture to build applications.
A microapp is a small application with a very tight focus that can be integrated with other microapps or other web applications via HTTP and a common data format (usually XML, JSON, or RDF). Microapps may be stateless or they may manage stateful data.
Advantages include:
- Language independence: since every language, platform, and framework speaks HTTP, once a microapp has been built, it should be usable in an application alongside other microapps or full blown applications written in any language.
- Scalable: specifically, microapps scale *out* well. If your application consists of a dozen microapps talking to each other, it's nearly trivial to move them out onto a dozen servers, each tuned for that component. The architecture of microapps is the architecture of the Web, which is arguably the most scalable architecture ever put into production.
- Encapsulation: building with microapps pretty much forces your components to be entirely self-contained and communicate only over well defined channels.
- Standards Based: HTTP is standardized and a large toolset already exists for it. Proxying, load balancing, and inspection/debugging are already figured out. Large numbers of developers already know how to work with HTTP.
Not quite REST
This is a tricky and subtle distinction. Microapps are a slightly more inclusive concept than REST. REST is an architectural style. Microapps are REST plus some additional conventions and nods to practicality. REST is a *huge* part of the microapp concept, but it's not quite all of it. One core idea is that, as much as possible, a microapp should only handle a single type of resource. At the most it should handle a very small number of very closely related resources. In contrast, a typical REST application may involve all sorts of different kinds of resources to be a complete application. Microapps are about taking that application apart into its constituent parts and making them each separate, encapsulated microapps on their own that communicate with each other via HTTP instead of an internal API or shared database.
