A component is a unit of design that represents a single business concern. These concerns are usually business processes, such as an account, a sale, and so forth.

All of the code needed to address the business concern, such as entities, handlers, projections, stores, are packaged into a component.

Components and Services

The terms "service" and "component" are often used interchangeably, as there's frequently a one-to-one mapping between components and services. For example, a service hosting a component named AccountComponent will often be referred to a the "account service".

Components are the primary unit of composition of services. At a technical level, services are merely the infrastructure required to host one or more components in an operating system process. A component is hosted either by itself or with other components in a service.

Packaging and Distribution

Components are typically packaged as RubyGems and distributed using a gem server. However, components could just as easily be packaged as a zip or tar file, or even as a git repository.