blockmine 1.21.0 → 1.23.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 +59 -0
- package/.claude/settings.local.json +36 -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 +102 -42
- package/CLAUDE.md +284 -0
- package/README.md +315 -71
- package/backend/docs/SECRETS_DOCUMENTATION.md +327 -0
- package/backend/jest.config.js +59 -0
- package/backend/package-lock.json +6801 -0
- package/backend/package.json +24 -4
- package/backend/prisma/migrations/20251026104609_add_websocket_api/migration.sql +33 -0
- package/backend/prisma/migrations/20251116111851_add_execution_trace/migration.sql +22 -0
- package/backend/prisma/migrations/20251120154914_add_panel_api_keys/migration.sql +21 -0
- package/backend/prisma/migrations/20251121110241_add_proxy_table/migration.sql +45 -0
- package/backend/prisma/migrations/migration_lock.toml +2 -2
- package/backend/prisma/schema.prisma +103 -1
- 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 +416 -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/ai/plugin-assistant-system-prompt.md +788 -0
- package/backend/src/api/middleware/auth.js +27 -0
- package/backend/src/api/middleware/botAccess.js +7 -3
- package/backend/src/api/middleware/panelApiAuth.js +135 -0
- package/backend/src/api/routes/aiAssistant.js +995 -0
- package/backend/src/api/routes/apiKeys.js +181 -0
- package/backend/src/api/routes/auth.js +669 -633
- package/backend/src/api/routes/botCommands.js +107 -0
- package/backend/src/api/routes/botGroups.js +165 -0
- package/backend/src/api/routes/botHistory.js +108 -0
- package/backend/src/api/routes/botPermissions.js +99 -0
- package/backend/src/api/routes/botStatus.js +36 -0
- package/backend/src/api/routes/botUsers.js +162 -0
- package/backend/src/api/routes/bots.js +2451 -2360
- package/backend/src/api/routes/eventGraphs.js +4 -1
- package/backend/src/api/routes/logs.js +13 -3
- package/backend/src/api/routes/panel.js +66 -66
- package/backend/src/api/routes/panelApiKeys.js +179 -0
- package/backend/src/api/routes/pluginIde.js +1715 -135
- package/backend/src/api/routes/plugins.js +376 -218
- package/backend/src/api/routes/proxies.js +130 -0
- package/backend/src/api/routes/search.js +4 -0
- package/backend/src/api/routes/servers.js +20 -3
- package/backend/src/api/routes/settings.js +5 -0
- package/backend/src/api/routes/system.js +174 -0
- package/backend/src/api/routes/traces.js +131 -0
- package/backend/src/config/debug.config.js +36 -0
- package/backend/src/container.js +82 -0
- package/backend/src/core/BotHistoryStore.js +180 -0
- package/backend/src/core/BotManager.js +149 -868
- package/backend/src/core/BotManager.old.js +1093 -0
- package/backend/src/core/BotProcess.js +850 -191
- package/backend/src/core/EventGraphManager.js +194 -198
- package/backend/src/core/GraphExecutionEngine.js +709 -57
- package/backend/src/core/MessageQueue.js +39 -12
- package/backend/src/core/NodeRegistry.js +37 -1134
- package/backend/src/core/PluginLoader.js +99 -5
- package/backend/src/core/PluginManager.js +126 -15
- package/backend/src/core/PrismaService.js +32 -0
- package/backend/src/core/TaskScheduler.js +1 -1
- 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 +202 -0
- package/backend/src/core/node-registries/arrays.js +155 -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 +201 -0
- package/backend/src/core/node-registries/flow.js +139 -0
- package/backend/src/core/node-registries/logic.js +62 -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 +187 -0
- package/backend/src/core/node-registries/time.js +113 -0
- package/backend/src/core/node-registries/type.js +25 -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/actions/create_command.js +189 -0
- package/backend/src/core/nodes/actions/delete_command.js +92 -0
- 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/actions/update_command.js +133 -0
- package/backend/src/core/nodes/arrays/get_next.js +35 -0
- package/backend/src/core/nodes/arrays/join.js +28 -0
- package/backend/src/core/nodes/{data_cast.js → data/cast.js} +10 -1
- 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/logic/not.js +22 -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/{string_starts_with.js → strings/starts_with.js} +1 -1
- package/backend/src/core/nodes/strings/to_lower.js +22 -0
- package/backend/src/core/nodes/strings/to_upper.js +22 -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/type/to_string.js +32 -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 +835 -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 +430 -0
- package/backend/src/core/services/DebugSessionManager.js +347 -0
- package/backend/src/core/services/GraphCollaborationManager.js +501 -0
- package/backend/src/core/services/MinecraftBotManager.js +259 -0
- package/backend/src/core/services/MinecraftViewerService.js +216 -0
- package/backend/src/core/services/ResourceMonitorService.js +90 -0
- package/backend/src/core/services/TelemetryService.js +124 -0
- package/backend/src/core/services/TraceCollectorService.js +545 -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/RuntimeCommandRegistry.js +116 -0
- package/backend/src/core/system/Transport.js +74 -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 +65 -0
- package/backend/src/real-time/panelNamespace.js +387 -0
- package/backend/src/real-time/presence.js +7 -2
- package/backend/src/real-time/socketHandler.js +400 -5
- 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 +21 -0
- package/backend/src/test-refactor.js +85 -0
- package/frontend/dist/assets/index-B1serztM.js +11210 -0
- package/frontend/dist/assets/index-t6K1u4OV.css +32 -0
- package/frontend/dist/index.html +2 -2
- package/frontend/package-lock.json +9437 -0
- package/frontend/package.json +8 -5
- package/package.json +3 -2
- package/screen/console.png +0 -0
- package/screen/dashboard.png +0 -0
- package/screen/graph_collabe.png +0 -0
- package/screen/graph_live_debug.png +0 -0
- package/screen/management_command.png +0 -0
- package/screen/node_debug_trace.png +0 -0
- package/screen/plugin_/320/276/320/261/320/267/320/276/321/200.png +0 -0
- package/screen/websocket.png +0 -0
- package/screen//320/275/320/260/321/201/321/202/321/200/320/276/320/271/320/272/320/270_/320/276/321/202/320/264/320/265/320/273/321/214/320/275/321/213/321/205_/320/272/320/276/320/274/320/260/320/275/320/264_/320/272/320/260/320/266/320/264/321/203_/320/272/320/276/320/274/320/260/320/275/320/273/320/264/321/203_/320/274/320/276/320/266/320/275/320/276_/320/275/320/260/321/201/321/202/321/200/320/260/320/270/320/262/320/260/321/202/321/214.png +0 -0
- package/screen//320/277/320/273/320/260/320/275/320/270/321/200/320/276/320/262/321/211/320/270/320/272_/320/274/320/276/320/266/320/275/320/276_/320/267/320/260/320/264/320/260/320/262/320/260/321/202/321/214_/320/264/320/265/320/271/321/201/321/202/320/262/320/270/321/217_/320/277/320/276_/320/262/321/200/320/265/320/274/320/265/320/275/320/270.png +0 -0
- 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
|
@@ -0,0 +1,675 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Cloud engineering guide covering AWS, Azure, GCP, and Oracle Cloud (OCI) services, multi-cloud strategies, serverless architectures, cloud-native patterns, cost optimization, cloud networking, security, migration strategies, and Well-Architected frameworks. Use when designing cloud infrastructure, implementing cloud services, optimizing cloud costs, or planning cloud migrations. (project)
|
|
3
|
+
---
|
|
4
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
5
|
+
🎯 SKILL ACTIVATED: cloud-engineering
|
|
6
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
# Cloud Engineering
|
|
10
|
+
|
|
11
|
+
Comprehensive guide for designing, building, and managing cloud infrastructure across AWS, Azure, GCP, and Oracle Cloud Infrastructure (OCI). This skill provides production-tested patterns for cloud-native architectures, multi-cloud strategies, serverless computing, and cloud optimization.
|
|
12
|
+
|
|
13
|
+
## When to Use This Skill
|
|
14
|
+
|
|
15
|
+
Automatically activates when working on:
|
|
16
|
+
- AWS, Azure, GCP, or Oracle Cloud (OCI) service selection and implementation
|
|
17
|
+
- Cloud architecture design and cloud-native patterns
|
|
18
|
+
- Multi-cloud and hybrid cloud strategies
|
|
19
|
+
- Serverless application development (Lambda, Cloud Functions, Azure Functions, OCI Functions)
|
|
20
|
+
- Cloud networking (VPC, VNet, Cloud VPC, OCI VCN)
|
|
21
|
+
- Cloud cost optimization and FinOps practices
|
|
22
|
+
- Cloud security and IAM configuration
|
|
23
|
+
- Cloud migration planning and execution
|
|
24
|
+
- Well-Architected Framework implementation
|
|
25
|
+
|
|
26
|
+
## Overview
|
|
27
|
+
|
|
28
|
+
**Purpose:** Enable teams to build robust, scalable cloud infrastructure leveraging the best services from AWS, Azure, and GCP while maintaining portability, cost efficiency, and operational excellence.
|
|
29
|
+
|
|
30
|
+
**Scope:**
|
|
31
|
+
- Cloud service selection and architecture (AWS, Azure, GCP, OCI)
|
|
32
|
+
- Multi-cloud and hybrid cloud strategies
|
|
33
|
+
- Serverless and event-driven architectures
|
|
34
|
+
- Cloud cost optimization and FinOps
|
|
35
|
+
- Cloud networking (VPC, VNet, VCN, peering, transit gateway, DNS)
|
|
36
|
+
- Cloud security and compliance (IAM, encryption, audit)
|
|
37
|
+
- Migration strategies and modernization
|
|
38
|
+
- Well-Architected frameworks and best practices
|
|
39
|
+
|
|
40
|
+
**This skill is for:**
|
|
41
|
+
- Cloud engineers designing cloud-native solutions
|
|
42
|
+
- Architects choosing between cloud services
|
|
43
|
+
- Teams implementing multi-cloud strategies
|
|
44
|
+
- Organizations migrating to cloud
|
|
45
|
+
- Engineers optimizing cloud costs
|
|
46
|
+
|
|
47
|
+
## Quick Start Checklist
|
|
48
|
+
|
|
49
|
+
When starting a cloud engineering task:
|
|
50
|
+
|
|
51
|
+
- [ ] Define requirements (scale, performance, compliance, budget)
|
|
52
|
+
- [ ] Choose cloud provider(s) based on needs
|
|
53
|
+
- [ ] Design for Well-Architected principles
|
|
54
|
+
- [ ] Plan networking topology (VPC, subnets, routing)
|
|
55
|
+
- [ ] Implement identity and access management
|
|
56
|
+
- [ ] Enable encryption at rest and in transit
|
|
57
|
+
- [ ] Set up cost tracking and budgets
|
|
58
|
+
- [ ] Implement monitoring and logging
|
|
59
|
+
- [ ] Design for high availability and disaster recovery
|
|
60
|
+
- [ ] Document architecture and operational runbooks
|
|
61
|
+
|
|
62
|
+
## Core Concepts
|
|
63
|
+
|
|
64
|
+
### 1. Cloud Service Models
|
|
65
|
+
|
|
66
|
+
**IaaS (Infrastructure as a Service):**
|
|
67
|
+
```
|
|
68
|
+
Control: ████████░░ High control, high responsibility
|
|
69
|
+
Examples: EC2, Azure VMs, Compute Engine
|
|
70
|
+
Use Case: Lift-and-shift, custom configurations
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**PaaS (Platform as a Service):**
|
|
74
|
+
```
|
|
75
|
+
Control: █████░░░░░ Balanced control and management
|
|
76
|
+
Examples: Elastic Beanstalk, App Service, App Engine
|
|
77
|
+
Use Case: Application deployment, reduced ops
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**FaaS (Function as a Service):**
|
|
81
|
+
```
|
|
82
|
+
Control: ██░░░░░░░░ Low control, minimal management
|
|
83
|
+
Examples: Lambda, Azure Functions, Cloud Functions
|
|
84
|
+
Use Case: Event-driven, serverless, pay-per-use
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
**Managed Services:**
|
|
88
|
+
```
|
|
89
|
+
Control: ███░░░░░░░ Vendor-managed operations
|
|
90
|
+
Examples: RDS, Cosmos DB, Cloud SQL
|
|
91
|
+
Use Case: Databases, analytics, managed ops
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### 2. Cloud Provider Comparison
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
┌─────────────────┬──────────────────┬──────────────────┬──────────────────┬──────────────────┐
|
|
98
|
+
│ Service │ AWS │ Azure │ GCP │ OCI │
|
|
99
|
+
├─────────────────┼──────────────────┼──────────────────┼──────────────────┼──────────────────┤
|
|
100
|
+
│ Compute │ EC2 │ Virtual Machines │ Compute Engine │ Compute Instance │
|
|
101
|
+
│ Containers │ ECS, EKS │ ACI, AKS │ GKE, Cloud Run │ OKE, Instances │
|
|
102
|
+
│ Serverless │ Lambda │ Functions │ Cloud Functions │ Functions │
|
|
103
|
+
│ Storage │ S3 │ Blob Storage │ Cloud Storage │ Object Storage │
|
|
104
|
+
│ Database │ RDS, DynamoDB │ SQL, Cosmos DB │ Cloud SQL, Spanner│ Autonomous DB │
|
|
105
|
+
│ Networking │ VPC │ Virtual Network │ VPC │ VCN │
|
|
106
|
+
│ DNS │ Route 53 │ DNS │ Cloud DNS │ DNS │
|
|
107
|
+
│ CDN │ CloudFront │ CDN │ Cloud CDN │ CDN │
|
|
108
|
+
│ IAM │ IAM │ Active Directory │ IAM │ IAM │
|
|
109
|
+
│ Monitoring │ CloudWatch │ Monitor │ Cloud Monitoring │ Monitoring │
|
|
110
|
+
└─────────────────┴──────────────────┴──────────────────┴──────────────────┴──────────────────┘
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### 3. Well-Architected Principles
|
|
114
|
+
|
|
115
|
+
**Five Pillars (AWS Framework):**
|
|
116
|
+
|
|
117
|
+
1. **Operational Excellence:**
|
|
118
|
+
- Automate operations
|
|
119
|
+
- Document and share knowledge
|
|
120
|
+
- Make frequent, small changes
|
|
121
|
+
- Anticipate failure and learn
|
|
122
|
+
|
|
123
|
+
2. **Security:**
|
|
124
|
+
- Implement strong identity foundation
|
|
125
|
+
- Enable traceability
|
|
126
|
+
- Apply security at all layers
|
|
127
|
+
- Protect data in transit and at rest
|
|
128
|
+
|
|
129
|
+
3. **Reliability:**
|
|
130
|
+
- Test recovery procedures
|
|
131
|
+
- Automatically recover from failure
|
|
132
|
+
- Scale horizontally
|
|
133
|
+
- Stop guessing capacity
|
|
134
|
+
|
|
135
|
+
4. **Performance Efficiency:**
|
|
136
|
+
- Use serverless architectures
|
|
137
|
+
- Experiment and innovate
|
|
138
|
+
- Go global in minutes
|
|
139
|
+
- Consider mechanical sympathy
|
|
140
|
+
|
|
141
|
+
5. **Cost Optimization:**
|
|
142
|
+
- Adopt consumption model
|
|
143
|
+
- Measure overall efficiency
|
|
144
|
+
- Eliminate undifferentiated work
|
|
145
|
+
- Analyze and attribute expenditure
|
|
146
|
+
|
|
147
|
+
### 4. Multi-Cloud Architecture
|
|
148
|
+
|
|
149
|
+
```
|
|
150
|
+
┌────────────────────────────────────────────────────┐
|
|
151
|
+
│ Application Layer (Multi-Cloud) │
|
|
152
|
+
│ (Containers, Kubernetes, Serverless) │
|
|
153
|
+
└────────────────────────────────────────────────────┘
|
|
154
|
+
│
|
|
155
|
+
┌────────────────────────────────────────────────────┐
|
|
156
|
+
│ Abstraction Layer (Terraform, Pulumi) │
|
|
157
|
+
│ (Service Mesh, API Gateway, CDN) │
|
|
158
|
+
└────────────────────────────────────────────────────┘
|
|
159
|
+
│
|
|
160
|
+
┌───────────────┼───────────────┐
|
|
161
|
+
│ │ │
|
|
162
|
+
┌─────▼────┐ ┌─────▼────┐ ┌─────▼────┐
|
|
163
|
+
│ AWS │ │ Azure │ │ GCP │
|
|
164
|
+
│ Services │ │ Services │ │ Services │
|
|
165
|
+
└──────────┘ └──────────┘ └──────────┘
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### 5. Serverless Architecture
|
|
169
|
+
|
|
170
|
+
**Event-Driven Pattern:**
|
|
171
|
+
```
|
|
172
|
+
Event Source → Event Router → Lambda Function → Destination
|
|
173
|
+
│ │ │ │
|
|
174
|
+
S3/API EventBridge Process Database
|
|
175
|
+
Upload Rules Transform SNS/SQS
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
**Benefits:**
|
|
179
|
+
- No server management
|
|
180
|
+
- Automatic scaling
|
|
181
|
+
- Pay per execution
|
|
182
|
+
- Built-in high availability
|
|
183
|
+
|
|
184
|
+
**Challenges:**
|
|
185
|
+
- Cold starts
|
|
186
|
+
- Vendor lock-in
|
|
187
|
+
- Debugging complexity
|
|
188
|
+
- Execution limits
|
|
189
|
+
|
|
190
|
+
## Common Patterns
|
|
191
|
+
|
|
192
|
+
### Pattern 1: Multi-Region Architecture
|
|
193
|
+
|
|
194
|
+
```yaml
|
|
195
|
+
# High availability across regions
|
|
196
|
+
Architecture:
|
|
197
|
+
Primary Region (us-east-1):
|
|
198
|
+
- Application tier (Auto Scaling)
|
|
199
|
+
- Database (RDS Multi-AZ)
|
|
200
|
+
- Cache (ElastiCache cluster)
|
|
201
|
+
- Load balancer (ALB)
|
|
202
|
+
|
|
203
|
+
Secondary Region (us-west-2):
|
|
204
|
+
- Read replicas (RDS)
|
|
205
|
+
- Standby infrastructure
|
|
206
|
+
- S3 cross-region replication
|
|
207
|
+
|
|
208
|
+
Global:
|
|
209
|
+
- Route 53 (DNS failover)
|
|
210
|
+
- CloudFront (CDN)
|
|
211
|
+
- DynamoDB Global Tables
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
**Implementation (Terraform):**
|
|
215
|
+
```hcl
|
|
216
|
+
# Multi-region deployment
|
|
217
|
+
provider "aws" {
|
|
218
|
+
alias = "primary"
|
|
219
|
+
region = "us-east-1"
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
provider "aws" {
|
|
223
|
+
alias = "secondary"
|
|
224
|
+
region = "us-west-2"
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
# Primary region resources
|
|
228
|
+
module "primary_region" {
|
|
229
|
+
source = "./modules/region"
|
|
230
|
+
providers = {
|
|
231
|
+
aws = aws.primary
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
environment = "production"
|
|
235
|
+
region_type = "primary"
|
|
236
|
+
enable_rds = true
|
|
237
|
+
enable_cache = true
|
|
238
|
+
multi_az = true
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
# Secondary region (DR)
|
|
242
|
+
module "secondary_region" {
|
|
243
|
+
source = "./modules/region"
|
|
244
|
+
providers = {
|
|
245
|
+
aws = aws.secondary
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
environment = "production"
|
|
249
|
+
region_type = "secondary"
|
|
250
|
+
enable_rds = false # Read replica
|
|
251
|
+
enable_cache = true
|
|
252
|
+
multi_az = false
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
# Global services
|
|
256
|
+
resource "aws_route53_health_check" "primary" {
|
|
257
|
+
fqdn = module.primary_region.load_balancer_dns
|
|
258
|
+
port = 443
|
|
259
|
+
type = "HTTPS"
|
|
260
|
+
resource_path = "/health"
|
|
261
|
+
failure_threshold = 3
|
|
262
|
+
request_interval = 30
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
resource "aws_route53_record" "failover_primary" {
|
|
266
|
+
zone_id = aws_route53_zone.main.zone_id
|
|
267
|
+
name = "api.example.com"
|
|
268
|
+
type = "A"
|
|
269
|
+
|
|
270
|
+
failover_routing_policy {
|
|
271
|
+
type = "PRIMARY"
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
set_identifier = "primary"
|
|
275
|
+
health_check_id = aws_route53_health_check.primary.id
|
|
276
|
+
|
|
277
|
+
alias {
|
|
278
|
+
name = module.primary_region.load_balancer_dns
|
|
279
|
+
zone_id = module.primary_region.load_balancer_zone_id
|
|
280
|
+
evaluate_target_health = true
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
### Pattern 2: Serverless API Architecture
|
|
286
|
+
|
|
287
|
+
```yaml
|
|
288
|
+
# API Gateway + Lambda + DynamoDB
|
|
289
|
+
apiVersion: v1
|
|
290
|
+
kind: ServerlessAPI
|
|
291
|
+
spec:
|
|
292
|
+
components:
|
|
293
|
+
apiGateway:
|
|
294
|
+
type: REST
|
|
295
|
+
authentication: Cognito
|
|
296
|
+
throttling:
|
|
297
|
+
rateLimit: 10000
|
|
298
|
+
burstLimit: 5000
|
|
299
|
+
|
|
300
|
+
functions:
|
|
301
|
+
- name: getUser
|
|
302
|
+
runtime: nodejs18.x
|
|
303
|
+
memory: 256
|
|
304
|
+
timeout: 10
|
|
305
|
+
triggers:
|
|
306
|
+
- http:
|
|
307
|
+
path: /users/{id}
|
|
308
|
+
method: GET
|
|
309
|
+
|
|
310
|
+
- name: createUser
|
|
311
|
+
runtime: nodejs18.x
|
|
312
|
+
memory: 512
|
|
313
|
+
timeout: 30
|
|
314
|
+
triggers:
|
|
315
|
+
- http:
|
|
316
|
+
path: /users
|
|
317
|
+
method: POST
|
|
318
|
+
|
|
319
|
+
database:
|
|
320
|
+
type: DynamoDB
|
|
321
|
+
tables:
|
|
322
|
+
- name: Users
|
|
323
|
+
partitionKey: userId
|
|
324
|
+
sortKey: timestamp
|
|
325
|
+
globalSecondaryIndexes:
|
|
326
|
+
- name: EmailIndex
|
|
327
|
+
partitionKey: email
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
**Implementation (AWS SAM):**
|
|
331
|
+
```yaml
|
|
332
|
+
# template.yaml
|
|
333
|
+
AWSTemplateFormatVersion: '2010-09-09'
|
|
334
|
+
Transform: AWS::Serverless-2016-10-31
|
|
335
|
+
|
|
336
|
+
Globals:
|
|
337
|
+
Function:
|
|
338
|
+
Runtime: nodejs18.x
|
|
339
|
+
Timeout: 30
|
|
340
|
+
MemorySize: 256
|
|
341
|
+
Environment:
|
|
342
|
+
Variables:
|
|
343
|
+
TABLE_NAME: !Ref UsersTable
|
|
344
|
+
REGION: !Ref AWS::Region
|
|
345
|
+
|
|
346
|
+
Resources:
|
|
347
|
+
ApiGateway:
|
|
348
|
+
Type: AWS::Serverless::Api
|
|
349
|
+
Properties:
|
|
350
|
+
StageName: prod
|
|
351
|
+
Auth:
|
|
352
|
+
DefaultAuthorizer: CognitoAuthorizer
|
|
353
|
+
Authorizers:
|
|
354
|
+
CognitoAuthorizer:
|
|
355
|
+
UserPoolArn: !GetAtt UserPool.Arn
|
|
356
|
+
|
|
357
|
+
Cors:
|
|
358
|
+
AllowMethods: "'GET,POST,PUT,DELETE'"
|
|
359
|
+
AllowHeaders: "'Content-Type,Authorization'"
|
|
360
|
+
AllowOrigin: "'*'"
|
|
361
|
+
|
|
362
|
+
MethodSettings:
|
|
363
|
+
- ResourcePath: '/*'
|
|
364
|
+
HttpMethod: '*'
|
|
365
|
+
ThrottlingRateLimit: 10000
|
|
366
|
+
ThrottlingBurstLimit: 5000
|
|
367
|
+
|
|
368
|
+
GetUserFunction:
|
|
369
|
+
Type: AWS::Serverless::Function
|
|
370
|
+
Properties:
|
|
371
|
+
CodeUri: functions/getUser/
|
|
372
|
+
Handler: index.handler
|
|
373
|
+
Events:
|
|
374
|
+
GetUser:
|
|
375
|
+
Type: Api
|
|
376
|
+
Properties:
|
|
377
|
+
RestApiId: !Ref ApiGateway
|
|
378
|
+
Path: /users/{id}
|
|
379
|
+
Method: GET
|
|
380
|
+
Policies:
|
|
381
|
+
- DynamoDBReadPolicy:
|
|
382
|
+
TableName: !Ref UsersTable
|
|
383
|
+
|
|
384
|
+
CreateUserFunction:
|
|
385
|
+
Type: AWS::Serverless::Function
|
|
386
|
+
Properties:
|
|
387
|
+
CodeUri: functions/createUser/
|
|
388
|
+
Handler: index.handler
|
|
389
|
+
MemorySize: 512
|
|
390
|
+
Events:
|
|
391
|
+
CreateUser:
|
|
392
|
+
Type: Api
|
|
393
|
+
Properties:
|
|
394
|
+
RestApiId: !Ref ApiGateway
|
|
395
|
+
Path: /users
|
|
396
|
+
Method: POST
|
|
397
|
+
Policies:
|
|
398
|
+
- DynamoDBCrudPolicy:
|
|
399
|
+
TableName: !Ref UsersTable
|
|
400
|
+
|
|
401
|
+
UsersTable:
|
|
402
|
+
Type: AWS::DynamoDB::Table
|
|
403
|
+
Properties:
|
|
404
|
+
TableName: Users
|
|
405
|
+
BillingMode: PAY_PER_REQUEST
|
|
406
|
+
AttributeDefinitions:
|
|
407
|
+
- AttributeName: userId
|
|
408
|
+
AttributeType: S
|
|
409
|
+
- AttributeName: email
|
|
410
|
+
AttributeType: S
|
|
411
|
+
KeySchema:
|
|
412
|
+
- AttributeName: userId
|
|
413
|
+
KeyType: HASH
|
|
414
|
+
GlobalSecondaryIndexes:
|
|
415
|
+
- IndexName: EmailIndex
|
|
416
|
+
KeySchema:
|
|
417
|
+
- AttributeName: email
|
|
418
|
+
KeyType: HASH
|
|
419
|
+
Projection:
|
|
420
|
+
ProjectionType: ALL
|
|
421
|
+
|
|
422
|
+
Outputs:
|
|
423
|
+
ApiEndpoint:
|
|
424
|
+
Description: API Gateway endpoint
|
|
425
|
+
Value: !Sub 'https://${ApiGateway}.execute-api.${AWS::Region}.amazonaws.com/prod'
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
### Pattern 3: Cloud-Native Networking
|
|
429
|
+
|
|
430
|
+
```hcl
|
|
431
|
+
# AWS VPC with best practices
|
|
432
|
+
module "vpc" {
|
|
433
|
+
source = "terraform-aws-modules/vpc/aws"
|
|
434
|
+
version = "~> 5.0"
|
|
435
|
+
|
|
436
|
+
name = "production-vpc"
|
|
437
|
+
cidr = "10.0.0.0/16"
|
|
438
|
+
|
|
439
|
+
# Multi-AZ deployment
|
|
440
|
+
azs = ["us-east-1a", "us-east-1b", "us-east-1c"]
|
|
441
|
+
private_subnets = ["10.0.1.0/24", "10.0.2.0/24", "10.0.3.0/24"]
|
|
442
|
+
public_subnets = ["10.0.101.0/24", "10.0.102.0/24", "10.0.103.0/24"]
|
|
443
|
+
database_subnets = ["10.0.201.0/24", "10.0.202.0/24", "10.0.203.0/24"]
|
|
444
|
+
|
|
445
|
+
# NAT Gateways for private subnets
|
|
446
|
+
enable_nat_gateway = true
|
|
447
|
+
single_nat_gateway = false # Multi-AZ NAT for HA
|
|
448
|
+
one_nat_gateway_per_az = true
|
|
449
|
+
|
|
450
|
+
# DNS
|
|
451
|
+
enable_dns_hostnames = true
|
|
452
|
+
enable_dns_support = true
|
|
453
|
+
|
|
454
|
+
# VPC Flow Logs for security
|
|
455
|
+
enable_flow_log = true
|
|
456
|
+
create_flow_log_cloudwatch_iam_role = true
|
|
457
|
+
create_flow_log_cloudwatch_log_group = true
|
|
458
|
+
|
|
459
|
+
# Tags for cost allocation
|
|
460
|
+
tags = {
|
|
461
|
+
Environment = "production"
|
|
462
|
+
ManagedBy = "terraform"
|
|
463
|
+
Team = "platform"
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
# VPC Peering for cross-VPC communication
|
|
468
|
+
resource "aws_vpc_peering_connection" "main" {
|
|
469
|
+
vpc_id = module.vpc.vpc_id
|
|
470
|
+
peer_vpc_id = var.peer_vpc_id
|
|
471
|
+
auto_accept = true
|
|
472
|
+
|
|
473
|
+
tags = {
|
|
474
|
+
Name = "production-to-shared-services"
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
# Transit Gateway for hub-and-spoke
|
|
479
|
+
resource "aws_ec2_transit_gateway" "main" {
|
|
480
|
+
description = "Central transit gateway"
|
|
481
|
+
|
|
482
|
+
default_route_table_association = "enable"
|
|
483
|
+
default_route_table_propagation = "enable"
|
|
484
|
+
dns_support = "enable"
|
|
485
|
+
vpn_ecmp_support = "enable"
|
|
486
|
+
|
|
487
|
+
tags = {
|
|
488
|
+
Name = "production-tgw"
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
# Private Link for AWS services
|
|
493
|
+
resource "aws_vpc_endpoint" "s3" {
|
|
494
|
+
vpc_id = module.vpc.vpc_id
|
|
495
|
+
service_name = "com.amazonaws.${var.region}.s3"
|
|
496
|
+
|
|
497
|
+
route_table_ids = module.vpc.private_route_table_ids
|
|
498
|
+
|
|
499
|
+
tags = {
|
|
500
|
+
Name = "s3-endpoint"
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
```
|
|
504
|
+
|
|
505
|
+
## Resource Files
|
|
506
|
+
|
|
507
|
+
For detailed guidance on specific topics, see:
|
|
508
|
+
|
|
509
|
+
### Cloud Platforms
|
|
510
|
+
- **[aws-patterns.md](resources/aws-patterns.md)** - Comprehensive AWS services guide (EC2, S3, RDS, Lambda, EKS), Well-Architected Framework, service selection
|
|
511
|
+
- **[azure-patterns.md](resources/azure-patterns.md)** - Azure services guide (VMs, Blob Storage, AKS, Functions), Azure best practices
|
|
512
|
+
- **[gcp-patterns.md](resources/gcp-patterns.md)** - GCP services guide (Compute Engine, Cloud Storage, GKE, Cloud Functions), Google Cloud best practices
|
|
513
|
+
- **[oci-patterns.md](resources/oci-patterns.md)** - Oracle Cloud Infrastructure guide (Compute Instances, Object Storage, Autonomous Database, OKE), OCI best practices
|
|
514
|
+
|
|
515
|
+
### Cloud Strategies
|
|
516
|
+
- **[multi-cloud-strategies.md](resources/multi-cloud-strategies.md)** - Multi-cloud vs single cloud, abstraction layers, service selection, trade-offs
|
|
517
|
+
- **[cloud-cost-optimization.md](resources/cloud-cost-optimization.md)** - Reserved instances, spot instances, right-sizing, tagging, FinOps principles
|
|
518
|
+
- **[migration-strategies.md](resources/migration-strategies.md)** - 6 R's of migration, migration patterns, modernization, assessment tools
|
|
519
|
+
|
|
520
|
+
### Networking & Security
|
|
521
|
+
- **[cloud-networking.md](resources/cloud-networking.md)** - VPC design, peering, transit gateway, private link, DNS, CDN configuration
|
|
522
|
+
- **[cloud-security.md](resources/cloud-security.md)** - IAM best practices, encryption (KMS), compliance (HIPAA, PCI-DSS), security controls
|
|
523
|
+
- **[cleared-cloud-environments.md](resources/cleared-cloud-environments.md)** - Government cloud regions (AWS GovCloud, Azure Government, GCP Gov, OCI Gov), air-gapped deployments, FedRAMP, CMMC, classified environments
|
|
524
|
+
- **[cloud-security-tools.md](resources/cloud-security-tools.md)** - CSPM tools (Trend Micro Cloud One, Prisma Cloud, Wiz, Aqua), native cloud security (Security Hub, Defender, SCC), tool comparison
|
|
525
|
+
|
|
526
|
+
### Architecture Patterns
|
|
527
|
+
- **[well-architected-frameworks.md](resources/well-architected-frameworks.md)** - AWS/Azure/GCP Well-Architected pillars, design principles, review process
|
|
528
|
+
- **[serverless-patterns.md](resources/serverless-patterns.md)** - Lambda/Cloud Functions, API Gateway, event-driven architecture, FaaS best practices
|
|
529
|
+
|
|
530
|
+
## Best Practices
|
|
531
|
+
|
|
532
|
+
### Cloud Architecture
|
|
533
|
+
|
|
534
|
+
1. **Design for Failure:**
|
|
535
|
+
- Assume everything fails
|
|
536
|
+
- Use multiple availability zones
|
|
537
|
+
- Implement health checks and auto-recovery
|
|
538
|
+
- Test failure scenarios regularly
|
|
539
|
+
|
|
540
|
+
2. **Security First:**
|
|
541
|
+
- Implement least privilege access
|
|
542
|
+
- Enable encryption everywhere
|
|
543
|
+
- Use managed identity services
|
|
544
|
+
- Regular security audits and updates
|
|
545
|
+
|
|
546
|
+
3. **Cost Management:**
|
|
547
|
+
- Tag all resources for cost allocation
|
|
548
|
+
- Use auto-scaling to match demand
|
|
549
|
+
- Leverage reserved capacity for predictable workloads
|
|
550
|
+
- Regular cost reviews and optimization
|
|
551
|
+
|
|
552
|
+
### Service Selection
|
|
553
|
+
|
|
554
|
+
1. **Managed Services First:**
|
|
555
|
+
- Prefer managed services over self-managed
|
|
556
|
+
- Reduces operational overhead
|
|
557
|
+
- Built-in high availability and backup
|
|
558
|
+
- Auto-patching and updates
|
|
559
|
+
|
|
560
|
+
2. **Right-Size Resources:**
|
|
561
|
+
- Start small, scale as needed
|
|
562
|
+
- Monitor and adjust based on metrics
|
|
563
|
+
- Use burstable instances for variable workloads
|
|
564
|
+
- Consider serverless for intermittent loads
|
|
565
|
+
|
|
566
|
+
3. **Regional Selection:**
|
|
567
|
+
- Deploy close to users (latency)
|
|
568
|
+
- Consider data residency requirements
|
|
569
|
+
- Check service availability by region
|
|
570
|
+
- Plan for disaster recovery region
|
|
571
|
+
|
|
572
|
+
### Multi-Cloud Strategy
|
|
573
|
+
|
|
574
|
+
1. **Avoid Lock-In:**
|
|
575
|
+
- Use containers and Kubernetes
|
|
576
|
+
- Abstract cloud-specific services
|
|
577
|
+
- Infrastructure as Code (portable)
|
|
578
|
+
- Standard protocols and APIs
|
|
579
|
+
|
|
580
|
+
2. **Choose Best-of-Breed:**
|
|
581
|
+
- AWS for breadth of services
|
|
582
|
+
- Azure for Microsoft integration
|
|
583
|
+
- GCP for data analytics and ML
|
|
584
|
+
- OCI for Oracle Database and cost efficiency
|
|
585
|
+
- Hybrid for on-premises integration
|
|
586
|
+
|
|
587
|
+
3. **Operational Complexity:**
|
|
588
|
+
- Balance benefits vs complexity
|
|
589
|
+
- Unified monitoring and logging
|
|
590
|
+
- Centralized identity management
|
|
591
|
+
- Consistent security policies
|
|
592
|
+
|
|
593
|
+
## Anti-Patterns to Avoid
|
|
594
|
+
|
|
595
|
+
❌ **Single region deployment** - No disaster recovery capability
|
|
596
|
+
❌ **No auto-scaling** - Manual scaling is error-prone and slow
|
|
597
|
+
❌ **Ignoring costs** - Leads to cloud bill shock
|
|
598
|
+
❌ **Over-provisioning** - Wastes money on unused resources
|
|
599
|
+
❌ **No tagging strategy** - Impossible to track costs and ownership
|
|
600
|
+
❌ **Tight cloud coupling** - Creates vendor lock-in
|
|
601
|
+
❌ **Manual deployments** - Error-prone and not repeatable
|
|
602
|
+
❌ **No monitoring** - Can't detect or resolve issues
|
|
603
|
+
❌ **Weak IAM policies** - Security vulnerabilities
|
|
604
|
+
❌ **No backup strategy** - Risk of data loss
|
|
605
|
+
|
|
606
|
+
## Common Tasks
|
|
607
|
+
|
|
608
|
+
### Task: Deploy Serverless Application
|
|
609
|
+
|
|
610
|
+
1. Design API endpoints and data model
|
|
611
|
+
2. Create Lambda functions with proper IAM roles
|
|
612
|
+
3. Set up API Gateway with authentication
|
|
613
|
+
4. Configure DynamoDB tables with indexes
|
|
614
|
+
5. Implement CloudWatch monitoring and alarms
|
|
615
|
+
6. Set up CI/CD pipeline for deployments
|
|
616
|
+
7. Test with load testing tools
|
|
617
|
+
8. Document API and operational runbooks
|
|
618
|
+
|
|
619
|
+
### Task: Implement Multi-Region Architecture
|
|
620
|
+
|
|
621
|
+
1. Choose primary and secondary regions
|
|
622
|
+
2. Design global networking (Route 53, CDN)
|
|
623
|
+
3. Set up VPC in each region
|
|
624
|
+
4. Implement database replication
|
|
625
|
+
5. Configure load balancers and auto-scaling
|
|
626
|
+
6. Set up health checks and failover
|
|
627
|
+
7. Test failover scenarios
|
|
628
|
+
8. Document disaster recovery procedures
|
|
629
|
+
|
|
630
|
+
### Task: Optimize Cloud Costs
|
|
631
|
+
|
|
632
|
+
1. Enable cost allocation tags
|
|
633
|
+
2. Analyze current spending patterns
|
|
634
|
+
3. Identify unused or underutilized resources
|
|
635
|
+
4. Right-size instances based on metrics
|
|
636
|
+
5. Purchase reserved capacity for steady workloads
|
|
637
|
+
6. Implement auto-scaling for variable loads
|
|
638
|
+
7. Use spot instances for fault-tolerant workloads
|
|
639
|
+
8. Set up cost budgets and alerts
|
|
640
|
+
|
|
641
|
+
## Integration Points
|
|
642
|
+
|
|
643
|
+
This skill integrates with:
|
|
644
|
+
- **platform-engineering**: Kubernetes on cloud (EKS, AKS, GKE), infrastructure automation
|
|
645
|
+
- **devsecops**: Cloud security scanning, IAM policies, compliance
|
|
646
|
+
- **sre**: Cloud monitoring, incident response, reliability engineering
|
|
647
|
+
- **release-engineering**: Cloud CI/CD services, artifact storage
|
|
648
|
+
- **systems-engineering**: Cloud networking, performance tuning, troubleshooting
|
|
649
|
+
|
|
650
|
+
## Triggers and Activation
|
|
651
|
+
|
|
652
|
+
This skill activates when you:
|
|
653
|
+
- Work with cloud service providers (AWS, Azure, GCP, OCI)
|
|
654
|
+
- Design cloud-native architectures
|
|
655
|
+
- Implement serverless applications
|
|
656
|
+
- Optimize cloud costs
|
|
657
|
+
- Plan cloud migrations
|
|
658
|
+
- Configure cloud networking or security
|
|
659
|
+
- Use cloud-specific IaC (CloudFormation, ARM templates, Terraform)
|
|
660
|
+
|
|
661
|
+
## Next Steps
|
|
662
|
+
|
|
663
|
+
For your specific task:
|
|
664
|
+
1. Identify which cloud provider best fits your needs
|
|
665
|
+
2. Review the relevant patterns and Well-Architected principles
|
|
666
|
+
3. Choose appropriate services and architecture
|
|
667
|
+
4. Implement with Infrastructure as Code
|
|
668
|
+
5. Test in development environment first
|
|
669
|
+
6. Monitor costs and performance continuously
|
|
670
|
+
|
|
671
|
+
---
|
|
672
|
+
|
|
673
|
+
**Total Resources:** 11 detailed guides covering all aspects of cloud engineering
|
|
674
|
+
**Pattern Library:** 125+ production-tested cloud patterns across AWS, Azure, GCP, and OCI
|
|
675
|
+
**Maintained by:** Cloud Engineering team based on real-world production experience
|