Service granularity principle

[1] Due to the fallacies of distributed computing, finding an adequate granularity is hard.

A primary goal of service modeling and granularity design is to achieve loose coupling and modularity, which are two of the essential SOA principles,[3] and to address other architecturally significant requirements.

Many forces influence the service granularity;[4] four particularly relevant factors to consider when designing for an adequate granularity are performance, message size, transactionality and business function: Ideally, each service operation maps to a single business function, although if a single operation can provide multiple functions without adding design complexity or increasing message sizes, this generality can reduce implementation and usage costs.

Reducing message size may require adding a more fine-grained operation.

Many more decision criteria for finding an appropriate granularity exist; there is no global optimum.