A microservice system has technical layers, from the screens people use down to the data. Who owns them is a separate question. Product teams own a business capability through every layer, and platform teams own the foundations each layer is built on. Concerns that every layer shares are solved once, with the right mechanism. For how to organise the teams themselves, see teams and ownership.
The layers
From the screen to the database
Web and mobile clients
The screens people use: web apps in the browser, and iOS and Android apps that stay installed for months.
Owned by: Product teams build the features. Web and mobile platform teams own the shell, design system and release process.
These have to behave the same way from the user's screen to the database. Separate solutions per layer do not join up, so the platform defines the contract once and provides an implementation for each stack.
Identity and security
A user signs in once, and that identity has to travel from the app through the gateway and BFF to every service, without each layer inventing its own scheme.
The contract: One token format, issuer and set of scopes, verified the same way in every layer.
Clients
The app shell signs the user in and attaches the token to every call.
Edge
The gateway validates the token and relays it.
BFF
Swaps a browser session for an access token and passes it on.
Services
The chassis verifies the signature, and each endpoint checks the scopes it needs.
Between services
Mutual TLS from the mesh proves which service is calling.