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,786 @@
|
|
|
1
|
+
# Business Continuity and Disaster Recovery
|
|
2
|
+
|
|
3
|
+
BCP/DR planning, RTO/RPO targets, disaster recovery testing, backup strategies, and failover procedures for ensuring business resilience.
|
|
4
|
+
|
|
5
|
+
## Table of Contents
|
|
6
|
+
|
|
7
|
+
- [Business Continuity Overview](#business-continuity-overview)
|
|
8
|
+
- [RTO and RPO](#rto-and-rpo)
|
|
9
|
+
- [Backup Strategies](#backup-strategies)
|
|
10
|
+
- [Disaster Recovery Planning](#disaster-recovery-planning)
|
|
11
|
+
- [DR Testing](#dr-testing)
|
|
12
|
+
- [Failover Procedures](#failover-procedures)
|
|
13
|
+
- [Best Practices](#best-practices)
|
|
14
|
+
|
|
15
|
+
## Business Continuity Overview
|
|
16
|
+
|
|
17
|
+
### Purpose
|
|
18
|
+
|
|
19
|
+
Business Continuity Planning (BCP) ensures:
|
|
20
|
+
- Critical business functions continue during disasters
|
|
21
|
+
- Rapid recovery from disruptions
|
|
22
|
+
- Minimized financial impact
|
|
23
|
+
- Protection of reputation
|
|
24
|
+
- Regulatory compliance
|
|
25
|
+
|
|
26
|
+
### BCP vs DR
|
|
27
|
+
|
|
28
|
+
```yaml
|
|
29
|
+
Business Continuity Planning (BCP):
|
|
30
|
+
Scope: Entire business operations
|
|
31
|
+
Focus: Keeping business running
|
|
32
|
+
Includes: People, processes, facilities, IT, communications
|
|
33
|
+
Timeline: Before, during, and after incident
|
|
34
|
+
|
|
35
|
+
Disaster Recovery (DR):
|
|
36
|
+
Scope: IT systems and data
|
|
37
|
+
Focus: Restoring IT services
|
|
38
|
+
Includes: Infrastructure, applications, data
|
|
39
|
+
Timeline: After incident occurs
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Business Impact Analysis (BIA)
|
|
43
|
+
|
|
44
|
+
```yaml
|
|
45
|
+
BIA Process:
|
|
46
|
+
|
|
47
|
+
1. Identify Critical Business Processes:
|
|
48
|
+
- Order processing
|
|
49
|
+
- Payment processing
|
|
50
|
+
- Customer support
|
|
51
|
+
- Manufacturing
|
|
52
|
+
- Supply chain
|
|
53
|
+
|
|
54
|
+
2. Assess Impact of Disruption:
|
|
55
|
+
Financial:
|
|
56
|
+
- Revenue loss per hour
|
|
57
|
+
- Penalty costs
|
|
58
|
+
- Recovery costs
|
|
59
|
+
|
|
60
|
+
Operational:
|
|
61
|
+
- Productivity loss
|
|
62
|
+
- Customer service impact
|
|
63
|
+
- Supply chain disruption
|
|
64
|
+
|
|
65
|
+
Reputational:
|
|
66
|
+
- Customer satisfaction
|
|
67
|
+
- Brand damage
|
|
68
|
+
- Market share loss
|
|
69
|
+
|
|
70
|
+
Regulatory:
|
|
71
|
+
- Compliance violations
|
|
72
|
+
- Legal penalties
|
|
73
|
+
- Audit findings
|
|
74
|
+
|
|
75
|
+
3. Determine Recovery Requirements:
|
|
76
|
+
- Maximum Tolerable Downtime (MTD)
|
|
77
|
+
- Recovery Time Objective (RTO)
|
|
78
|
+
- Recovery Point Objective (RPO)
|
|
79
|
+
- Minimum service level
|
|
80
|
+
|
|
81
|
+
Example BIA Results:
|
|
82
|
+
|
|
83
|
+
Service: E-commerce Website
|
|
84
|
+
Revenue: $50,000/hour
|
|
85
|
+
MTD: 4 hours
|
|
86
|
+
RTO: 1 hour
|
|
87
|
+
RPO: 15 minutes
|
|
88
|
+
Priority: Critical (Tier 1)
|
|
89
|
+
|
|
90
|
+
Service: Internal Wiki
|
|
91
|
+
Revenue Impact: Minimal
|
|
92
|
+
MTD: 5 days
|
|
93
|
+
RTO: 24 hours
|
|
94
|
+
RPO: 24 hours
|
|
95
|
+
Priority: Low (Tier 3)
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## RTO and RPO
|
|
99
|
+
|
|
100
|
+
### Recovery Time Objective (RTO)
|
|
101
|
+
|
|
102
|
+
```yaml
|
|
103
|
+
RTO: Maximum acceptable time to restore service after disruption
|
|
104
|
+
|
|
105
|
+
Examples:
|
|
106
|
+
|
|
107
|
+
Critical Services (Tier 1):
|
|
108
|
+
E-commerce platform: RTO 1 hour
|
|
109
|
+
Payment processing: RTO 30 minutes
|
|
110
|
+
Customer database: RTO 1 hour
|
|
111
|
+
|
|
112
|
+
Important Services (Tier 2):
|
|
113
|
+
Email system: RTO 4 hours
|
|
114
|
+
Internal applications: RTO 8 hours
|
|
115
|
+
File shares: RTO 4 hours
|
|
116
|
+
|
|
117
|
+
Standard Services (Tier 3):
|
|
118
|
+
Development environments: RTO 24 hours
|
|
119
|
+
Archive systems: RTO 48 hours
|
|
120
|
+
Test environments: RTO 3 days
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Recovery Point Objective (RPO)
|
|
124
|
+
|
|
125
|
+
```yaml
|
|
126
|
+
RPO: Maximum acceptable data loss measured in time
|
|
127
|
+
|
|
128
|
+
Examples:
|
|
129
|
+
|
|
130
|
+
Critical Data (Tier 1):
|
|
131
|
+
Financial transactions: RPO 0 (zero data loss)
|
|
132
|
+
Customer orders: RPO 5 minutes
|
|
133
|
+
Inventory data: RPO 15 minutes
|
|
134
|
+
|
|
135
|
+
Important Data (Tier 2):
|
|
136
|
+
CRM data: RPO 1 hour
|
|
137
|
+
Email: RPO 4 hours
|
|
138
|
+
Documents: RPO 8 hours
|
|
139
|
+
|
|
140
|
+
Standard Data (Tier 3):
|
|
141
|
+
Development code: RPO 24 hours (daily backup)
|
|
142
|
+
Logs: RPO 24 hours
|
|
143
|
+
Archives: RPO 7 days
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### RTO/RPO Impact on Solutions
|
|
147
|
+
|
|
148
|
+
```
|
|
149
|
+
┌───────────────────────────────────────────────────┐
|
|
150
|
+
│ RTO/RPO Requirements → Infrastructure Solutions │
|
|
151
|
+
├───────────────────────────────────────────────────┤
|
|
152
|
+
│ │
|
|
153
|
+
│ RTO: Minutes, RPO: 0 │
|
|
154
|
+
│ → Active-Active Multi-Region │
|
|
155
|
+
│ → Synchronous replication │
|
|
156
|
+
│ → Automatic failover │
|
|
157
|
+
│ Cost: $$$$$ │
|
|
158
|
+
│ │
|
|
159
|
+
│ RTO: 1-4 hours, RPO: Minutes │
|
|
160
|
+
│ → Active-Passive with Hot Standby │
|
|
161
|
+
│ → Asynchronous replication │
|
|
162
|
+
│ → Manual failover │
|
|
163
|
+
│ Cost: $$$$ │
|
|
164
|
+
│ │
|
|
165
|
+
│ RTO: 8-24 hours, RPO: Hours │
|
|
166
|
+
│ → Warm Standby │
|
|
167
|
+
│ → Periodic snapshots │
|
|
168
|
+
│ → Restore from backup │
|
|
169
|
+
│ Cost: $$$ │
|
|
170
|
+
│ │
|
|
171
|
+
│ RTO: Days, RPO: 24 hours │
|
|
172
|
+
│ → Cold Standby │
|
|
173
|
+
│ → Daily backups │
|
|
174
|
+
│ → Manual rebuild │
|
|
175
|
+
│ Cost: $$ │
|
|
176
|
+
│ │
|
|
177
|
+
└───────────────────────────────────────────────────┘
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
## Backup Strategies
|
|
181
|
+
|
|
182
|
+
### 3-2-1 Backup Rule
|
|
183
|
+
|
|
184
|
+
```
|
|
185
|
+
3 - Keep three copies of data
|
|
186
|
+
2 - Store on two different media types
|
|
187
|
+
1 - Keep one copy offsite
|
|
188
|
+
|
|
189
|
+
Example:
|
|
190
|
+
1. Production data (primary)
|
|
191
|
+
2. Daily backup to NAS (secondary, different media)
|
|
192
|
+
3. Weekly backup to cloud (tertiary, offsite)
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### Backup Types
|
|
196
|
+
|
|
197
|
+
**Full Backup:**
|
|
198
|
+
```yaml
|
|
199
|
+
Description: Complete copy of all data
|
|
200
|
+
Frequency: Weekly
|
|
201
|
+
Pros:
|
|
202
|
+
- Complete restore from single backup
|
|
203
|
+
- Fastest restore time
|
|
204
|
+
Cons:
|
|
205
|
+
- Longest backup time
|
|
206
|
+
- Most storage space
|
|
207
|
+
- Network intensive
|
|
208
|
+
|
|
209
|
+
Example Schedule:
|
|
210
|
+
Sunday 2am: Full backup
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
**Incremental Backup:**
|
|
214
|
+
```yaml
|
|
215
|
+
Description: Only changes since last backup (any type)
|
|
216
|
+
Frequency: Daily
|
|
217
|
+
Pros:
|
|
218
|
+
- Fast backup
|
|
219
|
+
- Minimal storage
|
|
220
|
+
- Efficient
|
|
221
|
+
Cons:
|
|
222
|
+
- Slower restore (need full + all incrementals)
|
|
223
|
+
- More complex
|
|
224
|
+
|
|
225
|
+
Example Schedule:
|
|
226
|
+
Sunday 2am: Full
|
|
227
|
+
Mon-Sat 2am: Incremental
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
**Differential Backup:**
|
|
231
|
+
```yaml
|
|
232
|
+
Description: Changes since last full backup
|
|
233
|
+
Frequency: Daily
|
|
234
|
+
Pros:
|
|
235
|
+
- Faster restore than incremental (full + last differential)
|
|
236
|
+
- Moderate backup time
|
|
237
|
+
Cons:
|
|
238
|
+
- More storage than incremental
|
|
239
|
+
- Backup size grows through week
|
|
240
|
+
|
|
241
|
+
Example Schedule:
|
|
242
|
+
Sunday 2am: Full
|
|
243
|
+
Mon-Sat 2am: Differential
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
### Backup Strategy Example
|
|
247
|
+
|
|
248
|
+
```yaml
|
|
249
|
+
Production Database Backups:
|
|
250
|
+
|
|
251
|
+
Full Backup:
|
|
252
|
+
Schedule: Sunday 2am
|
|
253
|
+
Retention: 4 weeks
|
|
254
|
+
Storage: AWS S3 Standard
|
|
255
|
+
Encryption: AES-256
|
|
256
|
+
Duration: 3 hours
|
|
257
|
+
Size: 500GB
|
|
258
|
+
|
|
259
|
+
Differential Backup:
|
|
260
|
+
Schedule: Daily 2am (Mon-Sat)
|
|
261
|
+
Retention: 7 days
|
|
262
|
+
Storage: AWS S3 Standard
|
|
263
|
+
Duration: 45 minutes
|
|
264
|
+
Size: 50-150GB (cumulative)
|
|
265
|
+
|
|
266
|
+
Transaction Log Backup:
|
|
267
|
+
Schedule: Every 15 minutes
|
|
268
|
+
Retention: 7 days
|
|
269
|
+
Storage: AWS S3 Standard
|
|
270
|
+
Duration: <1 minute
|
|
271
|
+
Size: 5-10GB per day
|
|
272
|
+
|
|
273
|
+
RPO Achievement:
|
|
274
|
+
- Transaction logs every 15 min → RPO 15 minutes ✅
|
|
275
|
+
|
|
276
|
+
Restore Scenarios:
|
|
277
|
+
1. Restore to current:
|
|
278
|
+
- Latest full (Sunday)
|
|
279
|
+
- Latest differential (yesterday)
|
|
280
|
+
- All transaction logs since differential
|
|
281
|
+
Time: ~1 hour
|
|
282
|
+
|
|
283
|
+
2. Point-in-time restore (Tuesday 3pm):
|
|
284
|
+
- Latest full (Sunday)
|
|
285
|
+
- Differential up to Tuesday
|
|
286
|
+
- Transaction logs up to 3pm Tuesday
|
|
287
|
+
Time: ~1 hour
|
|
288
|
+
|
|
289
|
+
Backup Testing:
|
|
290
|
+
- Automated restore test: Weekly
|
|
291
|
+
- Full DR drill: Quarterly
|
|
292
|
+
- Verification: Every backup
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
### Backup Retention
|
|
296
|
+
|
|
297
|
+
```yaml
|
|
298
|
+
Retention Policy:
|
|
299
|
+
|
|
300
|
+
Daily Backups:
|
|
301
|
+
Retention: 7 days
|
|
302
|
+
Purpose: Operational recovery
|
|
303
|
+
|
|
304
|
+
Weekly Backups:
|
|
305
|
+
Retention: 4 weeks
|
|
306
|
+
Purpose: Month-end recovery
|
|
307
|
+
|
|
308
|
+
Monthly Backups:
|
|
309
|
+
Retention: 12 months
|
|
310
|
+
Purpose: Regulatory compliance, year-end
|
|
311
|
+
|
|
312
|
+
Yearly Backups:
|
|
313
|
+
Retention: 7 years
|
|
314
|
+
Purpose: Legal/audit requirements
|
|
315
|
+
|
|
316
|
+
Example:
|
|
317
|
+
Jan 1 - Jan 7: Daily backups (7)
|
|
318
|
+
Jan 8: Delete Jan 1 daily, keep Jan 7 weekly
|
|
319
|
+
Feb 1: Keep Jan 31 as monthly backup
|
|
320
|
+
Mar 1: Delete Jan weekly backups except Jan 31 (monthly)
|
|
321
|
+
Jan 2025: Keep Dec 31 2024 as yearly backup
|
|
322
|
+
Jan 2032: Delete Dec 31 2024 yearly (7 years old)
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
## Disaster Recovery Planning
|
|
326
|
+
|
|
327
|
+
### DR Tiers
|
|
328
|
+
|
|
329
|
+
```yaml
|
|
330
|
+
Tier 0 - No DR:
|
|
331
|
+
RTO: Undefined
|
|
332
|
+
RPO: Undefined
|
|
333
|
+
Solution: No backup, rebuild from scratch
|
|
334
|
+
Cost: $
|
|
335
|
+
Risk: Complete data loss
|
|
336
|
+
|
|
337
|
+
Tier 1 - Data Backup:
|
|
338
|
+
RTO: Days to weeks
|
|
339
|
+
RPO: 24 hours
|
|
340
|
+
Solution: Daily backups, manual restore
|
|
341
|
+
Cost: $$
|
|
342
|
+
Risk: Extended downtime
|
|
343
|
+
|
|
344
|
+
Tier 2 - Warm Standby:
|
|
345
|
+
RTO: 8-24 hours
|
|
346
|
+
RPO: 1-4 hours
|
|
347
|
+
Solution: Regular backups, recovery site ready
|
|
348
|
+
Cost: $$$
|
|
349
|
+
Risk: Moderate downtime
|
|
350
|
+
|
|
351
|
+
Tier 3 - Hot Standby:
|
|
352
|
+
RTO: 1-4 hours
|
|
353
|
+
RPO: 5-60 minutes
|
|
354
|
+
Solution: Replicated data, standby systems
|
|
355
|
+
Cost: $$$$
|
|
356
|
+
Risk: Brief downtime
|
|
357
|
+
|
|
358
|
+
Tier 4 - Active-Active:
|
|
359
|
+
RTO: Minutes
|
|
360
|
+
RPO: Zero to minutes
|
|
361
|
+
Solution: Multi-region active, auto-failover
|
|
362
|
+
Cost: $$$$$
|
|
363
|
+
Risk: Minimal downtime
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
### DR Site Types
|
|
367
|
+
|
|
368
|
+
**Cold Site:**
|
|
369
|
+
```yaml
|
|
370
|
+
Description: Empty data center with power/cooling
|
|
371
|
+
|
|
372
|
+
Characteristics:
|
|
373
|
+
- No equipment pre-installed
|
|
374
|
+
- Basic infrastructure only
|
|
375
|
+
- Equipment shipped during disaster
|
|
376
|
+
|
|
377
|
+
Recovery Time: 1-4 weeks
|
|
378
|
+
Cost: Low
|
|
379
|
+
Best For: Non-critical systems, budget constraints
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
**Warm Site:**
|
|
383
|
+
```yaml
|
|
384
|
+
Description: Partially equipped data center
|
|
385
|
+
|
|
386
|
+
Characteristics:
|
|
387
|
+
- Equipment installed
|
|
388
|
+
- Data synchronized periodically
|
|
389
|
+
- Requires configuration to activate
|
|
390
|
+
|
|
391
|
+
Recovery Time: 12 hours - 3 days
|
|
392
|
+
Cost: Medium
|
|
393
|
+
Best For: Important but not critical systems
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
**Hot Site:**
|
|
397
|
+
```yaml
|
|
398
|
+
Description: Fully operational replica site
|
|
399
|
+
|
|
400
|
+
Characteristics:
|
|
401
|
+
- Equipment installed and running
|
|
402
|
+
- Data replicated in near real-time
|
|
403
|
+
- Ready to take over immediately
|
|
404
|
+
|
|
405
|
+
Recovery Time: Minutes to hours
|
|
406
|
+
Cost: High
|
|
407
|
+
Best For: Critical systems, zero tolerance for downtime
|
|
408
|
+
```
|
|
409
|
+
|
|
410
|
+
**Active-Active (Multi-Site):**
|
|
411
|
+
```yaml
|
|
412
|
+
Description: Multiple sites serving traffic simultaneously
|
|
413
|
+
|
|
414
|
+
Characteristics:
|
|
415
|
+
- All sites processing requests
|
|
416
|
+
- Real-time data synchronization
|
|
417
|
+
- Automatic failover
|
|
418
|
+
- Load balancing across sites
|
|
419
|
+
|
|
420
|
+
Recovery Time: Seconds to minutes (automatic)
|
|
421
|
+
Cost: Very High
|
|
422
|
+
Best For: Mission-critical systems, global services
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
### DR Runbooks
|
|
426
|
+
|
|
427
|
+
```yaml
|
|
428
|
+
DR Runbook: Production Database Failover
|
|
429
|
+
|
|
430
|
+
Trigger Conditions:
|
|
431
|
+
- Primary database unresponsive >5 minutes
|
|
432
|
+
- Data center outage declared
|
|
433
|
+
- Planned maintenance requiring failover
|
|
434
|
+
|
|
435
|
+
Prerequisites:
|
|
436
|
+
- DR database in sync (replication lag <5 min)
|
|
437
|
+
- DR infrastructure validated (last test <30 days)
|
|
438
|
+
- Key personnel available
|
|
439
|
+
|
|
440
|
+
Failover Steps:
|
|
441
|
+
|
|
442
|
+
1. Assess Situation (5 min)
|
|
443
|
+
[x] Verify primary database down
|
|
444
|
+
[x] Check replication status
|
|
445
|
+
[x] Estimate recovery time
|
|
446
|
+
[x] Decide: Failover or Wait
|
|
447
|
+
|
|
448
|
+
2. Declare Disaster (2 min)
|
|
449
|
+
[x] Notify incident manager
|
|
450
|
+
[x] Activate war room
|
|
451
|
+
[x] Update status page
|
|
452
|
+
[x] Notify stakeholders
|
|
453
|
+
|
|
454
|
+
3. Prepare DR Site (10 min)
|
|
455
|
+
[x] Verify DR database healthy
|
|
456
|
+
[x] Check replication lag
|
|
457
|
+
[x] Review last backup
|
|
458
|
+
[x] Prepare application configs
|
|
459
|
+
|
|
460
|
+
4. Execute Failover (15 min)
|
|
461
|
+
[x] Stop replication from primary
|
|
462
|
+
[x] Promote DR database to primary
|
|
463
|
+
[x] Update DNS records (TTL 60 sec)
|
|
464
|
+
[x] Update load balancer (point to DR)
|
|
465
|
+
[x] Update application configs
|
|
466
|
+
[x] Restart application servers
|
|
467
|
+
|
|
468
|
+
5. Verify Service (10 min)
|
|
469
|
+
[x] Test database connectivity
|
|
470
|
+
[x] Run smoke tests
|
|
471
|
+
[x] Verify application functionality
|
|
472
|
+
[x] Check monitoring dashboards
|
|
473
|
+
[x] Validate with sample transactions
|
|
474
|
+
|
|
475
|
+
6. Monitor (30 min)
|
|
476
|
+
[x] Watch error rates
|
|
477
|
+
[x] Monitor performance
|
|
478
|
+
[x] Check user reports
|
|
479
|
+
[x] Verify backups running
|
|
480
|
+
|
|
481
|
+
7. Communicate (Ongoing)
|
|
482
|
+
[x] Update status page (service restored)
|
|
483
|
+
[x] Notify stakeholders
|
|
484
|
+
[x] Document timeline
|
|
485
|
+
[x] Schedule post-mortem
|
|
486
|
+
|
|
487
|
+
Total RTO: 60-75 minutes
|
|
488
|
+
|
|
489
|
+
Rollback Procedure:
|
|
490
|
+
If DR site fails:
|
|
491
|
+
1. Attempt to restore primary
|
|
492
|
+
2. If primary unrecoverable, rebuild from backup
|
|
493
|
+
3. Estimated time: 4 hours
|
|
494
|
+
|
|
495
|
+
Post-Failover:
|
|
496
|
+
- Continue operations on DR site
|
|
497
|
+
- Plan primary site rebuild
|
|
498
|
+
- Schedule failback when primary ready
|
|
499
|
+
```
|
|
500
|
+
|
|
501
|
+
## DR Testing
|
|
502
|
+
|
|
503
|
+
### Testing Frequency
|
|
504
|
+
|
|
505
|
+
```yaml
|
|
506
|
+
Test Schedule:
|
|
507
|
+
|
|
508
|
+
Component Tests (Monthly):
|
|
509
|
+
- Backup restore verification
|
|
510
|
+
- Replication health checks
|
|
511
|
+
- Failover script validation
|
|
512
|
+
- Monitoring alert tests
|
|
513
|
+
|
|
514
|
+
Tabletop Exercises (Quarterly):
|
|
515
|
+
- Walk through DR scenarios
|
|
516
|
+
- Review runbooks
|
|
517
|
+
- Identify gaps
|
|
518
|
+
- No actual systems affected
|
|
519
|
+
|
|
520
|
+
Partial DR Tests (Semi-Annually):
|
|
521
|
+
- Test non-production systems
|
|
522
|
+
- Verify specific components
|
|
523
|
+
- Limited scope
|
|
524
|
+
- Minimal business impact
|
|
525
|
+
|
|
526
|
+
Full DR Tests (Annually):
|
|
527
|
+
- Complete failover of production systems
|
|
528
|
+
- All teams participate
|
|
529
|
+
- Measure actual RTO/RPO
|
|
530
|
+
- Scheduled maintenance window
|
|
531
|
+
```
|
|
532
|
+
|
|
533
|
+
### DR Test Plan
|
|
534
|
+
|
|
535
|
+
```yaml
|
|
536
|
+
Annual DR Test Plan
|
|
537
|
+
|
|
538
|
+
Objective: Validate ability to recover critical systems within RTO/RPO
|
|
539
|
+
|
|
540
|
+
Scope:
|
|
541
|
+
In Scope:
|
|
542
|
+
- Production database
|
|
543
|
+
- E-commerce application
|
|
544
|
+
- Payment processing
|
|
545
|
+
- Customer portal
|
|
546
|
+
|
|
547
|
+
Out of Scope:
|
|
548
|
+
- Development environments
|
|
549
|
+
- Internal tools
|
|
550
|
+
- Reporting systems
|
|
551
|
+
|
|
552
|
+
Schedule:
|
|
553
|
+
Date: 2024-12-15
|
|
554
|
+
Start: 6:00 AM
|
|
555
|
+
End: 12:00 PM (target)
|
|
556
|
+
Window: 6 hours
|
|
557
|
+
|
|
558
|
+
Participants:
|
|
559
|
+
- DR Coordinator (lead)
|
|
560
|
+
- Database team (2 engineers)
|
|
561
|
+
- Application team (3 engineers)
|
|
562
|
+
- Infrastructure team (2 engineers)
|
|
563
|
+
- Network team (1 engineer)
|
|
564
|
+
- Management (observers)
|
|
565
|
+
|
|
566
|
+
Test Scenarios:
|
|
567
|
+
|
|
568
|
+
Scenario 1: Database Failover
|
|
569
|
+
Trigger: Simulate primary database failure
|
|
570
|
+
Expected RTO: 1 hour
|
|
571
|
+
Expected RPO: 15 minutes
|
|
572
|
+
Success Criteria:
|
|
573
|
+
- DR database promoted
|
|
574
|
+
- Applications connected
|
|
575
|
+
- Data loss <15 minutes
|
|
576
|
+
- All smoke tests pass
|
|
577
|
+
|
|
578
|
+
Scenario 2: Application Failover
|
|
579
|
+
Trigger: Primary region unavailable
|
|
580
|
+
Expected RTO: 30 minutes
|
|
581
|
+
Expected RPO: 5 minutes
|
|
582
|
+
Success Criteria:
|
|
583
|
+
- Traffic routed to DR region
|
|
584
|
+
- All services operational
|
|
585
|
+
- User sessions preserved
|
|
586
|
+
- Performance within SLA
|
|
587
|
+
|
|
588
|
+
Communication Plan:
|
|
589
|
+
- T-14 days: Announce test to stakeholders
|
|
590
|
+
- T-7 days: Reminder notification
|
|
591
|
+
- T-1 day: Final confirmation
|
|
592
|
+
- T-0: Status page update
|
|
593
|
+
- During test: Hourly updates
|
|
594
|
+
- T+completion: Results summary
|
|
595
|
+
|
|
596
|
+
Success Metrics:
|
|
597
|
+
- RTO achieved: Yes/No
|
|
598
|
+
- RPO achieved: Yes/No
|
|
599
|
+
- No data loss: Yes/No
|
|
600
|
+
- All systems functional: Yes/No
|
|
601
|
+
- Runbooks accurate: Yes/No
|
|
602
|
+
|
|
603
|
+
Post-Test Activities:
|
|
604
|
+
- Lessons learned document
|
|
605
|
+
- Runbook updates
|
|
606
|
+
- Gap remediation
|
|
607
|
+
- Executive summary
|
|
608
|
+
```
|
|
609
|
+
|
|
610
|
+
## Failover Procedures
|
|
611
|
+
|
|
612
|
+
### Automatic Failover
|
|
613
|
+
|
|
614
|
+
```yaml
|
|
615
|
+
Automatic Failover Architecture:
|
|
616
|
+
|
|
617
|
+
Components:
|
|
618
|
+
- Health checks (every 30 seconds)
|
|
619
|
+
- Monitoring (detect failures)
|
|
620
|
+
- Orchestration (execute failover)
|
|
621
|
+
- DNS/Load balancer (route traffic)
|
|
622
|
+
|
|
623
|
+
Example: AWS Multi-AZ RDS
|
|
624
|
+
|
|
625
|
+
Primary DB (us-east-1a):
|
|
626
|
+
- Actively serving requests
|
|
627
|
+
- Synchronous replication to standby
|
|
628
|
+
|
|
629
|
+
Standby DB (us-east-1b):
|
|
630
|
+
- Receives replicated data
|
|
631
|
+
- Ready to take over
|
|
632
|
+
|
|
633
|
+
Failure Detection:
|
|
634
|
+
- RDS monitors primary health
|
|
635
|
+
- Detects failure (30-60 seconds)
|
|
636
|
+
|
|
637
|
+
Automatic Failover:
|
|
638
|
+
1. Promote standby to primary (60-120 seconds)
|
|
639
|
+
2. Update DNS to point to new primary (TTL 60s)
|
|
640
|
+
3. Applications reconnect automatically
|
|
641
|
+
4. Total downtime: 2-4 minutes
|
|
642
|
+
|
|
643
|
+
No Manual Intervention Required ✅
|
|
644
|
+
```
|
|
645
|
+
|
|
646
|
+
### Manual Failover
|
|
647
|
+
|
|
648
|
+
```yaml
|
|
649
|
+
Manual Failover Process:
|
|
650
|
+
|
|
651
|
+
When to Use:
|
|
652
|
+
- Planned maintenance
|
|
653
|
+
- Testing
|
|
654
|
+
- Automatic failover failed
|
|
655
|
+
- Requires human judgment
|
|
656
|
+
|
|
657
|
+
Decision Authority:
|
|
658
|
+
- Operations Manager
|
|
659
|
+
- Database Administrator
|
|
660
|
+
- Incident Manager
|
|
661
|
+
|
|
662
|
+
Checklist:
|
|
663
|
+
|
|
664
|
+
Pre-Failover:
|
|
665
|
+
[ ] Verify DR site ready
|
|
666
|
+
[ ] Check replication lag
|
|
667
|
+
[ ] Notify stakeholders
|
|
668
|
+
[ ] Prepare rollback plan
|
|
669
|
+
[ ] Schedule maintenance window
|
|
670
|
+
|
|
671
|
+
Execute Failover:
|
|
672
|
+
[ ] Stop writes to primary
|
|
673
|
+
[ ] Verify replication caught up
|
|
674
|
+
[ ] Promote DR to primary
|
|
675
|
+
[ ] Update DNS/LB
|
|
676
|
+
[ ] Redirect traffic
|
|
677
|
+
[ ] Verify functionality
|
|
678
|
+
|
|
679
|
+
Post-Failover:
|
|
680
|
+
[ ] Monitor for issues
|
|
681
|
+
[ ] Verify data consistency
|
|
682
|
+
[ ] Update documentation
|
|
683
|
+
[ ] Communicate completion
|
|
684
|
+
```
|
|
685
|
+
|
|
686
|
+
## Best Practices
|
|
687
|
+
|
|
688
|
+
### 1. Regular Testing
|
|
689
|
+
|
|
690
|
+
Test DR plans regularly - untested plans don't work.
|
|
691
|
+
|
|
692
|
+
### 2. Document Everything
|
|
693
|
+
|
|
694
|
+
```yaml
|
|
695
|
+
Essential Documentation:
|
|
696
|
+
- DR runbooks (step-by-step procedures)
|
|
697
|
+
- Network diagrams (primary and DR)
|
|
698
|
+
- Contact lists (with alternates)
|
|
699
|
+
- Vendor contacts (support numbers)
|
|
700
|
+
- Access credentials (secured)
|
|
701
|
+
- Recovery procedures (detailed)
|
|
702
|
+
- Test results (lessons learned)
|
|
703
|
+
```
|
|
704
|
+
|
|
705
|
+
### 3. Automate Where Possible
|
|
706
|
+
|
|
707
|
+
```
|
|
708
|
+
Automate:
|
|
709
|
+
- Failover detection
|
|
710
|
+
- Backup verification
|
|
711
|
+
- Health checks
|
|
712
|
+
- Alert notifications
|
|
713
|
+
- Status updates
|
|
714
|
+
```
|
|
715
|
+
|
|
716
|
+
### 4. Geographic Distribution
|
|
717
|
+
|
|
718
|
+
```yaml
|
|
719
|
+
Best Practice: Multi-Region Deployment
|
|
720
|
+
|
|
721
|
+
Disaster Scenarios Protected:
|
|
722
|
+
- Data center fire
|
|
723
|
+
- Natural disaster
|
|
724
|
+
- Regional power outage
|
|
725
|
+
- Network partition
|
|
726
|
+
- Provider outage
|
|
727
|
+
|
|
728
|
+
Example:
|
|
729
|
+
Primary: US East (Virginia)
|
|
730
|
+
DR: US West (Oregon)
|
|
731
|
+
Distance: 2,500 miles
|
|
732
|
+
Separate: Power grids, networks, facilities
|
|
733
|
+
```
|
|
734
|
+
|
|
735
|
+
### 5. Backup Verification
|
|
736
|
+
|
|
737
|
+
```bash
|
|
738
|
+
# Automated backup verification
|
|
739
|
+
|
|
740
|
+
#!/bin/bash
|
|
741
|
+
# verify-backup.sh
|
|
742
|
+
|
|
743
|
+
BACKUP_FILE="prod-db-2024-11-01.sql.gz"
|
|
744
|
+
|
|
745
|
+
# 1. Verify file exists and is not empty
|
|
746
|
+
if [ ! -s "$BACKUP_FILE" ]; then
|
|
747
|
+
echo "ERROR: Backup file missing or empty"
|
|
748
|
+
exit 1
|
|
749
|
+
fi
|
|
750
|
+
|
|
751
|
+
# 2. Verify file integrity (checksum)
|
|
752
|
+
EXPECTED_MD5="abc123..."
|
|
753
|
+
ACTUAL_MD5=$(md5sum "$BACKUP_FILE" | awk '{print $1}')
|
|
754
|
+
if [ "$EXPECTED_MD5" != "$ACTUAL_MD5" ]; then
|
|
755
|
+
echo "ERROR: Backup file corrupted"
|
|
756
|
+
exit 1
|
|
757
|
+
fi
|
|
758
|
+
|
|
759
|
+
# 3. Test restore to staging
|
|
760
|
+
gunzip -c "$BACKUP_FILE" | mysql staging_db
|
|
761
|
+
|
|
762
|
+
# 4. Verify data
|
|
763
|
+
ROW_COUNT=$(mysql staging_db -e "SELECT COUNT(*) FROM customers" -sN)
|
|
764
|
+
if [ "$ROW_COUNT" -lt 1000 ]; then
|
|
765
|
+
echo "ERROR: Restored data incomplete"
|
|
766
|
+
exit 1
|
|
767
|
+
fi
|
|
768
|
+
|
|
769
|
+
echo "SUCCESS: Backup verified"
|
|
770
|
+
exit 0
|
|
771
|
+
```
|
|
772
|
+
|
|
773
|
+
### 6. Communication Plan
|
|
774
|
+
|
|
775
|
+
Ensure stakeholders know what's happening during disasters.
|
|
776
|
+
|
|
777
|
+
### 7. Continuous Improvement
|
|
778
|
+
|
|
779
|
+
Update plans based on tests, incidents, and changes.
|
|
780
|
+
|
|
781
|
+
---
|
|
782
|
+
|
|
783
|
+
**Related Resources:**
|
|
784
|
+
- [itil-framework.md](itil-framework.md) - Service continuity management
|
|
785
|
+
- [incident-service-management.md](incident-service-management.md) - Major incident management
|
|
786
|
+
- [enterprise-monitoring.md](enterprise-monitoring.md) - Monitoring and alerting
|