@evolith/core-domain 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/domain/services/default-workflow-definition.js +1 -1
- package/dist/domain/services/default-workflow-definition.js.map +1 -1
- package/package.json +2 -1
- package/rulesets/README.es.md +170 -0
- package/rulesets/README.md +170 -0
- package/rulesets/acl/README.es.md +41 -0
- package/rulesets/acl/README.md +41 -0
- package/rulesets/acl/anti-corruption-layer.rules.es.json +99 -0
- package/rulesets/acl/anti-corruption-layer.rules.json +99 -0
- package/rulesets/adr/ADR_COVERAGE.es.md +133 -0
- package/rulesets/adr/ADR_COVERAGE.md +133 -0
- package/rulesets/adr/README.es.md +17 -0
- package/rulesets/adr/README.md +17 -0
- package/rulesets/adr/adr-0002-hexagonal-architecture.rules.json +103 -0
- package/rulesets/adr/adr-0005-cicd-quality-gates.rules.json +102 -0
- package/rulesets/adr/adr-0010-multi-tenancy.rules.json +129 -0
- package/rulesets/adr/adr-0018-testing-pyramid.rules.json +115 -0
- package/rulesets/adr/adr-0032-protocol-selection.rules.json +134 -0
- package/rulesets/adr/adr-0040-multi-runtime.rules.json +131 -0
- package/rulesets/adr/adr-0050-gitflow-branching.rules.json +176 -0
- package/rulesets/adr/generated/adr-0001-monorepo-orchestration-principle.rules.json +29 -0
- package/rulesets/adr/generated/adr-0006-microservices-transition-via-sidecar-pattern.rules.json +29 -0
- package/rulesets/adr/generated/adr-0009-strict-dependency-pinning-and-automated-vulnerability-manage.rules.json +29 -0
- package/rulesets/adr/generated/adr-0011-fault-tolerance-and-resiliency-patterns.rules.json +29 -0
- package/rulesets/adr/generated/adr-0013-cloud-infrastructure-topology-and-disaster-recovery-dr.rules.json +28 -0
- package/rulesets/adr/generated/adr-0014-multi-layer-distributed-caching-strategy.rules.json +29 -0
- package/rulesets/adr/generated/adr-0015-event-driven-architecture-eda-for-intra-domain-communication.rules.json +29 -0
- package/rulesets/adr/generated/adr-0016-immutable-business-audit-trail-and-change-tracking.rules.json +29 -0
- package/rulesets/adr/generated/adr-0017-feature-flagging-strategy-for-progressive-delivery.rules.json +28 -0
- package/rulesets/adr/generated/adr-0019-tactical-design-patterns-for-future-proofing.rules.json +29 -0
- package/rulesets/adr/generated/adr-0020-identity-provider-abstraction-strategy.rules.json +28 -0
- package/rulesets/adr/generated/adr-0024-centralized-configuration-feature-platform.rules.json +28 -0
- package/rulesets/adr/generated/adr-0025-feature-flag-provider-abstraction-strategy.rules.json +29 -0
- package/rulesets/adr/generated/adr-0028-self-hosted-open-source-hybrid-infrastructure.rules.json +29 -0
- package/rulesets/adr/generated/adr-0030-two-tier-distributed-gateway-model.rules.json +28 -0
- package/rulesets/adr/generated/adr-0031-schema-per-bounded-context-and-domain-event-catalog.rules.json +29 -0
- package/rulesets/adr/generated/adr-0033-transactional-outbox-pattern-for-async-messaging.rules.json +28 -0
- package/rulesets/adr/generated/adr-0034-cqrs-pattern-application-matrix.rules.json +29 -0
- package/rulesets/adr/generated/adr-0035-distributed-saga-pattern-implementation-strategy.rules.json +29 -0
- package/rulesets/adr/generated/adr-0036-message-bus-delivery-flow-control-strategy.rules.json +29 -0
- package/rulesets/adr/generated/adr-0037-enterprise-performance-concurrency-chaos-verification-strate.rules.json +28 -0
- package/rulesets/adr/generated/adr-0039-deployment-topology-abstraction-environment-switcher.rules.json +29 -0
- package/rulesets/adr/generated/adr-0041-dual-engine-policy-evaluation-native-opa.rules.json +28 -0
- package/rulesets/adr/generated/adr-0044-configurable-security-persistence-strategy-agnosticism-vs-na.rules.json +29 -0
- package/rulesets/adr/generated/adr-0045-microservice-extraction-readiness-criteria.rules.json +29 -0
- package/rulesets/adr/generated/adr-0046-unified-traceability-via-w3c-tracecontext.rules.json +29 -0
- package/rulesets/adr/generated/adr-0047-progressive-architecture-evolution-framework-modular-monolit.rules.json +29 -0
- package/rulesets/adr/generated/adr-0048-enterprise-taxonomy-standardization-and-reference-layout.rules.json +28 -0
- package/rulesets/adr/generated/adr-0049-naming-semantics-clean-code-policy-e2e-and-global.rules.json +29 -0
- package/rulesets/adr/generated/adr-0051-enterprise-database-engine-selection-strategy.rules.json +29 -0
- package/rulesets/adr/generated/adr-0052-unit-testing-isolation-strategy-mocks-vs-stubs.rules.json +29 -0
- package/rulesets/adr/generated/adr-0053-integration-and-e2e-testing-strategy.rules.json +29 -0
- package/rulesets/adr/generated/adr-0054-database-design-and-normalization-standards.rules.json +29 -0
- package/rulesets/adr/generated/adr-0055-microfrontends-architecture-strategy.rules.json +28 -0
- package/rulesets/adr/generated/adr-0056-enterprise-naming-design-conventions-multi-language-multi-pl.rules.json +29 -0
- package/rulesets/adr/generated/adr-0057-architecture-intelligence-catalog.rules.json +27 -0
- package/rulesets/adr/generated/adr-0058-ai-consumable-architecture-knowledge.rules.json +27 -0
- package/rulesets/adr/generated/adr-0067-modular-monolith-persistence-boundaries.rules.json +28 -0
- package/rulesets/adr/generated/adr-0068-documentation-release-gitflow.rules.json +29 -0
- package/rulesets/adr/generated/adr-0069-ai-agent-context-protocol-integration.rules.json +28 -0
- package/rulesets/adr/generated/adr-0070-lean-root-repository-taxonomy.rules.json +29 -0
- package/rulesets/adr/generated/adr-0071-domain-layer-base-class-and-inheritance-strategy.rules.json +29 -0
- package/rulesets/adr/generated/adr-0072-utc-date-storage-browser-timezone-detection-and-language-res.rules.json +29 -0
- package/rulesets/adr/generated/adr-0073-unified-cli-mcp-output-contract-and-gate-evidence-schema.rules.json +29 -0
- package/rulesets/adr/generated/adr-0074-evolith-core-api-native-exposure-layer.rules.json +29 -0
- package/rulesets/adr/generated/adr-0075-core-api-authentication-strategy.rules.json +28 -0
- package/rulesets/adr/generated/adr-0076-domain-oriented-microservice-architecture-doma.rules.json +28 -0
- package/rulesets/adr/generated/adr-0077-masstransit-v9-commercial-pivot-stay-on-v8-monitor-opentrans.rules.json +28 -0
- package/rulesets/adr/generated/adr-0078-domain-financial-separation-governance.rules.json +29 -0
- package/rulesets/adr/generated/adr-0079-multi-topology-reference-corpus-and-topology-manifest-contra.rules.json +29 -0
- package/rulesets/adr/generated/adr-0080-remote-repository-reference-contract.rules.json +29 -0
- package/rulesets/adr/generated/adr-0081-agentic-ai-sandbox-isolation-boundary.rules.json +29 -0
- package/rulesets/adr/generated/adr-0082-agentic-ai-prompt-context-and-tool-trust-boundary.rules.json +28 -0
- package/rulesets/adr/generated/adr-0083-agentic-ai-action-authorization-and-audit.rules.json +29 -0
- package/rulesets/adr/generated/adr-0084-data-mesh-and-data-as-a-product.rules.json +29 -0
- package/rulesets/adr/generated/adr-0085-agnostic-opa-wasm-distribution-architecture.rules.json +28 -0
- package/rulesets/adr/generated/adr-0086-agentic-ai-telemetry-cost-control-standard.rules.json +27 -0
- package/rulesets/adr/generated/adr-0087-attribute-based-access-control-abac-for-agentic-tool-executi.rules.json +29 -0
- package/rulesets/adr/generated/adr-0088-sovereign-identity-for-agentic-ai.rules.json +29 -0
- package/rulesets/adr/generated/adr-0089-event-driven-agentic-workflow-pattern.rules.json +28 -0
- package/rulesets/adr/generated/adr-0090-rag-knowledge-governance-standard.rules.json +29 -0
- package/rulesets/adr/generated/adr-0091-workload-identity-token-rotation-standard.rules.json +29 -0
- package/rulesets/adr/generated/adr-0092-agent-infinite-loop-prevention-and-circuit-breaker-rules.rules.json +29 -0
- package/rulesets/adr/generated/adr-0093-concurrency-control-and-resource-locking-standard-for-mcp-to.rules.json +29 -0
- package/rulesets/adr/generated/adr-0094-multi-agent-handoff-and-task-delegation-standards.rules.json +29 -0
- package/rulesets/adr/generated/adr-0095-serverless-architecture-governance.rules.json +29 -0
- package/rulesets/adr/generated/adr-0096-edge-computing-architecture-governance.rules.json +29 -0
- package/rulesets/adr/generated/adr-0097-knowledge-lifecycle-governance-standard.rules.json +29 -0
- package/rulesets/adr/generated/adr-0098-rest-uri-versioning-and-deprecation-policy.rules.json +29 -0
- package/rulesets/adr/generated/adr-0099-opa-bundle-distribution-via-s3-minio.rules.json +27 -0
- package/rulesets/adr/generated/adr-ai-augmented-0001-harness-engineering-for-ai-augmented-development.rules.json +29 -0
- package/rulesets/adr/generated/adr-ai-augmented-0002-mcp-integration-protocol-for-agent-tool-invocation.rules.json +29 -0
- package/rulesets/adr/generated/adr-ai-augmented-0003-model-selection-governance-for-ai-augmented-workflows.rules.json +29 -0
- package/rulesets/adr/generated/adr-ai-augmented-0004-agents-md-as-mandatory-repository-artifact.rules.json +29 -0
- package/rulesets/adr/generated/adr-ai-augmented-0005-human-in-the-loop-policy-for-autonomous-agent-operations.rules.json +29 -0
- package/rulesets/adr/generated/adr-android-0042-canonical-android-native-mobile-architecture.rules.json +29 -0
- package/rulesets/adr/generated/adr-dotnet-0041-canonical-net-c-backend-architecture.rules.json +29 -0
- package/rulesets/adr/generated/adr-dotnet-0060-net-multi-tenancy-dual-layer-strategy-ef-core-sql-server.rules.json +29 -0
- package/rulesets/adr/generated/adr-dotnet-0061-transactional-event-lifecycle-in-ef-core.rules.json +28 -0
- package/rulesets/adr/generated/adr-dotnet-0062-net-immutable-audit-trail-via-ddl-triggers-delta-capture.rules.json +29 -0
- package/rulesets/adr/generated/adr-dotnet-0063-b2b-request-idempotency-middleware-in-asp-net-core.rules.json +28 -0
- package/rulesets/adr/generated/adr-dotnet-0064-net-request-scope-observability-context-propagation.rules.json +29 -0
- package/rulesets/adr/generated/adr-dotnet-0065-net-pii-safe-structured-logging-pipeline-serilog.rules.json +29 -0
- package/rulesets/adr/generated/adr-dotnet-0066-net-lightweight-http-idempotency-via-imemorycache-idistribut.rules.json +28 -0
- package/rulesets/adr/generated/adr-dotnet-0069-net-grpc-service-setup-protobuf-contracts.rules.json +29 -0
- package/rulesets/adr/generated/adr-dotnet-0070-net-api-endpoint-strategy.rules.json +29 -0
- package/rulesets/adr/generated/adr-dotnet-0071-net-data-access-strategy-ef-core-as-default-orm-dapper-for-o.rules.json +27 -0
- package/rulesets/adr/generated/adr-dotnet-0072-net-aop-cross-cutting-concern-strategy-dispatchproxy-over-pi.rules.json +29 -0
- package/rulesets/adr/generated/adr-nodejs-0003-strict-typescript-standards.rules.json +29 -0
- package/rulesets/adr/generated/adr-nodejs-0004-frontend-offline-resilience.rules.json +28 -0
- package/rulesets/adr/generated/adr-nodejs-0007-observability-with-opentelemetry-loki-and-jaeger.rules.json +29 -0
- package/rulesets/adr/generated/adr-nodejs-0008-progressive-multi-module-evolution-with-api-gateway-and-bff-.rules.json +28 -0
- package/rulesets/adr/generated/adr-nodejs-0012-advanced-authorization-rbac-abac-strategy.rules.json +28 -0
- package/rulesets/adr/generated/adr-nodejs-0021-high-performance-authentication-graph-compilation.rules.json +28 -0
- package/rulesets/adr/generated/adr-nodejs-0022-contextual-authentication-and-pluggable-output-projections.rules.json +28 -0
- package/rulesets/adr/generated/adr-nodejs-0023-centralized-authorization-core-strategy.rules.json +28 -0
- package/rulesets/adr/generated/adr-nodejs-0026-adaptive-mfa-and-passwordless-platform.rules.json +28 -0
- package/rulesets/adr/generated/adr-nodejs-0027-dual-protocol-api-strategy-rest-grpc.rules.json +28 -0
- package/rulesets/adr/generated/adr-nodejs-0029-adoption-of-tactical-ddd-primitives-library.rules.json +29 -0
- package/rulesets/adr/generated/adr-nodejs-0038-enterprise-error-handling-result-pattern-strategy.rules.json +29 -0
- package/rulesets/adr/generated/adr-nodejs-0043-data-access-and-orm-strategy-for-node-js.rules.json +29 -0
- package/rulesets/adr/generated/adr-nodejs-0044-frontend-clean-architecture-layer-boundaries-react.rules.json +29 -0
- package/rulesets/adr/generated/adr-nodejs-0045-frontend-state-management-zustand-tanstack-query-dual-strate.rules.json +29 -0
- package/rulesets/adr/generated/adr-nodejs-0046-prohibition-of-raw-technical-identifiers-in-user-interfaces.rules.json +29 -0
- package/rulesets/adr/generated/adr-nodejs-0047-actionable-user-error-contract-and-correlated-diagnostics.rules.json +29 -0
- package/rulesets/adr/generated/adr-nodejs-0048-feature-flag-system-scope-and-structured-criteria-model.rules.json +29 -0
- package/rulesets/adr/generated/adr-nodejs-0074-monorepo-orchestration-with-nx.rules.json +29 -0
- package/rulesets/adr/generated/adr-nodejs-0075-application-gateway-bff-with-nestjs.rules.json +29 -0
- package/rulesets/architecture/README.es.md +21 -0
- package/rulesets/architecture/README.md +21 -0
- package/rulesets/architecture/opa/progressive-axis.rego +50 -0
- package/rulesets/cli/README.es.md +17 -0
- package/rulesets/cli/README.md +17 -0
- package/rulesets/cli/core-parity.rules.json +61 -0
- package/rulesets/cli/release-readiness.rules.json +77 -0
- package/rulesets/compliance-baseline/README.es.md +26 -0
- package/rulesets/compliance-baseline/README.md +26 -0
- package/rulesets/compliance-baseline/compliance-baseline.rules.json +81 -0
- package/rulesets/contracts/README.es.md +19 -0
- package/rulesets/contracts/README.md +19 -0
- package/rulesets/contracts/evolith-machine-contracts.json +29 -0
- package/rulesets/contracts/fixtures/gate-evidence.success.json +10 -0
- package/rulesets/contracts/fixtures/output-envelope.success.json +23 -0
- package/rulesets/cross-cutting/README.es.md +14 -0
- package/rulesets/cross-cutting/README.md +14 -0
- package/rulesets/cross-cutting/compliance-baseline.rules.json +81 -0
- package/rulesets/cross-cutting/definition-of-done.rules.json +135 -0
- package/rulesets/cross-cutting/engineering-manifesto.rules.json +145 -0
- package/rulesets/cross-cutting/repository-taxonomy.rules.json +172 -0
- package/rulesets/definition-of-done/README.es.md +26 -0
- package/rulesets/definition-of-done/README.md +26 -0
- package/rulesets/definition-of-done/definition-of-done.rules.json +135 -0
- package/rulesets/engineering-manifesto/README.es.md +26 -0
- package/rulesets/engineering-manifesto/README.md +26 -0
- package/rulesets/engineering-manifesto/engineering-manifesto.rules.json +145 -0
- package/rulesets/evidence/README.es.md +12 -0
- package/rulesets/evidence/README.md +12 -0
- package/rulesets/evidence/evidence-manifest.rules.json +48 -0
- package/rulesets/executive-scorecards/executive-scorecards.rules.es.json +213 -0
- package/rulesets/executive-scorecards/executive-scorecards.rules.json +213 -0
- package/rulesets/governance/README.es.md +13 -0
- package/rulesets/governance/README.md +13 -0
- package/rulesets/governance/abac-mcp-access.rules.es.json +41 -0
- package/rulesets/governance/abac-mcp-access.rules.json +41 -0
- package/rulesets/governance/executive-scorecards.rules.es.json +213 -0
- package/rulesets/governance/executive-scorecards.rules.json +213 -0
- package/rulesets/governance/inheritance.rules.json +115 -0
- package/rulesets/governance/knowledge-intake.rules.json +18 -0
- package/rulesets/governance/open-core-boundary.rules.es.json +148 -0
- package/rulesets/governance/open-core-boundary.rules.json +148 -0
- package/rulesets/governance/satellite-contracts.rules.json +183 -0
- package/rulesets/infrastructure/helm-enforcement.rules.json +21 -0
- package/rulesets/infrastructure/opa/helm-enforcement.rego +25 -0
- package/rulesets/infrastructure/opa/helm-enforcement.test.rego +31 -0
- package/rulesets/infrastructure/opa/opa-sidecar-bundle.rego +115 -0
- package/rulesets/infrastructure/opa/opa-sidecar-bundle.test.rego +66 -0
- package/rulesets/infrastructure/opa-sidecar-bundle.rules.json +18 -0
- package/rulesets/mcp/README.es.md +12 -0
- package/rulesets/mcp/README.md +12 -0
- package/rulesets/mcp/protocol-compliance.rules.json +57 -0
- package/rulesets/observability/README.es.md +12 -0
- package/rulesets/observability/README.md +12 -0
- package/rulesets/observability/telemetry-evidence.rules.json +48 -0
- package/rulesets/opa/README.es.md +22 -0
- package/rulesets/opa/README.md +22 -0
- package/rulesets/opa/abac-mcp-tool-access.rego +122 -0
- package/rulesets/opa/abac-mcp-tool-access.test.rego +33 -0
- package/rulesets/opa/anti-corruption-layer.rego +39 -0
- package/rulesets/opa/anti-corruption-layer.test.rego +118 -0
- package/rulesets/opa/ci-cd.rego +41 -0
- package/rulesets/opa/ci-cd.test.rego +23 -0
- package/rulesets/opa/cicd-quality-gates.rego +29 -0
- package/rulesets/opa/cicd-quality-gates.test.rego +54 -0
- package/rulesets/opa/cli-core-parity.rego +17 -0
- package/rulesets/opa/cli-core-parity.test.rego +39 -0
- package/rulesets/opa/cli-readiness.rego +32 -0
- package/rulesets/opa/cli-readiness.test.rego +23 -0
- package/rulesets/opa/cli-release-readiness.rego +21 -0
- package/rulesets/opa/cli-release-readiness.test.rego +46 -0
- package/rulesets/opa/compliance-baseline.rego +95 -0
- package/rulesets/opa/compliance-baseline.test.rego +89 -0
- package/rulesets/opa/dod.rego +42 -0
- package/rulesets/opa/dod.test.rego +250 -0
- package/rulesets/opa/engineering-manifesto.rego +78 -0
- package/rulesets/opa/engineering-manifesto.test.rego +133 -0
- package/rulesets/opa/evidence.rego +64 -0
- package/rulesets/opa/evidence.test.rego +23 -0
- package/rulesets/opa/executive-scorecards.rego +41 -0
- package/rulesets/opa/executive-scorecards.test.rego +60 -0
- package/rulesets/opa/gitflow-branching.rego +41 -0
- package/rulesets/opa/gitflow-branching.test.rego +60 -0
- package/rulesets/opa/governance.rego +39 -0
- package/rulesets/opa/governance.test.rego +23 -0
- package/rulesets/opa/hexagonal-architecture.rego +33 -0
- package/rulesets/opa/hexagonal-architecture.test.rego +57 -0
- package/rulesets/opa/infrastructure/helm-enforcement.rego +33 -0
- package/rulesets/opa/infrastructure/opa-sidecar-bundle.rego +42 -0
- package/rulesets/opa/knowledge-intake.rego +98 -0
- package/rulesets/opa/knowledge-intake.test.rego +50 -0
- package/rulesets/opa/main.rego +147 -0
- package/rulesets/opa/main_test.rego +149 -0
- package/rulesets/opa/mcp.rego +61 -0
- package/rulesets/opa/mcp.test.rego +27 -0
- package/rulesets/opa/multi-runtime.rego +33 -0
- package/rulesets/opa/multi-runtime.test.rego +53 -0
- package/rulesets/opa/multi-tenancy.rego +33 -0
- package/rulesets/opa/multi-tenancy.test.rego +53 -0
- package/rulesets/opa/open-core-boundary.rego +33 -0
- package/rulesets/opa/open-core-boundary.test.rego +60 -0
- package/rulesets/opa/protocol-selection.rego +29 -0
- package/rulesets/opa/protocol-selection.test.rego +46 -0
- package/rulesets/opa/rbac/gate-role-enforcement.rego +112 -0
- package/rulesets/opa/repository-taxonomy.rego +98 -0
- package/rulesets/opa/repository-taxonomy.test.rego +91 -0
- package/rulesets/opa/satellite-contracts.rego +42 -0
- package/rulesets/opa/satellite-contracts.test.rego +70 -0
- package/rulesets/opa/schemas/abac-mcp-tool-access.input.schema.json +21 -0
- package/rulesets/opa/schemas/anti-corruption-layer.input.schema.json +25 -0
- package/rulesets/opa/schemas/ci-cd.input.schema.json +27 -0
- package/rulesets/opa/schemas/cicd-quality-gates.input.schema.json +33 -0
- package/rulesets/opa/schemas/cli-core-parity.input.schema.json +30 -0
- package/rulesets/opa/schemas/cli-readiness.input.schema.json +28 -0
- package/rulesets/opa/schemas/cli-release-readiness.input.schema.json +26 -0
- package/rulesets/opa/schemas/compliance-baseline.input.schema.json +25 -0
- package/rulesets/opa/schemas/dod.input.schema.json +38 -0
- package/rulesets/opa/schemas/engineering-manifesto.input.schema.json +24 -0
- package/rulesets/opa/schemas/evidence.input.schema.json +35 -0
- package/rulesets/opa/schemas/executive-scorecards.input.schema.json +36 -0
- package/rulesets/opa/schemas/gitflow-branching.input.schema.json +36 -0
- package/rulesets/opa/schemas/governance.input.schema.json +19 -0
- package/rulesets/opa/schemas/hexagonal-architecture.input.schema.json +46 -0
- package/rulesets/opa/schemas/knowledge-intake.input.schema.json +57 -0
- package/rulesets/opa/schemas/mcp.input.schema.json +38 -0
- package/rulesets/opa/schemas/multi-runtime.input.schema.json +27 -0
- package/rulesets/opa/schemas/multi-tenancy.input.schema.json +27 -0
- package/rulesets/opa/schemas/open-core-boundary.input.schema.json +36 -0
- package/rulesets/opa/schemas/protocol-selection.input.schema.json +26 -0
- package/rulesets/opa/schemas/repository-taxonomy.input.schema.json +18 -0
- package/rulesets/opa/schemas/satellite-contracts.input.schema.json +38 -0
- package/rulesets/opa/schemas/taxonomy.input.schema.json +27 -0
- package/rulesets/opa/schemas/testing-pyramid.input.schema.json +42 -0
- package/rulesets/opa/schemas/version-pinning.input.schema.json +39 -0
- package/rulesets/opa/sdlc/coverage.rego +49 -0
- package/rulesets/opa/sdlc/coverage.test.rego +29 -0
- package/rulesets/opa/sdlc/pyramid-distribution.rego +31 -0
- package/rulesets/opa/sdlc/pyramid-distribution.test.rego +33 -0
- package/rulesets/opa/taxonomy.rego +51 -0
- package/rulesets/opa/taxonomy.test.rego +28 -0
- package/rulesets/opa/telemetry-evidence.rego +102 -0
- package/rulesets/opa/testing-pyramid.rego +49 -0
- package/rulesets/opa/testing-pyramid.test.rego +81 -0
- package/rulesets/opa/version-pinning.rego +99 -0
- package/rulesets/opa/version-pinning.test.rego +28 -0
- package/rulesets/phase-gates/README.es.md +28 -0
- package/rulesets/phase-gates/README.md +28 -0
- package/rulesets/phase-gates/phase-gates.rules.json +297 -0
- package/rulesets/quality-thresholds/README.es.md +28 -0
- package/rulesets/quality-thresholds/README.md +28 -0
- package/rulesets/quality-thresholds/quality-thresholds.rules.json +96 -0
- package/rulesets/repository-taxonomy/README.es.md +26 -0
- package/rulesets/repository-taxonomy/README.md +26 -0
- package/rulesets/repository-taxonomy/repository-taxonomy.rules.json +172 -0
- package/rulesets/satellite-contracts/README.es.md +27 -0
- package/rulesets/satellite-contracts/README.md +27 -0
- package/rulesets/satellite-contracts/satellite-contracts.rules.json +183 -0
- package/rulesets/schema/README.es.md +39 -0
- package/rulesets/schema/README.md +39 -0
- package/rulesets/schema/adr.schema.json +138 -0
- package/rulesets/schema/agile-backlog.schema.json +91 -0
- package/rulesets/schema/ballpark-estimation.schema.json +109 -0
- package/rulesets/schema/build-vs-compose.schema.json +98 -0
- package/rulesets/schema/cli-impact-analysis.schema.json +114 -0
- package/rulesets/schema/discovery-canvas.schema.json +92 -0
- package/rulesets/schema/evolith-user-story.schema.json +105 -0
- package/rulesets/schema/evolith-yaml.schema.json +191 -0
- package/rulesets/schema/functional-story.schema.json +111 -0
- package/rulesets/schema/gate-evidence.schema.json +85 -0
- package/rulesets/schema/integration-evidence.schema.json +47 -0
- package/rulesets/schema/knowledge-intake.schema.json +67 -0
- package/rulesets/schema/knowledge-projection.schema.json +24 -0
- package/rulesets/schema/maturity-evidence.schema.json +59 -0
- package/rulesets/schema/observability-validation.schema.json +85 -0
- package/rulesets/schema/on-call-handoff.schema.json +91 -0
- package/rulesets/schema/output-envelope.schema.json +102 -0
- package/rulesets/schema/prd.schema.json +117 -0
- package/rulesets/schema/release-notes.schema.json +138 -0
- package/rulesets/schema/rollback-rehearsal.schema.json +73 -0
- package/rulesets/schema/ruleset-sdlc.schema.json +59 -0
- package/rulesets/schema/ruleset-standard.schema.json +73 -0
- package/rulesets/schema/security-scan-report.schema.json +79 -0
- package/rulesets/schema/source-registry.schema.json +51 -0
- package/rulesets/schema/technical-feasibility.schema.json +66 -0
- package/rulesets/schema/technical-story.schema.json +112 -0
- package/rulesets/schema/test-summary-report.schema.json +158 -0
- package/rulesets/schema/topology-composition.schema.json +43 -0
- package/rulesets/schema/topology-manifest.schema.json +421 -0
- package/rulesets/sdlc/README.es.md +12 -0
- package/rulesets/sdlc/README.md +12 -0
- package/rulesets/sdlc/default-workflow.yaml +73 -0
- package/rulesets/sdlc/dependency-pinning.rules.json +183 -0
- package/rulesets/sdlc/phase-gates.rules.json +297 -0
- package/rulesets/sdlc/quality-thresholds.rules.json +96 -0
- package/rulesets/topologies/README.es.md +42 -0
- package/rulesets/topologies/README.md +42 -0
- package/rulesets/topologies/agentic-ai/README.es.md +142 -0
- package/rulesets/topologies/agentic-ai/README.md +142 -0
- package/rulesets/topologies/agentic-ai/adoption.es.md +37 -0
- package/rulesets/topologies/agentic-ai/adoption.md +37 -0
- package/rulesets/topologies/agentic-ai/agent.config.schema.json +100 -0
- package/rulesets/topologies/agentic-ai/agentic-ai.rego +46 -0
- package/rulesets/topologies/agentic-ai/agentic-ai.rules.json +109 -0
- package/rulesets/topologies/agentic-ai/agentic-ai.test.rego +68 -0
- package/rulesets/topologies/agentic-ai/agentic-ai.wasm +0 -0
- package/rulesets/topologies/agentic-ai/cli/cli-flows.es.md +35 -0
- package/rulesets/topologies/agentic-ai/cli/cli-flows.md +45 -0
- package/rulesets/topologies/agentic-ai/evidence.es.md +25 -0
- package/rulesets/topologies/agentic-ai/evidence.md +25 -0
- package/rulesets/topologies/agentic-ai/evolution.es.md +26 -0
- package/rulesets/topologies/agentic-ai/evolution.md +26 -0
- package/rulesets/topologies/agentic-ai/fixtures/invalid-agent.config.json +48 -0
- package/rulesets/topologies/agentic-ai/fixtures/valid-agent.config.json +48 -0
- package/rulesets/topologies/agentic-ai/maturity.es.md +33 -0
- package/rulesets/topologies/agentic-ai/maturity.md +33 -0
- package/rulesets/topologies/agentic-ai/mcp/mcp-manifest.json +100 -0
- package/rulesets/topologies/agentic-ai/openapi/openapi.yaml +187 -0
- package/rulesets/topologies/agentic-ai/operations.es.md +32 -0
- package/rulesets/topologies/agentic-ai/operations.md +32 -0
- package/rulesets/topologies/agentic-ai/parity-fixtures/compliant.json +18 -0
- package/rulesets/topologies/agentic-ai/parity-fixtures/violation.json +22 -0
- package/rulesets/topologies/agentic-ai/patterns.es.md +32 -0
- package/rulesets/topologies/agentic-ai/patterns.md +32 -0
- package/rulesets/topologies/agentic-ai/resilience.es.md +26 -0
- package/rulesets/topologies/agentic-ai/resilience.md +26 -0
- package/rulesets/topologies/agentic-ai/runbooks.es.md +48 -0
- package/rulesets/topologies/agentic-ai/runbooks.md +48 -0
- package/rulesets/topologies/agentic-ai/security.es.md +26 -0
- package/rulesets/topologies/agentic-ai/security.md +26 -0
- package/rulesets/topologies/agentic-ai/topology.manifest.json +127 -0
- package/rulesets/topologies/data-mesh/README.es.md +69 -0
- package/rulesets/topologies/data-mesh/README.md +69 -0
- package/rulesets/topologies/data-mesh/adoption.es.md +95 -0
- package/rulesets/topologies/data-mesh/adoption.md +95 -0
- package/rulesets/topologies/data-mesh/cli/cli-flows.es.md +41 -0
- package/rulesets/topologies/data-mesh/cli/cli-flows.md +53 -0
- package/rulesets/topologies/data-mesh/data-mesh.rego +11 -0
- package/rulesets/topologies/data-mesh/data-mesh.rules.json +100 -0
- package/rulesets/topologies/data-mesh/data-mesh.test.rego +107 -0
- package/rulesets/topologies/data-mesh/data-mesh.wasm +0 -0
- package/rulesets/topologies/data-mesh/evidence.es.md +111 -0
- package/rulesets/topologies/data-mesh/evidence.md +111 -0
- package/rulesets/topologies/data-mesh/evolution.es.md +67 -0
- package/rulesets/topologies/data-mesh/evolution.md +67 -0
- package/rulesets/topologies/data-mesh/fixtures/invalid.topology.config.json +12 -0
- package/rulesets/topologies/data-mesh/fixtures/valid.topology.config.json +12 -0
- package/rulesets/topologies/data-mesh/maturity.es.md +36 -0
- package/rulesets/topologies/data-mesh/maturity.md +36 -0
- package/rulesets/topologies/data-mesh/mcp/mcp-manifest.json +68 -0
- package/rulesets/topologies/data-mesh/openapi/openapi.yaml +186 -0
- package/rulesets/topologies/data-mesh/operations.es.md +63 -0
- package/rulesets/topologies/data-mesh/operations.md +63 -0
- package/rulesets/topologies/data-mesh/parity-fixtures/compliant.json +18 -0
- package/rulesets/topologies/data-mesh/parity-fixtures/violation.json +21 -0
- package/rulesets/topologies/data-mesh/patterns.es.md +67 -0
- package/rulesets/topologies/data-mesh/patterns.md +67 -0
- package/rulesets/topologies/data-mesh/resilience.es.md +64 -0
- package/rulesets/topologies/data-mesh/resilience.md +64 -0
- package/rulesets/topologies/data-mesh/runbooks.es.md +147 -0
- package/rulesets/topologies/data-mesh/runbooks.md +147 -0
- package/rulesets/topologies/data-mesh/security.es.md +66 -0
- package/rulesets/topologies/data-mesh/security.md +66 -0
- package/rulesets/topologies/data-mesh/topology.config.schema.json +30 -0
- package/rulesets/topologies/data-mesh/topology.manifest.json +107 -0
- package/rulesets/topologies/edge-computing/README.es.md +81 -0
- package/rulesets/topologies/edge-computing/README.md +81 -0
- package/rulesets/topologies/edge-computing/adoption.es.md +268 -0
- package/rulesets/topologies/edge-computing/adoption.md +268 -0
- package/rulesets/topologies/edge-computing/cli/cli-flows.es.md +41 -0
- package/rulesets/topologies/edge-computing/cli/cli-flows.md +53 -0
- package/rulesets/topologies/edge-computing/edge-computing.rego +41 -0
- package/rulesets/topologies/edge-computing/edge-computing.rules.json +50 -0
- package/rulesets/topologies/edge-computing/edge-computing.test.rego +33 -0
- package/rulesets/topologies/edge-computing/edge-computing.wasm +0 -0
- package/rulesets/topologies/edge-computing/evidence.es.md +263 -0
- package/rulesets/topologies/edge-computing/evidence.md +263 -0
- package/rulesets/topologies/edge-computing/evolution.es.md +257 -0
- package/rulesets/topologies/edge-computing/evolution.md +257 -0
- package/rulesets/topologies/edge-computing/fixtures/invalid.topology.config.json +6 -0
- package/rulesets/topologies/edge-computing/fixtures/valid.topology.config.json +6 -0
- package/rulesets/topologies/edge-computing/maturity.es.md +36 -0
- package/rulesets/topologies/edge-computing/maturity.md +36 -0
- package/rulesets/topologies/edge-computing/mcp/mcp-manifest.json +72 -0
- package/rulesets/topologies/edge-computing/openapi/openapi.yaml +187 -0
- package/rulesets/topologies/edge-computing/operations.es.md +148 -0
- package/rulesets/topologies/edge-computing/operations.md +148 -0
- package/rulesets/topologies/edge-computing/parity-fixtures/compliant.json +12 -0
- package/rulesets/topologies/edge-computing/parity-fixtures/violation.json +13 -0
- package/rulesets/topologies/edge-computing/patterns.es.md +291 -0
- package/rulesets/topologies/edge-computing/patterns.md +290 -0
- package/rulesets/topologies/edge-computing/resilience.es.md +232 -0
- package/rulesets/topologies/edge-computing/resilience.md +229 -0
- package/rulesets/topologies/edge-computing/runbooks.es.md +405 -0
- package/rulesets/topologies/edge-computing/runbooks.md +405 -0
- package/rulesets/topologies/edge-computing/security.es.md +218 -0
- package/rulesets/topologies/edge-computing/security.md +218 -0
- package/rulesets/topologies/edge-computing/topology.config.schema.json +13 -0
- package/rulesets/topologies/edge-computing/topology.manifest.json +113 -0
- package/rulesets/topologies/event-driven/README.es.md +71 -0
- package/rulesets/topologies/event-driven/README.md +71 -0
- package/rulesets/topologies/event-driven/adoption.es.md +67 -0
- package/rulesets/topologies/event-driven/adoption.md +67 -0
- package/rulesets/topologies/event-driven/cli/cli-flows.es.md +41 -0
- package/rulesets/topologies/event-driven/cli/cli-flows.md +53 -0
- package/rulesets/topologies/event-driven/event-driven.rego +11 -0
- package/rulesets/topologies/event-driven/event-driven.rules.json +100 -0
- package/rulesets/topologies/event-driven/event-driven.test.rego +107 -0
- package/rulesets/topologies/event-driven/event-driven.wasm +0 -0
- package/rulesets/topologies/event-driven/evidence.es.md +69 -0
- package/rulesets/topologies/event-driven/evidence.md +69 -0
- package/rulesets/topologies/event-driven/evolution.es.md +59 -0
- package/rulesets/topologies/event-driven/evolution.md +59 -0
- package/rulesets/topologies/event-driven/fixtures/invalid.topology.config.json +12 -0
- package/rulesets/topologies/event-driven/fixtures/valid.topology.config.json +12 -0
- package/rulesets/topologies/event-driven/maturity.es.md +36 -0
- package/rulesets/topologies/event-driven/maturity.md +36 -0
- package/rulesets/topologies/event-driven/mcp/mcp-manifest.json +68 -0
- package/rulesets/topologies/event-driven/openapi/openapi.yaml +186 -0
- package/rulesets/topologies/event-driven/operations.es.md +67 -0
- package/rulesets/topologies/event-driven/operations.md +67 -0
- package/rulesets/topologies/event-driven/parity-fixtures/compliant.json +18 -0
- package/rulesets/topologies/event-driven/parity-fixtures/violation.json +21 -0
- package/rulesets/topologies/event-driven/patterns.es.md +68 -0
- package/rulesets/topologies/event-driven/patterns.md +68 -0
- package/rulesets/topologies/event-driven/resilience.es.md +65 -0
- package/rulesets/topologies/event-driven/resilience.md +65 -0
- package/rulesets/topologies/event-driven/runbooks.es.md +79 -0
- package/rulesets/topologies/event-driven/runbooks.md +79 -0
- package/rulesets/topologies/event-driven/security.es.md +59 -0
- package/rulesets/topologies/event-driven/security.md +59 -0
- package/rulesets/topologies/event-driven/topology.config.schema.json +30 -0
- package/rulesets/topologies/event-driven/topology.manifest.json +109 -0
- package/rulesets/topologies/progressive-axis/distributed-modules/distributed-modules.rules.es.json +111 -0
- package/rulesets/topologies/progressive-axis/distributed-modules/distributed-modules.rules.json +111 -0
- package/rulesets/topologies/progressive-axis/microservices/microservices.rules.es.json +106 -0
- package/rulesets/topologies/progressive-axis/microservices/microservices.rules.json +106 -0
- package/rulesets/topologies/progressive-axis/modular-monolith/modular-monolith.rules.es.json +148 -0
- package/rulesets/topologies/progressive-axis/modular-monolith/modular-monolith.rules.json +148 -0
- package/rulesets/topologies/serverless/README.es.md +74 -0
- package/rulesets/topologies/serverless/README.md +74 -0
- package/rulesets/topologies/serverless/adoption.es.md +50 -0
- package/rulesets/topologies/serverless/adoption.md +50 -0
- package/rulesets/topologies/serverless/cli/cli-flows.es.md +41 -0
- package/rulesets/topologies/serverless/cli/cli-flows.md +53 -0
- package/rulesets/topologies/serverless/evidence.es.md +66 -0
- package/rulesets/topologies/serverless/evidence.md +66 -0
- package/rulesets/topologies/serverless/evolution.es.md +36 -0
- package/rulesets/topologies/serverless/evolution.md +36 -0
- package/rulesets/topologies/serverless/fixtures/invalid.topology.config.json +6 -0
- package/rulesets/topologies/serverless/fixtures/valid.topology.config.json +6 -0
- package/rulesets/topologies/serverless/maturity.es.md +36 -0
- package/rulesets/topologies/serverless/maturity.md +36 -0
- package/rulesets/topologies/serverless/mcp/mcp-manifest.json +72 -0
- package/rulesets/topologies/serverless/openapi/openapi.yaml +186 -0
- package/rulesets/topologies/serverless/operations.es.md +36 -0
- package/rulesets/topologies/serverless/operations.md +36 -0
- package/rulesets/topologies/serverless/parity-fixtures/compliant.json +13 -0
- package/rulesets/topologies/serverless/parity-fixtures/violation.json +15 -0
- package/rulesets/topologies/serverless/patterns.es.md +36 -0
- package/rulesets/topologies/serverless/patterns.md +36 -0
- package/rulesets/topologies/serverless/resilience.es.md +36 -0
- package/rulesets/topologies/serverless/resilience.md +36 -0
- package/rulesets/topologies/serverless/runbooks.es.md +68 -0
- package/rulesets/topologies/serverless/runbooks.md +68 -0
- package/rulesets/topologies/serverless/security.es.md +36 -0
- package/rulesets/topologies/serverless/security.md +36 -0
- package/rulesets/topologies/serverless/serverless.rego +32 -0
- package/rulesets/topologies/serverless/serverless.rules.json +33 -0
- package/rulesets/topologies/serverless/serverless.test.rego +28 -0
- package/rulesets/topologies/serverless/serverless.wasm +0 -0
- package/rulesets/topologies/serverless/topology.config.schema.json +28 -0
- package/rulesets/topologies/serverless/topology.manifest.json +114 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Perfil Topologico Serverless
|
|
2
|
+
|
|
3
|
+
> **Navegacion Bilingue:** [English Version](./README.md)
|
|
4
|
+
|
|
5
|
+
**Estado:** Accepted
|
|
6
|
+
**Dimension:** `execution`
|
|
7
|
+
**ID de Topologia:** `serverless`
|
|
8
|
+
**Alias de Compatibilidad:** `F1-compatible`
|
|
9
|
+
**Manifiesto:** [topology.manifest.json](./topology.manifest.json)
|
|
10
|
+
|
|
11
|
+
Serverless es una topologia de ejecucion para workloads administrados y escalados por eventos donde la plataforma posee el aprovisionamiento runtime y Evolith Core gobierna contratos, observabilidad, seguridad, idempotencia y fronteras de integracion.
|
|
12
|
+
|
|
13
|
+
## Proposito
|
|
14
|
+
|
|
15
|
+
Usa esta topologia para capacidades aisladas que se benefician de escalamiento administrado, triggers de eventos, jobs programados, procesamiento asincrono o workloads con picos sin introducir una topologia de servicio separada.
|
|
16
|
+
|
|
17
|
+
Serverless no reemplaza la arquitectura de dominio. Se compone con `modular-monolith`, `distributed-modules` o `microservices` cuando el manifiesto y la revision arquitectonica permiten la frontera de ejecucion.
|
|
18
|
+
|
|
19
|
+
## Reglas de Gobernanza
|
|
20
|
+
|
|
21
|
+
| Regla | Requisito |
|
|
22
|
+
|---|---|
|
|
23
|
+
| Idempotencia | Los handlers disparados por eventos deben tolerar reintentos y entrega duplicada. |
|
|
24
|
+
| Contratos | Entradas, salidas, eventos y dependencias externas deben versionarse explicitamente. |
|
|
25
|
+
| Observabilidad | Cada funcion o workflow administrado debe emitir evidencia trazable y senales de fallo. |
|
|
26
|
+
| Control de frontera | Los handlers serverless no deben saltarse ownership de dominio ni fronteras de persistencia. |
|
|
27
|
+
| Neutralidad de proveedor | La guia Core permanece neutral respecto del proveedor; las selecciones de proveedor pertenecen a perfiles de producto o plataforma. |
|
|
28
|
+
|
|
29
|
+
## Autoridad Requerida
|
|
30
|
+
|
|
31
|
+
| Artefacto | Rol |
|
|
32
|
+
|---|---|
|
|
33
|
+
| [ADR-0079: Corpus de Referencia Multi-Topologia](../../../adrs/core/0079-multi-topology-reference-corpus.md) | Gobierna los manifiestos de topologia y composicion. |
|
|
34
|
+
| [ADR-0095: Gobernanza de Arquitectura Serverless](../../../adrs/core/0095-serverless-architecture-governance.md) | Gobierna las restricciones arquitectonicas especificas de serverless. |
|
|
35
|
+
| [Reglas de Arquitectura Serverless](./serverless.rules.json) | Reglas de compatibilidad ejecutables existentes. |
|
|
36
|
+
| [Modelo de Dimensiones de Topologia](../../topology-dimensions.md) | Define reglas de composicion y compatibilidad. |
|
|
37
|
+
|
|
38
|
+
## Contrato Ejecutable
|
|
39
|
+
|
|
40
|
+
Todo satelite que adopte este perfil proporciona `serverless.config.json`:
|
|
41
|
+
|
|
42
|
+
```json
|
|
43
|
+
{
|
|
44
|
+
"stateless": true,
|
|
45
|
+
"package": { "maxSizeMb": 25 },
|
|
46
|
+
"coldStart": { "maxInitMilliseconds": 500, "lazyInitialization": true }
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
SV-R01 a SV-R04 exigen ese contrato, ejecucion sin estado, un paquete no mayor de 50 MB e inicializacion diferida acotada. El evaluador Native y la [politica OPA](./serverless.rego) evalúan los mismos campos.
|
|
51
|
+
|
|
52
|
+
## Composicion
|
|
53
|
+
|
|
54
|
+
`serverless` puede combinarse con:
|
|
55
|
+
|
|
56
|
+
| Topologia | Por Que Puede Componerse |
|
|
57
|
+
|---|---|
|
|
58
|
+
| `modular-monolith` | Agrega puntos de ejecucion administrados sin forzar extraccion completa de servicios. |
|
|
59
|
+
| `distributed-modules` | Permite handlers serverless dentro de fronteras de modulo controladas. |
|
|
60
|
+
| `microservices` | Soporta funciones de servicio individual con ejecucion escalada por eventos. |
|
|
61
|
+
| `event-driven` | Habilita handlers serverless disparados por eventos gobernados por contratos. |
|
|
62
|
+
| `data-mesh` | Proporciona ejecucion de productos de datos analiticos sin acoplamiento transaccional. |
|
|
63
|
+
| `agentic-ai` | Aloja workflows de agentes IA gobernados por contexto MCP y rulesets. |
|
|
64
|
+
|
|
65
|
+
## Frontera de Negocio
|
|
66
|
+
|
|
67
|
+
Este perfil es solo tecnico. No define ROI, modelo de costos, gasto cloud, staffing, timing de entrega, priorizacion ni Funnel 0. Evolith Tracker posee esas preocupaciones de negocio mediante su ACL.
|
|
68
|
+
|
|
69
|
+
## Presupuestos Operativos
|
|
70
|
+
|
|
71
|
+
Esta topología declara envelopes arquitectónicos de latencia, cold-start y costo por ejecución en `spec.operationalBudgets` de [`topology.manifest.json`](./topology.manifest.json). Los operadores verifican los satélites contra estos envelopes siguiendo el [Runbook de Presupuestos Operativos](../operational-budgets-runbook.es.md) compartido.
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
[Volver al Hub de Topologias](../../README.es.md)
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Serverless Topology Profile
|
|
2
|
+
|
|
3
|
+
> **Bilingual Navigation:** [Version en Espanol](./README.es.md)
|
|
4
|
+
|
|
5
|
+
**Status:** Accepted
|
|
6
|
+
**Dimension:** `execution`
|
|
7
|
+
**Topology ID:** `serverless`
|
|
8
|
+
**Compatibility Alias:** `F1-compatible`
|
|
9
|
+
**Manifest:** [topology.manifest.json](./topology.manifest.json)
|
|
10
|
+
|
|
11
|
+
Serverless is an execution topology for managed, event-scaled workloads where the platform owns runtime provisioning and Evolith Core governs contracts, observability, security, idempotency, and integration boundaries.
|
|
12
|
+
|
|
13
|
+
## Purpose
|
|
14
|
+
|
|
15
|
+
Use this topology for isolated capabilities that benefit from managed scaling, event triggers, scheduled jobs, asynchronous processing, or bursty workloads without introducing a separately owned service topology.
|
|
16
|
+
|
|
17
|
+
Serverless does not replace domain architecture. It composes with `modular-monolith`, `distributed-modules`, or `microservices` when the manifest and architecture review allow the execution boundary.
|
|
18
|
+
|
|
19
|
+
## Governance Rules
|
|
20
|
+
|
|
21
|
+
| Rule | Requirement |
|
|
22
|
+
|---|---|
|
|
23
|
+
| Idempotency | Event-triggered handlers must tolerate retries and duplicate delivery. |
|
|
24
|
+
| Contracts | Inputs, outputs, events, and external dependencies must be explicitly versioned. |
|
|
25
|
+
| Observability | Each function or managed workflow must emit traceable evidence and failure signals. |
|
|
26
|
+
| Boundary control | Serverless handlers must not bypass domain ownership or persistence boundaries. |
|
|
27
|
+
| Provider neutrality | Core guidance remains provider-neutral; provider choices belong to product or platform profiles. |
|
|
28
|
+
|
|
29
|
+
## Required Authority
|
|
30
|
+
|
|
31
|
+
| Artifact | Role |
|
|
32
|
+
|---|---|
|
|
33
|
+
| [ADR-0079: Multi-Topology Reference Corpus](../../../adrs/core/0079-multi-topology-reference-corpus.md) | Governs topology manifests and composition. |
|
|
34
|
+
| [ADR-0095: Serverless Architecture Governance](../../../adrs/core/0095-serverless-architecture-governance.md) | Governs serverless-specific architecture constraints. |
|
|
35
|
+
| [Serverless Architecture Rules](./serverless.rules.json) | Existing executable compatibility rules. |
|
|
36
|
+
| [Topology Dimensions Model](../../topology-dimensions.md) | Defines composition and compatibility rules. |
|
|
37
|
+
|
|
38
|
+
## Executable Contract
|
|
39
|
+
|
|
40
|
+
Every adopting satellite provides `serverless.config.json`:
|
|
41
|
+
|
|
42
|
+
```json
|
|
43
|
+
{
|
|
44
|
+
"stateless": true,
|
|
45
|
+
"package": { "maxSizeMb": 25 },
|
|
46
|
+
"coldStart": { "maxInitMilliseconds": 500, "lazyInitialization": true }
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
SV-R01 through SV-R04 require that contract, stateless execution, a package no larger than 50 MB, and bounded lazy initialization. The Native evaluator and [OPA policy](./serverless.rego) evaluate the same fields.
|
|
51
|
+
|
|
52
|
+
## Composition
|
|
53
|
+
|
|
54
|
+
`serverless` can combine with:
|
|
55
|
+
|
|
56
|
+
| Topology | Why It Can Compose |
|
|
57
|
+
|---|---|
|
|
58
|
+
| `modular-monolith` | Adds managed execution points without forcing full service extraction. |
|
|
59
|
+
| `distributed-modules` | Allows serverless handlers within controlled module boundaries. |
|
|
60
|
+
| `microservices` | Supports individual service functions with event-scaled execution. |
|
|
61
|
+
| `event-driven` | Enables event-triggered serverless handlers governed by contracts. |
|
|
62
|
+
| `data-mesh` | Provides analytical data product execution without transactional coupling. |
|
|
63
|
+
| `agentic-ai` | Hosts AI-agent workflows governed by MCP context and rulesets. |
|
|
64
|
+
|
|
65
|
+
## Business Boundary
|
|
66
|
+
|
|
67
|
+
This profile is technical-only. It does not define ROI, cost model, cloud spend, staffing, delivery timing, prioritization, or Funnel 0. Evolith Tracker owns those business concerns through its ACL.
|
|
68
|
+
|
|
69
|
+
## Operational Budgets
|
|
70
|
+
|
|
71
|
+
This topology declares architectural envelopes for latency, cold-start, and per-execution cost in `spec.operationalBudgets` of [`topology.manifest.json`](./topology.manifest.json). Operators verify satellites against these envelopes following the shared [Operational Budgets Runbook](../operational-budgets-runbook.md).
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
[Back to Topology Hub](../../README.md)
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Guía de Adopción Sin Servidor
|
|
2
|
+
|
|
3
|
+
> **Navegación Bilingüe:** [English](./adoption.md) | [Español](./adoption.es.md)
|
|
4
|
+
|
|
5
|
+
**Propietario:** Ingeniería de Plataforma
|
|
6
|
+
**Topología:** Sin Servidor
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Criterios de Entrada
|
|
11
|
+
|
|
12
|
+
Adoptar serverless cuando se cumplan todos los siguientes:
|
|
13
|
+
|
|
14
|
+
- La carga de trabajo es orientada a eventos o esporádica con patrones de tráfico impredecibles
|
|
15
|
+
- El presupuesto de latencia permite hasta 1500 ms por invocación
|
|
16
|
+
- La tolerancia a inicio en frío es de al menos 1000 ms (SV-R04)
|
|
17
|
+
- El equipo tiene experiencia con al menos la plataforma de funciones de un proveedor de nube
|
|
18
|
+
- La organización acepta la dependencia de servicios gestionados
|
|
19
|
+
|
|
20
|
+
No adoptar serverless para cargas de trabajo sostenidas de alto rendimiento que excedan los presupuestos de concurrencia o requieran latencia inferior a 100 ms.
|
|
21
|
+
|
|
22
|
+
## Organización de Funciones
|
|
23
|
+
|
|
24
|
+
Organizar funciones por contexto acotado. Cada contexto acotado posee sus funciones, eventos y datos. Mantener un catálogo de funciones con:
|
|
25
|
+
|
|
26
|
+
- Nombre y propósito de la función
|
|
27
|
+
- Equipo propietario
|
|
28
|
+
- Tipo de disparador y esquema de eventos
|
|
29
|
+
- SLA (latencia, tasa de error)
|
|
30
|
+
- Presupuesto de costo por ejecución
|
|
31
|
+
|
|
32
|
+
## Desarrollo Local
|
|
33
|
+
|
|
34
|
+
Configurar emulación local para iteración rápida. Usar herramientas como SAM Local, Functions Framework o serverless-offline. Probar integración función-a-función en un entorno de staging. Mantener la emulación local alineada con configuraciones de producción.
|
|
35
|
+
|
|
36
|
+
## Lista de Verificación de Preparación
|
|
37
|
+
|
|
38
|
+
- [ ] Descomposición de funciones completa — cada función tiene una única responsabilidad
|
|
39
|
+
- [ ] Roles IAM asignados con privilegio mínimo (SV-SEC-01)
|
|
40
|
+
- [ ] DLQ configurada para todas las invocaciones asíncronas (SV-R01)
|
|
41
|
+
- [ ] Paquetes de despliegue bajo 50 MB (SV-R03)
|
|
42
|
+
- [ ] Perfilado de inicio en frío completado y dentro del presupuesto
|
|
43
|
+
- [ ] Monitoreo y alertas configuradas según la guía de evidencia
|
|
44
|
+
- [ ] Etiquetas de rastreo de costos aplicadas a todas las funciones
|
|
45
|
+
- [ ] Neutralidad con el proveedor evaluada (ADR-0095)
|
|
46
|
+
- [ ] Runbooks documentados para escenarios de fallo comunes
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
[Volver al Perfil Sin Servidor](./README.es.md)
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Serverless — Adoption Guide
|
|
2
|
+
|
|
3
|
+
> **Bilingual Navigation:** [English](./adoption.md) | [Español](./adoption.es.md)
|
|
4
|
+
|
|
5
|
+
**Owner:** Platform Engineering
|
|
6
|
+
**Topology:** Serverless
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Entry Criteria
|
|
11
|
+
|
|
12
|
+
Adopt serverless when all of the following are true:
|
|
13
|
+
|
|
14
|
+
- Workload is event-driven or sporadic with unpredictable traffic patterns
|
|
15
|
+
- Latency budget allows up to 1500 ms per invocation
|
|
16
|
+
- Cold start tolerance is at least 1000 ms (SV-R04)
|
|
17
|
+
- Team has experience with at least one cloud provider's function platform
|
|
18
|
+
- Organization accepts managed-service dependency
|
|
19
|
+
|
|
20
|
+
Do not adopt serverless for sustained high-throughput workloads that exceed concurrency budgets or require sub-100 ms latency.
|
|
21
|
+
|
|
22
|
+
## Function Organization
|
|
23
|
+
|
|
24
|
+
Organize functions by bounded context. Each bounded context owns its functions, events, and data. Maintain a function catalog with:
|
|
25
|
+
|
|
26
|
+
- Function name and purpose
|
|
27
|
+
- Owner team
|
|
28
|
+
- Trigger type and event schema
|
|
29
|
+
- SLA (latency, error rate)
|
|
30
|
+
- Cost budget per execution
|
|
31
|
+
|
|
32
|
+
## Local Development
|
|
33
|
+
|
|
34
|
+
Set up local emulation for rapid iteration. Use tools like SAM Local, Functions Framework, or serverless-offline. Test function-to-function integration in a staging environment. Keep local emulation aligned with production configurations.
|
|
35
|
+
|
|
36
|
+
## Readiness Checklist
|
|
37
|
+
|
|
38
|
+
- [ ] Function decomposition complete — each function has a single responsibility
|
|
39
|
+
- [ ] IAM roles assigned with least privilege (SV-SEC-01)
|
|
40
|
+
- [ ] DLQ configured for all asynchronous invocations (SV-R01)
|
|
41
|
+
- [ ] Deployment packages under 50 MB (SV-R03)
|
|
42
|
+
- [ ] Cold start profiling completed and within budget
|
|
43
|
+
- [ ] Monitoring and alerting configured per evidence guide
|
|
44
|
+
- [ ] Cost tracking tags applied to all functions
|
|
45
|
+
- [ ] Vendor neutrality assessed (ADR-0095)
|
|
46
|
+
- [ ] Runbooks documented for common failure scenarios
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
[Back to Serverless Profile](./README.md)
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Serverless — Flujos CLI
|
|
2
|
+
|
|
3
|
+
> **Navegación Bilingüe:** [English Version](./cli-flows.md)
|
|
4
|
+
|
|
5
|
+
**Validadores declarados:** `validate-architecture`, `validate-topology`
|
|
6
|
+
|
|
7
|
+
## Validate
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
evolith validate --topology serverless
|
|
11
|
+
evolith validate --topology serverless --arch-level F2
|
|
12
|
+
evolith validate --topology serverless --format json
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Inspect
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
evolith topology inspect serverless
|
|
19
|
+
evolith topology inspect serverless --include-functions
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Drift
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
evolith drift detect --topology serverless
|
|
26
|
+
evolith drift detect --topology serverless --format json
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Scaffold
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
evolith architecture scaffold --topology serverless
|
|
33
|
+
evolith architecture scaffold --topology serverless --dry-run
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Gate Evaluation
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
evolith gate evaluate --topology serverless
|
|
40
|
+
evolith gate evaluate --topology serverless --phase F1
|
|
41
|
+
```
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Serverless — CLI Flows
|
|
2
|
+
|
|
3
|
+
> **Bilingual Navigation:** [Versión en Español](./cli-flows.es.md)
|
|
4
|
+
|
|
5
|
+
**Validators declarados:** `validate-architecture`, `validate-topology`
|
|
6
|
+
|
|
7
|
+
The following CLI commands are available for the Serverless topology.
|
|
8
|
+
|
|
9
|
+
## Validate
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
evolith validate --topology serverless
|
|
13
|
+
evolith validate --topology serverless --arch-level F2
|
|
14
|
+
evolith validate --topology serverless --format json
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Validates a Serverless configuration against the topology's native rules (`serverless.rules.json`) and OPA Rego policies (`serverless.rego`), checking cold-start tolerance, statelessness, timeout limits, and cost profile.
|
|
18
|
+
|
|
19
|
+
## Inspect
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
evolith topology inspect serverless
|
|
23
|
+
evolith topology inspect serverless --include-functions
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Returns the parsed Serverless topology manifest, function definitions, trigger metadata, and corpus artifact references.
|
|
27
|
+
|
|
28
|
+
## Drift
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
evolith drift detect --topology serverless
|
|
32
|
+
evolith drift detect --topology serverless --format json
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Detects configuration drift between the Serverless topology's declared ruleset and the current workspace state.
|
|
36
|
+
|
|
37
|
+
## Scaffold
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
evolith architecture scaffold --topology serverless
|
|
41
|
+
evolith architecture scaffold --topology serverless --dry-run
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Scaffolds a Serverless topology workspace with the canonical corpus structure, manifest, config schema, and OPA policies.
|
|
45
|
+
|
|
46
|
+
## Gate Evaluation
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
evolith gate evaluate --topology serverless
|
|
50
|
+
evolith gate evaluate --topology serverless --phase F1
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Evaluates Serverless phase gates, validating event-driven function isolation and stateless deployment readiness.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Guía de Evidencia Sin Servidor
|
|
2
|
+
|
|
3
|
+
> **Navegación Bilingüe:** [English](./evidence.md) | [Español](./evidence.es.md)
|
|
4
|
+
|
|
5
|
+
**Propietario:** Ingeniería de Plataforma
|
|
6
|
+
**Topología:** Sin Servidor
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Comandos de Validación
|
|
11
|
+
|
|
12
|
+
Ejecutar validación de infraestructura antes de cada despliegue:
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
# Validar configuraciones de funciones
|
|
16
|
+
serverless validate --stage production
|
|
17
|
+
|
|
18
|
+
# Verificar permisos de roles IAM
|
|
19
|
+
aws iam simulate-principal-policy --policy-source-arn <function-arn>
|
|
20
|
+
|
|
21
|
+
# Verificar configuración VPC
|
|
22
|
+
aws ec2 describe-security-groups --filters Name=vpc-id,Values=<vpc-id>
|
|
23
|
+
|
|
24
|
+
# Escanear paquetes de despliegue en busca de vulnerabilidades
|
|
25
|
+
npm audit --production
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Métricas de Invocación
|
|
29
|
+
|
|
30
|
+
Rastrear lo siguiente por función, por día:
|
|
31
|
+
|
|
32
|
+
| Métrica | Objetivo | Umbral de Alerta |
|
|
33
|
+
|---------|----------|------------------|
|
|
34
|
+
| Latencia p50 | < 500 ms | > 800 ms |
|
|
35
|
+
| Latencia p95 | < 1000 ms | > 1200 ms |
|
|
36
|
+
| Latencia p99 | < 1500 ms | > 1500 ms |
|
|
37
|
+
| Tasa de error | < 0.1% | > 0.5% |
|
|
38
|
+
| Conteo de limitaciones | 0 | > 0 |
|
|
39
|
+
|
|
40
|
+
## Mediciones de Inicio en Frío
|
|
41
|
+
|
|
42
|
+
Muestrear tiempos de inicio en frío semanalmente. Registrar duración de init, duración de runtime y duración total. Comparar contra el presupuesto de 1000 ms de inicio en frío (SV-R04). Señalar cualquier función que exceda el presupuesto para optimización.
|
|
43
|
+
|
|
44
|
+
## Reportes de Costos
|
|
45
|
+
|
|
46
|
+
Generar reportes de costos semanales con:
|
|
47
|
+
|
|
48
|
+
- Total de invocaciones por función
|
|
49
|
+
- Tiempo total de computación (GB-segundos)
|
|
50
|
+
- Costo por ejecución (objetivo: **1 centavo**)
|
|
51
|
+
- Tendencia mes a mes
|
|
52
|
+
- Funciones que exceden el presupuesto de costos
|
|
53
|
+
|
|
54
|
+
## Evidencia de Cumplimiento
|
|
55
|
+
|
|
56
|
+
Retener los siguientes artefactos para auditoría:
|
|
57
|
+
|
|
58
|
+
- Asignaciones y registros de rotación de roles IAM
|
|
59
|
+
- Registros de procesamiento de DLQ
|
|
60
|
+
- Resultados de escaneo de vulnerabilidades de paquetes de despliegue
|
|
61
|
+
- Historial de mediciones de inicio en frío
|
|
62
|
+
- Reportes de rastreo de costos
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
[Volver al Perfil Sin Servidor](./README.es.md)
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Serverless — Evidence Guide
|
|
2
|
+
|
|
3
|
+
> **Bilingual Navigation:** [English](./evidence.md) | [Español](./evidence.es.md)
|
|
4
|
+
|
|
5
|
+
**Owner:** Platform Engineering
|
|
6
|
+
**Topology:** Serverless
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Validation Commands
|
|
11
|
+
|
|
12
|
+
Run infrastructure validation before every deployment:
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
# Validate function configurations
|
|
16
|
+
serverless validate --stage production
|
|
17
|
+
|
|
18
|
+
# Check IAM role permissions
|
|
19
|
+
aws iam simulate-principal-policy --policy-source-arn <function-arn>
|
|
20
|
+
|
|
21
|
+
# Verify VPC configuration
|
|
22
|
+
aws ec2 describe-security-groups --filters Name=vpc-id,Values=<vpc-id>
|
|
23
|
+
|
|
24
|
+
# Scan deployment packages for vulnerabilities
|
|
25
|
+
npm audit --production
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Invocation Metrics
|
|
29
|
+
|
|
30
|
+
Track the following per function, per day:
|
|
31
|
+
|
|
32
|
+
| Metric | Target | Alert Threshold |
|
|
33
|
+
|--------|--------|-----------------|
|
|
34
|
+
| p50 latency | < 500 ms | > 800 ms |
|
|
35
|
+
| p95 latency | < 1000 ms | > 1200 ms |
|
|
36
|
+
| p99 latency | < 1500 ms | > 1500 ms |
|
|
37
|
+
| Error rate | < 0.1% | > 0.5% |
|
|
38
|
+
| Throttle count | 0 | > 0 |
|
|
39
|
+
|
|
40
|
+
## Cold Start Measurements
|
|
41
|
+
|
|
42
|
+
Sample cold start times weekly. Record init duration, runtime duration, and total duration. Compare against the 1000 ms cold start budget (SV-R04). Flag any function exceeding the budget for optimization.
|
|
43
|
+
|
|
44
|
+
## Cost Reports
|
|
45
|
+
|
|
46
|
+
Generate weekly cost reports with:
|
|
47
|
+
|
|
48
|
+
- Total invocations per function
|
|
49
|
+
- Total compute time (GB-seconds)
|
|
50
|
+
- Cost per execution (target: **1 cent**)
|
|
51
|
+
- Month-over-month trend
|
|
52
|
+
- Functions exceeding cost budget
|
|
53
|
+
|
|
54
|
+
## Compliance Evidence
|
|
55
|
+
|
|
56
|
+
Retain the following artifacts for audit:
|
|
57
|
+
|
|
58
|
+
- IAM role assignments and rotation logs
|
|
59
|
+
- DLQ processing records
|
|
60
|
+
- Deployment package vulnerability scan results
|
|
61
|
+
- Cold start measurement history
|
|
62
|
+
- Cost tracking reports
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
[Back to Serverless Profile](./README.md)
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Guía de Evolución Sin Servidor
|
|
2
|
+
|
|
3
|
+
> **Navegación Bilingüe:** [English](./evolution.md) | [Español](./evolution.es.md)
|
|
4
|
+
|
|
5
|
+
**Propietario:** Ingeniería de Plataforma
|
|
6
|
+
**Topología:** Sin Servidor
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Migración de Contenedores a Funciones
|
|
11
|
+
|
|
12
|
+
Migrar cargas de trabajo contenedorizadas a funciones descomponiendo manejadores monolíticos en funciones discretas y de propósito único. Identificar primero las rutas ligadas a I/O — se benefician más de la concurrencia sin servidor. Mantener tareas síncronas y de larga ejecución en contenedores. Usar patrones strangler-fig para migrar incrementalmente.
|
|
13
|
+
|
|
14
|
+
## Evolución de la Gestión de Estado
|
|
15
|
+
|
|
16
|
+
Transitar de estado local a almacenes externos gestionados al adoptar serverless. Implementar estado de sesión en bases de datos o cachés, no en memoria de funciones. Migrar estado de sistema de archivos a almacenamiento de objetos. Auditar patrones de gestión de estado después de cada transición de topología.
|
|
17
|
+
|
|
18
|
+
## Sin Servidor vs Contenedores
|
|
19
|
+
|
|
20
|
+
Elegir serverless para cargas de trabajo orientadas a eventos, esporádicas o con picos. Elegir contenedores para cargas sostenidas, de alto rendimiento o críticas en latencia que excedan los presupuestos serverless. Usar topologías híbridas donde serverless maneja la ingesta y contenedores el procesamiento. Documentar compensaciones explícitamente por carga de trabajo.
|
|
21
|
+
|
|
22
|
+
## Organización de Funciones
|
|
23
|
+
|
|
24
|
+
Organizar funciones por contexto acotado, no por capa técnica. Agrupar funciones relacionadas en unidades de despliegue con infraestructura compartida. Mantener un catálogo de funciones con metadatos de propiedad, SLA y costo. Evitar un único espacio de nombres plano para todas las funciones.
|
|
25
|
+
|
|
26
|
+
## Neutralidad con el Proveedor (ADR-0095)
|
|
27
|
+
|
|
28
|
+
Diseñar interfaces de funciones para ser portables entre proveedores de nube. Abstract los formatos de eventos específicos del proveedor detrás de esquemas internos. Usar runtimes y herramientas de código abierto donde sea posible. Aceptar optimizaciones específicas del proveedor como decisiones deliberadas y documentadas — nunca acoplamientos accidentales.
|
|
29
|
+
|
|
30
|
+
## Transiciones de Topología
|
|
31
|
+
|
|
32
|
+
Seguir la ruta de arquitectura progresiva: monolito simple → monolito modular → módulos distribuidos → serverless. Validar criterios de preparación antes de cada transición. Revertir si la carga operativa excede el valor del producto. Tratar la topología como una decisión de producto, no una preferencia de ingeniería.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
[Volver al Perfil Sin Servidor](./README.es.md)
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Serverless — Evolution Guide
|
|
2
|
+
|
|
3
|
+
> **Bilingual Navigation:** [English](./evolution.md) | [Español](./evolution.es.md)
|
|
4
|
+
|
|
5
|
+
**Owner:** Platform Engineering
|
|
6
|
+
**Topology:** Serverless
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Containers to Functions Migration
|
|
11
|
+
|
|
12
|
+
Migrate containerized workloads to functions by decomposing monolithic handlers into discrete, single-purpose functions. Identify I/O-bound paths first — they benefit most from serverless concurrency. Keep synchronous, long-running tasks in containers. Use strangler-fig patterns to migrate incrementally.
|
|
13
|
+
|
|
14
|
+
## State Management Evolution
|
|
15
|
+
|
|
16
|
+
Transition from local state to managed external stores as you adopt serverless. Implement session state in databases or caches, not in function memory. Migrate file-system state to object storage. Audit state management patterns after each topology transition.
|
|
17
|
+
|
|
18
|
+
## Serverless vs Containers
|
|
19
|
+
|
|
20
|
+
Choose serverless for event-driven, sporadic, or bursty workloads. Choose containers for sustained, high-throughput, or latency-critical paths that exceed serverless budgets. Use hybrid topologies where serverless handles ingestion and containers handle processing. Document trade-offs explicitly per workload.
|
|
21
|
+
|
|
22
|
+
## Function Organization
|
|
23
|
+
|
|
24
|
+
Organize functions by bounded context, not by technical layer. Group related functions into deployment units with shared infrastructure. Maintain a function catalog with ownership, SLA, and cost metadata. Avoid a single flat namespace for all functions.
|
|
25
|
+
|
|
26
|
+
## Provider Neutrality (ADR-0095)
|
|
27
|
+
|
|
28
|
+
Design function interfaces to be portable across cloud providers. Abstract provider-specific event formats behind internal schemas. Use open-source runtimes and toolchains where possible. Accept vendor-specific optimizations as deliberate, documented decisions — never accidental coupling.
|
|
29
|
+
|
|
30
|
+
## Topology Transitions
|
|
31
|
+
|
|
32
|
+
Follow the progressive architecture path: simple monolith → modular monolith → distributed modules → serverless. Validate readiness criteria before each transition. Revert if operational overhead exceeds product value. Treat topology as a product decision, not an engineering preference.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
[Back to Serverless Profile](./README.md)
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Guia de Adopcion, Operacion y Evolucion de Serverless
|
|
2
|
+
|
|
3
|
+
> **Navegacion Bilingue:** [English Version](./maturity.md)
|
|
4
|
+
|
|
5
|
+
## Adoption
|
|
6
|
+
|
|
7
|
+
Adopte esta topologia cuando las capacidades aisladas se beneficien de escalamiento administrado, triggers de eventos o workloads con picos sin introducir una topologia de servicio separada. Comience con handlers sin estado, contratos explicitos y paquetes de despliegue acotados.
|
|
8
|
+
|
|
9
|
+
## Operations
|
|
10
|
+
|
|
11
|
+
Opere uno o mas entornos runtime administrados. Monitoree la distribucion de cold-start, el tamano del paquete de despliegue, las tasas de invocacion y los limites de concurrencia como parte de la validacion normal de arquitectura.
|
|
12
|
+
|
|
13
|
+
## Security
|
|
14
|
+
|
|
15
|
+
Autorice el acceso en la frontera del handler. Implemente gestion de identidad y secretos neutral respecto al proveedor. Nunca incruste credenciales en paquetes de despliegue; use secretos inyectados por entorno con capacidad de rotacion.
|
|
16
|
+
|
|
17
|
+
## Resilience
|
|
18
|
+
|
|
19
|
+
Disene handlers para reintentos idempotentes, degradacion gradual bajo presion de concurrencia y tiempo de inicializacion acotado. Prefiera mecanismos de integracion durables antes de agregar infraestructura con estado.
|
|
20
|
+
|
|
21
|
+
## Patterns and Anti-Patterns
|
|
22
|
+
|
|
23
|
+
Use handlers sin estado, contratos explcitos de entrada/salida, interfaces neutrales al proveedor e inicializacion diferida acotada. No asuma estado local persistente, duracion de ejecucion ilimitada ni caracteristicas runtime especificas del proveedor.
|
|
24
|
+
|
|
25
|
+
## Evolution
|
|
26
|
+
|
|
27
|
+
Mueva una capacidad a serverless solo cuando el perfil operativo (burst, event-driven, async) justifique la dependencia de plataforma. Preserve los contratos de dominio y la preparacion para extraccion para que la migracion de retorno u otra topologia siga siendo deliberada.
|
|
28
|
+
|
|
29
|
+
## Validation Checklist
|
|
30
|
+
|
|
31
|
+
- Valide la configuracion de topologia con `topology.config.schema.json` y ambos fixtures.
|
|
32
|
+
- Ejecute la evaluacion Native y OPA mediante el plano de control compartido.
|
|
33
|
+
- Confirme ADRs aprobados, guia bilingue y pruebas positivas y negativas reproducibles.
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
[Volver al Perfil Serverless](./README.es.md)
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Serverless Adoption, Operations, and Evolution Guide
|
|
2
|
+
|
|
3
|
+
> **Bilingual Navigation:** [Version en Espanol](./maturity.es.md)
|
|
4
|
+
|
|
5
|
+
## Adoption
|
|
6
|
+
|
|
7
|
+
Adopt this topology when isolated capabilities benefit from managed scaling, event triggers, or bursty workloads without introducing a separately owned service topology. Start with stateless handlers, explicit contracts, and bounded deployment packages.
|
|
8
|
+
|
|
9
|
+
## Operations
|
|
10
|
+
|
|
11
|
+
Operate one or more managed runtime environments. Monitor cold-start distribution, deployment package size, invocation rates, and concurrency limits as part of normal architecture validation.
|
|
12
|
+
|
|
13
|
+
## Security
|
|
14
|
+
|
|
15
|
+
Authorize access at the handler boundary. Enforce provider-neutral identity and secret management. Never embed credentials in deployment packages; use environment-injected, rotation-capable secrets.
|
|
16
|
+
|
|
17
|
+
## Resilience
|
|
18
|
+
|
|
19
|
+
Design handlers for idempotent retry, graceful degradation under concurrency pressure, and bounded initialization time. Prefer durable integration mechanisms before adding stateful infrastructure.
|
|
20
|
+
|
|
21
|
+
## Patterns and Anti-Patterns
|
|
22
|
+
|
|
23
|
+
Use stateless handlers, explicit input/output contracts, provider-neutral interfaces, and bounded cold-start initialization. Do not assume persistent local state, unbounded execution duration, or provider-specific runtime features.
|
|
24
|
+
|
|
25
|
+
## Evolution
|
|
26
|
+
|
|
27
|
+
Move a capability to serverless only when the operational profile (burst, event-driven, async) justifies the platform dependency. Preserve domain contracts and extraction readiness so that migration back or to another topology remains deliberate.
|
|
28
|
+
|
|
29
|
+
## Validation Checklist
|
|
30
|
+
|
|
31
|
+
- Validate the topology configuration against `topology.config.schema.json` and both fixtures.
|
|
32
|
+
- Run Native and OPA policy evaluation through the shared control plane.
|
|
33
|
+
- Confirm approved ADRs, bilingual guidance, and reproducible positive and negative tests.
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
[Back to Serverless Profile](./README.md)
|