Architecture practice: from capability maps to katas
The day-to-day craft of a solution or enterprise architect in a large, regulated organisation: mapping what the business does, making quality attributes measurable, planning cloud migrations and mainframe modernisation, shaping teams, evolving APIs and events safely, choosing front-end and edge patterns, and practising it all with katas. Documents, ADRs, NFRs and frameworks live in Section 12; patterns such as strangler fig and DDD live in Section 11.
A small set of tools that turn "what does the business do, and what runs it?" into pictures and decisions: capability maps, value streams, portfolio rationalisation, roadmaps, a technology radar and principles.
๐งฉ Business capability map
What the business does, not how or who. Stable for years, even when processes and systems change.
L1: Payments, Lending, Customer
L2: Payment initiation, Clearing & settlement
L3: finer detail, only where needed
โก๏ธ Value streams
The end-to-end stages that deliver value to a customer. "Open an account": discover โ apply โ verify โ fund โ use. Map each stage to the capabilities it needs.
๐๏ธ Application portfolio
Link every application to the capabilities it supports. Spot duplicates (three apps for one capability), end-of-life tech and high run costs.
๐งญ Architecture principles
Name, statement, rationale and implications. E.g. "API first", "Reuse, then buy, then build", "Data is owned and classified".
Heat-mapping a capability map
Colour each capability by one measure at a time: business value, technical health, risk, cost or number of applications. Always show the legend and the data source.
Portfolio rationalisation: the TIME model (Gartner)
Quadrant
Business value
Technical fit
Action
Tolerate
Low
High
Keep running. Minimum spend
Invest
High
High
Enhance and extend
Migrate
High
Low
Modernise or move to a new platform
Eliminate
Low
Low
Retire or consolidate
Current โ transition โ target
Current (baseline)what runs today
โ
Transition 1runs in production, delivers value
โ
Transition 2a stable plateau
โ
Target2โ3 years out, revisited yearly
๐บ๏ธ Roadmap
Work packages placed on a timeline, grouped into transition architectures, with dependencies, funding and risks. TOGAF phases E and F cover this (see 12.13).
๐ก Technology radar
Rings from Thoughtworks: Adopt, Trial, Assess, Caution (called Hold until Volume 34, April 2026). Quadrants: techniques, tools, platforms, languages & frameworks. Run an internal radar so teams know what is approved, being trialled or on the way out.
Capabilities describe what, not how. Keep the map stable and owned by business and architecture together.
A heat map is only as good as its measure. State the measure, the source and the date.
Every transition architecture must run on its own in production and deliver value. No "big bang" target.
Principles without implications are slogans. Say what each one forces you to do or stop doing.
The most useful slide an enterprise architect can bring is a heat map ๐บ๏ธ
๐งฉ Start with a capability map: what the business does, not who does it or which system does it
๐จ Colour it by one lens at a time: business value, technical health, risk, cost
๐ Overlay the lenses: high value + poor health is where the money should go
๐๏ธ Then sort the apps with TIME: Tolerate, Invest, Migrate, Eliminate
๐ช Roadmap in transition steps that each deliver value on their own
Executives don't fund architecture diagrams. They fund red boxes turning green. What's your favourite EA artefact?
Quality attributes (the "-ilities") shape an architecture more than features do. Make them measurable with scenarios, rank them in a utility tree, test the design against them in a workshop, and guard them with automated fitness functions.
ISO/IEC 25010:2023 product quality model
The 2023 edition has nine characteristics. Usability became interaction capability, portability became flexibility (now including scalability), and safety is new.
Characteristic
The question it asks
Functional suitability
Does it do the right things, correctly?
Performance efficiency
Is it fast enough, with sensible resource use?
Compatibility
Does it co-exist and interoperate with other systems?
Interaction capability
Can the intended users use it, including with accessibility needs?
Reliability
Is it available, fault tolerant and recoverable?
Security
Confidentiality, integrity, accountability, resistance to attack
Maintainability
Is it modular, testable and easy to change?
Flexibility
Can it adapt, scale, install and be replaced?
Safety
Does it avoid endangering people, property or the environment?
Quality-attribute scenarios
"Must be fast" can't be tested. A six-part scenario can. Write NFRs this way (see NFRs in 12.9).
Utility tree
A tree from "utility" to attributes, refinements and concrete scenarios. Rate each scenario (importance, difficulty) as H/M/L, then analyse the (H,H) ones first.
Attribute
Refinement
Scenario
Rating
Availability
Zone failure
One zone fails at peak; payments continue, RTO under 5 min
(H,H)
Security
Data protection
An engineer queries prod; card numbers are tokenised
(H,M)
Maintainability
New payment type
Add a scheme in under 4 weeks, without touching the ledger
(M,M)
ATAM-lite in a workshop
ATAM (Architecture Tradeoff Analysis Method) comes from the SEI. The full method takes days. A "lite" version fits in half a day with architects, product owner, ops and security.
1. Drivers & design
Business goals in 10 minutes. Then the architecture, ideally as C4 diagrams (12.10).
2. Utility tree
Agree the top 5โ8 scenarios together. This alone surfaces hidden disagreements.
3. Walk each scenario
Which decisions support it? Where does it break? Record what you find.
4. Outputs
Risks grouped into themes, new or updated ADRs (12.7), follow-up spikes.
Finding
Meaning
Example
Sensitivity point
One decision strongly affects one attribute
Kafka partition count drives max consumer throughput
Trade-off point
One decision affects two attributes in opposite ways
๐ณ Rank them in a utility tree by importance and difficulty
โ๏ธ Walk the top ones through the design: find sensitivity points, trade-off points and risks
๐ค Automate the important ones as fitness functions in CI
ISO/IEC 25010:2023 renamed usability to interaction capability and portability to flexibility, and added safety. Do your NFR templates still use the 2011 names?
Pick one strategy per workload, move workloads in waves onto a landing zone that is already in place, and treat every cutover as a rehearsed, reversible event followed by hypercare.
AWS 7 Rs
Azure CAF name
Use when
Retire
Retire
Little or no business value; barely used
Retain (revisit)
Retain
Compliance, latency or dependencies block a move for now
Rehost (lift & shift)
Rehost
Data-centre exit deadline; no change for 2+ years
Relocate (hypervisor level)
Counted as rehost
Move a VMware estate as-is, e.g. to a cloud VMware service
Replatform (lift & reshape)
Replatform
Swap to managed DB or containers with small code changes
Repurchase (drop & shop)
Replace
A SaaS product covers the need
Refactor / re-architect
Refactor, Rearchitect, Rebuild
Strong case to go cloud-native; CAF splits by depth of change
AWS advises against refactoring during a large migration: rehost, relocate or replatform first, then modernise once the workload is stable in the cloud.
Cutover planning
๐ญ Rehearsals
At least two full dress rehearsals on production-like data. Time every step. The real run follows the rehearsed runbook.
โฉ๏ธ Rollback
Written criteria, one named decision-maker, a time box and a clear point of no return. Keep reverse sync running until then.
๐ Data sync
Bulk load, then CDC until the final delta. Reconcile counts, sums and hash totals (see 06 data migration).
๐ง Freeze windows
Avoid month-end, payday, end of financial year and peak trading. Agree the change freeze with every team that touches the system.
๐ฃ Comms
Stakeholder plan, customer notices, support scripts and a status channel. Announce "done" only after validation.
๐ฉบ Hypercare
War room, extra alerts and dashboards, a fast fix path and agreed exit criteria (e.g. 10 days without a P1 or P2).
Migrate first, modernise second, unless the app would need rework within two years anyway.
Waves follow dependencies, not org charts. Chatty apps move together.
No landing zone, no wave 1. Retrofitting networking and policy costs far more.
The source isn't migrated until it's switched off and its costs stop.
Cloud migration is not one decision. It's one decision per application โ๏ธ
๐๏ธ Retire and ๐ ฟ๏ธ Retain: the cheapest migrations are the ones you don't do
๐ Rehost / Relocate: fast data-centre exit, modernise later
๐ง Replatform: managed DB or containers with small code changes
๐ Repurchase: swap for SaaS. ๐๏ธ Refactor: when cloud-native really pays off
Then rehearse the cutover twice, keep a rollback path until the point of no return, and run hypercare. What's the hardest app in your portfolio to classify?
Modernise legacy and mainframe systems in small, reversible steps: wrap them with APIs, stream their changes out as events, move capabilities one at a time, and prove each step with reconciliation before switching anything off.
Gartner's seven options, from least to most change
Option
What changes
Effort & risk
Encapsulate
Wrap existing functions and data with APIs
Low
Rehost
Move to new infrastructure, no code change
Low
Replatform
New runtime platform, minimal code change
Lowโmedium
Refactor
Restructure code, same external behaviour
Medium
Rearchitect
New architecture, e.g. split into services
High
Rebuild
Rewrite from scratch, same scope
High
Replace
Buy a package or SaaS product
Mediumโhigh (data and process change)
Patterns that work together
๐งฑ API facade
Expose mainframe transactions through an API layer. Channels stop depending on the legacy interface, so the back end can change later.
๐ฟ Strangler fig
Route capability by capability to new services behind the facade. Details in 11.8.
๐ค CDC into events
Log-based CDC from mainframe databases into Kafka. Publish business events, not raw table changes. See 06 CDC.
๐ช Data replication
Copy data to cloud read stores for queries and analytics. Fewer reads on the mainframe often means lower running costs.
๐ฆ Batch โ events
Publish events alongside the nightly file. Move consumers one by one. Keep the batch as a reconciliation control until the end.
๐ก๏ธ Anti-corruption layer
Translate legacy codes and record layouts into a clean domain model, so they don't leak into new services (11.10).
Managing the risk
โ๏ธ Prove it
Parallel run: both systems process the same inputs, the old one stays master, outputs are compared.
Reconciliation: counts, amount totals, hash totals and field-level diffs, with a daily break report.
Slice traffic by product, branch or customer segment, with a fast route back.
๐ง Skills risk
COBOL and mainframe experts are retiring. Capture business rules now, as tests and docs.
Pair experts with newer engineers. Use code-analysis tools to map programs and data.
AI tools can help explain old code, but check every rule against real outputs.
Encapsulate first: a stable API in front buys you freedom to change what's behind it.
Never switch master until reconciliation has been clean for an agreed period, including a month-end.
Big-bang rewrites of core systems have a poor track record. Move one capability at a time.
.NET 10 How to implement it
Library / API
Package
Use it for
Facade / strangler routing
Yarp.ReverseProxy
Route each path to the legacy back end or the new service; change routes by config
Consume CDC events
Confluent.Kafka
Build read models from change events streamed off the mainframe
Traffic slicing
Microsoft.FeatureManagement.AspNetCore
Send a percentage or a segment to the new path, with instant rollback
Reconciliation jobs
built-inBackgroundService
Compare old and new outputs on a schedule and publish a break report
You don't replace a mainframe. You make it smaller, one capability at a time ๐ฆ
๐งฑ Put an API facade in front, so channels stop caring what's behind it
๐ค Stream changes out with CDC and build read models off the mainframe
๐ฟ Move one capability to a new service and run it in shadow mode
โ๏ธ Reconcile every day: counts, totals, field-level diffs
๐ง Capture the business rules while the people who know them are still here
Encapsulate, stream, strangle, reconcile, retire. Which step is hardest where you work?
Systems end up shaped like the teams that build them, so design team boundaries, team interactions and cognitive load together with the software architecture.
๐ข Conway's law (1968)
Organisations design systems that mirror their own communication structure. Three teams building a compiler get a three-pass compiler.
๐ Inverse Conway manoeuvre
Shape the teams first to get the architecture you want. Want independent payments and lending services? Give them independent, long-lived teams.
Team Topologies (Skelton & Pais, 2019)
๐ Stream-aligned
Owns a flow of change for a product or customer journey, end to end. Most teams should be this type.
๐ ๏ธ Platform
Provides self-service internal products (pipelines, Kafka, observability) so stream teams go faster.
๐งโ๐ซ Enabling
Specialists who coach other teams in a new skill for a limited time, then move on.
๐งฎ Complicated-subsystem
Owns a part that needs deep expertise, e.g. a fraud-scoring model or a pricing engine.
Interaction mode
When
Watch out
Collaboration
Discovering something new together
Expensive. Time-box it
X-as-a-Service
The boundary is clear and stable
Needs good docs and a product mindset
Facilitating
A team needs a new capability
Coach, don't do the work for them
Cognitive load
A team can only own as much as it can understand. Three kinds: intrinsic (the problem itself), extraneous (tooling and process friction) and germane (learning the domain). Platforms should remove extraneous load. Signs of overload: slow onboarding, constant hand-offs, nobody understands a service fully.
Change APIs and event schemas without breaking consumers: prefer additive changes, know your compatibility mode, version only when you must, and retire old versions with clear Deprecation and Sunset signals.
Versioning strategies
Strategy
Example
Pros
Cons
URL path
/v2/payments
Visible, easy to route and cache
New URL for each major version
Query string
?api-version=2.0
Simple; Azure APIs use it
Easy to forget; caching keys
Header
api-version: 2.0
Clean URLs
Invisible in links and logs
Media type
application/vnd.bank.v2+json
Versions the representation
Harder for clients and tools
REST basics are in 08.2; gateway versions vs revisions are in 09.5.
Compatibility, in plain words
Type
Meaning
Upgrade first
Backward
The new version still works with old clients or old data
Provider / consumers of events
Forward
Old clients or consumers can handle the new version's data
Producers of events
Full
Both at once
Either, in any order
โ Usually non-breaking
Add a new endpoint or operation
Add an optional request field
Add a response field (clients must ignore unknowns)
Relax validation
โ Breaking
Remove or rename a field
Change a type, format or unit
Make an optional field required
Tighten validation or change error shape
Change status codes, paging or auth scopes
Add an enum value clients switch on
๐ Tolerant reader
Consumers read only the fields they need and ignore unknown ones. This makes adding fields safe.
โ๏ธ Expand / contract
Add the new field next to the old one, move consumers over, then remove the old field. Also called parallel change.
๐ Consumer-driven contracts
Each consumer publishes what it relies on (Pact). The provider's CI checks every contract before deploy.
Deprecation and Sunset
Deprecation header, RFC 9745 (March 2025, Standards Track): the date it was or will be deprecated, as @ + Unix seconds. Link to docs with rel="deprecation". Behaviour doesn't change.
Sunset header, RFC 8594 (2019, Informational): the HTTP date after which it may stop responding. Must not be earlier than the deprecation date.
Watch usage per consumer, contact the stragglers, then return 410 Gone after sunset.
HTTP/1.1 200 OK
Deprecation: @1798761600
Sunset: Wed, 30 Jun 2027 23:59:59 GMT
Link: <https://developer.example.com/payments/v1-retirement>; rel="deprecation"
Event schema evolution with a schema registry
Mode
Checks that
Allowed changes (Avro)
Upgrade first
BACKWARD (Confluent default)
New schema can read data written with the last one
Delete fields; add fields with defaults
Consumers
FORWARD
Last schema can read data written with the new one
Add fields; delete fields with defaults
Producers
FULL
Both directions
Add or delete fields with defaults only
Any order
*_TRANSITIVE
Same, against all earlier versions
As above
As above
NONE
Nothing
Anything. Avoid for shared topics
Coordinate by hand
Avro
Give every new field a default. Rename with aliases. Never change a type in an incompatible way.
Protobuf
Never reuse or change a field number. Mark removed numbers and names as reserved.
JSON Schema
Compatibility depends on whether the schema is open or closed to extra properties. Decide this up front.
Schema registries and data contracts are also covered in 10.3 and 07.8.
Additive change plus tolerant readers removes most of the need for new versions.
A new major version is a migration project for every consumer. Budget for it, and for running two versions.
BACKWARD: upgrade consumers first. FORWARD: upgrade producers first. Use TRANSITIVE for long-retention topics.
Deprecation says "stop building on this". Sunset says "this will stop working on this date".
Choose where the HTML is built (browser, server, build time or a mix), put a BFF and a gateway between clients and services, push cacheable work to the edge, and design mobile apps to keep working offline.
Rendering options
Option
HTML built
Good for
Watch out
SPA (client-side)
In the browser, from JS
App-like, logged-in screens
Big bundles, slow first load, SEO
SSR
On the server, per request
Fast first paint, personalised pages
Server cost, hydration cost
SSG
At build time
Marketing pages, docs, rates tables
Rebuild on every content change
Islands
Static page + small interactive parts
Content pages with a few widgets
Needs a framework that supports it
๐ฏ BFF
One backend per client experience (web, mobile). It aggregates calls and keeps tokens on the server, with only a secure cookie in the browser. See 11.4.
๐งฉ Micro-frontends
Teams own and release slices of one UI. Composed at build time, at run time (module federation, web components) or at the edge. Worth it with many teams and real release friction; not with one or two teams.
๐ช Gateway at the edge
WAF, DDoS protection, rate limits and token checks before traffic reaches your network. See 09.8.
๐ CDN & edge compute
Cache static files and cacheable GETs. Small edge functions handle redirects, geo rules, A/B tests and header checks. See 05.6.
Mobile offline-first sync
Conflict strategy
How
Fits
Last writer wins
Newest timestamp or version wins
Settings, low-value data. Can lose edits
Field-level merge
Merge fields changed on different sides
Profiles, forms
Server decides / ask user
Reject with 409; show both versions
Anything with money or legal meaning
CRDTs
Data types that always merge cleanly
Collaborative notes and lists
Banking: never execute a payment offline. Queue the intent, show it as pending, and confirm it online with an idempotency key (08.7).
Pick rendering per page type, not per app: SSG for content, SSR or SPA for logged-in screens.
BFF keeps tokens out of the browser and lets each channel change at its own pace.
Micro-frontends solve a team-scaling problem, not a technical one. They cost performance and consistency.
Offline-first = local DB + sync queue + idempotency + a conflict rule per entity.
.NET 10 How to implement it
Library / API
Package
Use it for
Blazor render modes
built-in Blazor Web App (.NET 8+)
Static SSR, Interactive Server (SignalR circuit), Interactive WebAssembly, Interactive Auto (server first, then WebAssembly). Per page or component
BFF proxy
Yarp.ReverseProxy; Duende.BFFcommercial licence
Cookie session in the browser, tokens on the server, proxy to APIs
Real-time updates
built-in SignalR; Microsoft.Azure.SignalR to scale out
Push status changes (payment settled) to web and mobile clients
Offline sync (MAUI)
CommunityToolkit.Datasync.Client + .Server
Local SQLite store, queued changes, delta pull, conflict detection
builder.Services.AddRazorComponents()
.AddInteractiveServerComponents()
.AddInteractiveWebAssemblyComponents();
var app = builder.Build();
app.MapRazorComponents<App>()
.AddInteractiveServerRenderMode()
.AddInteractiveWebAssemblyRenderMode()
.AddAdditionalAssemblies(typeof(Client._Imports).Assembly);
// In a component: static SSR by default, opt in per page
// @rendermode InteractiveAuto
"Blazor United" was only the early code name. The product is the Blazor Web App template with render modes.
SPA, SSR, SSG or islands? Wrong question: pick per page ๐ฅ๏ธ
๐ Content and rates pages โ SSG on a CDN
๐ Logged-in banking screens โ SSR or SPA behind a BFF that keeps tokens server-side
๐งฉ Micro-frontends โ only when many teams fight over one release train
๐ Edge โ WAF, rate limits, caching and small functions before traffic reaches you
๐ฑ Mobile โ local DB, sync queue, idempotency keys, a conflict rule per entity
Where does your app build its HTML today, and would you choose that again?
Reference architectures give you a proven starting point; architecture katas give you practice. Start from a published design, then rehearse requirements, characteristics and trade-offs against the clock.
Reference designs, migration and modernisation guides, step-by-step patterns
Google Cloud Architecture Center
Reference architectures, design guides, framework best practices
โ Use them well
Check the date and the services it assumes.
Map it against your NFRs and regulatory needs (residency, resilience).
Swap in your identity, network and logging standards.
Record every deviation in an ADR.
โ Common mistakes
Copying the diagram without the reasoning.
Ignoring cost: samples often show the premium tier.
Assuming "reference" means "approved" in your organisation.
Architecture katas
Created by Ted Neward: a short brief from a fictional client, a small team, a fixed time box, then a presentation and critique. Like a coding kata, the point is repetition: you get better at trade-offs by making many of them.
๐ง Solo
Set a 45-minute timer. Speak your reasoning out loud, as in an interview.
Write the top three characteristics before drawing anything.
Finish with one ADR and a list of risks.
Next day, redo it with a different top three and compare.
๐ฅ Team
Groups of 3โ5, same brief, 45โ60 minutes.
Each team pitches for 3 minutes; others play the client and challenge.
Score on reasoning and trade-offs, not on boxes and arrows.
Rotate the "client" role each session.
Kata prompts for banking and payments are in Section 25; the interview framework is in 20.2.
A reference architecture is where your design starts, not where it ends.
In a kata the diagram matters least. The characteristics you picked and what you gave up matter most.
Always end with an ADR: decision, options, consequences.
Architects rarely get to practise. Katas fix that ๐ฅ
๐ Take a short brief from a fictional client
๐ฏ Pick the top 3 characteristics before drawing a single box
๐งฑ Sketch components and data flow in 20 minutes
โ๏ธ Name what you gave up, then write one ADR
๐๏ธ Start from a reference architecture, but record every deviation
One kata a week does more for interview performance than another certificate. When did you last design something against the clock?
13.9 Platform engineering and internal developer platforms Added
An internal developer platform (IDP) is a self-service product, built by a platform team for developers, that makes the secure, compliant way to build and run software also the easiest way.
From ticket-ops to self-service
How it works
๐ฆ Platform as a product
Customers are developers.
Product manager, roadmap, user research, docs, SLOs.
Optional: win adoption, don't mandate it.
๐ค๏ธ Golden paths
Also called paved roads.
Opinionated, supported route for the common case.
Security, logging and policy built in.
Teams may leave the path, but then own the extra work.
โ๏ธ Self-service
Templates: new service in minutes.
Environments: ephemeral, on demand.
Pipelines: shared, versioned CI/CD.
APIs or CLI, not tickets.
๐ชถ Thinnest viable platform
The smallest set of APIs, docs and tools that speeds teams up. Grow it from real demand, not a big up-front build.
๐ญ Developer portal
Backstage (CNCF incubating): software catalog (who owns what), software templates, TechDocs. Scorecards come from plugins and rate services against standards.
๐ง Team Topologies
A platform team serves stream-aligned teams X-as-a-Service and removes extraneous cognitive load (see 13.5).
How to measure it
Measure
Example
Adoption
% of services on the golden path
Lead time
Idea or new repo to first prod deploy
DORA
Deploy frequency, lead time, change failure rate, recovery time
Satisfaction
Developer survey, NPS, onboarding time
When to use / when not
โ Build a platform when
Many teams repeat the same setup.
Tickets and hand-offs dominate lead time.
Compliance needs consistent controls.
โ Anti-patterns
Mandated platform nobody wants.
Ticket-ops: a portal that just files tickets.
Big-bang build before any user.
Only a few teams: use shared docs instead.
The platform's customers are developers. Run it like a product.
Golden paths are paved, not walled: easiest route, not the only route.
Start with the thinnest viable platform and grow from demand.
Self-service means APIs, templates and pipelines. A form that creates a ticket is still ticket-ops.
Measure adoption, lead time, DORA and satisfaction, not features shipped.
.NET 10 How to implement it
Library / tool
Package
Use it for
Golden-path template
dotnet newbuilt-in
Pack a service template as a NuGet package (PackageType = Template)
Template authoring
Microsoft.TemplateEngine.Authoring.Templates
dotnet new templatepack scaffolds the template package
What is a business capability, and how is it different from a process?
A capability is what the business does (e.g. "Payment initiation"), described independently of people, process and systems. A process is how it's done, step by step, and changes far more often. Capability maps stay stable for years, so they're a good anchor for heat maps, portfolios and roadmaps.
Explain the TIME model.
Gartner's portfolio rationalisation model plots each application on business value and technical fit. Tolerate (low value, good fit): keep it running cheaply. Invest (high, high): enhance it. Migrate (high value, poor fit): modernise or move it. Eliminate (low, low): retire or consolidate.
Sensitivity point vs trade-off point?
A sensitivity point is a decision that strongly affects one quality attribute, e.g. partition count and throughput. A trade-off point affects two or more attributes in opposite directions, e.g. synchronous cross-region replication improves RPO but worsens latency. Both come out of ATAM-style reviews and belong in ADRs.
Which migration strategy would you choose for a large data-centre exit?
Mostly rehost, relocate and replatform, plus retire for anything unused. AWS advises against refactoring during a large migration because it mixes two risky projects. Move first, stabilise, then modernise the workloads that justify it. Retain anything blocked by compliance or dependencies, with a review date.
How would you move a capability off a mainframe safely?
Put an API facade in front, stream changes out with CDC, build the new service behind the facade and run it in shadow mode while the mainframe stays master. Reconcile daily (counts, totals, field diffs) through at least one month-end, switch by segment with a fast route back, and only then retire the mainframe code.
What is the inverse Conway manoeuvre?
Conway's law says systems mirror the communication structure of the organisation. The inverse manoeuvre uses that on purpose: design the team structure (e.g. long-lived stream-aligned teams per domain) so the architecture you want, such as independent services, emerges naturally.
Schema registry: BACKWARD vs FORWARD, which side do you upgrade first?
BACKWARD (Confluent's default) means the new schema can read old data, so upgrade consumers first. FORWARD means old schemas can read new data, so upgrade producers first. FULL allows either order. The TRANSITIVE variants check against every earlier version, which matters for topics with long retention or replay.
When are micro-frontends worth it?
When several teams work on one large web app and the shared release train really slows them down. They add cost: duplicated dependencies, slower pages, harder UI consistency, and they need a shared design system. With one or two teams, a well-structured modular front-end is simpler.
What is a golden path, and should it be mandatory?
A golden path (or paved road) is the opinionated, supported way to do a common task, such as creating a new API, with security, logging, pipelines and policy built in. It should be the easiest route, not the only one: teams may leave it, but then own the extra work. Mandating a platform nobody wants hides its problems instead of fixing them.
How do you know an internal developer platform is working?
Measure outcomes, not features: adoption (share of services on the golden path), lead time from new repo to first production deploy, the DORA metrics, and developer satisfaction from surveys and onboarding time. If teams still raise tickets to get an environment, it is ticket-ops, not self-service.