Make system design decisions about module boundaries, dependency direction, data flow, service boundaries, migrations, and large structural changes.