Serverful
Traditional server-based deployment with full control over infrastructure using virtual machines, containers, or bare metal servers for predictable performance.
- VMs & containers
- Bare metal servers
- Virtual Threads
Focus on building understandable applications with a strong emphasis on domain logic
The Boundary-Control-Entity (BCE/ECB) pattern is a software architecture pattern that organizes code into Business Components. A Business Component is a package or namespace comprising three distinct layers, each with specific responsibilities. Business components adhere to the principles of maximal cohesion and minimal coupling, and are named after their domain responsibilities.
Business components are self-contained modules (also packages or directories) named after their domain responsibilities,promoting maximal cohesion within the component and minimal coupling between components. Each component is organized the same way, comprising boundary, control and entity layers.
Example business component names for a retail shop: checkout, catalog, cart, inventory, pricing, orders, fulfillment, returns, loyalty, customers, notifications, reviews, promotions.
Components are named after their business responsibility, not technical concerns
Related functionality stays together within a single business component
You know when you need it. Make use of existing functionality before reaching out to external resources.
The elements within a given component are more closely related to each other than they are to the elements in other components.
BCE icons and symbols are available in all major design and drawing tools for consistent architectural documentation
The boundary layer serves as the entry point for external actors (users, other systems, schedulers, message brokers, ...), providing appropriate interfaces (REST APIs, GraphQL endpoints, message handlers, Lambda function handlers, web components / custom elements, etc.) depending on the actor type.
The orchestration layer containing business logic
The domain model layer representing core business concepts
Communication patterns between BCE layers follow a strict dependency rule to maintain architectural integrity
Direct interactions can only flow in the B → C → E direction
The opposite direction (E → C → B) is only allowed through events
The straightforward structure reflects business concepts. The names of the components and elements are taken directly from the domain concepts.
Changes are localized to specific layers
Exposed boundaries are tested using system tests/e2e tests, plain facades using integration tests, and sufficiently complex controls or entities using unit tests.
'No-ceremony' business logic sharing between components.
Complementary architectural styles that can be combined with BCE pattern: