blockmine 1.21.0 → 1.22.0
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/.claude/agents/README.md +469 -0
- package/.claude/agents/auth-route-debugger.md +118 -0
- package/.claude/agents/auth-route-tester.md +93 -0
- package/.claude/agents/auto-error-resolver.md +97 -0
- package/.claude/agents/build-optimizer.md +236 -0
- package/.claude/agents/code-architecture-reviewer.md +83 -0
- package/.claude/agents/code-refactor-master.md +94 -0
- package/.claude/agents/cost-optimizer.md +134 -0
- package/.claude/agents/deployment-orchestrator.md +113 -0
- package/.claude/agents/documentation-architect.md +82 -0
- package/.claude/agents/frontend-error-fixer.md +77 -0
- package/.claude/agents/iac-code-generator.md +71 -0
- package/.claude/agents/incident-responder.md +346 -0
- package/.claude/agents/infrastructure-architect.md +31 -0
- package/.claude/agents/kubernetes-specialist.md +56 -0
- package/.claude/agents/migration-planner.md +181 -0
- package/.claude/agents/network-architect.md +196 -0
- package/.claude/agents/plan-reviewer.md +52 -0
- package/.claude/agents/refactor-planner.md +63 -0
- package/.claude/agents/security-scanner.md +102 -0
- package/.claude/agents/web-research-specialist.md +78 -0
- package/.claude/commands/cost-analysis.md +315 -0
- package/.claude/commands/dev-docs-update.md +55 -0
- package/.claude/commands/dev-docs.md +51 -0
- package/.claude/commands/incident-debug.md +247 -0
- package/.claude/commands/infra-plan.md +81 -0
- package/.claude/commands/migration-plan.md +478 -0
- package/.claude/commands/route-research-for-testing.md +37 -0
- package/.claude/commands/security-review.md +66 -0
- package/.claude/hooks/CONFIG.md +448 -0
- package/.claude/hooks/README.md +163 -0
- package/.claude/hooks/SKILL_ACTIVATION_COMPLETE.md +226 -0
- package/.claude/hooks/WINDOWS_HOOKS_README.md +151 -0
- package/.claude/hooks/add-skill-activation-banners.ts +132 -0
- package/.claude/hooks/comprehensive-skill-test.ts +1315 -0
- package/.claude/hooks/error-handling-reminder.sh +12 -0
- package/.claude/hooks/error-handling-reminder.ts +222 -0
- package/.claude/hooks/k8s-manifest-validator.sh +56 -0
- package/.claude/hooks/package-lock.json +556 -0
- package/.claude/hooks/package.json +16 -0
- package/.claude/hooks/post-tool-use-tracker.ps1 +174 -0
- package/.claude/hooks/post-tool-use-tracker.sh +183 -0
- package/.claude/hooks/security-policy-check.sh +247 -0
- package/.claude/hooks/skill-activation-prompt.ps1 +10 -0
- package/.claude/hooks/skill-activation-prompt.sh +10 -0
- package/.claude/hooks/skill-activation-prompt.ts +141 -0
- package/.claude/hooks/stop-build-check-enhanced.sh +130 -0
- package/.claude/hooks/terraform-validator.sh +53 -0
- package/.claude/hooks/test-input.json +7 -0
- package/.claude/hooks/test-skill-activation.ts +427 -0
- package/.claude/hooks/trigger-build-resolver.sh +79 -0
- package/.claude/hooks/tsc-check.sh +173 -0
- package/.claude/hooks/tsconfig.json +19 -0
- package/.claude/settings.json +55 -0
- package/.claude/settings.local.json +27 -14
- package/.claude/skills/README.md +507 -0
- package/.claude/skills/api-engineering/SKILL.md +63 -0
- package/.claude/skills/api-engineering/resources/api-versioning.md +88 -0
- package/.claude/skills/api-engineering/resources/graphql-patterns.md +106 -0
- package/.claude/skills/api-engineering/resources/rate-limiting.md +118 -0
- package/.claude/skills/api-engineering/resources/rest-api-design.md +105 -0
- package/.claude/skills/backend-dev-guidelines/SKILL.md +306 -0
- package/.claude/skills/backend-dev-guidelines/resources/architecture-overview.md +451 -0
- package/.claude/skills/backend-dev-guidelines/resources/async-and-errors.md +307 -0
- package/.claude/skills/backend-dev-guidelines/resources/complete-examples.md +638 -0
- package/.claude/skills/backend-dev-guidelines/resources/configuration.md +275 -0
- package/.claude/skills/backend-dev-guidelines/resources/database-patterns.md +224 -0
- package/.claude/skills/backend-dev-guidelines/resources/middleware-guide.md +213 -0
- package/.claude/skills/backend-dev-guidelines/resources/routing-and-controllers.md +756 -0
- package/.claude/skills/backend-dev-guidelines/resources/sentry-and-monitoring.md +336 -0
- package/.claude/skills/backend-dev-guidelines/resources/services-and-repositories.md +789 -0
- package/.claude/skills/backend-dev-guidelines/resources/testing-guide.md +235 -0
- package/.claude/skills/backend-dev-guidelines/resources/validation-patterns.md +754 -0
- package/.claude/skills/budget-and-cost-management/SKILL.md +850 -0
- package/.claude/skills/build-engineering/SKILL.md +431 -0
- package/.claude/skills/build-engineering/resources/artifact-repositories.md +72 -0
- package/.claude/skills/build-engineering/resources/build-caching.md +96 -0
- package/.claude/skills/build-engineering/resources/build-pipelines.md +105 -0
- package/.claude/skills/build-engineering/resources/build-security.md +95 -0
- package/.claude/skills/build-engineering/resources/build-systems.md +389 -0
- package/.claude/skills/build-engineering/resources/compilation-optimization.md +201 -0
- package/.claude/skills/build-engineering/resources/dependency-management.md +73 -0
- package/.claude/skills/build-engineering/resources/monorepo-builds.md +110 -0
- package/.claude/skills/build-engineering/resources/performance-optimization.md +113 -0
- package/.claude/skills/build-engineering/resources/reproducible-builds.md +82 -0
- package/.claude/skills/cloud-engineering/SKILL.md +675 -0
- package/.claude/skills/cloud-engineering/resources/aws-patterns.md +742 -0
- package/.claude/skills/cloud-engineering/resources/azure-patterns.md +714 -0
- package/.claude/skills/cloud-engineering/resources/cleared-cloud-environments.md +987 -0
- package/.claude/skills/cloud-engineering/resources/cloud-cost-optimization.md +757 -0
- package/.claude/skills/cloud-engineering/resources/cloud-networking.md +1058 -0
- package/.claude/skills/cloud-engineering/resources/cloud-security-tools.md +1530 -0
- package/.claude/skills/cloud-engineering/resources/cloud-security.md +990 -0
- package/.claude/skills/cloud-engineering/resources/gcp-patterns.md +758 -0
- package/.claude/skills/cloud-engineering/resources/migration-strategies.md +820 -0
- package/.claude/skills/cloud-engineering/resources/multi-cloud-strategies.md +670 -0
- package/.claude/skills/cloud-engineering/resources/oci-patterns.md +1198 -0
- package/.claude/skills/cloud-engineering/resources/serverless-patterns.md +795 -0
- package/.claude/skills/cloud-engineering/resources/well-architected-frameworks.md +966 -0
- package/.claude/skills/cybersecurity/SKILL.md +409 -0
- package/.claude/skills/cybersecurity/resources/security-architecture.md +266 -0
- package/.claude/skills/database-engineering/SKILL.md +61 -0
- package/.claude/skills/database-engineering/resources/backup-and-recovery.md +72 -0
- package/.claude/skills/database-engineering/resources/database-replication.md +63 -0
- package/.claude/skills/database-engineering/resources/postgresql-fundamentals.md +70 -0
- package/.claude/skills/database-engineering/resources/query-optimization.md +68 -0
- package/.claude/skills/devsecops/SKILL.md +374 -0
- package/.claude/skills/devsecops/resources/ci-cd-security.md +204 -0
- package/.claude/skills/devsecops/resources/compliance-automation.md +530 -0
- package/.claude/skills/devsecops/resources/compliance-frameworks.md +2322 -0
- package/.claude/skills/devsecops/resources/container-security.md +915 -0
- package/.claude/skills/devsecops/resources/cspm-integration.md +1440 -0
- package/.claude/skills/devsecops/resources/policy-enforcement.md +619 -0
- package/.claude/skills/devsecops/resources/secrets-management.md +755 -0
- package/.claude/skills/devsecops/resources/security-monitoring.md +146 -0
- package/.claude/skills/devsecops/resources/security-scanning.md +887 -0
- package/.claude/skills/devsecops/resources/security-testing.md +203 -0
- package/.claude/skills/devsecops/resources/supply-chain-security.md +518 -0
- package/.claude/skills/devsecops/resources/vulnerability-management.md +481 -0
- package/.claude/skills/devsecops/resources/zero-trust-architecture.md +177 -0
- package/.claude/skills/documentation-as-code/SKILL.md +323 -0
- package/.claude/skills/documentation-as-code/resources/api-documentation.md +90 -0
- package/.claude/skills/documentation-as-code/resources/changelog-management.md +79 -0
- package/.claude/skills/documentation-as-code/resources/diagram-generation.md +44 -0
- package/.claude/skills/documentation-as-code/resources/docs-as-code-workflow.md +99 -0
- package/.claude/skills/documentation-as-code/resources/documentation-automation.md +68 -0
- package/.claude/skills/documentation-as-code/resources/documentation-sites.md +79 -0
- package/.claude/skills/documentation-as-code/resources/markdown-best-practices.md +162 -0
- package/.claude/skills/documentation-as-code/resources/openapi-specification.md +77 -0
- package/.claude/skills/documentation-as-code/resources/readme-engineering.md +60 -0
- package/.claude/skills/documentation-as-code/resources/technical-writing-guide.md +202 -0
- package/.claude/skills/engineering-management/SKILL.md +356 -0
- package/.claude/skills/engineering-management/resources/career-ladders.md +609 -0
- package/.claude/skills/engineering-management/resources/hiring-and-assessment.md +555 -0
- package/.claude/skills/engineering-management/resources/one-on-one-guides.md +609 -0
- package/.claude/skills/engineering-management/resources/resource-planning.md +557 -0
- package/.claude/skills/engineering-management/resources/team-organization-patterns.md +491 -0
- package/.claude/skills/engineering-management/resources/technical-interviews.md +474 -0
- package/.claude/skills/engineering-operations-management/SKILL.md +817 -0
- package/.claude/skills/error-tracking/SKILL.md +379 -0
- package/.claude/skills/frontend-dev-guidelines/SKILL.md +403 -0
- package/.claude/skills/frontend-dev-guidelines/resources/common-patterns.md +331 -0
- package/.claude/skills/frontend-dev-guidelines/resources/complete-examples.md +872 -0
- package/.claude/skills/frontend-dev-guidelines/resources/component-patterns.md +502 -0
- package/.claude/skills/frontend-dev-guidelines/resources/data-fetching.md +767 -0
- package/.claude/skills/frontend-dev-guidelines/resources/file-organization.md +502 -0
- package/.claude/skills/frontend-dev-guidelines/resources/loading-and-error-states.md +501 -0
- package/.claude/skills/frontend-dev-guidelines/resources/performance.md +406 -0
- package/.claude/skills/frontend-dev-guidelines/resources/routing-guide.md +364 -0
- package/.claude/skills/frontend-dev-guidelines/resources/styling-guide.md +428 -0
- package/.claude/skills/frontend-dev-guidelines/resources/typescript-standards.md +418 -0
- package/.claude/skills/general-it-engineering/SKILL.md +393 -0
- package/.claude/skills/general-it-engineering/resources/asset-management.md +712 -0
- package/.claude/skills/general-it-engineering/resources/automation-orchestration.md +817 -0
- package/.claude/skills/general-it-engineering/resources/business-continuity.md +786 -0
- package/.claude/skills/general-it-engineering/resources/change-management.md +715 -0
- package/.claude/skills/general-it-engineering/resources/enterprise-monitoring.md +729 -0
- package/.claude/skills/general-it-engineering/resources/help-desk-operations.md +738 -0
- package/.claude/skills/general-it-engineering/resources/incident-service-management.md +834 -0
- package/.claude/skills/general-it-engineering/resources/it-governance.md +753 -0
- package/.claude/skills/general-it-engineering/resources/itil-framework.md +503 -0
- package/.claude/skills/general-it-engineering/resources/service-management.md +669 -0
- package/.claude/skills/infrastructure-architecture/SKILL.md +328 -0
- package/.claude/skills/infrastructure-architecture/resources/architecture-decision-records.md +505 -0
- package/.claude/skills/infrastructure-architecture/resources/architecture-patterns.md +528 -0
- package/.claude/skills/infrastructure-architecture/resources/capacity-planning.md +453 -0
- package/.claude/skills/infrastructure-architecture/resources/cleared-environment-architecture.md +773 -0
- package/.claude/skills/infrastructure-architecture/resources/cost-architecture.md +499 -0
- package/.claude/skills/infrastructure-architecture/resources/data-architecture.md +501 -0
- package/.claude/skills/infrastructure-architecture/resources/disaster-recovery.md +535 -0
- package/.claude/skills/infrastructure-architecture/resources/migration-architecture.md +512 -0
- package/.claude/skills/infrastructure-architecture/resources/multi-region-design.md +608 -0
- package/.claude/skills/infrastructure-architecture/resources/reference-architectures.md +562 -0
- package/.claude/skills/infrastructure-architecture/resources/security-architecture.md +538 -0
- package/.claude/skills/infrastructure-architecture/resources/system-design-principles.md +489 -0
- package/.claude/skills/infrastructure-architecture/resources/workload-classification.md +1000 -0
- package/.claude/skills/infrastructure-strategy/SKILL.md +924 -0
- package/.claude/skills/network-engineering/SKILL.md +385 -0
- package/.claude/skills/network-engineering/resources/dns-management.md +738 -0
- package/.claude/skills/network-engineering/resources/load-balancing.md +820 -0
- package/.claude/skills/network-engineering/resources/network-architecture.md +546 -0
- package/.claude/skills/network-engineering/resources/network-security.md +921 -0
- package/.claude/skills/network-engineering/resources/network-troubleshooting.md +749 -0
- package/.claude/skills/network-engineering/resources/routing-switching.md +373 -0
- package/.claude/skills/network-engineering/resources/sdn-networking.md +695 -0
- package/.claude/skills/network-engineering/resources/service-mesh-networking.md +777 -0
- package/.claude/skills/network-engineering/resources/tcp-ip-protocols.md +444 -0
- package/.claude/skills/network-engineering/resources/vpn-connectivity.md +672 -0
- package/.claude/skills/observability-engineering/SKILL.md +101 -0
- package/.claude/skills/observability-engineering/resources/apm-tools.md +97 -0
- package/.claude/skills/observability-engineering/resources/correlation-strategies.md +87 -0
- package/.claude/skills/observability-engineering/resources/distributed-tracing.md +98 -0
- package/.claude/skills/observability-engineering/resources/logs-aggregation.md +118 -0
- package/.claude/skills/observability-engineering/resources/observability-cost-optimization.md +141 -0
- package/.claude/skills/observability-engineering/resources/opentelemetry.md +110 -0
- package/.claude/skills/platform-engineering/SKILL.md +555 -0
- package/.claude/skills/platform-engineering/resources/architecture-overview.md +600 -0
- package/.claude/skills/platform-engineering/resources/container-orchestration.md +916 -0
- package/.claude/skills/platform-engineering/resources/cost-optimization.md +634 -0
- package/.claude/skills/platform-engineering/resources/developer-platforms.md +670 -0
- package/.claude/skills/platform-engineering/resources/gitops-automation.md +650 -0
- package/.claude/skills/platform-engineering/resources/infrastructure-as-code.md +778 -0
- package/.claude/skills/platform-engineering/resources/infrastructure-standards.md +708 -0
- package/.claude/skills/platform-engineering/resources/multi-tenancy.md +602 -0
- package/.claude/skills/platform-engineering/resources/platform-security.md +711 -0
- package/.claude/skills/platform-engineering/resources/resource-management.md +592 -0
- package/.claude/skills/platform-engineering/resources/service-mesh.md +628 -0
- package/.claude/skills/release-engineering/SKILL.md +393 -0
- package/.claude/skills/release-engineering/resources/artifact-management.md +108 -0
- package/.claude/skills/release-engineering/resources/build-optimization.md +84 -0
- package/.claude/skills/release-engineering/resources/ci-cd-pipelines.md +411 -0
- package/.claude/skills/release-engineering/resources/deployment-strategies.md +197 -0
- package/.claude/skills/release-engineering/resources/pipeline-security.md +62 -0
- package/.claude/skills/release-engineering/resources/progressive-delivery.md +83 -0
- package/.claude/skills/release-engineering/resources/release-automation.md +68 -0
- package/.claude/skills/release-engineering/resources/release-orchestration.md +77 -0
- package/.claude/skills/release-engineering/resources/rollback-strategies.md +66 -0
- package/.claude/skills/release-engineering/resources/versioning-strategies.md +59 -0
- package/.claude/skills/route-tester/SKILL.md +392 -0
- package/.claude/skills/skill-developer/ADVANCED.md +197 -0
- package/.claude/skills/skill-developer/HOOK_MECHANISMS.md +306 -0
- package/.claude/skills/skill-developer/PATTERNS_LIBRARY.md +152 -0
- package/.claude/skills/skill-developer/SKILL.md +430 -0
- package/.claude/skills/skill-developer/SKILL_RULES_REFERENCE.md +315 -0
- package/.claude/skills/skill-developer/TRIGGER_TYPES.md +305 -0
- package/.claude/skills/skill-developer/TROUBLESHOOTING.md +514 -0
- package/.claude/skills/skill-rules.json +2940 -0
- package/.claude/skills/sre/SKILL.md +464 -0
- package/.claude/skills/sre/resources/alerting-best-practices.md +282 -0
- package/.claude/skills/sre/resources/capacity-planning.md +226 -0
- package/.claude/skills/sre/resources/chaos-engineering.md +193 -0
- package/.claude/skills/sre/resources/disaster-recovery.md +232 -0
- package/.claude/skills/sre/resources/incident-management.md +436 -0
- package/.claude/skills/sre/resources/observability-stack.md +240 -0
- package/.claude/skills/sre/resources/on-call-runbooks.md +167 -0
- package/.claude/skills/sre/resources/performance-optimization.md +108 -0
- package/.claude/skills/sre/resources/reliability-patterns.md +183 -0
- package/.claude/skills/sre/resources/slo-sli-sla.md +464 -0
- package/.claude/skills/sre/resources/toil-reduction.md +145 -0
- package/.claude/skills/systems-engineering/SKILL.md +648 -0
- package/.claude/skills/systems-engineering/resources/automation-patterns.md +771 -0
- package/.claude/skills/systems-engineering/resources/configuration-management.md +998 -0
- package/.claude/skills/systems-engineering/resources/linux-administration.md +672 -0
- package/.claude/skills/systems-engineering/resources/networking-fundamentals.md +982 -0
- package/.claude/skills/systems-engineering/resources/performance-tuning.md +871 -0
- package/.claude/skills/systems-engineering/resources/powershell-scripting.md +482 -0
- package/.claude/skills/systems-engineering/resources/security-hardening.md +739 -0
- package/.claude/skills/systems-engineering/resources/shell-scripting.md +915 -0
- package/.claude/skills/systems-engineering/resources/storage-management.md +628 -0
- package/.claude/skills/systems-engineering/resources/system-monitoring.md +787 -0
- package/.claude/skills/systems-engineering/resources/troubleshooting-guide.md +753 -0
- package/.claude/skills/systems-engineering/resources/windows-administration.md +738 -0
- package/.claude/skills/technical-leadership/SKILL.md +728 -0
- package/CHANGELOG.md +90 -54
- package/README.md +94 -0
- package/backend/docs/SECRETS_DOCUMENTATION.md +327 -0
- package/backend/jest.config.js +59 -0
- package/backend/package-lock.json +6129 -0
- package/backend/package.json +16 -4
- package/backend/prisma/migrations/20251026104609_add_websocket_api/migration.sql +33 -0
- package/backend/prisma/schema.prisma +33 -0
- package/backend/src/__tests__/core/DependencyService.test.js +336 -0
- package/backend/src/__tests__/core/UserService.test.js +875 -0
- package/backend/src/__tests__/repositories/BaseRepository.test.js +146 -0
- package/backend/src/__tests__/repositories/BotRepository.test.js +118 -0
- package/backend/src/__tests__/repositories/CommandRepository.test.js +132 -0
- package/backend/src/__tests__/repositories/EventGraphRepository.test.js +93 -0
- package/backend/src/__tests__/repositories/GroupRepository.test.js +155 -0
- package/backend/src/__tests__/repositories/PermissionRepository.test.js +130 -0
- package/backend/src/__tests__/repositories/PluginRepository.test.js +107 -0
- package/backend/src/__tests__/repositories/ServerRepository.test.js +80 -0
- package/backend/src/__tests__/repositories/UserRepository.test.js +128 -0
- package/backend/src/__tests__/secretsFilter.test.js +425 -0
- package/backend/src/__tests__/services/BotLifecycleService.test.js +411 -0
- package/backend/src/__tests__/services/BotProcessManager.test.js +285 -0
- package/backend/src/__tests__/services/CacheManager.test.js +125 -0
- package/backend/src/__tests__/services/CommandExecutionService.test.js +460 -0
- package/backend/src/__tests__/services/ResourceMonitorService.test.js +207 -0
- package/backend/src/__tests__/services/TelemetryService.test.js +291 -0
- package/backend/src/__tests__/setup.js +25 -0
- package/backend/src/api/routes/apiKeys.js +181 -0
- package/backend/src/api/routes/bots.js +49 -7
- package/backend/src/api/routes/plugins.js +2 -1
- package/backend/src/api/routes/system.js +174 -0
- package/backend/src/container.js +82 -0
- package/backend/src/core/BotManager.js +142 -871
- package/backend/src/core/BotManager.old.js +1093 -0
- package/backend/src/core/BotProcess.js +1092 -858
- package/backend/src/core/EventGraphManager.js +280 -198
- package/backend/src/core/GraphExecutionEngine.js +321 -325
- package/backend/src/core/MessageQueue.js +27 -6
- package/backend/src/core/NodeRegistry.js +37 -1134
- package/backend/src/core/PluginManager.js +62 -12
- package/backend/src/core/PrismaService.js +32 -0
- package/backend/src/core/UserService.js +3 -3
- package/backend/src/core/__tests__/PrismaService.test.js +24 -0
- package/backend/src/core/commands/README.md +305 -0
- package/backend/src/core/commands/dev.js +13 -7
- package/backend/src/core/commands/ping.js +10 -4
- package/backend/src/core/commands/whois.js +63 -0
- package/backend/src/core/config/validation.js +27 -0
- package/backend/src/core/constants/graphTypes.js +21 -0
- package/backend/src/core/node-registries/actions.js +132 -0
- package/backend/src/core/node-registries/arrays.js +137 -0
- package/backend/src/core/node-registries/bot.js +23 -0
- package/backend/src/core/node-registries/data.js +290 -0
- package/backend/src/core/node-registries/debug.js +26 -0
- package/backend/src/core/node-registries/events.js +187 -0
- package/backend/src/core/node-registries/flow.js +139 -0
- package/backend/src/core/node-registries/logic.js +45 -0
- package/backend/src/core/node-registries/math.js +42 -0
- package/backend/src/core/node-registries/objects.js +98 -0
- package/backend/src/core/node-registries/strings.js +153 -0
- package/backend/src/core/node-registries/time.js +113 -0
- package/backend/src/core/node-registries/users.js +79 -0
- package/backend/src/core/nodes/{action_bot_look_at.js → actions/bot_look_at.js} +36 -36
- package/backend/src/core/nodes/{action_bot_set_variable.js → actions/bot_set_variable.js} +32 -32
- package/backend/src/core/nodes/{action_send_log.js → actions/send_log.js} +28 -23
- package/backend/src/core/nodes/{action_send_message.js → actions/send_message.js} +32 -32
- package/backend/src/core/nodes/actions/send_websocket_response.js +33 -0
- package/backend/src/core/nodes/arrays/get_next.js +35 -0
- package/backend/src/core/nodes/{data_cast.js → data/cast.js} +8 -0
- package/backend/src/core/nodes/data/datetime_literal.js +27 -0
- package/backend/src/core/nodes/data/entity_info.js +69 -0
- package/backend/src/core/nodes/data/get_nearby_entities.js +32 -0
- package/backend/src/core/nodes/data/get_nearby_players.js +64 -0
- package/backend/src/core/nodes/{data_get_user_field.js → data/get_user_field.js} +1 -1
- package/backend/src/core/nodes/data/type_check.js +53 -0
- package/backend/src/core/nodes/{debug_log.js → debug/log.js} +16 -16
- package/backend/src/core/nodes/{flow_branch.js → flow/branch.js} +15 -15
- package/backend/src/core/nodes/{flow_break.js → flow/break.js} +14 -14
- package/backend/src/core/nodes/flow/delay.js +43 -0
- package/backend/src/core/nodes/{flow_for_each.js → flow/for_each.js} +39 -39
- package/backend/src/core/nodes/{flow_sequence.js → flow/sequence.js} +16 -16
- package/backend/src/core/nodes/{flow_switch.js → flow/switch.js} +47 -47
- package/backend/src/core/nodes/{flow_while.js → flow/while.js} +1 -1
- package/backend/src/core/nodes/logic/__tests__/compare.test.js +83 -0
- package/backend/src/core/nodes/math/__tests__/operation.test.js +65 -0
- package/backend/src/core/nodes/strings/__tests__/concat.test.js +89 -0
- package/backend/src/core/nodes/time/__tests__/now.test.js +24 -0
- package/backend/src/core/nodes/time/add.js +33 -0
- package/backend/src/core/nodes/time/compare.js +35 -0
- package/backend/src/core/nodes/time/diff.js +29 -0
- package/backend/src/core/nodes/time/format.js +32 -0
- package/backend/src/core/nodes/time/now.js +18 -0
- package/backend/src/core/nodes/{user_check_blacklist.js → users/check_blacklist.js} +37 -37
- package/backend/src/core/nodes/{user_get_groups.js → users/get_groups.js} +36 -36
- package/backend/src/core/nodes/{user_get_permissions.js → users/get_permissions.js} +36 -36
- package/backend/src/core/nodes/{user_set_blacklist.js → users/set_blacklist.js} +37 -37
- package/backend/src/core/services/BotLifecycleService.js +596 -0
- package/backend/src/core/services/BotProcessManager.js +163 -0
- package/backend/src/core/services/CacheManager.js +111 -0
- package/backend/src/core/services/CommandExecutionService.js +351 -0
- package/backend/src/core/services/ResourceMonitorService.js +90 -0
- package/backend/src/core/services/TelemetryService.js +124 -0
- package/backend/src/core/services/ValidationService.js +132 -0
- package/backend/src/core/services/__tests__/ValidationService.test.js +148 -0
- package/backend/src/core/services.js +20 -5
- package/backend/src/core/system/CommandContext.js +84 -0
- package/backend/src/core/system/Transport.js +78 -0
- package/backend/src/core/utils/__tests__/jsonParser.test.js +44 -0
- package/backend/src/core/utils/jsonParser.js +18 -0
- package/backend/src/core/utils/secretsFilter.js +262 -0
- package/backend/src/core/utils/variableParser.js +89 -0
- package/backend/src/core/validation/__tests__/nodeSchemas.test.js +175 -0
- package/backend/src/core/validation/nodeSchemas.js +112 -0
- package/backend/src/lib/prisma.js +2 -4
- package/backend/src/real-time/botApi/handlers/commandHandlers.js +28 -0
- package/backend/src/real-time/botApi/handlers/graphHandlers.js +99 -0
- package/backend/src/real-time/botApi/handlers/graphWebSocketHandlers.js +147 -0
- package/backend/src/real-time/botApi/handlers/index.js +43 -0
- package/backend/src/real-time/botApi/handlers/messageHandlers.js +66 -0
- package/backend/src/real-time/botApi/handlers/statusHandlers.js +17 -0
- package/backend/src/real-time/botApi/handlers/userHandlers.js +141 -0
- package/backend/src/real-time/botApi/index.js +40 -0
- package/backend/src/real-time/botApi/middleware.js +79 -0
- package/backend/src/real-time/botApi/utils.js +54 -0
- package/backend/src/real-time/socketHandler.js +6 -2
- package/backend/src/repositories/BaseRepository.js +43 -0
- package/backend/src/repositories/BotRepository.js +42 -0
- package/backend/src/repositories/CommandRepository.js +53 -0
- package/backend/src/repositories/EventGraphRepository.js +40 -0
- package/backend/src/repositories/GroupRepository.js +69 -0
- package/backend/src/repositories/PermissionRepository.js +48 -0
- package/backend/src/repositories/PluginRepository.js +42 -0
- package/backend/src/repositories/ServerRepository.js +27 -0
- package/backend/src/repositories/UserRepository.js +48 -0
- package/backend/src/server.js +3 -0
- package/backend/src/test-refactor.js +85 -0
- package/frontend/dist/assets/index-CfTo92bP.css +1 -0
- package/frontend/dist/assets/index-CiFD5X9Z.js +8344 -0
- package/frontend/dist/index.html +2 -2
- package/frontend/package.json +0 -5
- package/package.json +2 -1
- package/frontend/dist/assets/index-B9GedHEa.js +0 -8352
- package/frontend/dist/assets/index-zLiy9MDx.css +0 -1
- package/nul +0 -0
- /package/backend/src/core/nodes/{action_http_request.js → actions/http_request.js} +0 -0
- /package/backend/src/core/nodes/{array_add_element.js → arrays/add_element.js} +0 -0
- /package/backend/src/core/nodes/{array_contains.js → arrays/contains.js} +0 -0
- /package/backend/src/core/nodes/{array_find_index.js → arrays/find_index.js} +0 -0
- /package/backend/src/core/nodes/{array_get_by_index.js → arrays/get_by_index.js} +0 -0
- /package/backend/src/core/nodes/{array_get_random_element.js → arrays/get_random_element.js} +0 -0
- /package/backend/src/core/nodes/{array_remove_by_index.js → arrays/remove_by_index.js} +0 -0
- /package/backend/src/core/nodes/{bot_get_position.js → bot/get_position.js} +0 -0
- /package/backend/src/core/nodes/{data_array_literal.js → data/array_literal.js} +0 -0
- /package/backend/src/core/nodes/{data_boolean_literal.js → data/boolean_literal.js} +0 -0
- /package/backend/src/core/nodes/{data_get_argument.js → data/get_argument.js} +0 -0
- /package/backend/src/core/nodes/{data_get_bot_look.js → data/get_bot_look.js} +0 -0
- /package/backend/src/core/nodes/{data_get_entity_field.js → data/get_entity_field.js} +0 -0
- /package/backend/src/core/nodes/{data_get_server_players.js → data/get_server_players.js} +0 -0
- /package/backend/src/core/nodes/{data_get_variable.js → data/get_variable.js} +0 -0
- /package/backend/src/core/nodes/{data_length.js → data/length.js} +0 -0
- /package/backend/src/core/nodes/{data_make_object.js → data/make_object.js} +0 -0
- /package/backend/src/core/nodes/{data_number_literal.js → data/number_literal.js} +0 -0
- /package/backend/src/core/nodes/{data_string_literal.js → data/string_literal.js} +0 -0
- /package/backend/src/core/nodes/{logic_compare.js → logic/compare.js} +0 -0
- /package/backend/src/core/nodes/{logic_operation.js → logic/operation.js} +0 -0
- /package/backend/src/core/nodes/{math_operation.js → math/operation.js} +0 -0
- /package/backend/src/core/nodes/{math_random_number.js → math/random_number.js} +0 -0
- /package/backend/src/core/nodes/{object_create.js → objects/create.js} +0 -0
- /package/backend/src/core/nodes/{object_delete.js → objects/delete.js} +0 -0
- /package/backend/src/core/nodes/{object_get.js → objects/get.js} +0 -0
- /package/backend/src/core/nodes/{object_has_key.js → objects/has_key.js} +0 -0
- /package/backend/src/core/nodes/{object_set.js → objects/set.js} +0 -0
- /package/backend/src/core/nodes/{string_concat.js → strings/concat.js} +0 -0
- /package/backend/src/core/nodes/{string_contains.js → strings/contains.js} +0 -0
- /package/backend/src/core/nodes/{string_ends_with.js → strings/ends_with.js} +0 -0
- /package/backend/src/core/nodes/{string_equals.js → strings/equals.js} +0 -0
- /package/backend/src/core/nodes/{string_length.js → strings/length.js} +0 -0
- /package/backend/src/core/nodes/{string_matches.js → strings/matches.js} +0 -0
- /package/backend/src/core/nodes/{string_split.js → strings/split.js} +0 -0
- /package/backend/src/core/nodes/{string_starts_with.js → strings/starts_with.js} +0 -0
|
@@ -0,0 +1,924 @@
|
|
|
1
|
+
# Infrastructure Strategy for Engineering Leaders
|
|
2
|
+
|
|
3
|
+
**For VPs, Directors, and Senior Managers setting multi-year infrastructure direction.**
|
|
4
|
+
|
|
5
|
+
> Infrastructure strategy is about making big bets that enable your business for years to come - cloud platform choices, build vs buy decisions, technology investments, and multi-year roadmaps.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
9
|
+
🎯 SKILL ACTIVATED: infrastructure-strategy
|
|
10
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
## When to Use This Skill
|
|
14
|
+
|
|
15
|
+
**You need help with:**
|
|
16
|
+
- Cloud strategy (AWS vs Azure vs GCP, multi-cloud vs single-cloud)
|
|
17
|
+
- Build vs buy decisions for infrastructure components
|
|
18
|
+
- Platform investment ROI calculations
|
|
19
|
+
- Multi-year infrastructure roadmapping
|
|
20
|
+
- Technology evaluation and selection (technology radar)
|
|
21
|
+
- Migration planning at executive level
|
|
22
|
+
- Balancing innovation vs stability
|
|
23
|
+
- Infrastructure budget prioritization
|
|
24
|
+
|
|
25
|
+
**This skill does NOT cover:**
|
|
26
|
+
- Day-to-day technical decisions (see technical-leadership)
|
|
27
|
+
- Hands-on implementation (see technical skills)
|
|
28
|
+
- Operational management (see engineering-operations-management)
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## 1. Cloud Strategy
|
|
33
|
+
|
|
34
|
+
### Single Cloud vs Multi-Cloud
|
|
35
|
+
|
|
36
|
+
**Single Cloud (Recommended for most)**
|
|
37
|
+
```
|
|
38
|
+
Pros:
|
|
39
|
+
✅ Deep integration with platform services
|
|
40
|
+
✅ Team becomes expert in one platform
|
|
41
|
+
✅ Simpler operations and tooling
|
|
42
|
+
✅ Lower cost (volume discounts, reserved instances)
|
|
43
|
+
✅ Faster development (use platform services)
|
|
44
|
+
|
|
45
|
+
Cons:
|
|
46
|
+
❌ Vendor lock-in risk
|
|
47
|
+
❌ Less negotiating leverage
|
|
48
|
+
❌ Subject to platform outages
|
|
49
|
+
❌ Limited to platform capabilities
|
|
50
|
+
|
|
51
|
+
Best for:
|
|
52
|
+
- Startups and scale-ups
|
|
53
|
+
- Teams < 100 engineers
|
|
54
|
+
- Standard workloads
|
|
55
|
+
- Cost-sensitive orgs
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**Multi-Cloud (For specific use cases)**
|
|
59
|
+
```
|
|
60
|
+
Pros:
|
|
61
|
+
✅ Avoid vendor lock-in
|
|
62
|
+
✅ Negotiating leverage
|
|
63
|
+
✅ Use best-of-breed services
|
|
64
|
+
✅ Geographic coverage (e.g., China requires local cloud)
|
|
65
|
+
|
|
66
|
+
Cons:
|
|
67
|
+
❌ Operational complexity (2-3x overhead)
|
|
68
|
+
❌ Team knowledge fragmentation
|
|
69
|
+
❌ Higher costs (no volume discounts)
|
|
70
|
+
❌ Integration challenges
|
|
71
|
+
❌ Security complexity
|
|
72
|
+
|
|
73
|
+
Best for:
|
|
74
|
+
- Large enterprises (500+ engineers)
|
|
75
|
+
- Regulatory requirements (data sovereignty)
|
|
76
|
+
- M&A integration (acquired companies on different clouds)
|
|
77
|
+
- Specific workload requirements
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**Decision Framework:**
|
|
81
|
+
1. **Start with single cloud** unless you have specific reason for multi-cloud
|
|
82
|
+
2. **Choose cloud based on:**
|
|
83
|
+
- Existing team skills
|
|
84
|
+
- Services needed (ML, analytics, compute)
|
|
85
|
+
- Geographic presence
|
|
86
|
+
- Pricing for your workload
|
|
87
|
+
3. **Design for portability** (Kubernetes, IaC) but don't pay multi-cloud tax
|
|
88
|
+
|
|
89
|
+
### Which Cloud Provider?
|
|
90
|
+
|
|
91
|
+
| AWS | Azure | GCP | Oracle Cloud (OCI) |
|
|
92
|
+
|-----|-------|-----|-------------------|
|
|
93
|
+
| **Strengths:** Largest ecosystem, most services, mature, global coverage | **Strengths:** Enterprise sales, Microsoft integration, hybrid cloud (Arc) | **Strengths:** Data/ML services, Kubernetes, developer experience, pricing | **Strengths:** Oracle DB, enterprise support, government clouds |
|
|
94
|
+
| **Weaknesses:** Complexity, older UI, pricing opacity | **Weaknesses:** Service quality inconsistency, documentation gaps | **Weaknesses:** Smaller ecosystem, fewer enterprise features | **Weaknesses:** Smaller ecosystem, fewer services |
|
|
95
|
+
| **Best for:** Startups, tech companies, most use cases | **Best for:** Enterprises with Microsoft stack, hybrid cloud | **Best for:** Data-heavy workloads, ML/AI, Kubernetes-first | **Best for:** Oracle workloads, government, highly regulated |
|
|
96
|
+
|
|
97
|
+
**Choosing strategy:**
|
|
98
|
+
- **Startup/scale-up:** AWS (ecosystem) or GCP (developer experience)
|
|
99
|
+
- **Enterprise:** Azure (if Microsoft shop) or AWS (if tech-forward)
|
|
100
|
+
- **Regulated/government:** AWS GovCloud, Azure Government, or OCI
|
|
101
|
+
- **Oracle DB heavy:** OCI (database licensing savings)
|
|
102
|
+
|
|
103
|
+
### Cloud Strategy Scenarios
|
|
104
|
+
|
|
105
|
+
**Scenario: "Should we go all-in on AWS or stay flexible?"**
|
|
106
|
+
- **All-in (Recommended):** Use AWS-specific services (Lambda, DynamoDB, etc.) for faster development
|
|
107
|
+
- **Flexible:** Use portable tech (Kubernetes, Postgres) but sacrifice AWS integration benefits
|
|
108
|
+
- **Reality:** Portability is expensive. Most companies that plan for multi-cloud never actually migrate.
|
|
109
|
+
- **Decision:** Go all-in unless you have specific multi-cloud requirement
|
|
110
|
+
|
|
111
|
+
**Scenario: "Is multi-cloud worth the complexity?"**
|
|
112
|
+
- **Answer:** Usually NO. Multi-cloud costs 2-3x in operational overhead
|
|
113
|
+
- **Only do multi-cloud if:**
|
|
114
|
+
- Large enterprise (500+ engineers) with resources
|
|
115
|
+
- Regulatory requirement (data must stay in specific regions/clouds)
|
|
116
|
+
- M&A (acquired company on different cloud, temporary state)
|
|
117
|
+
- **Alternative:** Design for cloud portability (Kubernetes, Terraform) but run on single cloud
|
|
118
|
+
|
|
119
|
+
**Scenario: "Do we need disaster recovery in another cloud?"**
|
|
120
|
+
- **Question:** "What's the failure mode? Entire AWS region or all of AWS?"
|
|
121
|
+
- **Reality:** Multi-region in same cloud is simpler and handles 99.9% of DR scenarios
|
|
122
|
+
- **Multi-cloud DR:** Only for catastrophic cloud-wide failures (extremely rare)
|
|
123
|
+
- **Decision:** Multi-region DR first, multi-cloud DR only if mandated by compliance
|
|
124
|
+
|
|
125
|
+
**Scenario: "Serverless vs container strategy?"**
|
|
126
|
+
- **Serverless (Lambda/Cloud Functions):**
|
|
127
|
+
- Best for: Event-driven, variable load, stateless functions
|
|
128
|
+
- Not for: Long-running, stateful, complex orchestration
|
|
129
|
+
- **Containers (ECS/EKS/Cloud Run):**
|
|
130
|
+
- Best for: Always-on services, stateful apps, complex dependencies
|
|
131
|
+
- Not for: Simple event handlers, variable load (without autoscaling)
|
|
132
|
+
- **Decision:** Use both - serverless for events, containers for services
|
|
133
|
+
|
|
134
|
+
**Scenario: "Moving from on-prem to cloud?"**
|
|
135
|
+
- **Timeline:** 12-36 months depending on complexity
|
|
136
|
+
- **Strategy:**
|
|
137
|
+
- Phase 1: Lift-and-shift (VMs) to derisk
|
|
138
|
+
- Phase 2: Re-platform (containerize, use managed services)
|
|
139
|
+
- Phase 3: Re-architect (cloud-native, serverless)
|
|
140
|
+
- **Don't:** Big-bang migration. Do: Incremental, service by service
|
|
141
|
+
|
|
142
|
+
**Scenario: "Cost difference between clouds?"**
|
|
143
|
+
- **Reality:** Pricing is similar for compute/storage (within 10-20%)
|
|
144
|
+
- **True cost differences:**
|
|
145
|
+
- Data egress (can be 3-5x different)
|
|
146
|
+
- Managed services (varies widely)
|
|
147
|
+
- Enterprise support (20% of spend)
|
|
148
|
+
- Reserved instance discounts (negotiate these!)
|
|
149
|
+
- **Decision:** Choose based on services/expertise, not just pricing
|
|
150
|
+
|
|
151
|
+
**Scenario: "Should we use GCP for ML workloads and AWS for everything else?"**
|
|
152
|
+
- **Sounds smart, but:** Operational complexity of managing two clouds
|
|
153
|
+
- **Better:** Use AWS SageMaker or GCP Vertex AI - both are excellent
|
|
154
|
+
- **Only split if:** ML team is separate and has strong GCP preference
|
|
155
|
+
- **Reality:** Integration complexity usually outweighs best-of-breed benefits
|
|
156
|
+
|
|
157
|
+
**Scenario: "GovCloud requirement - what changes?"**
|
|
158
|
+
- **Limited services:** Not all AWS services available in GovCloud
|
|
159
|
+
- **Higher cost:** Separate infrastructure, lower economies of scale
|
|
160
|
+
- **Compliance burden:** STIG hardening, continuous monitoring, audit paperwork
|
|
161
|
+
- **Staffing:** Need cleared personnel for some operations
|
|
162
|
+
- **Timeline:** Add 3-6 months to normal cloud migration
|
|
163
|
+
|
|
164
|
+
**Scenario: "Cloud-native vs cloud-agnostic?"**
|
|
165
|
+
- **Cloud-native:** Use cloud-specific services (managed databases, serverless)
|
|
166
|
+
- Faster development, lower operational burden
|
|
167
|
+
- Trade-off: Harder to migrate clouds
|
|
168
|
+
- **Cloud-agnostic:** Use portable tech (Kubernetes, open source)
|
|
169
|
+
- Flexibility to move clouds
|
|
170
|
+
- Trade-off: More operational burden, slower development
|
|
171
|
+
- **Recommendation:** Be pragmatic - use cloud services but document dependencies
|
|
172
|
+
|
|
173
|
+
### Government and Cleared Clouds
|
|
174
|
+
|
|
175
|
+
**For regulated industries:**
|
|
176
|
+
- **FedRAMP:** AWS GovCloud, Azure Government, GCP for Government, OCI Government
|
|
177
|
+
- **IL4/IL5:** AWS Secret Region, Azure Government Secret, GCP Assured Workloads
|
|
178
|
+
- **IL6 (Top Secret):** AWS Top Secret Region, Azure Government Top Secret
|
|
179
|
+
|
|
180
|
+
**Considerations:**
|
|
181
|
+
- Limited service availability in government clouds
|
|
182
|
+
- Higher costs (separate infrastructure)
|
|
183
|
+
- Longer procurement cycles
|
|
184
|
+
- Compliance overhead (STIG, NIST 800-53)
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## 2. Build vs Buy Decisions
|
|
189
|
+
|
|
190
|
+
### Framework for Deciding
|
|
191
|
+
|
|
192
|
+
```
|
|
193
|
+
BUILD when:
|
|
194
|
+
✅ Core differentiator for your business
|
|
195
|
+
✅ Existing solutions don't meet needs
|
|
196
|
+
✅ You have unique requirements
|
|
197
|
+
✅ Team has expertise and capacity
|
|
198
|
+
✅ Long-term cost justifies initial investment
|
|
199
|
+
|
|
200
|
+
BUY when:
|
|
201
|
+
✅ Not a differentiator (infrastructure, auth, payments)
|
|
202
|
+
✅ Commodity problem with good solutions
|
|
203
|
+
✅ Time to market is critical
|
|
204
|
+
✅ Team lacks expertise
|
|
205
|
+
✅ Ongoing maintenance would be burden
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### Decision Matrix
|
|
209
|
+
|
|
210
|
+
| Component | Build | Buy | Rationale |
|
|
211
|
+
|-----------|-------|-----|-----------|
|
|
212
|
+
| **Authentication** | ❌ | ✅ Buy (Auth0, Okta) | Commodity, security-critical, complex |
|
|
213
|
+
| **CI/CD** | ❌ | ✅ Buy (GitHub Actions, CircleCI) | Mature market, not differentiator |
|
|
214
|
+
| **Observability** | ❌ | ✅ Buy (Datadog, New Relic) | Complex to build, mature vendors |
|
|
215
|
+
| **Internal Developer Platform** | ✅ | ❌ | Core to productivity, unique needs |
|
|
216
|
+
| **ML Platform** | ✅ | ❌ If ML is core business | Differentiator, specific workflows |
|
|
217
|
+
| **API Gateway** | Maybe | Maybe | Depends on customization needs |
|
|
218
|
+
|
|
219
|
+
### Total Cost of Ownership (TCO)
|
|
220
|
+
|
|
221
|
+
**Build TCO:**
|
|
222
|
+
```
|
|
223
|
+
Initial Development:
|
|
224
|
+
├── Engineering time (months × $150K/year avg)
|
|
225
|
+
├── Opportunity cost (what else could they build?)
|
|
226
|
+
└── Infrastructure costs
|
|
227
|
+
|
|
228
|
+
Ongoing:
|
|
229
|
+
├── Maintenance (20-30% of dev cost annually)
|
|
230
|
+
├── Operations (monitoring, on-call)
|
|
231
|
+
├── Updates and security patches
|
|
232
|
+
├── Documentation and training
|
|
233
|
+
└── Infrastructure costs
|
|
234
|
+
|
|
235
|
+
3-Year TCO = Initial + (3 × Annual Ongoing)
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
**Buy TCO:**
|
|
239
|
+
```
|
|
240
|
+
Year 1:
|
|
241
|
+
├── Vendor cost (licenses/seats)
|
|
242
|
+
├── Implementation/integration (1-3 months engineer time)
|
|
243
|
+
├── Training
|
|
244
|
+
└── Infrastructure (if self-hosted)
|
|
245
|
+
|
|
246
|
+
Years 2-3:
|
|
247
|
+
├── Annual license growth (plan for 20-30% growth)
|
|
248
|
+
├── Support/premium features
|
|
249
|
+
├── Minimal maintenance
|
|
250
|
+
└── Infrastructure
|
|
251
|
+
|
|
252
|
+
3-Year TCO = Y1 + Y2 + Y3
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
**Example: Auth System**
|
|
256
|
+
```
|
|
257
|
+
BUILD:
|
|
258
|
+
├── 6 months × 2 engineers = $150K initial
|
|
259
|
+
├── Ongoing: $60K/year maintenance
|
|
260
|
+
└── 3-year TCO: $150K + $180K = $330K
|
|
261
|
+
|
|
262
|
+
BUY (Auth0):
|
|
263
|
+
├── $2/MAU × 100K users = $200K/year
|
|
264
|
+
├── Integration: $30K one-time
|
|
265
|
+
└── 3-year TCO: $30K + $600K = $630K
|
|
266
|
+
|
|
267
|
+
Conclusion: Build seems cheaper BUT:
|
|
268
|
+
- Auth0 includes: MFA, SSO, compliance, security updates
|
|
269
|
+
- Building all that: 12+ months, $300K+
|
|
270
|
+
- Hidden costs: security incidents, compliance audits
|
|
271
|
+
- Decision: BUY unless auth is your core business
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
### Build vs Buy Checklist
|
|
275
|
+
|
|
276
|
+
```
|
|
277
|
+
□ Is this a core differentiator for our business?
|
|
278
|
+
□ Do existing solutions meet 80%+ of our needs?
|
|
279
|
+
□ Do we have team expertise to build and maintain?
|
|
280
|
+
□ Have we calculated full 3-year TCO for both options?
|
|
281
|
+
□ Can we afford the opportunity cost of building?
|
|
282
|
+
□ Is vendor lock-in acceptable? (most cases: yes)
|
|
283
|
+
□ What's the risk if we choose wrong? Can we switch later?
|
|
284
|
+
□ Does "buy" option have enterprise SLA and support?
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
### Build vs Buy Scenarios
|
|
288
|
+
|
|
289
|
+
**Scenario: "Should we build an internal platform like Heroku?"**
|
|
290
|
+
- **Build cost:** 8-12 engineers × 12 months = $2M+ initial, $1.5M/year ongoing
|
|
291
|
+
- **Buy alternative:** Heroku, Cloud Run, App Runner - $50-200K/year
|
|
292
|
+
- **Build if:** 150+ engineers, unique workflows, platform is differentiator
|
|
293
|
+
- **Buy if:** < 100 engineers, standard app deployment, want speed
|
|
294
|
+
- **Hidden costs of building:** In-house support, documentation, feature requests, security updates
|
|
295
|
+
|
|
296
|
+
**Scenario: "Payment processing - build or use Stripe?"**
|
|
297
|
+
- **Build:** PCI compliance alone costs $500K+/year
|
|
298
|
+
- **Stripe:** 2.9% + $0.30 per transaction
|
|
299
|
+
- **Break-even:** Only makes sense at $100M+ annual GMV with specialized needs
|
|
300
|
+
- **Decision:** Almost always buy. Payments are not your core business.
|
|
301
|
+
|
|
302
|
+
**Scenario: "APM - commercial (DataDog/New Relic) vs open source (Prometheus/Grafana)?"**
|
|
303
|
+
- **Commercial ($200-500K/year):**
|
|
304
|
+
- Full-featured, hosted, 24/7 support
|
|
305
|
+
- Fast time to value (days)
|
|
306
|
+
- Best for teams < 50 engineers
|
|
307
|
+
- **Open Source ($100-200K/year in engineering time):**
|
|
308
|
+
- Self-hosted, requires dedicated team
|
|
309
|
+
- Slower time to value (months)
|
|
310
|
+
- Best for teams > 100 engineers with SRE expertise
|
|
311
|
+
- **Decision:** Buy commercial until you have SRE team to run OSS
|
|
312
|
+
|
|
313
|
+
**Scenario: "Service mesh - build custom vs buy Istio/Linkerd vs buy Consul?"**
|
|
314
|
+
- **Build custom:** 6-12 months, ongoing maintenance nightmare
|
|
315
|
+
- **Open source (Istio/Linkerd):** Complex to operate, requires expertise
|
|
316
|
+
- **Commercial (Consul Enterprise, Gloo):** Easier, supported, expensive
|
|
317
|
+
- **Reality:** Most companies don't need service mesh. Use it if:
|
|
318
|
+
- 50+ microservices
|
|
319
|
+
- Need mTLS everywhere
|
|
320
|
+
- Complex traffic routing requirements
|
|
321
|
+
- **Decision:** Buy managed service mesh or don't use one
|
|
322
|
+
|
|
323
|
+
**Scenario: "Managed Kubernetes (EKS/GKE) vs self-hosted?"**
|
|
324
|
+
- **Managed ($150/cluster/month):**
|
|
325
|
+
- Control plane managed, auto-updates, integrated
|
|
326
|
+
- Still need to manage worker nodes
|
|
327
|
+
- **Self-hosted (save $150/month, cost $10K/month in engineering time):**
|
|
328
|
+
- Full control, complex setup, manual updates
|
|
329
|
+
- **Decision:** Always use managed unless you have 10+ dedicated Kubernetes experts
|
|
330
|
+
|
|
331
|
+
**Scenario: "Observability - should we buy DataDog or build our own?"**
|
|
332
|
+
- **Build cost:** $500K-1M first year, $300K/year ongoing
|
|
333
|
+
- **DataDog:** $100-300K/year depending on scale
|
|
334
|
+
- **Build if:** > 500 engineers, unique observability needs, cost > $1M/year
|
|
335
|
+
- **Buy if:** < 500 engineers, standard needs, want to focus on product
|
|
336
|
+
- **Hidden build costs:** Integration with all services, alerting, dashboards, on-call for observability platform
|
|
337
|
+
|
|
338
|
+
**Scenario: "Should finance approve this observability tooling?"**
|
|
339
|
+
- **Cost:** $200K/year for observability seems expensive
|
|
340
|
+
- **Value:** Reduce MTTR from 2 hours to 15 minutes
|
|
341
|
+
- 100 incidents/year × 1.75 hours saved × 3 engineers × $100/hour = $52.5K/year
|
|
342
|
+
- Prevented outages: 10/year × $50K revenue impact = $500K/year saved
|
|
343
|
+
- **ROI:** $752K value for $200K cost = 276% ROI
|
|
344
|
+
- **Decision:** Approve - observability prevents costly outages
|
|
345
|
+
|
|
346
|
+
**Scenario: "Terraform Cloud vs self-hosted Terraform?"**
|
|
347
|
+
- **Terraform Cloud:** $20/user/month = $24K/year for 100 engineers
|
|
348
|
+
- **Self-hosted:** Free but requires CI/CD integration, state management, RBAC
|
|
349
|
+
- Engineering cost: $50K/year
|
|
350
|
+
- **Decision:** Use Terraform Cloud unless you already have robust CI/CD for state management
|
|
351
|
+
|
|
352
|
+
---
|
|
353
|
+
|
|
354
|
+
## 3. Platform Investment ROI
|
|
355
|
+
|
|
356
|
+
### Calculating Platform ROI
|
|
357
|
+
|
|
358
|
+
**Formula:**
|
|
359
|
+
```
|
|
360
|
+
ROI = (Productivity Gains - Platform Cost) / Platform Cost × 100%
|
|
361
|
+
|
|
362
|
+
Productivity Gains = (Time Saved × Engineer Count × Avg Salary)
|
|
363
|
+
Platform Cost = (Team Cost + Infrastructure Cost)
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
**Example: Internal Developer Platform**
|
|
367
|
+
```
|
|
368
|
+
Investment:
|
|
369
|
+
├── Platform team: 8 engineers × $200K = $1.6M/year
|
|
370
|
+
├── Infrastructure: $400K/year
|
|
371
|
+
└── Total Cost: $2M/year
|
|
372
|
+
|
|
373
|
+
Productivity Gains:
|
|
374
|
+
├── Faster deployments: 2 hours/week saved × 50 engineers
|
|
375
|
+
├── Reduced incidents: 50% reduction = 10 hours/week saved
|
|
376
|
+
├── Faster onboarding: 2 weeks → 1 week for 20 new hires/year
|
|
377
|
+
├──Total time saved: ~5,000 hours/year
|
|
378
|
+
├── Value: 5,000 hours × $100/hour = $500K/year
|
|
379
|
+
|
|
380
|
+
Wait, that's negative ROI!
|
|
381
|
+
|
|
382
|
+
But indirect benefits:
|
|
383
|
+
├── Faster time to market: 2 week reduction × 12 features = 24 weeks
|
|
384
|
+
├── Value of shipping faster: $5M revenue brought forward
|
|
385
|
+
├── Reduced risk: Fewer outages = better customer retention
|
|
386
|
+
├── Improved hiring: Better developer experience attracts talent
|
|
387
|
+
|
|
388
|
+
True ROI: Hard to quantify, but likely 3-5x over 3 years
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
### When to Invest in Platform
|
|
392
|
+
|
|
393
|
+
**Invest when:**
|
|
394
|
+
- Team size > 30-50 engineers
|
|
395
|
+
- Development velocity slowing down
|
|
396
|
+
- High cognitive load on engineers
|
|
397
|
+
- Inconsistent practices across teams
|
|
398
|
+
- Frequent production incidents
|
|
399
|
+
- Hard to hire/onboard engineers
|
|
400
|
+
|
|
401
|
+
**Don't invest when:**
|
|
402
|
+
- Team < 30 engineers (not enough leverage)
|
|
403
|
+
- Business model unproven (premature scaling)
|
|
404
|
+
- Existential priorities (fundraising, shipping core product)
|
|
405
|
+
|
|
406
|
+
### ROI Calculation Scenarios
|
|
407
|
+
|
|
408
|
+
**Scenario: "How do we calculate platform team ROI?"**
|
|
409
|
+
- **Direct metrics:**
|
|
410
|
+
- Deployment frequency: 1/week → 10/day
|
|
411
|
+
- Lead time: 2 weeks → 2 days
|
|
412
|
+
- MTTR: 4 hours → 30 minutes
|
|
413
|
+
- Onboarding time: 4 weeks → 1 week
|
|
414
|
+
- **Value calculation:**
|
|
415
|
+
- 50 engineers × 5 hours/week saved = 250 hours/week
|
|
416
|
+
- 250 hours × 50 weeks × $100/hour = $1.25M/year
|
|
417
|
+
- **Platform cost:** 8 engineers × $200K = $1.6M
|
|
418
|
+
- **ROI:** Breakeven year 1, positive thereafter
|
|
419
|
+
- **Intangibles:** Better hiring, less burnout, faster innovation
|
|
420
|
+
|
|
421
|
+
**Scenario: "Justifying Kubernetes migration"**
|
|
422
|
+
- **Cost of migration:** 6 months × 4 engineers = $400K
|
|
423
|
+
- **Benefits:**
|
|
424
|
+
- Better resource utilization: Save 30% on infrastructure = $150K/year
|
|
425
|
+
- Faster deployments: 2 hours → 10 minutes = 100 hours/week saved = $250K/year
|
|
426
|
+
- Multi-cloud optionality (intangible)
|
|
427
|
+
- **Payback period:** 12-18 months
|
|
428
|
+
- **Decision:** Worth it if infrastructure cost > $500K/year or scaling quickly
|
|
429
|
+
|
|
430
|
+
**Scenario: "Platform team value - what should we measure?"**
|
|
431
|
+
- **Avoid vanity metrics:**
|
|
432
|
+
- ❌ Number of deployments (more isn't always better)
|
|
433
|
+
- ❌ Lines of code (meaningless)
|
|
434
|
+
- ❌ Tickets closed (focuses on wrong thing)
|
|
435
|
+
- **Focus on impact metrics:**
|
|
436
|
+
- ✅ Developer survey scores (NPS for platform)
|
|
437
|
+
- ✅ Time to first deployment (new engineer)
|
|
438
|
+
- ✅ DORA metrics (deployment frequency, lead time, MTTR, change failure rate)
|
|
439
|
+
- ✅ Time saved per engineer per week
|
|
440
|
+
- ✅ Incident reduction (fewer production issues)
|
|
441
|
+
|
|
442
|
+
**Scenario: "Infrastructure cost per developer?"**
|
|
443
|
+
- **Calculate:** Total infrastructure cost / number of engineers
|
|
444
|
+
- **Benchmarks:**
|
|
445
|
+
- Early stage: $2-5K per engineer/month
|
|
446
|
+
- Scale-up: $5-10K per engineer/month
|
|
447
|
+
- Enterprise: $10-20K per engineer/month
|
|
448
|
+
- **High cost reasons:** Data-intensive, ML workloads, inefficient usage, overprovisioning
|
|
449
|
+
- **Optimization:** Right-size instances, use spot/reserved, implement autoscaling
|
|
450
|
+
|
|
451
|
+
**Scenario: "How do we measure developer velocity improvement?"**
|
|
452
|
+
- **Lead Time for Changes:**
|
|
453
|
+
- Before: 2 weeks from commit to production
|
|
454
|
+
- After platform investment: 2 days
|
|
455
|
+
- Improvement: 10x faster
|
|
456
|
+
- **Developer satisfaction:**
|
|
457
|
+
- Survey: "How easy is it to deploy a new service?" 1-10
|
|
458
|
+
- Target: Improve from 4 → 8
|
|
459
|
+
- **Time to productivity:**
|
|
460
|
+
- New engineer: Productive in 1 week vs 4 weeks
|
|
461
|
+
- Value: 3 weeks × 20 new hires/year = 60 weeks saved
|
|
462
|
+
|
|
463
|
+
**Scenario: "Service mesh cost-benefit analysis"**
|
|
464
|
+
- **Cost:**
|
|
465
|
+
- 2 engineers × 6 months setup = $200K
|
|
466
|
+
- Ongoing: 1 engineer × $200K/year
|
|
467
|
+
- Overhead: 10% latency increase, 20% infrastructure increase = $100K/year
|
|
468
|
+
- **Total:** $200K + $300K/year
|
|
469
|
+
- **Benefit:**
|
|
470
|
+
- mTLS everywhere (security win)
|
|
471
|
+
- Traffic management (canary deploys)
|
|
472
|
+
- Observability (better debugging)
|
|
473
|
+
- **Value:** Hard to quantify - mainly security/compliance
|
|
474
|
+
- **Decision:** Only do it if:
|
|
475
|
+
- Security/compliance requirement
|
|
476
|
+
- 50+ microservices
|
|
477
|
+
- Sophisticated traffic management needs
|
|
478
|
+
|
|
479
|
+
**Scenario: "Platform break-even point"**
|
|
480
|
+
- **Question:** "When does investing in platform pay off?"
|
|
481
|
+
- **Formula:** Break-even when (Time Saved Value) > (Platform Cost)
|
|
482
|
+
- **Example:**
|
|
483
|
+
- Platform team cost: $2M/year (10 engineers)
|
|
484
|
+
- Time saved: 100 engineers × 10 hours/week × $100/hour = $5M/year
|
|
485
|
+
- **Break-even:** Immediate (2.5x return)
|
|
486
|
+
- **Reality:** Benefits compound - velocity improvements enable more velocity
|
|
487
|
+
|
|
488
|
+
**Scenario: "Opportunity cost of platform investment"**
|
|
489
|
+
- **Question:** "What else could these 8 engineers build instead of platform?"
|
|
490
|
+
- **Option A:** Platform team → enables 100 engineers to be 20% more productive = 20 FTE equivalent
|
|
491
|
+
- **Option B:** Product team → ship 2-3 more features/year
|
|
492
|
+
- **Trade-off:** Short-term features vs long-term productivity
|
|
493
|
+
- **Decision:** At 50+ engineers, platform investment usually wins
|
|
494
|
+
|
|
495
|
+
### Investment Priorities by Stage
|
|
496
|
+
|
|
497
|
+
**Startup (0-30 engineers):**
|
|
498
|
+
```
|
|
499
|
+
Priority 1: Ship product, find product-market fit
|
|
500
|
+
Infrastructure: Use managed services, don't build platform
|
|
501
|
+
Investment: Observability, CI/CD (buy, don't build)
|
|
502
|
+
```
|
|
503
|
+
|
|
504
|
+
**Scale-up (30-150 engineers):**
|
|
505
|
+
```
|
|
506
|
+
Priority: Scale engineering productivity
|
|
507
|
+
Infrastructure: Start investing in platform
|
|
508
|
+
Investment:
|
|
509
|
+
├── Developer experience (CI/CD optimization, faster builds)
|
|
510
|
+
├── Observability (centralized logs, metrics, traces)
|
|
511
|
+
├── Self-service infrastructure (IaC templates, K8s)
|
|
512
|
+
└── SRE function (reliability, on-call)
|
|
513
|
+
```
|
|
514
|
+
|
|
515
|
+
**Enterprise (150+ engineers):**
|
|
516
|
+
```
|
|
517
|
+
Priority: Maintain velocity as org scales
|
|
518
|
+
Infrastructure: Platform as product
|
|
519
|
+
Investment:
|
|
520
|
+
├── Internal developer platform (self-service everything)
|
|
521
|
+
├── Platform teams (dedicated orgs)
|
|
522
|
+
├── SRE org (production excellence)
|
|
523
|
+
├── Security org (AppSec, compliance)
|
|
524
|
+
└── Data platform (analytics, ML)
|
|
525
|
+
```
|
|
526
|
+
|
|
527
|
+
---
|
|
528
|
+
|
|
529
|
+
## 4. Multi-Year Roadmapping
|
|
530
|
+
|
|
531
|
+
### Infrastructure Roadmap Framework
|
|
532
|
+
|
|
533
|
+
**Year 1: Foundation**
|
|
534
|
+
```
|
|
535
|
+
Q1-Q2: Stabilize
|
|
536
|
+
├── Production reliability (reduce incidents)
|
|
537
|
+
├── Observability (visibility into systems)
|
|
538
|
+
├── CI/CD basics (automated deployments)
|
|
539
|
+
└── Security fundamentals (secrets management, scanning)
|
|
540
|
+
|
|
541
|
+
Q3-Q4: Optimize
|
|
542
|
+
├── Developer experience improvements
|
|
543
|
+
├── Performance optimization
|
|
544
|
+
├── Cost optimization
|
|
545
|
+
└── Team hiring and growth
|
|
546
|
+
```
|
|
547
|
+
|
|
548
|
+
**Year 2: Scale**
|
|
549
|
+
```
|
|
550
|
+
Q1-Q2: Platform Investment
|
|
551
|
+
├── Internal developer platform (IDP) foundation
|
|
552
|
+
├── Self-service infrastructure
|
|
553
|
+
├── Advanced observability (tracing, SLOs)
|
|
554
|
+
└── Expand platform team
|
|
555
|
+
|
|
556
|
+
Q3-Q4: Productivity
|
|
557
|
+
├── Faster deployments (reduce cycle time)
|
|
558
|
+
├── Better testing (reduce bugs)
|
|
559
|
+
├── Documentation and enablement
|
|
560
|
+
└── Platform adoption
|
|
561
|
+
```
|
|
562
|
+
|
|
563
|
+
**Year 3: Excellence**
|
|
564
|
+
```
|
|
565
|
+
Q1-Q2: Maturity
|
|
566
|
+
├── Platform as product mindset
|
|
567
|
+
├── Multi-region/global infrastructure
|
|
568
|
+
├── Advanced security and compliance
|
|
569
|
+
└── Disaster recovery and business continuity
|
|
570
|
+
|
|
571
|
+
Q3-Q4: Innovation
|
|
572
|
+
├── Emerging technologies (ML, edge computing)
|
|
573
|
+
├── Next-generation architecture
|
|
574
|
+
├── Strategic bets
|
|
575
|
+
└── Continuous improvement
|
|
576
|
+
```
|
|
577
|
+
|
|
578
|
+
### Balancing Roadmap
|
|
579
|
+
|
|
580
|
+
**The 70-20-10 Rule:**
|
|
581
|
+
- **70% Core Business:** Keep the lights on, support product roadmap
|
|
582
|
+
- **20% Platform Investment:** Developer experience, reliability, security
|
|
583
|
+
- **10% Innovation:** Experiments, R&D, emerging tech
|
|
584
|
+
|
|
585
|
+
**Adjust by maturity:**
|
|
586
|
+
- Early stage: 85% core, 10% platform, 5% innovation
|
|
587
|
+
- Growth stage: 70% core, 20% platform, 10% innovation
|
|
588
|
+
- Mature: 60% core, 25% platform, 15% innovation
|
|
589
|
+
|
|
590
|
+
### Roadmap Communication
|
|
591
|
+
|
|
592
|
+
**Quarterly Infrastructure Review (with leadership):**
|
|
593
|
+
```
|
|
594
|
+
1. Last Quarter Recap (15 min)
|
|
595
|
+
├── What we shipped
|
|
596
|
+
├── Impact and metrics
|
|
597
|
+
└── What we learned
|
|
598
|
+
|
|
599
|
+
2. This Quarter Plan (20 min)
|
|
600
|
+
├── Top 3-5 priorities
|
|
601
|
+
├── Resource allocation
|
|
602
|
+
├── Dependencies and risks
|
|
603
|
+
└── Success criteria
|
|
604
|
+
|
|
605
|
+
3. Long-term Strategy (15 min)
|
|
606
|
+
├── Year-ahead preview
|
|
607
|
+
├── Strategic bets
|
|
608
|
+
└── Investment needs
|
|
609
|
+
|
|
610
|
+
4. Q&A (10 min)
|
|
611
|
+
```
|
|
612
|
+
|
|
613
|
+
---
|
|
614
|
+
|
|
615
|
+
## 5. Technology Radar
|
|
616
|
+
|
|
617
|
+
### What is a Technology Radar?
|
|
618
|
+
|
|
619
|
+
**A framework for tracking and evaluating technologies.**
|
|
620
|
+
|
|
621
|
+
**Four Rings:**
|
|
622
|
+
1. **Adopt:** Proven, ready for production, recommended
|
|
623
|
+
2. **Trial:** Worth exploring, pilot projects
|
|
624
|
+
3. **Assess:** Interesting, but not ready yet
|
|
625
|
+
4. **Hold:** Avoid for now, or phase out
|
|
626
|
+
|
|
627
|
+
**Four Quadrants:**
|
|
628
|
+
1. **Techniques:** Development practices, architectures
|
|
629
|
+
2. **Tools:** Software, frameworks, products
|
|
630
|
+
3. **Platforms:** Infrastructure, cloud services
|
|
631
|
+
4. **Languages & Frameworks:** Programming languages, libraries
|
|
632
|
+
|
|
633
|
+
### Example Technology Radar (Infrastructure)
|
|
634
|
+
|
|
635
|
+
**ADOPT (Use in production):**
|
|
636
|
+
```
|
|
637
|
+
├── Kubernetes (Container orchestration)
|
|
638
|
+
├── Terraform (Infrastructure as Code)
|
|
639
|
+
├── GitHub Actions (CI/CD)
|
|
640
|
+
├── Datadog (Observability)
|
|
641
|
+
├── PostgreSQL (Relational database)
|
|
642
|
+
└── AWS (Cloud platform)
|
|
643
|
+
```
|
|
644
|
+
|
|
645
|
+
**TRIAL (Pilot projects):**
|
|
646
|
+
```
|
|
647
|
+
├── ArgoCD (GitOps)
|
|
648
|
+
├── Pulumi (IaC alternative to Terraform)
|
|
649
|
+
├── Temporal (Workflow orchestration)
|
|
650
|
+
├── ClickHouse (Analytics database)
|
|
651
|
+
└── OpenTelemetry (Observability standard)
|
|
652
|
+
```
|
|
653
|
+
|
|
654
|
+
**ASSESS (Evaluate):**
|
|
655
|
+
```
|
|
656
|
+
├── WebAssembly (Edge computing)
|
|
657
|
+
├── Serverless containers (AWS Fargate, Cloud Run)
|
|
658
|
+
├── Service mesh (Istio, Linkerd)
|
|
659
|
+
└── eBPF (Observability and security)
|
|
660
|
+
```
|
|
661
|
+
|
|
662
|
+
**HOLD (Avoid or deprecate):**
|
|
663
|
+
```
|
|
664
|
+
├── Monolithic architectures (favor microservices)
|
|
665
|
+
├── Manual deployments (automate everything)
|
|
666
|
+
├── Homegrown auth (use Auth0/Okta)
|
|
667
|
+
└── [Legacy tool you're migrating from]
|
|
668
|
+
```
|
|
669
|
+
|
|
670
|
+
### Technology Evaluation Process
|
|
671
|
+
|
|
672
|
+
**Before adopting new technology:**
|
|
673
|
+
```
|
|
674
|
+
1. Problem Validation
|
|
675
|
+
└── What problem does this solve?
|
|
676
|
+
└── Do we actually have this problem?
|
|
677
|
+
└── How are we solving it today?
|
|
678
|
+
|
|
679
|
+
2. Technology Research
|
|
680
|
+
└── Maturity: Production-ready? Stable?
|
|
681
|
+
└── Community: Active? Well-supported?
|
|
682
|
+
└── Ecosystem: Good documentation? Libraries? Integrations?
|
|
683
|
+
|
|
684
|
+
3. Proof of Concept
|
|
685
|
+
└── Build small prototype (2-4 weeks max)
|
|
686
|
+
└── Test with real use case
|
|
687
|
+
└── Assess developer experience
|
|
688
|
+
|
|
689
|
+
4. Team Assessment
|
|
690
|
+
└── Do we have skills? Can we learn?
|
|
691
|
+
└── Can we operate and maintain this?
|
|
692
|
+
└── What's the training investment?
|
|
693
|
+
|
|
694
|
+
5. Decision
|
|
695
|
+
└── Adopt: Roll out to production
|
|
696
|
+
└── Trial: More POCs, pilot projects
|
|
697
|
+
└── Assess: Keep watching, not ready
|
|
698
|
+
└── Hold: Not right for us, pass
|
|
699
|
+
|
|
700
|
+
6. Review Annually
|
|
701
|
+
└── Revisit decisions yearly
|
|
702
|
+
└── Move technologies between rings
|
|
703
|
+
└── Deprecate old choices
|
|
704
|
+
```
|
|
705
|
+
|
|
706
|
+
---
|
|
707
|
+
|
|
708
|
+
## 6. Migration Planning (Executive Level)
|
|
709
|
+
|
|
710
|
+
### Types of Migrations
|
|
711
|
+
|
|
712
|
+
**1. Cloud Migration (On-prem → Cloud)**
|
|
713
|
+
```
|
|
714
|
+
Approaches:
|
|
715
|
+
├── Lift-and-shift (Rehost): Fast, minimal changes, technical debt
|
|
716
|
+
├── Replatform: Optimize for cloud (managed services, containers)
|
|
717
|
+
├── Refactor: Rewrite for cloud-native (microservices, serverless)
|
|
718
|
+
└── Recommended: Hybrid (replatform most, refactor critical)
|
|
719
|
+
|
|
720
|
+
Timeline: 12-36 months depending on scope
|
|
721
|
+
Investment: 20-40% of engineering capacity
|
|
722
|
+
Risk: Medium-High
|
|
723
|
+
```
|
|
724
|
+
|
|
725
|
+
**2. Multi-Cloud (Single cloud → Multi-cloud)**
|
|
726
|
+
```
|
|
727
|
+
Why:
|
|
728
|
+
├── Vendor negotiation leverage
|
|
729
|
+
├── Regulatory requirements (data sovereignty)
|
|
730
|
+
├── M&A integration
|
|
731
|
+
└── Avoid vendor lock-in
|
|
732
|
+
|
|
733
|
+
Cost: 2-3x operational overhead
|
|
734
|
+
Timeline: 18-36 months
|
|
735
|
+
Recommendation: Only if compelling business reason
|
|
736
|
+
```
|
|
737
|
+
|
|
738
|
+
**3. Modernization (Monolith → Microservices)**
|
|
739
|
+
```
|
|
740
|
+
Approach:
|
|
741
|
+
├── Strangler fig pattern (gradually extract services)
|
|
742
|
+
├── Don't rewrite everything at once
|
|
743
|
+
└── Extract highest-value services first
|
|
744
|
+
|
|
745
|
+
Timeline: 24-48 months
|
|
746
|
+
Investment: 30-50% of engineering capacity
|
|
747
|
+
Risk: High (many fail, scope creep)
|
|
748
|
+
```
|
|
749
|
+
|
|
750
|
+
### Migration Planning Framework
|
|
751
|
+
|
|
752
|
+
**Phase 1: Assessment (2-3 months)**
|
|
753
|
+
```
|
|
754
|
+
├── Current state analysis
|
|
755
|
+
│ ├── Inventory of systems
|
|
756
|
+
│ ├── Dependencies mapped
|
|
757
|
+
│ └── Technical debt identified
|
|
758
|
+
├── Target state definition
|
|
759
|
+
│ ├── Architecture vision
|
|
760
|
+
│ ├── Technology choices
|
|
761
|
+
│ └── Success criteria
|
|
762
|
+
└── Migration strategy
|
|
763
|
+
├── Wave planning (which systems, what order)
|
|
764
|
+
├── Risk assessment
|
|
765
|
+
└── Resource planning
|
|
766
|
+
```
|
|
767
|
+
|
|
768
|
+
**Phase 2: Pilot (3-6 months)**
|
|
769
|
+
```
|
|
770
|
+
├── Choose 1-2 non-critical systems
|
|
771
|
+
├── Migrate end-to-end
|
|
772
|
+
├── Learn and refine process
|
|
773
|
+
├── Build runbooks and automation
|
|
774
|
+
└── Validate costs and effort estimates
|
|
775
|
+
```
|
|
776
|
+
|
|
777
|
+
**Phase 3: Execution (12-24 months)**
|
|
778
|
+
```
|
|
779
|
+
├── Migrate in waves (monthly or quarterly)
|
|
780
|
+
│ ├── Wave 1: Easy wins (stateless apps)
|
|
781
|
+
│ ├── Wave 2: Medium complexity
|
|
782
|
+
│ └── Wave 3: Complex/critical systems
|
|
783
|
+
├── Decommission old systems
|
|
784
|
+
└── Continuous optimization
|
|
785
|
+
```
|
|
786
|
+
|
|
787
|
+
**Phase 4: Optimization (Ongoing)**
|
|
788
|
+
```
|
|
789
|
+
├── Cost optimization
|
|
790
|
+
├── Performance tuning
|
|
791
|
+
├── Security hardening
|
|
792
|
+
└── Team training
|
|
793
|
+
```
|
|
794
|
+
|
|
795
|
+
### Migration Risks and Mitigations
|
|
796
|
+
|
|
797
|
+
| Risk | Impact | Mitigation |
|
|
798
|
+
|------|--------|------------|
|
|
799
|
+
| **Cost overruns** | Budget exceeded 2-3x | Detailed estimation, quarterly reviews, kill switch |
|
|
800
|
+
| **Timeline delays** | Migration takes 2x longer | Conservative estimates, buffer time, phased approach |
|
|
801
|
+
| **Data loss** | Critical data corrupted/lost | Backups, dual-write, rollback plan |
|
|
802
|
+
| **Performance issues** | System slower after migration | Load testing, gradual rollout, performance baseline |
|
|
803
|
+
| **Team burnout** | Engineers exhausted | Limit migration to 30-40% capacity, rotations |
|
|
804
|
+
| **Vendor lock-in** | Stuck with new vendor | Design for portability (Kubernetes, IaC) |
|
|
805
|
+
|
|
806
|
+
---
|
|
807
|
+
|
|
808
|
+
## 7. Balancing Innovation vs Stability
|
|
809
|
+
|
|
810
|
+
### The Innovation Spectrum
|
|
811
|
+
|
|
812
|
+
```
|
|
813
|
+
Bleeding Edge → Leading Edge → Mainstream → Legacy
|
|
814
|
+
↑ ↑ ↑ ↑
|
|
815
|
+
High Risk Medium Risk Low Risk High Risk
|
|
816
|
+
High Reward Medium Reward Low Reward Technical Debt
|
|
817
|
+
```
|
|
818
|
+
|
|
819
|
+
**Where to be:**
|
|
820
|
+
- **Core infrastructure:** Mainstream (proven, stable)
|
|
821
|
+
- **Product features:** Leading edge (competitive advantage)
|
|
822
|
+
- **Experiments:** Bleeding edge (limited blast radius)
|
|
823
|
+
- **Legacy:** Migrate to mainstream
|
|
824
|
+
|
|
825
|
+
### Innovation Budget
|
|
826
|
+
|
|
827
|
+
**Allocate engineering time:**
|
|
828
|
+
```
|
|
829
|
+
├── 70% Mainstream: Proven technologies, low risk
|
|
830
|
+
├── 20% Leading Edge: 1-2 year old, early adopters
|
|
831
|
+
└── 10% Bleeding Edge: New, experimental, R&D
|
|
832
|
+
```
|
|
833
|
+
|
|
834
|
+
**Example:**
|
|
835
|
+
- Mainstream: Kubernetes, Postgres, AWS
|
|
836
|
+
- Leading Edge: ArgoCD (GitOps), OpenTelemetry
|
|
837
|
+
- Bleeding Edge: WebAssembly at edge, new ML frameworks
|
|
838
|
+
|
|
839
|
+
### Decision Framework: When to Adopt New Technology?
|
|
840
|
+
|
|
841
|
+
**Adopt if:**
|
|
842
|
+
- ✅ Solves real problem we have today
|
|
843
|
+
- ✅ Mature enough (1-2 years in production elsewhere)
|
|
844
|
+
- ✅ Active community and support
|
|
845
|
+
- ✅ Team excited and willing to learn
|
|
846
|
+
- ✅ Can pilot with low risk
|
|
847
|
+
|
|
848
|
+
**Wait if:**
|
|
849
|
+
- ❌ No clear problem it solves
|
|
850
|
+
- ❌ Too new (< 1 year, frequent breaking changes)
|
|
851
|
+
- ❌ Small community, unclear future
|
|
852
|
+
- ❌ Team lacks bandwidth to learn
|
|
853
|
+
- ❌ Can't fail safely
|
|
854
|
+
|
|
855
|
+
---
|
|
856
|
+
|
|
857
|
+
## Key Takeaways for Leaders
|
|
858
|
+
|
|
859
|
+
1. **Cloud strategy:** Single cloud for most, multi-cloud only if required
|
|
860
|
+
2. **Build vs buy:** Buy unless it's your core differentiator
|
|
861
|
+
3. **Platform ROI:** Invest when team > 30-50 engineers
|
|
862
|
+
4. **Roadmap balance:** 70% core, 20% platform, 10% innovation
|
|
863
|
+
5. **Technology radar:** Be deliberate about tech adoption
|
|
864
|
+
6. **Migration planning:** 12-36 months, 20-40% capacity
|
|
865
|
+
7. **Innovation budget:** 70% mainstream, 20% leading edge, 10% experimental
|
|
866
|
+
8. **Make reversible decisions:** Avoid vendor lock-in where possible
|
|
867
|
+
9. **Measure everything:** Track productivity, costs, reliability
|
|
868
|
+
10. **Think in years:** Infrastructure strategy is long-term game
|
|
869
|
+
|
|
870
|
+
**Remember:** Infrastructure strategy is about enabling your business to move faster, scale efficiently, and compete effectively - not about using the coolest technology.
|
|
871
|
+
|
|
872
|
+
---
|
|
873
|
+
|
|
874
|
+
## Templates
|
|
875
|
+
|
|
876
|
+
### Technology Decision Template
|
|
877
|
+
|
|
878
|
+
```markdown
|
|
879
|
+
# Technology Decision: [Technology Name]
|
|
880
|
+
|
|
881
|
+
## Problem
|
|
882
|
+
[What problem are we solving?]
|
|
883
|
+
|
|
884
|
+
## Proposed Solution
|
|
885
|
+
[Technology/approach we're evaluating]
|
|
886
|
+
|
|
887
|
+
## Alternatives Considered
|
|
888
|
+
1. [Alternative 1]
|
|
889
|
+
2. [Alternative 2]
|
|
890
|
+
3. Status quo
|
|
891
|
+
|
|
892
|
+
## Evaluation
|
|
893
|
+
| Criteria | Weight | Score (1-5) | Notes |
|
|
894
|
+
|----------|--------|-------------|-------|
|
|
895
|
+
| Solves problem | High | | |
|
|
896
|
+
| Maturity | High | | |
|
|
897
|
+
| Team skills | Medium | | |
|
|
898
|
+
| Cost | Medium | | |
|
|
899
|
+
| Vendor support | Low | | |
|
|
900
|
+
|
|
901
|
+
## Decision
|
|
902
|
+
[Adopt | Trial | Assess | Hold]
|
|
903
|
+
|
|
904
|
+
## Next Steps
|
|
905
|
+
- [ ] Prototype (if Trial)
|
|
906
|
+
- [ ] Training plan
|
|
907
|
+
- [ ] Migration plan
|
|
908
|
+
- [ ] Success metrics
|
|
909
|
+
|
|
910
|
+
## Review Date
|
|
911
|
+
[When we'll revisit this decision]
|
|
912
|
+
```
|
|
913
|
+
|
|
914
|
+
---
|
|
915
|
+
|
|
916
|
+
## Integration with Other Skills
|
|
917
|
+
|
|
918
|
+
**This skill works with:**
|
|
919
|
+
- **technical-leadership** - Evaluating technical proposals, architecture reviews
|
|
920
|
+
- **engineering-management** - Resource planning, team organization
|
|
921
|
+
- **budget-and-cost-management** - Infrastructure budgets, cost optimization
|
|
922
|
+
- **engineering-operations-management** - SRE strategy, reliability
|
|
923
|
+
|
|
924
|
+
Your infrastructure strategy should enable your business strategy, not constrain it.
|