blockmine 1.20.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 +28 -3
- 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 -39
- 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 -850
- package/backend/src/core/BreakLoopSignal.js +8 -0
- package/backend/src/core/EventGraphManager.js +280 -193
- package/backend/src/core/GraphExecutionEngine.js +321 -928
- package/backend/src/core/MessageQueue.js +27 -6
- package/backend/src/core/NodeRegistry.js +37 -991
- 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/actions/bot_look_at.js +36 -0
- package/backend/src/core/nodes/actions/bot_set_variable.js +32 -0
- package/backend/src/core/nodes/actions/http_request.js +98 -0
- package/backend/src/core/nodes/actions/send_log.js +28 -0
- package/backend/src/core/nodes/actions/send_message.js +32 -0
- package/backend/src/core/nodes/actions/send_websocket_response.js +33 -0
- package/backend/src/core/nodes/arrays/add_element.js +23 -0
- package/backend/src/core/nodes/arrays/contains.js +40 -0
- package/backend/src/core/nodes/arrays/find_index.js +23 -0
- package/backend/src/core/nodes/arrays/get_by_index.js +23 -0
- package/backend/src/core/nodes/arrays/get_next.js +35 -0
- package/backend/src/core/nodes/arrays/get_random_element.js +32 -0
- package/backend/src/core/nodes/arrays/remove_by_index.js +30 -0
- package/backend/src/core/nodes/bot/get_position.js +20 -0
- package/backend/src/core/nodes/data/array_literal.js +31 -0
- package/backend/src/core/nodes/data/boolean_literal.js +21 -0
- package/backend/src/core/nodes/data/cast.js +42 -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_argument.js +23 -0
- package/backend/src/core/nodes/data/get_bot_look.js +14 -0
- package/backend/src/core/nodes/data/get_entity_field.js +18 -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_server_players.js +18 -0
- package/backend/src/core/nodes/data/get_user_field.js +40 -0
- package/backend/src/core/nodes/data/get_variable.js +23 -0
- package/backend/src/core/nodes/data/length.js +25 -0
- package/backend/src/core/nodes/data/make_object.js +31 -0
- package/backend/src/core/nodes/data/number_literal.js +21 -0
- package/backend/src/core/nodes/data/string_literal.js +34 -0
- package/backend/src/core/nodes/data/type_check.js +53 -0
- package/backend/src/core/nodes/debug/log.js +16 -0
- package/backend/src/core/nodes/flow/branch.js +15 -0
- package/backend/src/core/nodes/flow/break.js +14 -0
- package/backend/src/core/nodes/flow/delay.js +43 -0
- package/backend/src/core/nodes/flow/for_each.js +39 -0
- package/backend/src/core/nodes/flow/sequence.js +16 -0
- package/backend/src/core/nodes/flow/switch.js +47 -0
- package/backend/src/core/nodes/flow/while.js +64 -0
- package/backend/src/core/nodes/logic/__tests__/compare.test.js +83 -0
- package/backend/src/core/nodes/logic/compare.js +33 -0
- package/backend/src/core/nodes/logic/operation.js +35 -0
- package/backend/src/core/nodes/math/__tests__/operation.test.js +65 -0
- package/backend/src/core/nodes/math/operation.js +31 -0
- package/backend/src/core/nodes/math/random_number.js +43 -0
- package/backend/src/core/nodes/objects/create.js +40 -0
- package/backend/src/core/nodes/objects/delete.js +26 -0
- package/backend/src/core/nodes/objects/get.js +23 -0
- package/backend/src/core/nodes/objects/has_key.js +30 -0
- package/backend/src/core/nodes/objects/set.js +27 -0
- package/backend/src/core/nodes/strings/__tests__/concat.test.js +89 -0
- package/backend/src/core/nodes/strings/concat.js +27 -0
- package/backend/src/core/nodes/strings/contains.js +41 -0
- package/backend/src/core/nodes/strings/ends_with.js +43 -0
- package/backend/src/core/nodes/strings/equals.js +36 -0
- package/backend/src/core/nodes/strings/length.js +36 -0
- package/backend/src/core/nodes/strings/matches.js +39 -0
- package/backend/src/core/nodes/strings/split.js +37 -0
- package/backend/src/core/nodes/strings/starts_with.js +43 -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/users/check_blacklist.js +37 -0
- package/backend/src/core/nodes/users/get_groups.js +36 -0
- package/backend/src/core/nodes/users/get_permissions.js +36 -0
- package/backend/src/core/nodes/users/set_blacklist.js +37 -0
- 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 +1 -5
- package/package.json +2 -1
- package/frontend/dist/assets/index-BFd7YoAj.css +0 -1
- package/frontend/dist/assets/index-CMMutadc.js +0 -8352
- package/nul +0 -0
|
@@ -0,0 +1,499 @@
|
|
|
1
|
+
# Cost Architecture
|
|
2
|
+
|
|
3
|
+
Guide to designing cost-effective infrastructure with FinOps principles, TCO analysis, and optimization strategies.
|
|
4
|
+
|
|
5
|
+
## Cost-Aware Design Principles
|
|
6
|
+
|
|
7
|
+
### 1. Right-Sizing
|
|
8
|
+
|
|
9
|
+
**Don't overprovision:**
|
|
10
|
+
```
|
|
11
|
+
Actual usage: 2 vCPU, 4 GB RAM
|
|
12
|
+
❌ Provisioned: 8 vCPU, 32 GB RAM ($500/month)
|
|
13
|
+
✅ Right-sized: 4 vCPU, 8 GB RAM ($200/month)
|
|
14
|
+
Savings: 60%
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
### 2. Use Appropriate Storage Tiers
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
Hot data (frequent access): S3 Standard $0.023/GB
|
|
21
|
+
Warm data (weekly access): S3 IA $0.0125/GB (46% cheaper)
|
|
22
|
+
Cold data (monthly access): S3 Glacier $0.004/GB (83% cheaper)
|
|
23
|
+
Archive (yearly access): S3 Deep Archive $0.00099/GB (96% cheaper)
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### 3. Auto-Scaling
|
|
27
|
+
|
|
28
|
+
**Scale down when not needed:**
|
|
29
|
+
```
|
|
30
|
+
Business hours (8am-6pm): 20 servers
|
|
31
|
+
Off hours (6pm-8am): 5 servers
|
|
32
|
+
|
|
33
|
+
Cost with no scaling: 20 × 24h × $0.10 = $48/day
|
|
34
|
+
Cost with scaling: (20 × 10h + 5 × 14h) × $0.10 = $27/day
|
|
35
|
+
Savings: 44%
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### 4. Serverless for Variable Workloads
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
Traditional (always-on server): $100/month (even with 0 requests)
|
|
42
|
+
Serverless (pay-per-invocation): $0-$100/month (scales with usage)
|
|
43
|
+
|
|
44
|
+
Good for: Batch jobs, webhooks, sporadic APIs
|
|
45
|
+
Bad for: High-throughput, predictable load
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Total Cost of Ownership (TCO)
|
|
51
|
+
|
|
52
|
+
### TCO Components
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
Infrastructure Costs:
|
|
56
|
+
- Compute (EC2, ECS, Lambda)
|
|
57
|
+
- Storage (S3, EBS)
|
|
58
|
+
- Network (data transfer, load balancers)
|
|
59
|
+
- Database (RDS, DynamoDB)
|
|
60
|
+
|
|
61
|
+
Operational Costs:
|
|
62
|
+
- Engineer time (management, debugging)
|
|
63
|
+
- Monitoring/observability tools
|
|
64
|
+
- Backup/DR infrastructure
|
|
65
|
+
- Support contracts
|
|
66
|
+
|
|
67
|
+
Hidden Costs:
|
|
68
|
+
- Data transfer (inter-region, internet egress)
|
|
69
|
+
- API calls (S3 PUT/GET)
|
|
70
|
+
- Snapshot storage
|
|
71
|
+
- DNS queries
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### TCO Example
|
|
75
|
+
|
|
76
|
+
**Option A: Self-Managed Kubernetes on EC2**
|
|
77
|
+
```
|
|
78
|
+
Infrastructure:
|
|
79
|
+
- 10 × m5.xlarge nodes: $1,400/month
|
|
80
|
+
- EBS volumes: $200/month
|
|
81
|
+
- Load balancer: $50/month
|
|
82
|
+
- Data transfer: $300/month
|
|
83
|
+
Total: $1,950/month
|
|
84
|
+
|
|
85
|
+
Operational:
|
|
86
|
+
- 0.5 engineer (management): $7,500/month
|
|
87
|
+
- Monitoring (Datadog): $400/month
|
|
88
|
+
Total: $7,900/month
|
|
89
|
+
|
|
90
|
+
TCO: $9,850/month
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
**Option B: Managed EKS + Fargate**
|
|
94
|
+
```
|
|
95
|
+
Infrastructure:
|
|
96
|
+
- EKS cluster: $75/month
|
|
97
|
+
- Fargate vCPU/memory: $2,100/month
|
|
98
|
+
- Load balancer: $50/month
|
|
99
|
+
- Data transfer: $300/month
|
|
100
|
+
Total: $2,525/month
|
|
101
|
+
|
|
102
|
+
Operational:
|
|
103
|
+
- 0.2 engineer (less management): $3,000/month
|
|
104
|
+
- Monitoring: $400/month
|
|
105
|
+
Total: $3,400/month
|
|
106
|
+
|
|
107
|
+
TCO: $5,925/month (40% cheaper despite higher infrastructure cost)
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## Cost Optimization Strategies
|
|
113
|
+
|
|
114
|
+
### Reserved Instances & Savings Plans
|
|
115
|
+
|
|
116
|
+
**Baseline (always-running) workloads:**
|
|
117
|
+
```
|
|
118
|
+
On-Demand: $0.192/hour × 730 hours = $140/month
|
|
119
|
+
Reserved (1yr): $0.123/hour × 730 hours = $90/month (36% savings)
|
|
120
|
+
Reserved (3yr): $0.082/hour × 730 hours = $60/month (57% savings)
|
|
121
|
+
|
|
122
|
+
Recommendation:
|
|
123
|
+
- Cover 60-70% of baseline with Reserved
|
|
124
|
+
- Use On-Demand for burst capacity
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
**Savings Plans (more flexible than Reserved):**
|
|
128
|
+
```
|
|
129
|
+
Commit to $500/month compute spend
|
|
130
|
+
→ Get ~30-40% discount on all compute (EC2, Lambda, Fargate)
|
|
131
|
+
→ Applies automatically to any matching usage
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
### Spot Instances
|
|
137
|
+
|
|
138
|
+
**Non-critical, fault-tolerant workloads:**
|
|
139
|
+
```
|
|
140
|
+
On-Demand: $0.192/hour
|
|
141
|
+
Spot: $0.058/hour (70% discount)
|
|
142
|
+
|
|
143
|
+
Good for:
|
|
144
|
+
- Batch processing
|
|
145
|
+
- CI/CD workers
|
|
146
|
+
- Development environments
|
|
147
|
+
- Stateless web servers (with ASG)
|
|
148
|
+
|
|
149
|
+
Bad for:
|
|
150
|
+
- Databases
|
|
151
|
+
- Stateful applications
|
|
152
|
+
- Jobs that can't tolerate interruption
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
```yaml
|
|
156
|
+
# EKS with Spot instances
|
|
157
|
+
apiVersion: karpenter.sh/v1alpha5
|
|
158
|
+
kind: Provisioner
|
|
159
|
+
metadata:
|
|
160
|
+
name: default
|
|
161
|
+
spec:
|
|
162
|
+
requirements:
|
|
163
|
+
- key: karpenter.sh/capacity-type
|
|
164
|
+
operator: In
|
|
165
|
+
values: ["spot", "on-demand"]
|
|
166
|
+
limits:
|
|
167
|
+
resources:
|
|
168
|
+
cpu: 1000
|
|
169
|
+
memory: 1000Gi
|
|
170
|
+
ttlSecondsAfterEmpty: 30 # Terminate idle nodes
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
### Data Transfer Costs
|
|
176
|
+
|
|
177
|
+
**Expensive and often overlooked:**
|
|
178
|
+
|
|
179
|
+
```
|
|
180
|
+
AWS Inter-Region Transfer:
|
|
181
|
+
us-east-1 → eu-west-1: $0.02/GB
|
|
182
|
+
|
|
183
|
+
AWS to Internet:
|
|
184
|
+
First 10 TB: $0.09/GB
|
|
185
|
+
Next 40 TB: $0.085/GB
|
|
186
|
+
|
|
187
|
+
Example: 10 TB/month egress
|
|
188
|
+
= 10,000 GB × $0.09 = $900/month
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
**Optimization:**
|
|
192
|
+
1. **Use CloudFront CDN** - Reduces origin egress
|
|
193
|
+
2. **Cache aggressively** - Fewer origin requests
|
|
194
|
+
3. **VPC Peering** - Free in same region
|
|
195
|
+
4. **Compress data** - Gzip reduces volume 60-80%
|
|
196
|
+
|
|
197
|
+
```typescript
|
|
198
|
+
// Enable compression
|
|
199
|
+
app.use(compression({
|
|
200
|
+
level: 6, // Balance speed vs compression ratio
|
|
201
|
+
threshold: 1024, // Only compress > 1KB
|
|
202
|
+
}));
|
|
203
|
+
|
|
204
|
+
// Before: 100 KB response × 1M requests = 100 GB egress = $9
|
|
205
|
+
// After: 30 KB response × 1M requests = 30 GB egress = $2.70
|
|
206
|
+
// Savings: 70%
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
### Database Cost Optimization
|
|
212
|
+
|
|
213
|
+
**RDS vs Self-Managed:**
|
|
214
|
+
```
|
|
215
|
+
RDS db.r5.xlarge (managed):
|
|
216
|
+
- Instance: $360/month
|
|
217
|
+
- Storage (1TB SSD): $115/month
|
|
218
|
+
- Backups (500GB): $50/month
|
|
219
|
+
- Multi-AZ: +100% = $1,050/month
|
|
220
|
+
Total: $1,050/month
|
|
221
|
+
|
|
222
|
+
Self-Managed on EC2:
|
|
223
|
+
- r5.xlarge: $140/month
|
|
224
|
+
- EBS (1TB SSD): $115/month
|
|
225
|
+
- Snapshot backups: $25/month
|
|
226
|
+
- Replica: $280/month
|
|
227
|
+
- Engineer time (0.3 FTE): $4,500/month
|
|
228
|
+
Total: $5,060/month
|
|
229
|
+
|
|
230
|
+
RDS is 79% cheaper including operational costs!
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
**DynamoDB On-Demand vs Provisioned:**
|
|
234
|
+
```
|
|
235
|
+
Predictable workload (1M reads, 100K writes daily):
|
|
236
|
+
On-Demand:
|
|
237
|
+
- Reads: 1M × $0.25/million = $0.25/day = $7.50/month
|
|
238
|
+
- Writes: 100K × $1.25/million = $0.125/day = $3.75/month
|
|
239
|
+
Total: $11.25/month
|
|
240
|
+
|
|
241
|
+
Provisioned:
|
|
242
|
+
- Reads: 12 RCU × $0.00013/hour × 730 = $1.14/month
|
|
243
|
+
- Writes: 2 WCU × $0.00065/hour × 730 = $0.95/month
|
|
244
|
+
Total: $2.09/month
|
|
245
|
+
|
|
246
|
+
Savings: 81% with provisioned (if predictable)
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
### Storage Lifecycle Policies
|
|
252
|
+
|
|
253
|
+
```terraform
|
|
254
|
+
# S3 intelligent tiering
|
|
255
|
+
resource "aws_s3_bucket_lifecycle_configuration" "logs" {
|
|
256
|
+
bucket = aws_s3_bucket.logs.id
|
|
257
|
+
|
|
258
|
+
rule {
|
|
259
|
+
id = "archive-old-logs"
|
|
260
|
+
status = "Enabled"
|
|
261
|
+
|
|
262
|
+
# After 30 days: move to Infrequent Access (50% cheaper)
|
|
263
|
+
transition {
|
|
264
|
+
days = 30
|
|
265
|
+
storage_class = "STANDARD_IA"
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
# After 90 days: move to Glacier (83% cheaper)
|
|
269
|
+
transition {
|
|
270
|
+
days = 90
|
|
271
|
+
storage_class = "GLACIER"
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
# After 365 days: delete
|
|
275
|
+
expiration {
|
|
276
|
+
days = 365
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
# Cost Impact:
|
|
282
|
+
# 100 GB stored for 1 year
|
|
283
|
+
# All Standard: 100 × 12 × $0.023 = $276/year
|
|
284
|
+
# With lifecycle: ~$50/year (82% savings)
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
|
|
289
|
+
## Cost Monitoring & Alerting
|
|
290
|
+
|
|
291
|
+
### Cost Anomaly Detection
|
|
292
|
+
|
|
293
|
+
```terraform
|
|
294
|
+
# AWS Cost Anomaly Detection
|
|
295
|
+
resource "aws_ce_anomaly_monitor" "main" {
|
|
296
|
+
name = "cost-anomaly-monitor"
|
|
297
|
+
monitor_type = "DIMENSIONAL"
|
|
298
|
+
monitor_dimension = "SERVICE"
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
resource "aws_ce_anomaly_subscription" "alert" {
|
|
302
|
+
name = "cost-anomaly-alert"
|
|
303
|
+
frequency = "DAILY"
|
|
304
|
+
|
|
305
|
+
monitor_arn_list = [
|
|
306
|
+
aws_ce_anomaly_monitor.main.arn
|
|
307
|
+
]
|
|
308
|
+
|
|
309
|
+
subscriber {
|
|
310
|
+
type = "EMAIL"
|
|
311
|
+
address = "finance@example.com"
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
threshold_expression {
|
|
315
|
+
dimension {
|
|
316
|
+
key = "ANOMALY_TOTAL_IMPACT_ABSOLUTE"
|
|
317
|
+
values = ["500"] # Alert if anomaly > $500
|
|
318
|
+
match_options = ["GREATER_THAN_OR_EQUAL"]
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
### Cost Allocation Tags
|
|
325
|
+
|
|
326
|
+
```terraform
|
|
327
|
+
# Tag all resources for cost tracking
|
|
328
|
+
resource "aws_instance" "api" {
|
|
329
|
+
tags = {
|
|
330
|
+
Environment = "production"
|
|
331
|
+
Team = "backend"
|
|
332
|
+
Service = "api"
|
|
333
|
+
CostCenter = "engineering"
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
# Generate cost reports by tag
|
|
338
|
+
# Cost by Team, Cost by Service, etc.
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
---
|
|
342
|
+
|
|
343
|
+
## FinOps Practices
|
|
344
|
+
|
|
345
|
+
### 1. Showback & Chargeback
|
|
346
|
+
|
|
347
|
+
**Showback (awareness):**
|
|
348
|
+
```
|
|
349
|
+
Monthly report:
|
|
350
|
+
- Team Backend: $15,000 (60%)
|
|
351
|
+
- Team Frontend: $5,000 (20%)
|
|
352
|
+
- Team Data: $5,000 (20%)
|
|
353
|
+
|
|
354
|
+
Share costs to build awareness
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
**Chargeback (accountability):**
|
|
358
|
+
```
|
|
359
|
+
Each team billed for their infrastructure
|
|
360
|
+
→ Incentivizes optimization
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
### 2. Unit Economics
|
|
364
|
+
|
|
365
|
+
**Cost per user/request:**
|
|
366
|
+
```
|
|
367
|
+
Monthly costs: $50,000
|
|
368
|
+
Monthly active users: 100,000
|
|
369
|
+
Cost per user: $0.50
|
|
370
|
+
|
|
371
|
+
Track over time:
|
|
372
|
+
Jan: $0.50/user
|
|
373
|
+
Feb: $0.45/user (10% reduction via optimization)
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
### 3. Cost-Performance Ratio
|
|
377
|
+
|
|
378
|
+
```
|
|
379
|
+
CPU utilization vs cost optimization
|
|
380
|
+
|
|
381
|
+
High utilization (85%): Cost-efficient, but risky (no headroom)
|
|
382
|
+
Medium utilization (70%): Balanced (recommended)
|
|
383
|
+
Low utilization (30%): Wasteful
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
---
|
|
387
|
+
|
|
388
|
+
## Architecture Cost Comparisons
|
|
389
|
+
|
|
390
|
+
### Monolith vs Microservices
|
|
391
|
+
|
|
392
|
+
**Monolith:**
|
|
393
|
+
```
|
|
394
|
+
Infrastructure: $2,000/month (simple, fewer services)
|
|
395
|
+
Operations: $5,000/month (0.5 engineer)
|
|
396
|
+
Total: $7,000/month
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
**Microservices (15 services):**
|
|
400
|
+
```
|
|
401
|
+
Infrastructure: $6,000/month (more services, load balancers)
|
|
402
|
+
Operations: $10,000/month (1 engineer - more complexity)
|
|
403
|
+
Total: $16,000/month
|
|
404
|
+
|
|
405
|
+
Trade-off: 2.3x cost, but better scalability/flexibility
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
### Multi-Region Cost Impact
|
|
409
|
+
|
|
410
|
+
**Single Region:**
|
|
411
|
+
```
|
|
412
|
+
Compute: $5,000
|
|
413
|
+
Database: $1,000
|
|
414
|
+
Total: $6,000/month
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
**Multi-Region (Active-Passive):**
|
|
418
|
+
```
|
|
419
|
+
Primary compute: $5,000
|
|
420
|
+
Primary DB: $1,000
|
|
421
|
+
Secondary compute (standby): $1,000
|
|
422
|
+
Secondary DB (replica): $500
|
|
423
|
+
Data replication: $500
|
|
424
|
+
Total: $8,000/month (+33%)
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
**Multi-Region (Active-Active):**
|
|
428
|
+
```
|
|
429
|
+
Primary compute: $5,000
|
|
430
|
+
Primary DB: $1,000
|
|
431
|
+
Secondary compute: $5,000
|
|
432
|
+
Secondary DB: $1,000
|
|
433
|
+
Data transfer: $1,500
|
|
434
|
+
Total: $13,500/month (+125%)
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
---
|
|
438
|
+
|
|
439
|
+
## Cost Optimization Checklist
|
|
440
|
+
|
|
441
|
+
**Compute:**
|
|
442
|
+
- [ ] Right-sized instances (not over-provisioned)
|
|
443
|
+
- [ ] Auto-scaling enabled (scale down off-hours)
|
|
444
|
+
- [ ] Reserved instances for baseline (30-60% savings)
|
|
445
|
+
- [ ] Spot instances for batch workloads (70% savings)
|
|
446
|
+
- [ ] Terminate unused resources
|
|
447
|
+
|
|
448
|
+
**Storage:**
|
|
449
|
+
- [ ] Lifecycle policies (archive old data)
|
|
450
|
+
- [ ] Delete unused snapshots
|
|
451
|
+
- [ ] Use appropriate storage tier (S3 IA, Glacier)
|
|
452
|
+
- [ ] Enable compression
|
|
453
|
+
|
|
454
|
+
**Database:**
|
|
455
|
+
- [ ] Right-sized instance
|
|
456
|
+
- [ ] Read replicas only if needed
|
|
457
|
+
- [ ] Delete old backups beyond retention
|
|
458
|
+
- [ ] Use Aurora Serverless v2 for variable load
|
|
459
|
+
|
|
460
|
+
**Network:**
|
|
461
|
+
- [ ] Use CloudFront CDN (reduce egress)
|
|
462
|
+
- [ ] VPC peering instead of internet (free intra-region)
|
|
463
|
+
- [ ] Compress responses
|
|
464
|
+
- [ ] Minimize inter-region transfer
|
|
465
|
+
|
|
466
|
+
**Monitoring:**
|
|
467
|
+
- [ ] Cost anomaly detection enabled
|
|
468
|
+
- [ ] Budget alerts configured
|
|
469
|
+
- [ ] Tag all resources
|
|
470
|
+
- [ ] Monthly cost review meetings
|
|
471
|
+
|
|
472
|
+
---
|
|
473
|
+
|
|
474
|
+
## Best Practices
|
|
475
|
+
|
|
476
|
+
✅ **Tag everything** - Enable cost allocation
|
|
477
|
+
✅ **Monitor continuously** - Anomaly detection
|
|
478
|
+
✅ **Right-size** - Don't overprovision
|
|
479
|
+
✅ **Auto-scale** - Scale down when idle
|
|
480
|
+
✅ **Use managed services** - Lower operational cost
|
|
481
|
+
✅ **Reserve baseline** - 30-60% discount
|
|
482
|
+
✅ **Delete unused** - Old snapshots, volumes
|
|
483
|
+
✅ **Review monthly** - Optimize continuously
|
|
484
|
+
|
|
485
|
+
## Anti-Patterns
|
|
486
|
+
|
|
487
|
+
❌ **Always-on instances** - No auto-scaling
|
|
488
|
+
❌ **No tagging** - Can't track costs
|
|
489
|
+
❌ **Over-provisioning** - "Just in case" sizing
|
|
490
|
+
❌ **Ignoring data transfer** - Huge surprise bills
|
|
491
|
+
❌ **No cost ownership** - Teams unaware of spend
|
|
492
|
+
❌ **Premature optimization** - Optimizing before measuring
|
|
493
|
+
|
|
494
|
+
---
|
|
495
|
+
|
|
496
|
+
**Related Resources:**
|
|
497
|
+
- capacity-planning.md - Right-sizing infrastructure
|
|
498
|
+
- multi-region-design.md - Multi-region cost implications
|
|
499
|
+
- disaster-recovery.md - DR cost tiers
|