blockmine 1.24.0 → 1.25.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/CHANGELOG.md +32 -0
- package/README.en.md +427 -0
- package/README.md +40 -0
- package/backend/cli.js +1 -1
- package/backend/src/ai/plugin-assistant-system-prompt.md +664 -5
- package/backend/src/api/routes/bots.js +13 -0
- package/backend/src/api/routes/servers.js +14 -2
- package/backend/src/core/BotProcess.js +98 -2
- package/backend/src/core/PluginLoader.js +83 -3
- package/backend/src/core/PluginManager.js +75 -5
- package/backend/src/core/services/BotLifecycleService.js +186 -2
- package/backend/src/server.js +11 -1
- package/frontend/dist/assets/browser-ponyfill-DN7pwmHT.js +2 -0
- package/frontend/dist/assets/index-LSy71uwm.js +11261 -0
- package/frontend/dist/assets/index-SfhKxI4-.css +32 -0
- package/frontend/dist/flags/en.svg +32 -0
- package/frontend/dist/flags/ru.svg +5 -0
- package/frontend/dist/index.html +2 -2
- package/frontend/dist/locales/en/admin.json +100 -0
- package/frontend/dist/locales/en/api-keys.json +58 -0
- package/frontend/dist/locales/en/bots.json +110 -0
- package/frontend/dist/locales/en/common.json +47 -0
- package/frontend/dist/locales/en/configuration.json +22 -0
- package/frontend/dist/locales/en/console.json +10 -0
- package/frontend/dist/locales/en/dashboard.json +85 -0
- package/frontend/dist/locales/en/dialogs.json +70 -0
- package/frontend/dist/locales/en/event-graphs.json +50 -0
- package/frontend/dist/locales/en/graph-store.json +70 -0
- package/frontend/dist/locales/en/login.json +34 -0
- package/frontend/dist/locales/en/management.json +114 -0
- package/frontend/dist/locales/en/minecraft-viewer.json +27 -0
- package/frontend/dist/locales/en/nodes.json +1077 -0
- package/frontend/dist/locales/en/permissions.json +50 -0
- package/frontend/dist/locales/en/plugin-detail.json +49 -0
- package/frontend/dist/locales/en/plugins.json +110 -0
- package/frontend/dist/locales/en/proxies.json +81 -0
- package/frontend/dist/locales/en/servers.json +39 -0
- package/frontend/dist/locales/en/setup.json +17 -0
- package/frontend/dist/locales/en/sidebar.json +27 -0
- package/frontend/dist/locales/en/tasks.json +62 -0
- package/frontend/dist/locales/en/visual-editor.json +219 -0
- package/frontend/dist/locales/en/websocket.json +86 -0
- package/frontend/dist/locales/ru/admin.json +100 -0
- package/frontend/dist/locales/ru/api-keys.json +58 -0
- package/frontend/dist/locales/ru/bots.json +110 -0
- package/frontend/dist/locales/ru/common.json +49 -0
- package/frontend/dist/locales/ru/configuration.json +22 -0
- package/frontend/dist/locales/ru/console.json +10 -0
- package/frontend/dist/locales/ru/dashboard.json +85 -0
- package/frontend/dist/locales/ru/dialogs.json +70 -0
- package/frontend/dist/locales/ru/event-graphs.json +50 -0
- package/frontend/dist/locales/ru/graph-store.json +70 -0
- package/frontend/dist/locales/ru/login.json +34 -0
- package/frontend/dist/locales/ru/management.json +114 -0
- package/frontend/dist/locales/ru/minecraft-viewer.json +27 -0
- package/frontend/dist/locales/ru/nodes.json +1077 -0
- package/frontend/dist/locales/ru/permissions.json +50 -0
- package/frontend/dist/locales/ru/plugin-detail.json +49 -0
- package/frontend/dist/locales/ru/plugins.json +110 -0
- package/frontend/dist/locales/ru/proxies.json +81 -0
- package/frontend/dist/locales/ru/servers.json +39 -0
- package/frontend/dist/locales/ru/setup.json +17 -0
- package/frontend/dist/locales/ru/sidebar.json +27 -0
- package/frontend/dist/locales/ru/tasks.json +62 -0
- package/frontend/dist/locales/ru/visual-editor.json +221 -0
- package/frontend/dist/locales/ru/websocket.json +86 -0
- package/frontend/dist/monacoeditorwork/css.worker.bundle.js +7 -7
- package/frontend/dist/monacoeditorwork/html.worker.bundle.js +7 -7
- package/frontend/dist/monacoeditorwork/json.worker.bundle.js +7 -7
- package/frontend/dist/monacoeditorwork/ts.worker.bundle.js +3 -3
- package/frontend/package.json +4 -0
- package/package.json +1 -1
- package/screen/3dviewer.png +0 -0
- 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/language_selector.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/.claude/agents/README.md +0 -469
- package/.claude/agents/auth-route-debugger.md +0 -118
- package/.claude/agents/auth-route-tester.md +0 -93
- package/.claude/agents/auto-error-resolver.md +0 -97
- package/.claude/agents/build-optimizer.md +0 -236
- package/.claude/agents/code-architect.md +0 -34
- package/.claude/agents/code-architecture-reviewer.md +0 -83
- package/.claude/agents/code-explorer.md +0 -51
- package/.claude/agents/code-refactor-master.md +0 -94
- package/.claude/agents/code-reviewer.md +0 -46
- package/.claude/agents/cost-optimizer.md +0 -134
- package/.claude/agents/deployment-orchestrator.md +0 -113
- package/.claude/agents/documentation-architect.md +0 -82
- package/.claude/agents/frontend-error-fixer.md +0 -77
- package/.claude/agents/iac-code-generator.md +0 -71
- package/.claude/agents/incident-responder.md +0 -346
- package/.claude/agents/infrastructure-architect.md +0 -31
- package/.claude/agents/kubernetes-specialist.md +0 -56
- package/.claude/agents/migration-planner.md +0 -181
- package/.claude/agents/network-architect.md +0 -196
- package/.claude/agents/plan-reviewer.md +0 -52
- package/.claude/agents/refactor-planner.md +0 -63
- package/.claude/agents/security-scanner.md +0 -102
- package/.claude/agents/web-research-specialist.md +0 -78
- package/.claude/commands/cost-analysis.md +0 -315
- package/.claude/commands/dev-docs-update.md +0 -55
- package/.claude/commands/dev-docs.md +0 -51
- package/.claude/commands/feature-dev.md +0 -125
- package/.claude/commands/incident-debug.md +0 -247
- package/.claude/commands/infra-plan.md +0 -81
- package/.claude/commands/migration-plan.md +0 -478
- package/.claude/commands/route-research-for-testing.md +0 -37
- package/.claude/commands/security-review.md +0 -66
- package/.claude/hooks/CONFIG.md +0 -448
- package/.claude/hooks/README.md +0 -163
- package/.claude/hooks/SKILL_ACTIVATION_COMPLETE.md +0 -226
- package/.claude/hooks/WINDOWS_HOOKS_README.md +0 -151
- package/.claude/hooks/add-skill-activation-banners.ts +0 -132
- package/.claude/hooks/comprehensive-skill-test.ts +0 -1315
- package/.claude/hooks/error-handling-reminder.sh +0 -12
- package/.claude/hooks/error-handling-reminder.ts +0 -222
- package/.claude/hooks/k8s-manifest-validator.sh +0 -56
- package/.claude/hooks/package-lock.json +0 -556
- package/.claude/hooks/package.json +0 -16
- package/.claude/hooks/post-tool-use-tracker.ps1 +0 -174
- package/.claude/hooks/post-tool-use-tracker.sh +0 -183
- package/.claude/hooks/security-policy-check.sh +0 -247
- package/.claude/hooks/skill-activation-prompt.ps1 +0 -10
- package/.claude/hooks/skill-activation-prompt.sh +0 -10
- package/.claude/hooks/skill-activation-prompt.ts +0 -141
- package/.claude/hooks/stop-build-check-enhanced.sh +0 -130
- package/.claude/hooks/terraform-validator.sh +0 -53
- package/.claude/hooks/test-input.json +0 -7
- package/.claude/hooks/test-skill-activation.ts +0 -427
- package/.claude/hooks/trigger-build-resolver.sh +0 -79
- package/.claude/hooks/tsc-check.sh +0 -173
- package/.claude/hooks/tsconfig.json +0 -19
- package/.claude/settings.json +0 -59
- package/.claude/settings.local.json +0 -67
- package/.claude/skills/README.md +0 -507
- package/.claude/skills/api-engineering/SKILL.md +0 -63
- package/.claude/skills/api-engineering/resources/api-versioning.md +0 -88
- package/.claude/skills/api-engineering/resources/graphql-patterns.md +0 -106
- package/.claude/skills/api-engineering/resources/rate-limiting.md +0 -118
- package/.claude/skills/api-engineering/resources/rest-api-design.md +0 -105
- package/.claude/skills/backend-dev-guidelines/SKILL.md +0 -306
- package/.claude/skills/backend-dev-guidelines/resources/architecture-overview.md +0 -451
- package/.claude/skills/backend-dev-guidelines/resources/async-and-errors.md +0 -307
- package/.claude/skills/backend-dev-guidelines/resources/complete-examples.md +0 -638
- package/.claude/skills/backend-dev-guidelines/resources/configuration.md +0 -275
- package/.claude/skills/backend-dev-guidelines/resources/database-patterns.md +0 -224
- package/.claude/skills/backend-dev-guidelines/resources/middleware-guide.md +0 -213
- package/.claude/skills/backend-dev-guidelines/resources/routing-and-controllers.md +0 -756
- package/.claude/skills/backend-dev-guidelines/resources/sentry-and-monitoring.md +0 -336
- package/.claude/skills/backend-dev-guidelines/resources/services-and-repositories.md +0 -789
- package/.claude/skills/backend-dev-guidelines/resources/testing-guide.md +0 -235
- package/.claude/skills/backend-dev-guidelines/resources/validation-patterns.md +0 -754
- package/.claude/skills/budget-and-cost-management/SKILL.md +0 -850
- package/.claude/skills/build-engineering/SKILL.md +0 -431
- package/.claude/skills/build-engineering/resources/artifact-repositories.md +0 -72
- package/.claude/skills/build-engineering/resources/build-caching.md +0 -96
- package/.claude/skills/build-engineering/resources/build-pipelines.md +0 -105
- package/.claude/skills/build-engineering/resources/build-security.md +0 -95
- package/.claude/skills/build-engineering/resources/build-systems.md +0 -389
- package/.claude/skills/build-engineering/resources/compilation-optimization.md +0 -201
- package/.claude/skills/build-engineering/resources/dependency-management.md +0 -73
- package/.claude/skills/build-engineering/resources/monorepo-builds.md +0 -110
- package/.claude/skills/build-engineering/resources/performance-optimization.md +0 -113
- package/.claude/skills/build-engineering/resources/reproducible-builds.md +0 -82
- package/.claude/skills/cloud-engineering/SKILL.md +0 -675
- package/.claude/skills/cloud-engineering/resources/aws-patterns.md +0 -742
- package/.claude/skills/cloud-engineering/resources/azure-patterns.md +0 -714
- package/.claude/skills/cloud-engineering/resources/cleared-cloud-environments.md +0 -987
- package/.claude/skills/cloud-engineering/resources/cloud-cost-optimization.md +0 -757
- package/.claude/skills/cloud-engineering/resources/cloud-networking.md +0 -1058
- package/.claude/skills/cloud-engineering/resources/cloud-security-tools.md +0 -1530
- package/.claude/skills/cloud-engineering/resources/cloud-security.md +0 -990
- package/.claude/skills/cloud-engineering/resources/gcp-patterns.md +0 -758
- package/.claude/skills/cloud-engineering/resources/migration-strategies.md +0 -820
- package/.claude/skills/cloud-engineering/resources/multi-cloud-strategies.md +0 -670
- package/.claude/skills/cloud-engineering/resources/oci-patterns.md +0 -1198
- package/.claude/skills/cloud-engineering/resources/serverless-patterns.md +0 -795
- package/.claude/skills/cloud-engineering/resources/well-architected-frameworks.md +0 -966
- package/.claude/skills/cybersecurity/SKILL.md +0 -409
- package/.claude/skills/cybersecurity/resources/security-architecture.md +0 -266
- package/.claude/skills/database-engineering/SKILL.md +0 -61
- package/.claude/skills/database-engineering/resources/backup-and-recovery.md +0 -72
- package/.claude/skills/database-engineering/resources/database-replication.md +0 -63
- package/.claude/skills/database-engineering/resources/postgresql-fundamentals.md +0 -70
- package/.claude/skills/database-engineering/resources/query-optimization.md +0 -68
- package/.claude/skills/devsecops/SKILL.md +0 -374
- package/.claude/skills/devsecops/resources/ci-cd-security.md +0 -204
- package/.claude/skills/devsecops/resources/compliance-automation.md +0 -530
- package/.claude/skills/devsecops/resources/compliance-frameworks.md +0 -2322
- package/.claude/skills/devsecops/resources/container-security.md +0 -915
- package/.claude/skills/devsecops/resources/cspm-integration.md +0 -1440
- package/.claude/skills/devsecops/resources/policy-enforcement.md +0 -619
- package/.claude/skills/devsecops/resources/secrets-management.md +0 -755
- package/.claude/skills/devsecops/resources/security-monitoring.md +0 -146
- package/.claude/skills/devsecops/resources/security-scanning.md +0 -887
- package/.claude/skills/devsecops/resources/security-testing.md +0 -203
- package/.claude/skills/devsecops/resources/supply-chain-security.md +0 -518
- package/.claude/skills/devsecops/resources/vulnerability-management.md +0 -481
- package/.claude/skills/devsecops/resources/zero-trust-architecture.md +0 -177
- package/.claude/skills/documentation-as-code/SKILL.md +0 -323
- package/.claude/skills/documentation-as-code/resources/api-documentation.md +0 -90
- package/.claude/skills/documentation-as-code/resources/changelog-management.md +0 -79
- package/.claude/skills/documentation-as-code/resources/diagram-generation.md +0 -44
- package/.claude/skills/documentation-as-code/resources/docs-as-code-workflow.md +0 -99
- package/.claude/skills/documentation-as-code/resources/documentation-automation.md +0 -68
- package/.claude/skills/documentation-as-code/resources/documentation-sites.md +0 -79
- package/.claude/skills/documentation-as-code/resources/markdown-best-practices.md +0 -162
- package/.claude/skills/documentation-as-code/resources/openapi-specification.md +0 -77
- package/.claude/skills/documentation-as-code/resources/readme-engineering.md +0 -60
- package/.claude/skills/documentation-as-code/resources/technical-writing-guide.md +0 -202
- package/.claude/skills/engineering-management/SKILL.md +0 -356
- package/.claude/skills/engineering-management/resources/career-ladders.md +0 -609
- package/.claude/skills/engineering-management/resources/hiring-and-assessment.md +0 -555
- package/.claude/skills/engineering-management/resources/one-on-one-guides.md +0 -609
- package/.claude/skills/engineering-management/resources/resource-planning.md +0 -557
- package/.claude/skills/engineering-management/resources/team-organization-patterns.md +0 -491
- package/.claude/skills/engineering-management/resources/technical-interviews.md +0 -474
- package/.claude/skills/engineering-operations-management/SKILL.md +0 -817
- package/.claude/skills/error-tracking/SKILL.md +0 -379
- package/.claude/skills/frontend-design/SKILL.md +0 -42
- package/.claude/skills/frontend-dev-guidelines/SKILL.md +0 -403
- package/.claude/skills/frontend-dev-guidelines/resources/common-patterns.md +0 -331
- package/.claude/skills/frontend-dev-guidelines/resources/complete-examples.md +0 -872
- package/.claude/skills/frontend-dev-guidelines/resources/component-patterns.md +0 -502
- package/.claude/skills/frontend-dev-guidelines/resources/data-fetching.md +0 -767
- package/.claude/skills/frontend-dev-guidelines/resources/file-organization.md +0 -502
- package/.claude/skills/frontend-dev-guidelines/resources/loading-and-error-states.md +0 -501
- package/.claude/skills/frontend-dev-guidelines/resources/performance.md +0 -406
- package/.claude/skills/frontend-dev-guidelines/resources/routing-guide.md +0 -364
- package/.claude/skills/frontend-dev-guidelines/resources/styling-guide.md +0 -428
- package/.claude/skills/frontend-dev-guidelines/resources/typescript-standards.md +0 -418
- package/.claude/skills/general-it-engineering/SKILL.md +0 -393
- package/.claude/skills/general-it-engineering/resources/asset-management.md +0 -712
- package/.claude/skills/general-it-engineering/resources/automation-orchestration.md +0 -817
- package/.claude/skills/general-it-engineering/resources/business-continuity.md +0 -786
- package/.claude/skills/general-it-engineering/resources/change-management.md +0 -715
- package/.claude/skills/general-it-engineering/resources/enterprise-monitoring.md +0 -729
- package/.claude/skills/general-it-engineering/resources/help-desk-operations.md +0 -738
- package/.claude/skills/general-it-engineering/resources/incident-service-management.md +0 -834
- package/.claude/skills/general-it-engineering/resources/it-governance.md +0 -753
- package/.claude/skills/general-it-engineering/resources/itil-framework.md +0 -503
- package/.claude/skills/general-it-engineering/resources/service-management.md +0 -669
- package/.claude/skills/infrastructure-architecture/SKILL.md +0 -328
- package/.claude/skills/infrastructure-architecture/resources/architecture-decision-records.md +0 -505
- package/.claude/skills/infrastructure-architecture/resources/architecture-patterns.md +0 -528
- package/.claude/skills/infrastructure-architecture/resources/capacity-planning.md +0 -453
- package/.claude/skills/infrastructure-architecture/resources/cleared-environment-architecture.md +0 -773
- package/.claude/skills/infrastructure-architecture/resources/cost-architecture.md +0 -499
- package/.claude/skills/infrastructure-architecture/resources/data-architecture.md +0 -501
- package/.claude/skills/infrastructure-architecture/resources/disaster-recovery.md +0 -535
- package/.claude/skills/infrastructure-architecture/resources/migration-architecture.md +0 -512
- package/.claude/skills/infrastructure-architecture/resources/multi-region-design.md +0 -608
- package/.claude/skills/infrastructure-architecture/resources/reference-architectures.md +0 -562
- package/.claude/skills/infrastructure-architecture/resources/security-architecture.md +0 -538
- package/.claude/skills/infrastructure-architecture/resources/system-design-principles.md +0 -489
- package/.claude/skills/infrastructure-architecture/resources/workload-classification.md +0 -1000
- package/.claude/skills/infrastructure-strategy/SKILL.md +0 -924
- package/.claude/skills/network-engineering/SKILL.md +0 -385
- package/.claude/skills/network-engineering/resources/dns-management.md +0 -738
- package/.claude/skills/network-engineering/resources/load-balancing.md +0 -820
- package/.claude/skills/network-engineering/resources/network-architecture.md +0 -546
- package/.claude/skills/network-engineering/resources/network-security.md +0 -921
- package/.claude/skills/network-engineering/resources/network-troubleshooting.md +0 -749
- package/.claude/skills/network-engineering/resources/routing-switching.md +0 -373
- package/.claude/skills/network-engineering/resources/sdn-networking.md +0 -695
- package/.claude/skills/network-engineering/resources/service-mesh-networking.md +0 -777
- package/.claude/skills/network-engineering/resources/tcp-ip-protocols.md +0 -444
- package/.claude/skills/network-engineering/resources/vpn-connectivity.md +0 -672
- package/.claude/skills/node-development/SKILL.md +0 -317
- package/.claude/skills/observability-engineering/SKILL.md +0 -101
- package/.claude/skills/observability-engineering/resources/apm-tools.md +0 -97
- package/.claude/skills/observability-engineering/resources/correlation-strategies.md +0 -87
- package/.claude/skills/observability-engineering/resources/distributed-tracing.md +0 -98
- package/.claude/skills/observability-engineering/resources/logs-aggregation.md +0 -118
- package/.claude/skills/observability-engineering/resources/observability-cost-optimization.md +0 -141
- package/.claude/skills/observability-engineering/resources/opentelemetry.md +0 -110
- package/.claude/skills/platform-engineering/SKILL.md +0 -555
- package/.claude/skills/platform-engineering/resources/architecture-overview.md +0 -600
- package/.claude/skills/platform-engineering/resources/container-orchestration.md +0 -916
- package/.claude/skills/platform-engineering/resources/cost-optimization.md +0 -634
- package/.claude/skills/platform-engineering/resources/developer-platforms.md +0 -670
- package/.claude/skills/platform-engineering/resources/gitops-automation.md +0 -650
- package/.claude/skills/platform-engineering/resources/infrastructure-as-code.md +0 -778
- package/.claude/skills/platform-engineering/resources/infrastructure-standards.md +0 -708
- package/.claude/skills/platform-engineering/resources/multi-tenancy.md +0 -602
- package/.claude/skills/platform-engineering/resources/platform-security.md +0 -711
- package/.claude/skills/platform-engineering/resources/resource-management.md +0 -592
- package/.claude/skills/platform-engineering/resources/service-mesh.md +0 -628
- package/.claude/skills/release-engineering/SKILL.md +0 -393
- package/.claude/skills/release-engineering/resources/artifact-management.md +0 -108
- package/.claude/skills/release-engineering/resources/build-optimization.md +0 -84
- package/.claude/skills/release-engineering/resources/ci-cd-pipelines.md +0 -411
- package/.claude/skills/release-engineering/resources/deployment-strategies.md +0 -197
- package/.claude/skills/release-engineering/resources/pipeline-security.md +0 -62
- package/.claude/skills/release-engineering/resources/progressive-delivery.md +0 -83
- package/.claude/skills/release-engineering/resources/release-automation.md +0 -68
- package/.claude/skills/release-engineering/resources/release-orchestration.md +0 -77
- package/.claude/skills/release-engineering/resources/rollback-strategies.md +0 -66
- package/.claude/skills/release-engineering/resources/versioning-strategies.md +0 -59
- package/.claude/skills/route-tester/SKILL.md +0 -392
- package/.claude/skills/skill-developer/ADVANCED.md +0 -197
- package/.claude/skills/skill-developer/HOOK_MECHANISMS.md +0 -306
- package/.claude/skills/skill-developer/PATTERNS_LIBRARY.md +0 -152
- package/.claude/skills/skill-developer/SKILL.md +0 -430
- package/.claude/skills/skill-developer/SKILL_RULES_REFERENCE.md +0 -315
- package/.claude/skills/skill-developer/TRIGGER_TYPES.md +0 -305
- package/.claude/skills/skill-developer/TROUBLESHOOTING.md +0 -514
- package/.claude/skills/skill-rules.json +0 -2989
- package/.claude/skills/sre/SKILL.md +0 -464
- package/.claude/skills/sre/resources/alerting-best-practices.md +0 -282
- package/.claude/skills/sre/resources/capacity-planning.md +0 -226
- package/.claude/skills/sre/resources/chaos-engineering.md +0 -193
- package/.claude/skills/sre/resources/disaster-recovery.md +0 -232
- package/.claude/skills/sre/resources/incident-management.md +0 -436
- package/.claude/skills/sre/resources/observability-stack.md +0 -240
- package/.claude/skills/sre/resources/on-call-runbooks.md +0 -167
- package/.claude/skills/sre/resources/performance-optimization.md +0 -108
- package/.claude/skills/sre/resources/reliability-patterns.md +0 -183
- package/.claude/skills/sre/resources/slo-sli-sla.md +0 -464
- package/.claude/skills/sre/resources/toil-reduction.md +0 -145
- package/.claude/skills/systems-engineering/SKILL.md +0 -648
- package/.claude/skills/systems-engineering/resources/automation-patterns.md +0 -771
- package/.claude/skills/systems-engineering/resources/configuration-management.md +0 -998
- package/.claude/skills/systems-engineering/resources/linux-administration.md +0 -672
- package/.claude/skills/systems-engineering/resources/networking-fundamentals.md +0 -982
- package/.claude/skills/systems-engineering/resources/performance-tuning.md +0 -871
- package/.claude/skills/systems-engineering/resources/powershell-scripting.md +0 -482
- package/.claude/skills/systems-engineering/resources/security-hardening.md +0 -739
- package/.claude/skills/systems-engineering/resources/shell-scripting.md +0 -915
- package/.claude/skills/systems-engineering/resources/storage-management.md +0 -628
- package/.claude/skills/systems-engineering/resources/system-monitoring.md +0 -787
- package/.claude/skills/systems-engineering/resources/troubleshooting-guide.md +0 -753
- package/.claude/skills/systems-engineering/resources/windows-administration.md +0 -738
- package/.claude/skills/technical-leadership/SKILL.md +0 -728
- package/backend/docs/SECRETS_DOCUMENTATION.md +0 -327
- package/frontend/dist/assets/index-BC-NbKXi.css +0 -32
- package/frontend/dist/assets/index-DqJXZMHY.js +0 -11266
|
@@ -1,670 +0,0 @@
|
|
|
1
|
-
# Multi-Cloud Strategies
|
|
2
|
-
|
|
3
|
-
Guide to designing and implementing multi-cloud architectures, including service abstraction, workload distribution, vendor lock-in mitigation, and operational strategies across AWS, Azure, and GCP.
|
|
4
|
-
|
|
5
|
-
## Table of Contents
|
|
6
|
-
|
|
7
|
-
- [Multi-Cloud vs Single Cloud](#multi-cloud-vs-single-cloud)
|
|
8
|
-
- [Multi-Cloud Patterns](#multi-cloud-patterns)
|
|
9
|
-
- [Abstraction Layers](#abstraction-layers)
|
|
10
|
-
- [Service Selection](#service-selection)
|
|
11
|
-
- [Networking and Connectivity](#networking-and-connectivity)
|
|
12
|
-
- [Data Management](#data-management)
|
|
13
|
-
- [Security and Compliance](#security-and-compliance)
|
|
14
|
-
- [Operational Considerations](#operational-considerations)
|
|
15
|
-
- [Trade-Offs](#trade-offs)
|
|
16
|
-
- [Best Practices](#best-practices)
|
|
17
|
-
|
|
18
|
-
## Multi-Cloud vs Single Cloud
|
|
19
|
-
|
|
20
|
-
### When to Choose Multi-Cloud
|
|
21
|
-
|
|
22
|
-
**Valid Reasons:**
|
|
23
|
-
```
|
|
24
|
-
✅ Regulatory requirements (data residency)
|
|
25
|
-
✅ Avoid vendor lock-in for critical workloads
|
|
26
|
-
✅ Leverage best-of-breed services
|
|
27
|
-
✅ Geographic distribution requirements
|
|
28
|
-
✅ Merger/acquisition integration
|
|
29
|
-
✅ Disaster recovery across cloud providers
|
|
30
|
-
✅ Specific cloud expertise in different teams
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
**Invalid Reasons:**
|
|
34
|
-
```
|
|
35
|
-
❌ "Just in case" without clear business need
|
|
36
|
-
❌ Complexity for complexity's sake
|
|
37
|
-
❌ Attempting to be "cloud-agnostic" everywhere
|
|
38
|
-
❌ Negotiation leverage alone
|
|
39
|
-
❌ Developer preference without business case
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
### Cost-Benefit Analysis
|
|
43
|
-
|
|
44
|
-
**Multi-Cloud Benefits:**
|
|
45
|
-
- Risk mitigation (provider outages)
|
|
46
|
-
- Negotiation leverage
|
|
47
|
-
- Best-of-breed services
|
|
48
|
-
- Innovation access
|
|
49
|
-
- Geographic reach
|
|
50
|
-
|
|
51
|
-
**Multi-Cloud Costs:**
|
|
52
|
-
- Operational complexity (2-3x increase)
|
|
53
|
-
- Training and expertise required
|
|
54
|
-
- Tooling and process duplication
|
|
55
|
-
- Network egress costs
|
|
56
|
-
- Reduced economies of scale
|
|
57
|
-
|
|
58
|
-
## Multi-Cloud Patterns
|
|
59
|
-
|
|
60
|
-
### Pattern 1: Cloud-Agnostic Application Layer
|
|
61
|
-
|
|
62
|
-
```
|
|
63
|
-
┌─────────────────────────────────────────────┐
|
|
64
|
-
│ Application Code (Cloud-Agnostic) │
|
|
65
|
-
│ (Containers, Kubernetes) │
|
|
66
|
-
└─────────────────┬───────────────────────────┘
|
|
67
|
-
│
|
|
68
|
-
┌─────────────────▼───────────────────────────┐
|
|
69
|
-
│ Abstraction Layer │
|
|
70
|
-
│ (Terraform, Pulumi, Crossplane) │
|
|
71
|
-
└─────────────────┬───────────────────────────┘
|
|
72
|
-
│
|
|
73
|
-
┌───────────┼───────────┐
|
|
74
|
-
│ │ │
|
|
75
|
-
┌─────▼────┐ ┌────▼────┐ ┌────▼────┐
|
|
76
|
-
│ AWS │ │ Azure │ │ GCP │
|
|
77
|
-
└──────────┘ └─────────┘ └─────────┘
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
**Implementation:**
|
|
81
|
-
```yaml
|
|
82
|
-
# Kubernetes deployment - runs anywhere
|
|
83
|
-
apiVersion: apps/v1
|
|
84
|
-
kind: Deployment
|
|
85
|
-
metadata:
|
|
86
|
-
name: api-service
|
|
87
|
-
spec:
|
|
88
|
-
replicas: 3
|
|
89
|
-
selector:
|
|
90
|
-
matchLabels:
|
|
91
|
-
app: api
|
|
92
|
-
template:
|
|
93
|
-
metadata:
|
|
94
|
-
labels:
|
|
95
|
-
app: api
|
|
96
|
-
spec:
|
|
97
|
-
containers:
|
|
98
|
-
- name: api
|
|
99
|
-
image: registry.example.com/api:v1.0.0
|
|
100
|
-
ports:
|
|
101
|
-
- containerPort: 8080
|
|
102
|
-
env:
|
|
103
|
-
- name: DATABASE_URL
|
|
104
|
-
valueFrom:
|
|
105
|
-
secretKeyRef:
|
|
106
|
-
name: db-credentials
|
|
107
|
-
key: url
|
|
108
|
-
resources:
|
|
109
|
-
requests:
|
|
110
|
-
memory: "256Mi"
|
|
111
|
-
cpu: "250m"
|
|
112
|
-
limits:
|
|
113
|
-
memory: "512Mi"
|
|
114
|
-
cpu: "500m"
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
### Pattern 2: Workload Distribution by Cloud Strength
|
|
118
|
-
|
|
119
|
-
```
|
|
120
|
-
┌──────────────────────────────────────────────┐
|
|
121
|
-
│ Global Load Balancer │
|
|
122
|
-
│ (Cloudflare, F5, NS1) │
|
|
123
|
-
└────────┬─────────────────────┬───────────────┘
|
|
124
|
-
│ │
|
|
125
|
-
│ │
|
|
126
|
-
┌────▼────┐ ┌────▼────┐
|
|
127
|
-
│ AWS │ │ GCP │
|
|
128
|
-
│ │ │ │
|
|
129
|
-
│ API & │ │ Data │
|
|
130
|
-
│ Compute │ │ & ML │
|
|
131
|
-
└─────────┘ └─────────┘
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
**Example Distribution:**
|
|
135
|
-
- AWS: General compute, mature services, breadth
|
|
136
|
-
- GCP: Data analytics, ML/AI, BigQuery
|
|
137
|
-
- Azure: Microsoft ecosystem, AD integration
|
|
138
|
-
|
|
139
|
-
### Pattern 3: Primary + Disaster Recovery
|
|
140
|
-
|
|
141
|
-
```
|
|
142
|
-
┌────────────────┐ ┌────────────────┐
|
|
143
|
-
│ AWS (Primary)│ │ Azure (DR) │
|
|
144
|
-
│ │ │ │
|
|
145
|
-
│ Active-Active │◄─────────►│ Standby │
|
|
146
|
-
│ Replication │ │ Ready │
|
|
147
|
-
└────────────────┘ └────────────────┘
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
### Pattern 4: Hybrid Multi-Cloud
|
|
151
|
-
|
|
152
|
-
```
|
|
153
|
-
┌────────────────────────────────────────┐
|
|
154
|
-
│ On-Premises Data Center │
|
|
155
|
-
│ (Legacy Systems, Core Data) │
|
|
156
|
-
└────────────┬───────────────────────────┘
|
|
157
|
-
│
|
|
158
|
-
┌────────┼────────┐
|
|
159
|
-
│ │ │
|
|
160
|
-
┌───▼───┐ ┌──▼──┐ ┌──▼──┐
|
|
161
|
-
│ AWS │ │Azure│ │ GCP │
|
|
162
|
-
│Compute│ │ AD │ │ ML │
|
|
163
|
-
└───────┘ └─────┘ └─────┘
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
## Abstraction Layers
|
|
167
|
-
|
|
168
|
-
### Infrastructure as Code - Terraform
|
|
169
|
-
|
|
170
|
-
**Multi-Cloud Terraform Pattern:**
|
|
171
|
-
```hcl
|
|
172
|
-
# Multi-provider configuration
|
|
173
|
-
terraform {
|
|
174
|
-
required_providers {
|
|
175
|
-
aws = {
|
|
176
|
-
source = "hashicorp/aws"
|
|
177
|
-
version = "~> 5.0"
|
|
178
|
-
}
|
|
179
|
-
azurerm = {
|
|
180
|
-
source = "hashicorp/azurerm"
|
|
181
|
-
version = "~> 3.0"
|
|
182
|
-
}
|
|
183
|
-
google = {
|
|
184
|
-
source = "hashicorp/google"
|
|
185
|
-
version = "~> 5.0"
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
# Provider configurations
|
|
191
|
-
provider "aws" {
|
|
192
|
-
region = var.aws_region
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
provider "azurerm" {
|
|
196
|
-
features {}
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
provider "google" {
|
|
200
|
-
project = var.gcp_project
|
|
201
|
-
region = var.gcp_region
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
# Abstracted module for VM creation
|
|
205
|
-
module "compute_aws" {
|
|
206
|
-
source = "./modules/compute"
|
|
207
|
-
|
|
208
|
-
provider_type = "aws"
|
|
209
|
-
instance_type = "t3.medium"
|
|
210
|
-
instance_count = 3
|
|
211
|
-
vpc_id = module.network_aws.vpc_id
|
|
212
|
-
subnet_ids = module.network_aws.private_subnet_ids
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
module "compute_gcp" {
|
|
216
|
-
source = "./modules/compute"
|
|
217
|
-
|
|
218
|
-
provider_type = "gcp"
|
|
219
|
-
instance_type = "e2-medium"
|
|
220
|
-
instance_count = 3
|
|
221
|
-
network_id = module.network_gcp.network_id
|
|
222
|
-
subnet_ids = module.network_gcp.subnet_ids
|
|
223
|
-
}
|
|
224
|
-
```
|
|
225
|
-
|
|
226
|
-
### Kubernetes - Cloud-Agnostic Orchestration
|
|
227
|
-
|
|
228
|
-
**Example: Multi-Cluster Service Mesh:**
|
|
229
|
-
```yaml
|
|
230
|
-
# Istio multi-cluster configuration
|
|
231
|
-
apiVersion: install.istio.io/v1alpha1
|
|
232
|
-
kind: IstioOperator
|
|
233
|
-
metadata:
|
|
234
|
-
name: istio-multi-cloud
|
|
235
|
-
spec:
|
|
236
|
-
profile: default
|
|
237
|
-
meshConfig:
|
|
238
|
-
# Enable multi-cluster
|
|
239
|
-
serviceSettings:
|
|
240
|
-
- settings:
|
|
241
|
-
clusterLocal: false
|
|
242
|
-
hosts:
|
|
243
|
-
- "*.global"
|
|
244
|
-
|
|
245
|
-
values:
|
|
246
|
-
global:
|
|
247
|
-
meshID: multi-cloud-mesh
|
|
248
|
-
multiCluster:
|
|
249
|
-
clusterName: aws-cluster
|
|
250
|
-
network: aws-network
|
|
251
|
-
|
|
252
|
-
# Trust domain for cross-cloud
|
|
253
|
-
trustDomain: multi-cloud.example.com
|
|
254
|
-
|
|
255
|
-
---
|
|
256
|
-
# Service entry for GCP cluster
|
|
257
|
-
apiVersion: networking.istio.io/v1beta1
|
|
258
|
-
kind: ServiceEntry
|
|
259
|
-
metadata:
|
|
260
|
-
name: api-gcp
|
|
261
|
-
spec:
|
|
262
|
-
hosts:
|
|
263
|
-
- api.gcp.global
|
|
264
|
-
location: MESH_INTERNAL
|
|
265
|
-
ports:
|
|
266
|
-
- number: 8080
|
|
267
|
-
name: http
|
|
268
|
-
protocol: HTTP
|
|
269
|
-
resolution: DNS
|
|
270
|
-
endpoints:
|
|
271
|
-
- address: api.gcp-cluster.svc.cluster.local
|
|
272
|
-
```
|
|
273
|
-
|
|
274
|
-
### Application Layer Abstraction
|
|
275
|
-
|
|
276
|
-
**Database Abstraction Example:**
|
|
277
|
-
```go
|
|
278
|
-
// Cloud-agnostic storage interface
|
|
279
|
-
type StorageService interface {
|
|
280
|
-
Save(ctx context.Context, bucket string, key string, data []byte) error
|
|
281
|
-
Get(ctx context.Context, bucket string, key string) ([]byte, error)
|
|
282
|
-
Delete(ctx context.Context, bucket string, key string) error
|
|
283
|
-
List(ctx context.Context, bucket string, prefix string) ([]string, error)
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
// AWS S3 implementation
|
|
287
|
-
type S3Storage struct {
|
|
288
|
-
client *s3.Client
|
|
289
|
-
}
|
|
290
|
-
|
|
291
|
-
func (s *S3Storage) Save(ctx context.Context, bucket string, key string, data []byte) error {
|
|
292
|
-
_, err := s.client.PutObject(ctx, &s3.PutObjectInput{
|
|
293
|
-
Bucket: aws.String(bucket),
|
|
294
|
-
Key: aws.String(key),
|
|
295
|
-
Body: bytes.NewReader(data),
|
|
296
|
-
})
|
|
297
|
-
return err
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
// GCP Cloud Storage implementation
|
|
301
|
-
type GCSStorage struct {
|
|
302
|
-
client *storage.Client
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
func (g *GCSStorage) Save(ctx context.Context, bucket string, key string, data []byte) error {
|
|
306
|
-
wc := g.client.Bucket(bucket).Object(key).NewWriter(ctx)
|
|
307
|
-
defer wc.Close()
|
|
308
|
-
_, err := wc.Write(data)
|
|
309
|
-
return err
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
// Azure Blob Storage implementation
|
|
313
|
-
type AzureBlobStorage struct {
|
|
314
|
-
client *azblob.Client
|
|
315
|
-
}
|
|
316
|
-
|
|
317
|
-
func (a *AzureBlobStorage) Save(ctx context.Context, bucket string, key string, data []byte) error {
|
|
318
|
-
_, err := a.client.UploadBuffer(ctx, bucket, key, data, &azblob.UploadBufferOptions{})
|
|
319
|
-
return err
|
|
320
|
-
}
|
|
321
|
-
|
|
322
|
-
// Factory pattern for cloud selection
|
|
323
|
-
func NewStorageService(provider string) (StorageService, error) {
|
|
324
|
-
switch provider {
|
|
325
|
-
case "aws":
|
|
326
|
-
return newS3Storage()
|
|
327
|
-
case "gcp":
|
|
328
|
-
return newGCSStorage()
|
|
329
|
-
case "azure":
|
|
330
|
-
return newAzureBlobStorage()
|
|
331
|
-
default:
|
|
332
|
-
return nil, fmt.Errorf("unknown provider: %s", provider)
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
|
-
```
|
|
336
|
-
|
|
337
|
-
## Service Selection
|
|
338
|
-
|
|
339
|
-
### Service Mapping Across Clouds
|
|
340
|
-
|
|
341
|
-
```yaml
|
|
342
|
-
# Equivalent services
|
|
343
|
-
Compute:
|
|
344
|
-
VM:
|
|
345
|
-
AWS: EC2
|
|
346
|
-
Azure: Virtual Machines
|
|
347
|
-
GCP: Compute Engine
|
|
348
|
-
Container:
|
|
349
|
-
AWS: ECS/EKS
|
|
350
|
-
Azure: ACI/AKS
|
|
351
|
-
GCP: Cloud Run/GKE
|
|
352
|
-
Serverless:
|
|
353
|
-
AWS: Lambda
|
|
354
|
-
Azure: Functions
|
|
355
|
-
GCP: Cloud Functions
|
|
356
|
-
|
|
357
|
-
Storage:
|
|
358
|
-
Object:
|
|
359
|
-
AWS: S3
|
|
360
|
-
Azure: Blob Storage
|
|
361
|
-
GCP: Cloud Storage
|
|
362
|
-
Block:
|
|
363
|
-
AWS: EBS
|
|
364
|
-
Azure: Managed Disks
|
|
365
|
-
GCP: Persistent Disk
|
|
366
|
-
|
|
367
|
-
Database:
|
|
368
|
-
SQL:
|
|
369
|
-
AWS: RDS
|
|
370
|
-
Azure: SQL Database
|
|
371
|
-
GCP: Cloud SQL
|
|
372
|
-
NoSQL:
|
|
373
|
-
AWS: DynamoDB
|
|
374
|
-
Azure: Cosmos DB
|
|
375
|
-
GCP: Firestore
|
|
376
|
-
|
|
377
|
-
Networking:
|
|
378
|
-
VPC:
|
|
379
|
-
AWS: VPC
|
|
380
|
-
Azure: Virtual Network
|
|
381
|
-
GCP: VPC
|
|
382
|
-
Load Balancer:
|
|
383
|
-
AWS: ALB/NLB
|
|
384
|
-
Azure: Load Balancer
|
|
385
|
-
GCP: Cloud Load Balancing
|
|
386
|
-
```
|
|
387
|
-
|
|
388
|
-
### Decision Matrix for Service Selection
|
|
389
|
-
|
|
390
|
-
```
|
|
391
|
-
Criteria AWS Azure GCP
|
|
392
|
-
────────────────────────────────────────────────────
|
|
393
|
-
Breadth of services ★★★★★ ★★★★☆ ★★★☆☆
|
|
394
|
-
Enterprise features ★★★★☆ ★★★★★ ★★★☆☆
|
|
395
|
-
Data/Analytics ★★★★☆ ★★★☆☆ ★★★★★
|
|
396
|
-
AI/ML capabilities ★★★★☆ ★★★★☆ ★★★★★
|
|
397
|
-
Microsoft integration ★★☆☆☆ ★★★★★ ★★☆☆☆
|
|
398
|
-
Cost competitiveness ★★★☆☆ ★★★☆☆ ★★★★☆
|
|
399
|
-
Global presence ★★★★★ ★★★★☆ ★★★★☆
|
|
400
|
-
Developer experience ★★★★☆ ★★★☆☆ ★★★★☆
|
|
401
|
-
```
|
|
402
|
-
|
|
403
|
-
## Networking and Connectivity
|
|
404
|
-
|
|
405
|
-
### Cross-Cloud Connectivity Options
|
|
406
|
-
|
|
407
|
-
**1. VPN Connections:**
|
|
408
|
-
```
|
|
409
|
-
AWS VPC ←──VPN──→ Azure VNet ←──VPN──→ GCP VPC
|
|
410
|
-
|
|
411
|
-
Pros: Encrypted, relatively simple
|
|
412
|
-
Cons: Lower bandwidth, higher latency
|
|
413
|
-
Cost: Low to moderate
|
|
414
|
-
```
|
|
415
|
-
|
|
416
|
-
**2. Direct Connect / ExpressRoute / Cloud Interconnect:**
|
|
417
|
-
```
|
|
418
|
-
AWS Direct Connect ←──→ On-Prem ←──→ Azure ExpressRoute
|
|
419
|
-
↕
|
|
420
|
-
GCP Cloud Interconnect
|
|
421
|
-
|
|
422
|
-
Pros: High bandwidth, low latency, dedicated
|
|
423
|
-
Cons: Complex setup, higher cost
|
|
424
|
-
Cost: High
|
|
425
|
-
```
|
|
426
|
-
|
|
427
|
-
**3. Third-Party SD-WAN:**
|
|
428
|
-
```
|
|
429
|
-
┌─────────────────────────────────────┐
|
|
430
|
-
│ SD-WAN Controller │
|
|
431
|
-
│ (Cisco, VMware, Palo Alto) │
|
|
432
|
-
└──────┬────────────┬─────────────────┘
|
|
433
|
-
│ │
|
|
434
|
-
┌───▼──┐ ┌────▼───┐ ┌───▼───┐
|
|
435
|
-
│ AWS │ │ Azure │ │ GCP │
|
|
436
|
-
└──────┘ └────────┘ └───────┘
|
|
437
|
-
```
|
|
438
|
-
|
|
439
|
-
**4. Multi-Cloud Transit Hub:**
|
|
440
|
-
```hcl
|
|
441
|
-
# Example: Aviatrix multi-cloud network
|
|
442
|
-
resource "aviatrix_transit_gateway" "aws" {
|
|
443
|
-
cloud_type = 1 # AWS
|
|
444
|
-
account_name = "aws-account"
|
|
445
|
-
gw_name = "aws-transit-gw"
|
|
446
|
-
vpc_id = aws_vpc.main.id
|
|
447
|
-
vpc_reg = var.aws_region
|
|
448
|
-
gw_size = "t3.medium"
|
|
449
|
-
subnet = aws_subnet.transit.cidr_block
|
|
450
|
-
}
|
|
451
|
-
|
|
452
|
-
resource "aviatrix_transit_gateway" "azure" {
|
|
453
|
-
cloud_type = 8 # Azure
|
|
454
|
-
account_name = "azure-account"
|
|
455
|
-
gw_name = "azure-transit-gw"
|
|
456
|
-
vpc_id = azurerm_virtual_network.main.name
|
|
457
|
-
vpc_reg = var.azure_region
|
|
458
|
-
gw_size = "Standard_B2s"
|
|
459
|
-
subnet = azurerm_subnet.transit.address_prefix
|
|
460
|
-
}
|
|
461
|
-
|
|
462
|
-
# Peering between transit gateways
|
|
463
|
-
resource "aviatrix_transit_gateway_peering" "aws_azure" {
|
|
464
|
-
transit_gateway_name1 = aviatrix_transit_gateway.aws.gw_name
|
|
465
|
-
transit_gateway_name2 = aviatrix_transit_gateway.azure.gw_name
|
|
466
|
-
}
|
|
467
|
-
```
|
|
468
|
-
|
|
469
|
-
## Data Management
|
|
470
|
-
|
|
471
|
-
### Cross-Cloud Data Replication
|
|
472
|
-
|
|
473
|
-
**Pattern: Event-Driven Replication:**
|
|
474
|
-
```
|
|
475
|
-
AWS S3 ──event──→ Lambda ──API──→ GCP Cloud Storage
|
|
476
|
-
│
|
|
477
|
-
└────────────→ Azure Blob Storage
|
|
478
|
-
|
|
479
|
-
AWS DynamoDB ──stream──→ Lambda ──sync──→ Azure Cosmos DB
|
|
480
|
-
```
|
|
481
|
-
|
|
482
|
-
**Implementation Example:**
|
|
483
|
-
```python
|
|
484
|
-
# Lambda function for cross-cloud replication
|
|
485
|
-
import boto3
|
|
486
|
-
from google.cloud import storage as gcs_storage
|
|
487
|
-
from azure.storage.blob import BlobServiceClient
|
|
488
|
-
|
|
489
|
-
s3 = boto3.client('s3')
|
|
490
|
-
gcs = gcs_storage.Client()
|
|
491
|
-
azure_blob = BlobServiceClient.from_connection_string(os.environ['AZURE_CONNECTION'])
|
|
492
|
-
|
|
493
|
-
def lambda_handler(event, context):
|
|
494
|
-
for record in event['Records']:
|
|
495
|
-
bucket = record['s3']['bucket']['name']
|
|
496
|
-
key = record['s3']['object']['key']
|
|
497
|
-
|
|
498
|
-
# Get object from S3
|
|
499
|
-
obj = s3.get_object(Bucket=bucket, Key=key)
|
|
500
|
-
data = obj['Body'].read()
|
|
501
|
-
|
|
502
|
-
# Replicate to GCP
|
|
503
|
-
gcs_bucket = gcs.bucket('backup-bucket-gcp')
|
|
504
|
-
blob = gcs_bucket.blob(key)
|
|
505
|
-
blob.upload_from_string(data)
|
|
506
|
-
|
|
507
|
-
# Replicate to Azure
|
|
508
|
-
blob_client = azure_blob.get_blob_client(
|
|
509
|
-
container='backup-container',
|
|
510
|
-
blob=key
|
|
511
|
-
)
|
|
512
|
-
blob_client.upload_blob(data, overwrite=True)
|
|
513
|
-
|
|
514
|
-
return {'statusCode': 200}
|
|
515
|
-
```
|
|
516
|
-
|
|
517
|
-
## Security and Compliance
|
|
518
|
-
|
|
519
|
-
### Unified Identity Management
|
|
520
|
-
|
|
521
|
-
**Option 1: Federated Identity (Recommended):**
|
|
522
|
-
```
|
|
523
|
-
┌──────────────────┐
|
|
524
|
-
│ Identity Provider│
|
|
525
|
-
│ (Okta, Auth0) │
|
|
526
|
-
└────────┬──────────┘
|
|
527
|
-
│ SAML/OIDC
|
|
528
|
-
┌────────┼────────┐
|
|
529
|
-
│ │ │
|
|
530
|
-
┌────▼───┐ ┌──▼──┐ ┌──▼──┐
|
|
531
|
-
│AWS IAM │ │Azure│ │ GCP │
|
|
532
|
-
│ Role │ │ AD │ │ IAM │
|
|
533
|
-
└────────┘ └─────┘ └─────┘
|
|
534
|
-
```
|
|
535
|
-
|
|
536
|
-
**Option 2: Cross-Account Roles:**
|
|
537
|
-
```hcl
|
|
538
|
-
# AWS IAM role for cross-cloud access
|
|
539
|
-
resource "aws_iam_role" "gcp_access" {
|
|
540
|
-
name = "gcp-service-account-access"
|
|
541
|
-
|
|
542
|
-
assume_role_policy = jsonencode({
|
|
543
|
-
Version = "2012-10-17"
|
|
544
|
-
Statement = [{
|
|
545
|
-
Effect = "Allow"
|
|
546
|
-
Principal = {
|
|
547
|
-
Federated = "accounts.google.com"
|
|
548
|
-
}
|
|
549
|
-
Action = "sts:AssumeRoleWithWebIdentity"
|
|
550
|
-
Condition = {
|
|
551
|
-
StringEquals = {
|
|
552
|
-
"accounts.google.com:sub" = var.gcp_service_account_id
|
|
553
|
-
}
|
|
554
|
-
}
|
|
555
|
-
}]
|
|
556
|
-
})
|
|
557
|
-
}
|
|
558
|
-
```
|
|
559
|
-
|
|
560
|
-
## Operational Considerations
|
|
561
|
-
|
|
562
|
-
### Monitoring and Observability
|
|
563
|
-
|
|
564
|
-
**Multi-Cloud Monitoring Stack:**
|
|
565
|
-
```yaml
|
|
566
|
-
# Centralized monitoring with Prometheus + Grafana
|
|
567
|
-
Prometheus:
|
|
568
|
-
- Federation from each cloud
|
|
569
|
-
- Cloud-specific exporters:
|
|
570
|
-
* AWS: CloudWatch Exporter
|
|
571
|
-
* Azure: Azure Monitor Exporter
|
|
572
|
-
* GCP: Stackdriver Exporter
|
|
573
|
-
|
|
574
|
-
Grafana:
|
|
575
|
-
- Unified dashboards
|
|
576
|
-
- Cross-cloud correlation
|
|
577
|
-
- Alert routing
|
|
578
|
-
|
|
579
|
-
Logs:
|
|
580
|
-
- Ship to central: Elasticsearch, Splunk, Datadog
|
|
581
|
-
- Cloud-native: CloudWatch, Monitor, Cloud Logging
|
|
582
|
-
- Open source: Loki, FluentD
|
|
583
|
-
```
|
|
584
|
-
|
|
585
|
-
### Cost Management
|
|
586
|
-
|
|
587
|
-
**Multi-Cloud Cost Tools:**
|
|
588
|
-
- CloudHealth (VMware)
|
|
589
|
-
- Cloudability (Apptio)
|
|
590
|
-
- Kubecost (Kubernetes-specific)
|
|
591
|
-
- Custom FinOps dashboards
|
|
592
|
-
|
|
593
|
-
## Trade-Offs
|
|
594
|
-
|
|
595
|
-
### Multi-Cloud Trade-Off Matrix
|
|
596
|
-
|
|
597
|
-
```
|
|
598
|
-
Aspect Single Cloud Multi-Cloud
|
|
599
|
-
─────────────────────────────────────────────────
|
|
600
|
-
Complexity Low High
|
|
601
|
-
Operational Cost Lower Higher
|
|
602
|
-
Skill Requirements Focused Broad
|
|
603
|
-
Vendor Lock-in Higher Lower
|
|
604
|
-
Innovation Speed Faster Slower
|
|
605
|
-
Tooling Native Abstracted
|
|
606
|
-
Data Transfer Cost Low High
|
|
607
|
-
Reliability High Very High
|
|
608
|
-
Negotiation Power Lower Higher
|
|
609
|
-
```
|
|
610
|
-
|
|
611
|
-
## Best Practices
|
|
612
|
-
|
|
613
|
-
### 1. Start with Single Cloud
|
|
614
|
-
Build expertise before expanding to multi-cloud.
|
|
615
|
-
|
|
616
|
-
### 2. Use Kubernetes for Portability
|
|
617
|
-
Containerize applications for cloud-agnostic deployment.
|
|
618
|
-
|
|
619
|
-
### 3. Abstract at the Right Level
|
|
620
|
-
- Don't abstract everything (diminishing returns)
|
|
621
|
-
- Focus on business-critical portability
|
|
622
|
-
- Use cloud-native services where appropriate
|
|
623
|
-
|
|
624
|
-
### 4. Centralized Management
|
|
625
|
-
- Single pane of glass for monitoring
|
|
626
|
-
- Unified IAM/SSO
|
|
627
|
-
- Centralized logging and audit
|
|
628
|
-
|
|
629
|
-
### 5. Standardize Tooling
|
|
630
|
-
- Same IaC tool (Terraform/Pulumi)
|
|
631
|
-
- Same CI/CD platform
|
|
632
|
-
- Same monitoring stack
|
|
633
|
-
|
|
634
|
-
### 6. Network Design
|
|
635
|
-
- Plan IP addressing carefully
|
|
636
|
-
- Minimize cross-cloud data transfer
|
|
637
|
-
- Use CDN for content delivery
|
|
638
|
-
|
|
639
|
-
### 7. Cost Optimization
|
|
640
|
-
- Track egress costs
|
|
641
|
-
- Use reserved capacity appropriately
|
|
642
|
-
- Implement FinOps practices
|
|
643
|
-
|
|
644
|
-
### 8. Security Posture
|
|
645
|
-
- Consistent security policies
|
|
646
|
-
- Unified secret management
|
|
647
|
-
- Regular security audits
|
|
648
|
-
|
|
649
|
-
### 9. Disaster Recovery
|
|
650
|
-
- Define RPO/RTO
|
|
651
|
-
- Test failover regularly
|
|
652
|
-
- Document runbooks
|
|
653
|
-
|
|
654
|
-
### 10. Team Organization
|
|
655
|
-
- Cloud Centers of Excellence
|
|
656
|
-
- Cross-training
|
|
657
|
-
- Clear ownership
|
|
658
|
-
|
|
659
|
-
## Anti-Patterns
|
|
660
|
-
|
|
661
|
-
❌ **Multi-cloud for the sake of it** without business justification
|
|
662
|
-
❌ **Perfect cloud abstraction** trying to hide all cloud differences
|
|
663
|
-
❌ **Ignoring cloud-native services** and building everything custom
|
|
664
|
-
❌ **No unified monitoring** leading to operational blindness
|
|
665
|
-
❌ **Underestimating complexity** and operational overhead
|
|
666
|
-
❌ **Data replication everywhere** causing excessive egress costs
|
|
667
|
-
❌ **Manual deployments** across multiple clouds
|
|
668
|
-
❌ **No standardization** different tools for each cloud
|
|
669
|
-
❌ **Split teams by cloud** creating silos
|
|
670
|
-
❌ **Neglecting network design** causing performance issues
|