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,850 @@
|
|
|
1
|
+
# Budget and Cost Management Skill
|
|
2
|
+
|
|
3
|
+
**For engineering managers managing infrastructure budgets, cloud costs, and demonstrating ROI for platform investments.**
|
|
4
|
+
|
|
5
|
+
> This skill helps managers plan infrastructure budgets, implement cost governance, allocate costs across teams, and build business cases for platform investments. Focused on financial management, not technical cost optimization.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
9
|
+
🎯 SKILL ACTIVATED: budget-and-cost-management
|
|
10
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
## When to Use This Skill
|
|
14
|
+
|
|
15
|
+
**You're a manager who needs help with:**
|
|
16
|
+
- Planning annual infrastructure budgets
|
|
17
|
+
- Understanding cloud bills and cost drivers
|
|
18
|
+
- Implementing cost allocation and chargebacks
|
|
19
|
+
- Building ROI cases for platform investments
|
|
20
|
+
- FinOps practices for engineering teams
|
|
21
|
+
- Negotiating budgets with finance/leadership
|
|
22
|
+
- Forecasting infrastructure costs as team scales
|
|
23
|
+
- Balancing cost vs performance trade-offs
|
|
24
|
+
|
|
25
|
+
**This skill does NOT cover:**
|
|
26
|
+
- Hands-on technical cost optimization (see **cloud-engineering** skill)
|
|
27
|
+
- Detailed cloud pricing models (see **cloud-engineering** skill)
|
|
28
|
+
- Infrastructure architecture decisions (see **infrastructure-strategy** skill)
|
|
29
|
+
- Team hiring costs (see **engineering-management** skill)
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Core Areas
|
|
34
|
+
|
|
35
|
+
### 1. Understanding Cloud Costs (Manager's Perspective)
|
|
36
|
+
|
|
37
|
+
**The challenge:** Cloud bills are complex. You need to understand enough to manage budgets without becoming a cloud pricing expert.
|
|
38
|
+
|
|
39
|
+
#### Cloud Cost Breakdown (Simplified)
|
|
40
|
+
|
|
41
|
+
**AWS Cost Structure:**
|
|
42
|
+
```
|
|
43
|
+
Typical AWS Bill Breakdown:
|
|
44
|
+
|
|
45
|
+
Compute (40-50%):
|
|
46
|
+
├── EC2 instances (VMs)
|
|
47
|
+
├── Lambda (serverless functions)
|
|
48
|
+
├── ECS/EKS (containers)
|
|
49
|
+
└── Spot instances (discounted)
|
|
50
|
+
|
|
51
|
+
Storage (20-30%):
|
|
52
|
+
├── S3 (object storage)
|
|
53
|
+
├── EBS (block storage for EC2)
|
|
54
|
+
├── Glacier (archival)
|
|
55
|
+
└── Data transfer OUT (expensive!)
|
|
56
|
+
|
|
57
|
+
Databases (15-25%):
|
|
58
|
+
├── RDS (managed databases)
|
|
59
|
+
├── DynamoDB
|
|
60
|
+
├── ElastiCache (Redis/Memcached)
|
|
61
|
+
└── Redshift (data warehouse)
|
|
62
|
+
|
|
63
|
+
Networking (5-10%):
|
|
64
|
+
├── Load balancers
|
|
65
|
+
├── NAT gateways
|
|
66
|
+
├── VPN connections
|
|
67
|
+
└── Data transfer
|
|
68
|
+
|
|
69
|
+
Other (5-10%):
|
|
70
|
+
├── CloudWatch (monitoring)
|
|
71
|
+
├── Route53 (DNS)
|
|
72
|
+
├── Support plan (3-10% of total bill)
|
|
73
|
+
└── Misc services
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**Azure and GCP:** Similar breakdowns, different service names.
|
|
77
|
+
|
|
78
|
+
#### Common Cost Surprises for Managers
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
🚨 Data Transfer Costs:
|
|
82
|
+
- $0.09/GB to transfer data OUT of cloud
|
|
83
|
+
- Can be 10-20% of total bill
|
|
84
|
+
- Example: 10TB/month = $900/month
|
|
85
|
+
|
|
86
|
+
🚨 NAT Gateway Costs:
|
|
87
|
+
- $0.045/hour + $0.045/GB processed
|
|
88
|
+
- Often hidden, can be $500+/month per gateway
|
|
89
|
+
|
|
90
|
+
🚨 Load Balancer Costs:
|
|
91
|
+
- Application Load Balancer: $20/month + usage
|
|
92
|
+
- 10 ALBs = $2,400/year just for availability
|
|
93
|
+
|
|
94
|
+
🚨 "Idle" Resources:
|
|
95
|
+
- Dev/test environments running 24/7
|
|
96
|
+
- Non-production databases at production size
|
|
97
|
+
- Can be 30-40% of total spend
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**Key insight for managers:** Most cloud costs come from a few sources. Focus your cost governance there.
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
### 2. Infrastructure Budget Planning
|
|
105
|
+
|
|
106
|
+
**Goal:** Create realistic annual infrastructure budget that accounts for growth and innovation.
|
|
107
|
+
|
|
108
|
+
#### Annual Budget Planning Process
|
|
109
|
+
|
|
110
|
+
**Step 1: Baseline Current Spend**
|
|
111
|
+
```
|
|
112
|
+
Current Monthly Spend Breakdown:
|
|
113
|
+
|
|
114
|
+
Production Infrastructure: $50,000/month
|
|
115
|
+
├── Compute: $20,000
|
|
116
|
+
├── Storage: $10,000
|
|
117
|
+
├── Databases: $15,000
|
|
118
|
+
└── Networking: $5,000
|
|
119
|
+
|
|
120
|
+
Non-Production: $15,000/month
|
|
121
|
+
├── Staging: $8,000
|
|
122
|
+
├── Dev: $5,000
|
|
123
|
+
└── Test: $2,000
|
|
124
|
+
|
|
125
|
+
Tools & Services: $10,000/month
|
|
126
|
+
├── Observability: $4,000 (Datadog)
|
|
127
|
+
├── Security: $3,000 (SCA tools, SIEM)
|
|
128
|
+
├── CI/CD: $2,000 (GitHub, CircleCI)
|
|
129
|
+
└── Other: $1,000
|
|
130
|
+
|
|
131
|
+
Total: $75,000/month = $900K/year
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
**Step 2: Project Growth**
|
|
135
|
+
```
|
|
136
|
+
Growth Drivers:
|
|
137
|
+
|
|
138
|
+
User Growth:
|
|
139
|
+
├── Current: 100K users
|
|
140
|
+
├── Projected: 150K users (+50%)
|
|
141
|
+
├── Infrastructure impact: +30% (due to economies of scale)
|
|
142
|
+
└── Cost impact: +$270K/year
|
|
143
|
+
|
|
144
|
+
Team Growth:
|
|
145
|
+
├── Current: 30 engineers
|
|
146
|
+
├── Projected: 45 engineers (+50%)
|
|
147
|
+
├── Dev environment impact: +50%
|
|
148
|
+
└── Cost impact: +$90K/year (dev/staging environments)
|
|
149
|
+
|
|
150
|
+
New Initiatives:
|
|
151
|
+
├── Machine learning platform: +$100K/year
|
|
152
|
+
├── Multi-region expansion: +$200K/year
|
|
153
|
+
└── Data lake project: +$80K/year
|
|
154
|
+
|
|
155
|
+
Total Growth: +$740K/year
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
**Step 3: Efficiency Initiatives**
|
|
159
|
+
```
|
|
160
|
+
Cost Savings Opportunities:
|
|
161
|
+
|
|
162
|
+
Reserved Instances / Savings Plans:
|
|
163
|
+
├── Current: 20% coverage
|
|
164
|
+
├── Target: 60% coverage
|
|
165
|
+
├── Discount: 30-40% on committed compute
|
|
166
|
+
└── Savings: -$150K/year
|
|
167
|
+
|
|
168
|
+
Right-Sizing:
|
|
169
|
+
├── Over-provisioned resources identified
|
|
170
|
+
└── Savings: -$80K/year
|
|
171
|
+
|
|
172
|
+
Shutdown Automation:
|
|
173
|
+
├── Auto-stop non-prod environments after hours
|
|
174
|
+
└── Savings: -$70K/year
|
|
175
|
+
|
|
176
|
+
Total Savings: -$300K/year
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
**Step 4: Calculate Budget Request**
|
|
180
|
+
|
|
181
|
+
```
|
|
182
|
+
Annual Infrastructure Budget:
|
|
183
|
+
|
|
184
|
+
Baseline: $900K
|
|
185
|
+
+ Growth: $740K
|
|
186
|
+
- Efficiency Savings: -$300K
|
|
187
|
+
+ Contingency (10%): +$134K
|
|
188
|
+
─────────────────────────────
|
|
189
|
+
Total Budget Request: $1,474K (~$1.5M)
|
|
190
|
+
|
|
191
|
+
Quarterly Breakdown:
|
|
192
|
+
├── Q1: $350K (baseline + reserved instance purchases)
|
|
193
|
+
├── Q2: $360K
|
|
194
|
+
├── Q3: $380K (new initiatives launch)
|
|
195
|
+
└── Q4: $384K (continued growth)
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
#### Budget Presentation to Leadership
|
|
199
|
+
|
|
200
|
+
```
|
|
201
|
+
Slide 1: Executive Summary
|
|
202
|
+
├── Request: $1.5M infrastructure budget for FY2025
|
|
203
|
+
├── Current: $900K (FY2024)
|
|
204
|
+
├── Growth: +67% budget, supporting +50% user growth
|
|
205
|
+
└── Key investments: Multi-region, ML platform, efficiency
|
|
206
|
+
|
|
207
|
+
Slide 2: Cost Drivers
|
|
208
|
+
├── User growth: +50% → +$270K
|
|
209
|
+
├── Team growth: +50% → +$90K
|
|
210
|
+
├── Strategic initiatives: +$380K
|
|
211
|
+
└── Net increase: +$440K (after savings)
|
|
212
|
+
|
|
213
|
+
Slide 3: Efficiency Initiatives
|
|
214
|
+
├── Reserved instance optimization: -$150K
|
|
215
|
+
├── Right-sizing: -$80K
|
|
216
|
+
├── Automation: -$70K
|
|
217
|
+
└── Total savings: -$300K
|
|
218
|
+
|
|
219
|
+
Slide 4: Risk Mitigation
|
|
220
|
+
├── Contingency: 10% ($134K)
|
|
221
|
+
├── Monitoring: Monthly cost reviews
|
|
222
|
+
└── Governance: Cost allocation by team
|
|
223
|
+
|
|
224
|
+
Slide 5: Comparison & Benchmarks
|
|
225
|
+
├── Industry: $20-30 per user/month (we're at $25)
|
|
226
|
+
├── Trend: Infrastructure cost per user decreasing
|
|
227
|
+
└── Competitive: Within range for our stage
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
**Pro tip:** Frame infrastructure cost as **cost per user** or **% of revenue** to show efficiency, not just absolute dollars.
|
|
231
|
+
|
|
232
|
+
#### Budget Planning Scenarios
|
|
233
|
+
|
|
234
|
+
**Scenario: "How much contingency buffer should we include?"**
|
|
235
|
+
- **Standard:** 10-15% contingency for infrastructure budgets
|
|
236
|
+
- **Calculation:** If base budget is $1.34M, add $134-200K contingency
|
|
237
|
+
- **Use for:**
|
|
238
|
+
- Unexpected user growth spurts
|
|
239
|
+
- Security incidents requiring rapid scaling
|
|
240
|
+
- Failed efficiency initiatives (savings don't materialize)
|
|
241
|
+
- New compliance requirements
|
|
242
|
+
- **Don't use for:** Planned initiatives (those should be in base budget)
|
|
243
|
+
|
|
244
|
+
**Scenario: "What if we're spending X% of revenue on infrastructure?"**
|
|
245
|
+
- **Benchmarks by stage:**
|
|
246
|
+
- Early stage (pre-PMF): 20-40% of revenue (acceptable, focus on growth)
|
|
247
|
+
- Growth stage: 15-25% of revenue (optimize as you scale)
|
|
248
|
+
- Scale stage: 10-15% of revenue (mature, efficient)
|
|
249
|
+
- **If too high (>30%):** Focus on efficiency initiatives
|
|
250
|
+
- **If too low (<10%):** May be underinvesting in infrastructure/reliability
|
|
251
|
+
|
|
252
|
+
**Scenario: "How do we handle untagged costs?"**
|
|
253
|
+
- **Problem:** $50K/month in untagged AWS resources
|
|
254
|
+
- **Solution:**
|
|
255
|
+
1. Run quarterly tagging audits - find untagged resources
|
|
256
|
+
2. Email resource owners: "Tag or terminate in 30 days"
|
|
257
|
+
3. Auto-shutdown untagged non-production resources after 60 days
|
|
258
|
+
4. Track tagging compliance: Target 95%+
|
|
259
|
+
- **Allocate untagged:** Split proportionally across teams until resolved
|
|
260
|
+
|
|
261
|
+
**Scenario: "Should we cross-charge teams for their infrastructure?"**
|
|
262
|
+
- **Showback (Recommended):**
|
|
263
|
+
- Show teams their costs, don't charge them
|
|
264
|
+
- Pros: Awareness without friction, teams optimize voluntarily
|
|
265
|
+
- Cons: No hard enforcement
|
|
266
|
+
- **Chargeback:**
|
|
267
|
+
- Actually charge teams' budgets for infrastructure
|
|
268
|
+
- Pros: Strong incentive to optimize
|
|
269
|
+
- Cons: Bureaucracy, cross-team friction, accounting complexity
|
|
270
|
+
- **Decision:** Start with showback. Only move to chargeback if waste is significant (>20%)
|
|
271
|
+
|
|
272
|
+
**Scenario: "How can we optimize storage costs with lifecycle policies?"**
|
|
273
|
+
- **S3 Lifecycle Rules:**
|
|
274
|
+
- Day 0-30: Standard S3 ($0.023/GB)
|
|
275
|
+
- Day 30-90: Infrequent Access ($0.0125/GB) - 46% savings
|
|
276
|
+
- Day 90+: Glacier ($0.004/GB) - 83% savings
|
|
277
|
+
- **Example savings:**
|
|
278
|
+
- 100TB data, 50% older than 30 days
|
|
279
|
+
- Without lifecycle: $2,300/month
|
|
280
|
+
- With lifecycle: $1,150 + $250 = $1,400/month
|
|
281
|
+
- **Savings:** $900/month = $10.8K/year
|
|
282
|
+
- **Action:** Implement lifecycle policies for logs, backups, archives
|
|
283
|
+
|
|
284
|
+
**Scenario: "How do we benchmark our costs against industry?"**
|
|
285
|
+
- **Metrics to compare:**
|
|
286
|
+
- Infrastructure cost per engineer: $5-15K/month
|
|
287
|
+
- Infrastructure cost per user: $0.50-5/month (varies by product)
|
|
288
|
+
- Infrastructure as % of revenue: 10-25%
|
|
289
|
+
- **Where to get benchmarks:**
|
|
290
|
+
- FinOps Foundation reports
|
|
291
|
+
- Industry surveys (Gartner, Forrester)
|
|
292
|
+
- Peer companies (if you have relationships)
|
|
293
|
+
- **Use benchmarks to:** Justify current spend or identify optimization opportunities
|
|
294
|
+
|
|
295
|
+
**Scenario: "How do we explain cloud value to the board?"**
|
|
296
|
+
- **Frame as business enablement:**
|
|
297
|
+
- "Cloud enables us to scale 10x without hiring 10x engineers"
|
|
298
|
+
- "Deployed 50 new features this year vs 12 last year (on-prem)"
|
|
299
|
+
- "Cloud costs $1.5M but saved $800K in datacenter costs + $500K in ops labor"
|
|
300
|
+
- **Show ROI:**
|
|
301
|
+
- Time to market: Weeks → Days
|
|
302
|
+
- Reliability: 99.9% → 99.99% uptime
|
|
303
|
+
- Security: Automated compliance vs manual
|
|
304
|
+
- **Avoid:** Technical jargon, focus on business outcomes
|
|
305
|
+
|
|
306
|
+
**Scenario: "What should we present in quarterly business reviews (QBR)?"**
|
|
307
|
+
- **Slide 1: Cost Summary**
|
|
308
|
+
- Total spend: $450K (vs $425K budget, +6%)
|
|
309
|
+
- Trend: Up 8% QoQ (expected due to growth)
|
|
310
|
+
- Cost per user: $2.50 (down from $2.75, improving efficiency)
|
|
311
|
+
- **Slide 2: Drivers of Change**
|
|
312
|
+
- User growth: +15% → +$40K
|
|
313
|
+
- New ML feature: +$30K
|
|
314
|
+
- Reserved instance savings: -$15K
|
|
315
|
+
- **Slide 3: Efficiency Initiatives**
|
|
316
|
+
- Right-sizing: Saved $25K this quarter
|
|
317
|
+
- Storage lifecycle: Saved $10K/quarter ongoing
|
|
318
|
+
- Next: Spot instances pilot (+$15K savings potential)
|
|
319
|
+
- **Slide 4: Forecast**
|
|
320
|
+
- Q4 projection: $460K (on track for annual budget)
|
|
321
|
+
- Risk: Potential user surge during holiday season
|
|
322
|
+
|
|
323
|
+
---
|
|
324
|
+
|
|
325
|
+
### 3. Cost Allocation and Chargebacks
|
|
326
|
+
|
|
327
|
+
**Why cost allocation matters:**
|
|
328
|
+
- Teams understand their impact on infrastructure costs
|
|
329
|
+
- Product decisions factor in infrastructure costs
|
|
330
|
+
- Accountability for resource usage
|
|
331
|
+
|
|
332
|
+
#### Cost Allocation Models
|
|
333
|
+
|
|
334
|
+
**Model 1: Simple Allocation by Team (Easiest)**
|
|
335
|
+
```
|
|
336
|
+
Tagging Strategy:
|
|
337
|
+
├── Tag: "Team" (e.g., "payments", "growth", "platform")
|
|
338
|
+
├── Tag: "Environment" (e.g., "prod", "staging", "dev")
|
|
339
|
+
└── Tag: "Cost-Center" (e.g., "engineering", "product")
|
|
340
|
+
|
|
341
|
+
Monthly Cost Report:
|
|
342
|
+
├── Payments Team: $15,000
|
|
343
|
+
│ ├── Production: $12,000
|
|
344
|
+
│ └── Non-production: $3,000
|
|
345
|
+
├── Growth Team: $10,000
|
|
346
|
+
├── Platform Team: $8,000 (shared infrastructure)
|
|
347
|
+
└── Unallocated: $2,000 (fix tagging)
|
|
348
|
+
|
|
349
|
+
Total: $35,000
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
**Model 2: Showback (Informational, Recommended)**
|
|
353
|
+
```
|
|
354
|
+
Show teams their costs, but don't charge them.
|
|
355
|
+
|
|
356
|
+
Benefits:
|
|
357
|
+
✅ Raises cost awareness
|
|
358
|
+
✅ No budget battles between teams
|
|
359
|
+
✅ Platform team keeps central budget
|
|
360
|
+
|
|
361
|
+
Monthly Report to Teams:
|
|
362
|
+
"Growth Team: You used $10K in infrastructure this month
|
|
363
|
+
Top cost driver: Your new ML model ($4K)
|
|
364
|
+
Opportunity: Shut down old staging environments ($1K/month savings)"
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
**Model 3: Chargeback (Transactional, Complex)**
|
|
368
|
+
```
|
|
369
|
+
Actually charge teams for their infrastructure usage.
|
|
370
|
+
|
|
371
|
+
Benefits:
|
|
372
|
+
✅ True accountability
|
|
373
|
+
✅ Teams optimize their own costs
|
|
374
|
+
|
|
375
|
+
Drawbacks:
|
|
376
|
+
❌ Bureaucratic overhead
|
|
377
|
+
❌ Teams may optimize for cost over performance
|
|
378
|
+
❌ Discourages experimentation
|
|
379
|
+
|
|
380
|
+
Implementation:
|
|
381
|
+
1. Each team gets infrastructure budget allocation
|
|
382
|
+
2. Monthly "bill" for actual usage
|
|
383
|
+
3. Overage requires approval
|
|
384
|
+
|
|
385
|
+
Example:
|
|
386
|
+
├── Payments Team Budget: $20K/month
|
|
387
|
+
├── Actual Usage: $22K/month
|
|
388
|
+
├── Overage: $2K (requires VP approval)
|
|
389
|
+
└── Finance transfers budget between cost centers
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
**Recommendation for most orgs:** Start with **showback**, move to chargeback only if needed.
|
|
393
|
+
|
|
394
|
+
#### Allocating Shared Costs
|
|
395
|
+
|
|
396
|
+
**Problem:** Platform team costs benefit everyone. How to allocate?
|
|
397
|
+
|
|
398
|
+
```
|
|
399
|
+
Platform Team Infrastructure: $50K/month
|
|
400
|
+
├── Kubernetes clusters (shared)
|
|
401
|
+
├── CI/CD infrastructure
|
|
402
|
+
├── Observability stack
|
|
403
|
+
├── Shared databases/caches
|
|
404
|
+
└── Networking
|
|
405
|
+
|
|
406
|
+
Allocation Options:
|
|
407
|
+
|
|
408
|
+
Option A: Split Equally
|
|
409
|
+
├── 5 product teams
|
|
410
|
+
├── $10K/month per team
|
|
411
|
+
└── Simple, but unfair if usage varies
|
|
412
|
+
|
|
413
|
+
Option B: Split by Usage (Compute Hours)
|
|
414
|
+
├── Payments: 40% usage → $20K
|
|
415
|
+
├── Growth: 30% usage → $15K
|
|
416
|
+
├── Other teams: 30% → $15K
|
|
417
|
+
└── Fair, but complex to measure
|
|
418
|
+
|
|
419
|
+
Option C: Don't Allocate (Recommended)
|
|
420
|
+
├── Platform costs stay centralized
|
|
421
|
+
├── Product teams only see their direct costs
|
|
422
|
+
├── Simpler, encourages platform adoption
|
|
423
|
+
└── "Infrastructure as a free internal service"
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
**Pro tip:** If you charge for shared platform, teams will build their own infrastructure to avoid costs (not what you want).
|
|
427
|
+
|
|
428
|
+
---
|
|
429
|
+
|
|
430
|
+
### 4. FinOps for Engineering Managers
|
|
431
|
+
|
|
432
|
+
**FinOps:** Financial Operations - collaboration between engineering, finance, and business on cloud costs.
|
|
433
|
+
|
|
434
|
+
#### FinOps Maturity Model
|
|
435
|
+
|
|
436
|
+
```
|
|
437
|
+
Level 1: Reactive (Most orgs start here)
|
|
438
|
+
├── Cloud bill arrives, surprise at cost
|
|
439
|
+
├── No visibility into cost drivers
|
|
440
|
+
├── No ownership of costs
|
|
441
|
+
└── Action: Set up basic cost tracking
|
|
442
|
+
|
|
443
|
+
Level 2: Monitoring (6-12 months)
|
|
444
|
+
├── Monthly cost reviews
|
|
445
|
+
├── Tagging and allocation in place
|
|
446
|
+
├── Some cost awareness
|
|
447
|
+
└── Action: Implement showback
|
|
448
|
+
|
|
449
|
+
Level 3: Optimizing (12-24 months)
|
|
450
|
+
├── Proactive cost optimization
|
|
451
|
+
├── Reserved instance strategy
|
|
452
|
+
├── Cost targets for teams
|
|
453
|
+
└── Action: Build cost culture
|
|
454
|
+
|
|
455
|
+
Level 4: Advanced (24+ months)
|
|
456
|
+
├── Real-time cost optimization
|
|
457
|
+
├── Automated policies
|
|
458
|
+
├── Cost per product metric
|
|
459
|
+
└── Action: Continuous improvement
|
|
460
|
+
```
|
|
461
|
+
|
|
462
|
+
#### FinOps Practices for Managers
|
|
463
|
+
|
|
464
|
+
**1. Monthly Cost Review Meeting (30-60 min)**
|
|
465
|
+
```
|
|
466
|
+
Attendees: Engineering managers, finance, platform lead
|
|
467
|
+
|
|
468
|
+
Agenda:
|
|
469
|
+
1. Review total spend vs budget (5 min)
|
|
470
|
+
├── $85K actual vs $80K budget
|
|
471
|
+
└── $5K overage (6% over)
|
|
472
|
+
|
|
473
|
+
2. Top cost increases (15 min)
|
|
474
|
+
├── Payments team: +$10K (new ML model launched)
|
|
475
|
+
├── Growth team: +$5K (A/B testing infrastructure)
|
|
476
|
+
└── Platform: +$3K (added Kubernetes nodes)
|
|
477
|
+
|
|
478
|
+
3. Cost optimization wins (10 min)
|
|
479
|
+
├── Shutdown automation saved $4K
|
|
480
|
+
├── Right-sized databases saved $2K
|
|
481
|
+
└── Total savings: $6K
|
|
482
|
+
|
|
483
|
+
4. Action items (10 min)
|
|
484
|
+
├── Investigate payments ML model cost (can we optimize?)
|
|
485
|
+
├── Review reserved instance coverage (currently 30%, target 50%)
|
|
486
|
+
└── Tag unallocated $2K in costs
|
|
487
|
+
|
|
488
|
+
5. Forecast next month (5 min)
|
|
489
|
+
└── Expected: $90K (new feature launch)
|
|
490
|
+
```
|
|
491
|
+
|
|
492
|
+
**2. Cost Anomaly Alerts**
|
|
493
|
+
```
|
|
494
|
+
Set up alerts for unexpected cost spikes:
|
|
495
|
+
|
|
496
|
+
Alert Rules:
|
|
497
|
+
├── Daily spend > $5K (normal: $2.5K)
|
|
498
|
+
├── Weekly spend > 20% above baseline
|
|
499
|
+
├── Specific service > $1K/day (e.g., Lambda)
|
|
500
|
+
└── Untagged resources > $500
|
|
501
|
+
|
|
502
|
+
Response:
|
|
503
|
+
├── Alert goes to platform team + manager
|
|
504
|
+
├── Investigate within 24 hours
|
|
505
|
+
├── Report findings in Slack
|
|
506
|
+
└── Fix or accept (with explanation)
|
|
507
|
+
```
|
|
508
|
+
|
|
509
|
+
**3. Cost Ownership Culture**
|
|
510
|
+
```
|
|
511
|
+
Make engineers cost-aware:
|
|
512
|
+
|
|
513
|
+
✅ DO:
|
|
514
|
+
- Share monthly cost reports with all engineers
|
|
515
|
+
- Celebrate cost optimization wins
|
|
516
|
+
- Include cost in architecture review
|
|
517
|
+
- Provide cost dashboards (self-service visibility)
|
|
518
|
+
|
|
519
|
+
❌ DON'T:
|
|
520
|
+
- Blame engineers for high costs
|
|
521
|
+
- Penalize experimentation
|
|
522
|
+
- Make cost the only metric
|
|
523
|
+
- Hide cost information
|
|
524
|
+
```
|
|
525
|
+
|
|
526
|
+
---
|
|
527
|
+
|
|
528
|
+
### 5. ROI Frameworks for Platform Investments
|
|
529
|
+
|
|
530
|
+
**The question:** "Should we invest $500K in building an internal developer platform?"
|
|
531
|
+
|
|
532
|
+
**Answer:** Build an ROI case.
|
|
533
|
+
|
|
534
|
+
#### Platform Investment ROI Template
|
|
535
|
+
|
|
536
|
+
**Investment: Internal Developer Platform**
|
|
537
|
+
|
|
538
|
+
**Costs (Year 1):**
|
|
539
|
+
```
|
|
540
|
+
Team:
|
|
541
|
+
├── 1 Staff Engineer: $220K
|
|
542
|
+
├── 2 Senior Engineers: $320K
|
|
543
|
+
├── 1 Product Manager: $180K
|
|
544
|
+
└── Total Headcount: $720K
|
|
545
|
+
|
|
546
|
+
Tools & Infrastructure:
|
|
547
|
+
├── Kubernetes clusters: $60K
|
|
548
|
+
├── CI/CD tooling: $40K
|
|
549
|
+
├── Observability: $30K
|
|
550
|
+
└── Total Tools: $130K
|
|
551
|
+
|
|
552
|
+
Total Year 1 Investment: $850K
|
|
553
|
+
```
|
|
554
|
+
|
|
555
|
+
**Benefits (Year 1):**
|
|
556
|
+
```
|
|
557
|
+
Developer Productivity:
|
|
558
|
+
├── 40 product engineers
|
|
559
|
+
├── Current: 2 hours/day on infrastructure toil
|
|
560
|
+
├── Target: 30 min/day (platform automates common tasks)
|
|
561
|
+
├── Time saved: 1.5 hours/day × 40 engineers = 60 hours/day
|
|
562
|
+
├── Annual value: 60 × 220 work days × $80/hour = $1,056,000
|
|
563
|
+
|
|
564
|
+
Faster Deployments:
|
|
565
|
+
├── Current: 2 hours to deploy (manual process)
|
|
566
|
+
├── Target: 10 minutes (automated CI/CD)
|
|
567
|
+
├── 5 deploys/week → 4 hours saved/week
|
|
568
|
+
├── Annual value: Hard to quantify, but reduces time-to-market
|
|
569
|
+
|
|
570
|
+
Reduced Incidents:
|
|
571
|
+
├── Current: 4 incidents/month from manual errors
|
|
572
|
+
├── Target: 1 incident/month (automation prevents errors)
|
|
573
|
+
├── Cost per incident: $10K (downtime + eng time)
|
|
574
|
+
├── Annual value: 3 incidents/month × 12 × $10K = $360K
|
|
575
|
+
|
|
576
|
+
Total Annual Benefits: ~$1.4M
|
|
577
|
+
```
|
|
578
|
+
|
|
579
|
+
**ROI Calculation:**
|
|
580
|
+
```
|
|
581
|
+
ROI = (Benefits - Costs) / Costs × 100%
|
|
582
|
+
ROI = ($1.4M - $850K) / $850K × 100%
|
|
583
|
+
ROI = 65% Year 1 ROI
|
|
584
|
+
|
|
585
|
+
Payback Period: 7-8 months
|
|
586
|
+
|
|
587
|
+
3-Year NPV:
|
|
588
|
+
├── Year 1: -$850K + $1.4M = +$550K
|
|
589
|
+
├── Year 2: -$750K (ongoing) + $1.6M = +$850K
|
|
590
|
+
├── Year 3: -$750K + $1.8M = +$1,050K
|
|
591
|
+
└── Total 3-Year Value: +$2.45M
|
|
592
|
+
```
|
|
593
|
+
|
|
594
|
+
**Presenting to Leadership:**
|
|
595
|
+
|
|
596
|
+
```
|
|
597
|
+
Slide 1: The Problem
|
|
598
|
+
├── 40 engineers spend 2 hours/day on infrastructure toil
|
|
599
|
+
├── Manual deployments take 2 hours, error-prone
|
|
600
|
+
├── 4 incidents/month from manual errors
|
|
601
|
+
└── This is costing us $1.4M/year in lost productivity
|
|
602
|
+
|
|
603
|
+
Slide 2: The Solution
|
|
604
|
+
├── Build internal developer platform
|
|
605
|
+
├── Self-service infrastructure provisioning
|
|
606
|
+
├── Automated CI/CD pipelines
|
|
607
|
+
└── Reduced toil, faster deployments, fewer incidents
|
|
608
|
+
|
|
609
|
+
Slide 3: The Investment
|
|
610
|
+
├── Team: 4 people ($720K)
|
|
611
|
+
├── Infrastructure: $130K
|
|
612
|
+
├── Total Year 1: $850K
|
|
613
|
+
└── Ongoing: $750K/year
|
|
614
|
+
|
|
615
|
+
Slide 4: The Return
|
|
616
|
+
├── Developer productivity: +$1M/year
|
|
617
|
+
├── Reduced incidents: +$360K/year
|
|
618
|
+
├── Faster time-to-market: Priceless
|
|
619
|
+
└── ROI: 65% in Year 1, 7-month payback
|
|
620
|
+
|
|
621
|
+
Slide 5: Risk Mitigation
|
|
622
|
+
├── Start with pilot (2-3 teams)
|
|
623
|
+
├── Iterate based on feedback
|
|
624
|
+
├── Measure adoption and satisfaction
|
|
625
|
+
└── Stop if ROI not realized after 6 months
|
|
626
|
+
```
|
|
627
|
+
|
|
628
|
+
#### Common Platform Investment ROI Calculations
|
|
629
|
+
|
|
630
|
+
**CI/CD Pipeline:**
|
|
631
|
+
```
|
|
632
|
+
Investment: $200K (2 engineers for 6 months)
|
|
633
|
+
Benefit: Reduce deployment time from 4 hours → 15 minutes
|
|
634
|
+
Value: 20 deploys/week × 3.75 hours saved × $80/hour × 50 weeks = $300K/year
|
|
635
|
+
ROI: 50% Year 1
|
|
636
|
+
```
|
|
637
|
+
|
|
638
|
+
**Observability Platform:**
|
|
639
|
+
```
|
|
640
|
+
Investment: $150K/year (tooling + 1 engineer)
|
|
641
|
+
Benefit: Reduce MTTR from 4 hours → 1 hour
|
|
642
|
+
Value: 10 incidents/month × 3 hours saved × 5 engineers × $80/hour × 12 = $144K/year
|
|
643
|
+
Soft benefit: Customer trust, fewer escalations
|
|
644
|
+
ROI: Break-even Year 1, positive Year 2+
|
|
645
|
+
```
|
|
646
|
+
|
|
647
|
+
**Infrastructure as Code:**
|
|
648
|
+
```
|
|
649
|
+
Investment: $100K (1 engineer for 6 months)
|
|
650
|
+
Benefit: Reduce provisioning time from 2 days → 1 hour
|
|
651
|
+
Value: 50 provisioning requests/year × 15 hours saved × $80/hour = $60K/year
|
|
652
|
+
ROI: Negative Year 1, but compounds (enables other automation)
|
|
653
|
+
```
|
|
654
|
+
|
|
655
|
+
**Key insight:** Some platform investments pay off immediately. Others are foundational (IaC, observability) and enable future ROI.
|
|
656
|
+
|
|
657
|
+
---
|
|
658
|
+
|
|
659
|
+
### 6. Negotiating Budgets with Finance/Leadership
|
|
660
|
+
|
|
661
|
+
**The challenge:** Finance wants to cut costs. You need to maintain quality.
|
|
662
|
+
|
|
663
|
+
#### Budget Negotiation Scenarios
|
|
664
|
+
|
|
665
|
+
**Scenario 1: "Cut your budget by 20%"**
|
|
666
|
+
|
|
667
|
+
```
|
|
668
|
+
DON'T:
|
|
669
|
+
❌ "We can't do that, infrastructure is critical!"
|
|
670
|
+
❌ Across-the-board 20% cut (quality suffers)
|
|
671
|
+
❌ Accept without analysis
|
|
672
|
+
|
|
673
|
+
DO:
|
|
674
|
+
✅ Provide options with trade-offs
|
|
675
|
+
|
|
676
|
+
Response:
|
|
677
|
+
"I can present three options for a 20% reduction ($300K):
|
|
678
|
+
|
|
679
|
+
Option A: Cut scope
|
|
680
|
+
├── Delay multi-region expansion (saves $200K)
|
|
681
|
+
├── Pause ML platform project (saves $100K)
|
|
682
|
+
└── Impact: Product roadmap slips by 2 quarters
|
|
683
|
+
|
|
684
|
+
Option B: Reduce quality
|
|
685
|
+
├── Cut non-production environments (saves $150K)
|
|
686
|
+
├── Reduce observability tooling (saves $80K)
|
|
687
|
+
├── Defer reserved instance purchases (saves $70K)
|
|
688
|
+
└── Impact: Slower development, more incidents, higher long-term costs
|
|
689
|
+
|
|
690
|
+
Option C: Optimize efficiency (Recommended)
|
|
691
|
+
├── Aggressive right-sizing (saves $120K)
|
|
692
|
+
├── Shutdown automation (saves $90K)
|
|
693
|
+
├── Renegotiate vendor contracts (saves $90K)
|
|
694
|
+
└── Impact: Minimal, achievable in 3 months
|
|
695
|
+
|
|
696
|
+
Which option aligns with business priorities?"
|
|
697
|
+
```
|
|
698
|
+
|
|
699
|
+
**Scenario 2: "Why is cloud so expensive?"**
|
|
700
|
+
|
|
701
|
+
```
|
|
702
|
+
DON'T:
|
|
703
|
+
❌ Get defensive: "That's just what it costs!"
|
|
704
|
+
❌ Technical jargon: "Well, our egress costs are..."
|
|
705
|
+
|
|
706
|
+
DO:
|
|
707
|
+
✅ Normalize costs with business metrics
|
|
708
|
+
|
|
709
|
+
Response:
|
|
710
|
+
"Let's look at infrastructure cost in context:
|
|
711
|
+
|
|
712
|
+
Cost per User:
|
|
713
|
+
├── Current: $25/user/month
|
|
714
|
+
├── Industry benchmark: $20-35/user/month
|
|
715
|
+
└── We're in healthy range
|
|
716
|
+
|
|
717
|
+
Cost as % of Revenue:
|
|
718
|
+
├── Current: 3.5% of revenue
|
|
719
|
+
├── Target for our stage: 3-5%
|
|
720
|
+
└── We're on target
|
|
721
|
+
|
|
722
|
+
Trend:
|
|
723
|
+
├── Q1: $30/user
|
|
724
|
+
├── Q2: $27/user
|
|
725
|
+
├── Q3: $25/user (current)
|
|
726
|
+
└── Decreasing cost per user as we scale (economies of scale)
|
|
727
|
+
|
|
728
|
+
We're efficiently managing costs while enabling growth."
|
|
729
|
+
```
|
|
730
|
+
|
|
731
|
+
**Scenario 3: "Can we move to a cheaper cloud?"**
|
|
732
|
+
|
|
733
|
+
```
|
|
734
|
+
DON'T:
|
|
735
|
+
❌ Dismiss immediately: "No, we're on AWS"
|
|
736
|
+
❌ Over-promise: "Yes, we'll save 50%!"
|
|
737
|
+
|
|
738
|
+
DO:
|
|
739
|
+
✅ Analyze total cost of switching
|
|
740
|
+
|
|
741
|
+
Response:
|
|
742
|
+
"Let's evaluate the full cost of a cloud migration:
|
|
743
|
+
|
|
744
|
+
Migration Costs:
|
|
745
|
+
├── 6-12 months engineer time: $600K-$1.2M
|
|
746
|
+
├── Downtime risk: Potential revenue loss
|
|
747
|
+
├── New tooling and training: $100K
|
|
748
|
+
├── Parallel running costs (6 months): $300K
|
|
749
|
+
└── Total: $1M-$1.6M
|
|
750
|
+
|
|
751
|
+
Ongoing Savings:
|
|
752
|
+
├── Compute costs: -10% ($60K/year)
|
|
753
|
+
├── But: New costs for migration complexity
|
|
754
|
+
└── Net savings: $40K-$60K/year
|
|
755
|
+
|
|
756
|
+
Payback Period: 17-25 years
|
|
757
|
+
|
|
758
|
+
Recommendation: Not worth it. Better ROI from optimization on current cloud."
|
|
759
|
+
```
|
|
760
|
+
|
|
761
|
+
#### Budget Defense Tactics
|
|
762
|
+
|
|
763
|
+
**Tactic 1: Show Value, Not Just Cost**
|
|
764
|
+
```
|
|
765
|
+
Instead of: "We spent $1.5M on infrastructure"
|
|
766
|
+
Say: "We supported 50% user growth for a 30% increase in infrastructure spend"
|
|
767
|
+
```
|
|
768
|
+
|
|
769
|
+
**Tactic 2: Benchmark Against Industry**
|
|
770
|
+
```
|
|
771
|
+
Use data from:
|
|
772
|
+
├── Andreessen Horowitz infra benchmarks
|
|
773
|
+
├── Industry reports (Flexera, CloudHealth)
|
|
774
|
+
├── Peer companies (if you have relationships)
|
|
775
|
+
└── "We're at 3.5% of revenue, industry average is 4-6%"
|
|
776
|
+
```
|
|
777
|
+
|
|
778
|
+
**Tactic 3: Show Continuous Improvement**
|
|
779
|
+
```
|
|
780
|
+
Quarter-over-quarter efficiency:
|
|
781
|
+
├── Q1: $35/user
|
|
782
|
+
├── Q2: $32/user (-9%)
|
|
783
|
+
├── Q3: $28/user (-12%)
|
|
784
|
+
└── "We're continuously optimizing while supporting growth"
|
|
785
|
+
```
|
|
786
|
+
|
|
787
|
+
**Tactic 4: Tie to Business Outcomes**
|
|
788
|
+
```
|
|
789
|
+
Instead of: "We need $2M for infrastructure"
|
|
790
|
+
Say: "This infrastructure investment enables:
|
|
791
|
+
- 99.99% uptime (customer trust)
|
|
792
|
+
- <100ms latency (conversion rate +5%)
|
|
793
|
+
- Scale to 500K users (revenue opportunity: $10M)"
|
|
794
|
+
```
|
|
795
|
+
|
|
796
|
+
---
|
|
797
|
+
|
|
798
|
+
## Quick Reference for Managers
|
|
799
|
+
|
|
800
|
+
**Budget Planning:**
|
|
801
|
+
- Start with baseline, add growth, subtract efficiency
|
|
802
|
+
- Include 10% contingency
|
|
803
|
+
- Present cost per user or % of revenue
|
|
804
|
+
|
|
805
|
+
**Cost Allocation:**
|
|
806
|
+
- Start with showback (informational)
|
|
807
|
+
- Tag resources by team/environment
|
|
808
|
+
- Don't charge for shared platform (encourages usage)
|
|
809
|
+
|
|
810
|
+
**FinOps Practices:**
|
|
811
|
+
- Monthly cost review meeting
|
|
812
|
+
- Cost anomaly alerts (>20% spike)
|
|
813
|
+
- Share cost data transparently with teams
|
|
814
|
+
|
|
815
|
+
**Platform ROI:**
|
|
816
|
+
- Calculate productivity gains (time saved × hourly rate)
|
|
817
|
+
- Account for incident reduction
|
|
818
|
+
- Show payback period (target: <12 months)
|
|
819
|
+
|
|
820
|
+
**Budget Negotiation:**
|
|
821
|
+
- Provide options with trade-offs
|
|
822
|
+
- Normalize costs (per user, % revenue)
|
|
823
|
+
- Show continuous improvement trend
|
|
824
|
+
- Tie to business outcomes
|
|
825
|
+
|
|
826
|
+
**Key Metrics to Track:**
|
|
827
|
+
- Monthly infrastructure spend
|
|
828
|
+
- Cost per user
|
|
829
|
+
- Infrastructure cost as % of revenue
|
|
830
|
+
- Reserved instance coverage
|
|
831
|
+
- Cost allocation by team
|
|
832
|
+
|
|
833
|
+
---
|
|
834
|
+
|
|
835
|
+
## Integration with Other Skills
|
|
836
|
+
|
|
837
|
+
**This skill works with:**
|
|
838
|
+
- **engineering-management** - Headcount planning, team budgets
|
|
839
|
+
- **infrastructure-strategy** - Build vs buy decisions, long-term investment
|
|
840
|
+
- **engineering-operations-management** - On-call compensation, incident costs
|
|
841
|
+
- **technical-leadership** - Making investment decisions with data
|
|
842
|
+
|
|
843
|
+
**Technical skills for cost optimization:**
|
|
844
|
+
- **cloud-engineering** - Technical cost optimization, reserved instances
|
|
845
|
+
- **platform-engineering** - Building cost-efficient platforms
|
|
846
|
+
- **sre** - Efficiency through automation, reducing toil
|
|
847
|
+
|
|
848
|
+
---
|
|
849
|
+
|
|
850
|
+
**Remember:** Your job is to be a good steward of infrastructure budget while enabling the business to grow. Optimize for long-term value, not just short-term cost cuts. Transparency and data-driven decisions build trust with finance and leadership.
|