blockmine 1.24.0 → 1.27.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.
Files changed (476) hide show
  1. package/CHANGELOG.md +76 -1
  2. package/README.en.md +427 -0
  3. package/README.md +40 -0
  4. package/backend/package.json +2 -2
  5. package/backend/prisma/migrations/20260328173000_add_plugin_source_ref/migration.sql +2 -0
  6. package/backend/prisma/migrations/migration_lock.toml +2 -2
  7. package/backend/prisma/schema.prisma +2 -0
  8. package/backend/src/ai/plugin-assistant-system-prompt.md +664 -5
  9. package/backend/src/api/routes/apiKeys.js +8 -0
  10. package/backend/src/api/routes/bots.js +271 -9
  11. package/backend/src/api/routes/eventGraphs.js +151 -1
  12. package/backend/src/api/routes/health.js +38 -0
  13. package/backend/src/api/routes/nodeRegistry.js +63 -0
  14. package/backend/src/api/routes/plugins.js +254 -29
  15. package/backend/src/api/routes/servers.js +14 -2
  16. package/backend/src/container.js +11 -8
  17. package/backend/src/core/BotCommandLoader.js +161 -0
  18. package/backend/src/core/BotConnection.js +125 -0
  19. package/backend/src/core/BotEventHandlers.js +234 -0
  20. package/backend/src/core/BotIPCHandler.js +445 -0
  21. package/backend/src/core/BotManager.js +15 -7
  22. package/backend/src/core/BotProcess.js +169 -140
  23. package/backend/src/core/EventGraphManager.js +7 -3
  24. package/backend/src/core/GraphDebugHandler.js +229 -0
  25. package/backend/src/core/GraphDebugIPC.js +117 -0
  26. package/backend/src/core/GraphExecutionEngine.js +545 -978
  27. package/backend/src/core/GraphTraversal.js +80 -0
  28. package/backend/src/core/GraphValidation.js +73 -0
  29. package/backend/src/core/NodeDefinition.js +138 -0
  30. package/backend/src/core/NodeRegistry.js +153 -141
  31. package/backend/src/core/PluginLoader.js +83 -3
  32. package/backend/src/core/PluginManager.js +346 -35
  33. package/backend/src/core/RewindSignal.js +9 -0
  34. package/backend/src/core/config/ConfigValidator.js +72 -0
  35. package/backend/src/core/config/FeatureFlags.js +52 -0
  36. package/backend/src/core/config/__tests__/ConfigValidator.test.js +232 -0
  37. package/backend/src/core/domain/entities/Bot.js +39 -0
  38. package/backend/src/core/domain/entities/Command.js +41 -0
  39. package/backend/src/core/domain/entities/EventGraph.js +39 -0
  40. package/backend/src/core/domain/entities/Plugin.js +45 -0
  41. package/backend/src/core/domain/entities/User.js +40 -0
  42. package/backend/src/core/domain/services/DependencyResolver.js +168 -0
  43. package/backend/src/core/domain/services/GraphValidator.js +117 -0
  44. package/backend/src/core/domain/services/PermissionChecker.js +34 -0
  45. package/backend/src/core/domain/services/__tests__/DependencyResolver.test.js +126 -0
  46. package/backend/src/core/domain/valueObjects/BotConfig.js +27 -0
  47. package/backend/src/core/domain/valueObjects/DependencyGraph.js +86 -0
  48. package/backend/src/core/domain/valueObjects/PluginManifest.js +36 -0
  49. package/backend/src/core/errors/BaseError.js +29 -0
  50. package/backend/src/core/errors/ErrorHandler.js +81 -0
  51. package/backend/src/core/errors/__tests__/ErrorHandler.test.js +188 -0
  52. package/backend/src/core/errors/index.js +68 -0
  53. package/backend/src/core/infrastructure/BatchingUtility.js +66 -0
  54. package/backend/src/core/infrastructure/CircuitBreaker.js +103 -0
  55. package/backend/src/core/infrastructure/ConnectionPool.js +81 -0
  56. package/backend/src/core/infrastructure/RateLimiter.js +64 -0
  57. package/backend/src/core/infrastructure/__tests__/BatchingUtility.test.js +86 -0
  58. package/backend/src/core/infrastructure/__tests__/CircuitBreaker.test.js +156 -0
  59. package/backend/src/core/infrastructure/__tests__/ConnectionPool.test.js +146 -0
  60. package/backend/src/core/infrastructure/__tests__/RateLimiter.test.js +171 -0
  61. package/backend/src/core/ipc/botApiFactory.js +72 -0
  62. package/backend/src/core/ipc/ipcMessageTypes.js +115 -0
  63. package/backend/src/core/logging/AuditLogger.js +61 -0
  64. package/backend/src/core/logging/StructuredLogger.js +80 -0
  65. package/backend/src/core/logging/__tests__/StructuredLogger.test.js +213 -0
  66. package/backend/src/core/logging/index.js +7 -0
  67. package/backend/src/core/metrics/MetricsCollector.js +104 -0
  68. package/backend/src/core/metrics/__tests__/MetricsCollector.test.js +131 -0
  69. package/backend/src/core/node-registries/actionsNodes.js +191 -0
  70. package/backend/src/core/node-registries/arraysNodes.js +152 -0
  71. package/backend/src/core/node-registries/botNodes.js +48 -0
  72. package/backend/src/core/node-registries/containerNodes.js +141 -0
  73. package/backend/src/core/node-registries/dataNodes.js +284 -0
  74. package/backend/src/core/node-registries/debugNodes.js +23 -0
  75. package/backend/src/core/node-registries/eventsNodes.js +223 -0
  76. package/backend/src/core/node-registries/flowNodes.js +151 -0
  77. package/backend/src/core/node-registries/furnaceNodes.js +123 -0
  78. package/backend/src/core/node-registries/index.js +108 -0
  79. package/backend/src/core/node-registries/inventory.js +102 -106
  80. package/backend/src/core/node-registries/logicNodes.js +54 -0
  81. package/backend/src/core/node-registries/mathNodes.js +38 -0
  82. package/backend/src/core/node-registries/navigationNodes.js +109 -0
  83. package/backend/src/core/node-registries/objectsNodes.js +90 -0
  84. package/backend/src/core/node-registries/stringsNodes.js +165 -0
  85. package/backend/src/core/node-registries/timeNodes.js +105 -0
  86. package/backend/src/core/node-registries/typeNodes.js +22 -0
  87. package/backend/src/core/node-registries/usersNodes.js +126 -0
  88. package/backend/src/core/nodes/arrays/shuffle.js +14 -0
  89. package/backend/src/core/nodes/bot/get_name.js +8 -0
  90. package/backend/src/core/nodes/bot/stop_bot.js +5 -0
  91. package/backend/src/core/nodes/container/open.js +101 -111
  92. package/backend/src/core/nodes/data/store_read.js +26 -0
  93. package/backend/src/core/nodes/data/store_write.js +23 -0
  94. package/backend/src/core/nodes/event/call_event.js +31 -0
  95. package/backend/src/core/nodes/event/custom_event.js +8 -0
  96. package/backend/src/core/nodes/flow/timer.js +35 -0
  97. package/backend/src/core/nodes/inventory/drop.js +73 -65
  98. package/backend/src/core/nodes/inventory/equip.js +54 -45
  99. package/backend/src/core/nodes/inventory/select_slot.js +48 -46
  100. package/backend/src/core/nodes/navigation/follow.js +54 -51
  101. package/backend/src/core/nodes/navigation/go_to.js +41 -53
  102. package/backend/src/core/nodes/navigation/go_to_entity.js +65 -69
  103. package/backend/src/core/nodes/navigation/go_to_player.js +65 -70
  104. package/backend/src/core/nodes/navigation/stop.js +17 -26
  105. package/backend/src/core/nodes/users/add_to_group.js +24 -0
  106. package/backend/src/core/nodes/users/check_permission.js +26 -0
  107. package/backend/src/core/nodes/users/remove_from_group.js +24 -0
  108. package/backend/src/core/services/BotIPCMessageRouter.js +337 -0
  109. package/backend/src/core/services/BotLifecycleService.js +43 -450
  110. package/backend/src/core/services/CacheManager.js +83 -23
  111. package/backend/src/core/services/CrashRestartManager.js +42 -0
  112. package/backend/src/core/services/DebugSessionManager.js +114 -12
  113. package/backend/src/core/services/EventGraphService.js +69 -0
  114. package/backend/src/core/services/MinecraftBotManager.js +9 -1
  115. package/backend/src/core/services/PluginManagementService.js +84 -0
  116. package/backend/src/core/services/TestModeContext.js +65 -0
  117. package/backend/src/core/services/__tests__/CacheManager.test.js +168 -0
  118. package/backend/src/core/services.js +1 -11
  119. package/backend/src/core/validation/InputValidator.js +167 -0
  120. package/backend/src/core/validation/__tests__/InputValidator.test.js +296 -0
  121. package/backend/src/real-time/botApi/index.js +1 -1
  122. package/backend/src/real-time/socketHandler.js +26 -0
  123. package/backend/src/server.js +21 -6
  124. package/frontend/dist/assets/browser-ponyfill-D8y0Ty7C.js +2 -0
  125. package/frontend/dist/assets/index-CFJLS0dk.css +32 -0
  126. package/frontend/dist/assets/index-D91UGNMG.js +11260 -0
  127. package/frontend/dist/flags/en.svg +32 -0
  128. package/frontend/dist/flags/ru.svg +5 -0
  129. package/frontend/dist/index.html +2 -2
  130. package/frontend/dist/locales/en/admin.json +100 -0
  131. package/frontend/dist/locales/en/api-keys.json +58 -0
  132. package/frontend/dist/locales/en/bots.json +113 -0
  133. package/frontend/dist/locales/en/common.json +53 -0
  134. package/frontend/dist/locales/en/configuration.json +22 -0
  135. package/frontend/dist/locales/en/console.json +10 -0
  136. package/frontend/dist/locales/en/dashboard.json +85 -0
  137. package/frontend/dist/locales/en/dialogs.json +70 -0
  138. package/frontend/dist/locales/en/event-graphs.json +50 -0
  139. package/frontend/dist/locales/en/graph-store.json +70 -0
  140. package/frontend/dist/locales/en/login.json +36 -0
  141. package/frontend/dist/locales/en/management.json +192 -0
  142. package/frontend/dist/locales/en/minecraft-viewer.json +27 -0
  143. package/frontend/dist/locales/en/nodes.json +1132 -0
  144. package/frontend/dist/locales/en/permissions.json +50 -0
  145. package/frontend/dist/locales/en/plugin-detail.json +69 -0
  146. package/frontend/dist/locales/en/plugins.json +329 -0
  147. package/frontend/dist/locales/en/proxies.json +81 -0
  148. package/frontend/dist/locales/en/servers.json +39 -0
  149. package/frontend/dist/locales/en/setup.json +19 -0
  150. package/frontend/dist/locales/en/sidebar.json +195 -0
  151. package/frontend/dist/locales/en/tasks.json +62 -0
  152. package/frontend/dist/locales/en/visual-editor.json +418 -0
  153. package/frontend/dist/locales/en/websocket.json +86 -0
  154. package/frontend/dist/locales/ru/admin.json +100 -0
  155. package/frontend/dist/locales/ru/api-keys.json +58 -0
  156. package/frontend/dist/locales/ru/bots.json +113 -0
  157. package/frontend/dist/locales/ru/common.json +49 -0
  158. package/frontend/dist/locales/ru/configuration.json +22 -0
  159. package/frontend/dist/locales/ru/console.json +10 -0
  160. package/frontend/dist/locales/ru/dashboard.json +85 -0
  161. package/frontend/dist/locales/ru/dialogs.json +70 -0
  162. package/frontend/dist/locales/ru/event-graphs.json +50 -0
  163. package/frontend/dist/locales/ru/graph-store.json +70 -0
  164. package/frontend/dist/locales/ru/login.json +36 -0
  165. package/frontend/dist/locales/ru/management.json +192 -0
  166. package/frontend/dist/locales/ru/minecraft-viewer.json +30 -0
  167. package/frontend/dist/locales/ru/nodes.json +1131 -0
  168. package/frontend/dist/locales/ru/permissions.json +50 -0
  169. package/frontend/dist/locales/ru/plugin-detail.json +49 -0
  170. package/frontend/dist/locales/ru/plugins.json +209 -0
  171. package/frontend/dist/locales/ru/proxies.json +81 -0
  172. package/frontend/dist/locales/ru/servers.json +39 -0
  173. package/frontend/dist/locales/ru/setup.json +19 -0
  174. package/frontend/dist/locales/ru/sidebar.json +195 -0
  175. package/frontend/dist/locales/ru/tasks.json +62 -0
  176. package/frontend/dist/locales/ru/visual-editor.json +420 -0
  177. package/frontend/dist/locales/ru/websocket.json +86 -0
  178. package/frontend/dist/monacoeditorwork/css.worker.bundle.js +7 -7
  179. package/frontend/dist/monacoeditorwork/html.worker.bundle.js +7 -7
  180. package/frontend/dist/monacoeditorwork/json.worker.bundle.js +7 -7
  181. package/frontend/dist/monacoeditorwork/ts.worker.bundle.js +3 -3
  182. package/frontend/package.json +6 -0
  183. package/nul +12 -0
  184. package/package.json +3 -3
  185. package/screen/3dviewer.png +0 -0
  186. package/screen/console.png +0 -0
  187. package/screen/dashboard.png +0 -0
  188. package/screen/graph_collabe.png +0 -0
  189. package/screen/graph_live_debug.png +0 -0
  190. package/screen/language_selector.png +0 -0
  191. package/screen/management_command.png +0 -0
  192. package/screen/node_debug_trace.png +0 -0
  193. package/screen/plugin_/320/276/320/261/320/267/320/276/321/200.png +0 -0
  194. package/screen/websocket.png +0 -0
  195. 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
  196. 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
  197. package/.claude/agents/README.md +0 -469
  198. package/.claude/agents/auth-route-debugger.md +0 -118
  199. package/.claude/agents/auth-route-tester.md +0 -93
  200. package/.claude/agents/auto-error-resolver.md +0 -97
  201. package/.claude/agents/build-optimizer.md +0 -236
  202. package/.claude/agents/code-architect.md +0 -34
  203. package/.claude/agents/code-architecture-reviewer.md +0 -83
  204. package/.claude/agents/code-explorer.md +0 -51
  205. package/.claude/agents/code-refactor-master.md +0 -94
  206. package/.claude/agents/code-reviewer.md +0 -46
  207. package/.claude/agents/cost-optimizer.md +0 -134
  208. package/.claude/agents/deployment-orchestrator.md +0 -113
  209. package/.claude/agents/documentation-architect.md +0 -82
  210. package/.claude/agents/frontend-error-fixer.md +0 -77
  211. package/.claude/agents/iac-code-generator.md +0 -71
  212. package/.claude/agents/incident-responder.md +0 -346
  213. package/.claude/agents/infrastructure-architect.md +0 -31
  214. package/.claude/agents/kubernetes-specialist.md +0 -56
  215. package/.claude/agents/migration-planner.md +0 -181
  216. package/.claude/agents/network-architect.md +0 -196
  217. package/.claude/agents/plan-reviewer.md +0 -52
  218. package/.claude/agents/refactor-planner.md +0 -63
  219. package/.claude/agents/security-scanner.md +0 -102
  220. package/.claude/agents/web-research-specialist.md +0 -78
  221. package/.claude/commands/cost-analysis.md +0 -315
  222. package/.claude/commands/dev-docs-update.md +0 -55
  223. package/.claude/commands/dev-docs.md +0 -51
  224. package/.claude/commands/feature-dev.md +0 -125
  225. package/.claude/commands/incident-debug.md +0 -247
  226. package/.claude/commands/infra-plan.md +0 -81
  227. package/.claude/commands/migration-plan.md +0 -478
  228. package/.claude/commands/route-research-for-testing.md +0 -37
  229. package/.claude/commands/security-review.md +0 -66
  230. package/.claude/hooks/CONFIG.md +0 -448
  231. package/.claude/hooks/README.md +0 -163
  232. package/.claude/hooks/SKILL_ACTIVATION_COMPLETE.md +0 -226
  233. package/.claude/hooks/WINDOWS_HOOKS_README.md +0 -151
  234. package/.claude/hooks/add-skill-activation-banners.ts +0 -132
  235. package/.claude/hooks/comprehensive-skill-test.ts +0 -1315
  236. package/.claude/hooks/error-handling-reminder.sh +0 -12
  237. package/.claude/hooks/error-handling-reminder.ts +0 -222
  238. package/.claude/hooks/k8s-manifest-validator.sh +0 -56
  239. package/.claude/hooks/package-lock.json +0 -556
  240. package/.claude/hooks/package.json +0 -16
  241. package/.claude/hooks/post-tool-use-tracker.ps1 +0 -174
  242. package/.claude/hooks/post-tool-use-tracker.sh +0 -183
  243. package/.claude/hooks/security-policy-check.sh +0 -247
  244. package/.claude/hooks/skill-activation-prompt.ps1 +0 -10
  245. package/.claude/hooks/skill-activation-prompt.sh +0 -10
  246. package/.claude/hooks/skill-activation-prompt.ts +0 -141
  247. package/.claude/hooks/stop-build-check-enhanced.sh +0 -130
  248. package/.claude/hooks/terraform-validator.sh +0 -53
  249. package/.claude/hooks/test-input.json +0 -7
  250. package/.claude/hooks/test-skill-activation.ts +0 -427
  251. package/.claude/hooks/trigger-build-resolver.sh +0 -79
  252. package/.claude/hooks/tsc-check.sh +0 -173
  253. package/.claude/hooks/tsconfig.json +0 -19
  254. package/.claude/settings.json +0 -59
  255. package/.claude/settings.local.json +0 -67
  256. package/.claude/skills/README.md +0 -507
  257. package/.claude/skills/api-engineering/SKILL.md +0 -63
  258. package/.claude/skills/api-engineering/resources/api-versioning.md +0 -88
  259. package/.claude/skills/api-engineering/resources/graphql-patterns.md +0 -106
  260. package/.claude/skills/api-engineering/resources/rate-limiting.md +0 -118
  261. package/.claude/skills/api-engineering/resources/rest-api-design.md +0 -105
  262. package/.claude/skills/backend-dev-guidelines/SKILL.md +0 -306
  263. package/.claude/skills/backend-dev-guidelines/resources/architecture-overview.md +0 -451
  264. package/.claude/skills/backend-dev-guidelines/resources/async-and-errors.md +0 -307
  265. package/.claude/skills/backend-dev-guidelines/resources/complete-examples.md +0 -638
  266. package/.claude/skills/backend-dev-guidelines/resources/configuration.md +0 -275
  267. package/.claude/skills/backend-dev-guidelines/resources/database-patterns.md +0 -224
  268. package/.claude/skills/backend-dev-guidelines/resources/middleware-guide.md +0 -213
  269. package/.claude/skills/backend-dev-guidelines/resources/routing-and-controllers.md +0 -756
  270. package/.claude/skills/backend-dev-guidelines/resources/sentry-and-monitoring.md +0 -336
  271. package/.claude/skills/backend-dev-guidelines/resources/services-and-repositories.md +0 -789
  272. package/.claude/skills/backend-dev-guidelines/resources/testing-guide.md +0 -235
  273. package/.claude/skills/backend-dev-guidelines/resources/validation-patterns.md +0 -754
  274. package/.claude/skills/budget-and-cost-management/SKILL.md +0 -850
  275. package/.claude/skills/build-engineering/SKILL.md +0 -431
  276. package/.claude/skills/build-engineering/resources/artifact-repositories.md +0 -72
  277. package/.claude/skills/build-engineering/resources/build-caching.md +0 -96
  278. package/.claude/skills/build-engineering/resources/build-pipelines.md +0 -105
  279. package/.claude/skills/build-engineering/resources/build-security.md +0 -95
  280. package/.claude/skills/build-engineering/resources/build-systems.md +0 -389
  281. package/.claude/skills/build-engineering/resources/compilation-optimization.md +0 -201
  282. package/.claude/skills/build-engineering/resources/dependency-management.md +0 -73
  283. package/.claude/skills/build-engineering/resources/monorepo-builds.md +0 -110
  284. package/.claude/skills/build-engineering/resources/performance-optimization.md +0 -113
  285. package/.claude/skills/build-engineering/resources/reproducible-builds.md +0 -82
  286. package/.claude/skills/cloud-engineering/SKILL.md +0 -675
  287. package/.claude/skills/cloud-engineering/resources/aws-patterns.md +0 -742
  288. package/.claude/skills/cloud-engineering/resources/azure-patterns.md +0 -714
  289. package/.claude/skills/cloud-engineering/resources/cleared-cloud-environments.md +0 -987
  290. package/.claude/skills/cloud-engineering/resources/cloud-cost-optimization.md +0 -757
  291. package/.claude/skills/cloud-engineering/resources/cloud-networking.md +0 -1058
  292. package/.claude/skills/cloud-engineering/resources/cloud-security-tools.md +0 -1530
  293. package/.claude/skills/cloud-engineering/resources/cloud-security.md +0 -990
  294. package/.claude/skills/cloud-engineering/resources/gcp-patterns.md +0 -758
  295. package/.claude/skills/cloud-engineering/resources/migration-strategies.md +0 -820
  296. package/.claude/skills/cloud-engineering/resources/multi-cloud-strategies.md +0 -670
  297. package/.claude/skills/cloud-engineering/resources/oci-patterns.md +0 -1198
  298. package/.claude/skills/cloud-engineering/resources/serverless-patterns.md +0 -795
  299. package/.claude/skills/cloud-engineering/resources/well-architected-frameworks.md +0 -966
  300. package/.claude/skills/cybersecurity/SKILL.md +0 -409
  301. package/.claude/skills/cybersecurity/resources/security-architecture.md +0 -266
  302. package/.claude/skills/database-engineering/SKILL.md +0 -61
  303. package/.claude/skills/database-engineering/resources/backup-and-recovery.md +0 -72
  304. package/.claude/skills/database-engineering/resources/database-replication.md +0 -63
  305. package/.claude/skills/database-engineering/resources/postgresql-fundamentals.md +0 -70
  306. package/.claude/skills/database-engineering/resources/query-optimization.md +0 -68
  307. package/.claude/skills/devsecops/SKILL.md +0 -374
  308. package/.claude/skills/devsecops/resources/ci-cd-security.md +0 -204
  309. package/.claude/skills/devsecops/resources/compliance-automation.md +0 -530
  310. package/.claude/skills/devsecops/resources/compliance-frameworks.md +0 -2322
  311. package/.claude/skills/devsecops/resources/container-security.md +0 -915
  312. package/.claude/skills/devsecops/resources/cspm-integration.md +0 -1440
  313. package/.claude/skills/devsecops/resources/policy-enforcement.md +0 -619
  314. package/.claude/skills/devsecops/resources/secrets-management.md +0 -755
  315. package/.claude/skills/devsecops/resources/security-monitoring.md +0 -146
  316. package/.claude/skills/devsecops/resources/security-scanning.md +0 -887
  317. package/.claude/skills/devsecops/resources/security-testing.md +0 -203
  318. package/.claude/skills/devsecops/resources/supply-chain-security.md +0 -518
  319. package/.claude/skills/devsecops/resources/vulnerability-management.md +0 -481
  320. package/.claude/skills/devsecops/resources/zero-trust-architecture.md +0 -177
  321. package/.claude/skills/documentation-as-code/SKILL.md +0 -323
  322. package/.claude/skills/documentation-as-code/resources/api-documentation.md +0 -90
  323. package/.claude/skills/documentation-as-code/resources/changelog-management.md +0 -79
  324. package/.claude/skills/documentation-as-code/resources/diagram-generation.md +0 -44
  325. package/.claude/skills/documentation-as-code/resources/docs-as-code-workflow.md +0 -99
  326. package/.claude/skills/documentation-as-code/resources/documentation-automation.md +0 -68
  327. package/.claude/skills/documentation-as-code/resources/documentation-sites.md +0 -79
  328. package/.claude/skills/documentation-as-code/resources/markdown-best-practices.md +0 -162
  329. package/.claude/skills/documentation-as-code/resources/openapi-specification.md +0 -77
  330. package/.claude/skills/documentation-as-code/resources/readme-engineering.md +0 -60
  331. package/.claude/skills/documentation-as-code/resources/technical-writing-guide.md +0 -202
  332. package/.claude/skills/engineering-management/SKILL.md +0 -356
  333. package/.claude/skills/engineering-management/resources/career-ladders.md +0 -609
  334. package/.claude/skills/engineering-management/resources/hiring-and-assessment.md +0 -555
  335. package/.claude/skills/engineering-management/resources/one-on-one-guides.md +0 -609
  336. package/.claude/skills/engineering-management/resources/resource-planning.md +0 -557
  337. package/.claude/skills/engineering-management/resources/team-organization-patterns.md +0 -491
  338. package/.claude/skills/engineering-management/resources/technical-interviews.md +0 -474
  339. package/.claude/skills/engineering-operations-management/SKILL.md +0 -817
  340. package/.claude/skills/error-tracking/SKILL.md +0 -379
  341. package/.claude/skills/frontend-design/SKILL.md +0 -42
  342. package/.claude/skills/frontend-dev-guidelines/SKILL.md +0 -403
  343. package/.claude/skills/frontend-dev-guidelines/resources/common-patterns.md +0 -331
  344. package/.claude/skills/frontend-dev-guidelines/resources/complete-examples.md +0 -872
  345. package/.claude/skills/frontend-dev-guidelines/resources/component-patterns.md +0 -502
  346. package/.claude/skills/frontend-dev-guidelines/resources/data-fetching.md +0 -767
  347. package/.claude/skills/frontend-dev-guidelines/resources/file-organization.md +0 -502
  348. package/.claude/skills/frontend-dev-guidelines/resources/loading-and-error-states.md +0 -501
  349. package/.claude/skills/frontend-dev-guidelines/resources/performance.md +0 -406
  350. package/.claude/skills/frontend-dev-guidelines/resources/routing-guide.md +0 -364
  351. package/.claude/skills/frontend-dev-guidelines/resources/styling-guide.md +0 -428
  352. package/.claude/skills/frontend-dev-guidelines/resources/typescript-standards.md +0 -418
  353. package/.claude/skills/general-it-engineering/SKILL.md +0 -393
  354. package/.claude/skills/general-it-engineering/resources/asset-management.md +0 -712
  355. package/.claude/skills/general-it-engineering/resources/automation-orchestration.md +0 -817
  356. package/.claude/skills/general-it-engineering/resources/business-continuity.md +0 -786
  357. package/.claude/skills/general-it-engineering/resources/change-management.md +0 -715
  358. package/.claude/skills/general-it-engineering/resources/enterprise-monitoring.md +0 -729
  359. package/.claude/skills/general-it-engineering/resources/help-desk-operations.md +0 -738
  360. package/.claude/skills/general-it-engineering/resources/incident-service-management.md +0 -834
  361. package/.claude/skills/general-it-engineering/resources/it-governance.md +0 -753
  362. package/.claude/skills/general-it-engineering/resources/itil-framework.md +0 -503
  363. package/.claude/skills/general-it-engineering/resources/service-management.md +0 -669
  364. package/.claude/skills/infrastructure-architecture/SKILL.md +0 -328
  365. package/.claude/skills/infrastructure-architecture/resources/architecture-decision-records.md +0 -505
  366. package/.claude/skills/infrastructure-architecture/resources/architecture-patterns.md +0 -528
  367. package/.claude/skills/infrastructure-architecture/resources/capacity-planning.md +0 -453
  368. package/.claude/skills/infrastructure-architecture/resources/cleared-environment-architecture.md +0 -773
  369. package/.claude/skills/infrastructure-architecture/resources/cost-architecture.md +0 -499
  370. package/.claude/skills/infrastructure-architecture/resources/data-architecture.md +0 -501
  371. package/.claude/skills/infrastructure-architecture/resources/disaster-recovery.md +0 -535
  372. package/.claude/skills/infrastructure-architecture/resources/migration-architecture.md +0 -512
  373. package/.claude/skills/infrastructure-architecture/resources/multi-region-design.md +0 -608
  374. package/.claude/skills/infrastructure-architecture/resources/reference-architectures.md +0 -562
  375. package/.claude/skills/infrastructure-architecture/resources/security-architecture.md +0 -538
  376. package/.claude/skills/infrastructure-architecture/resources/system-design-principles.md +0 -489
  377. package/.claude/skills/infrastructure-architecture/resources/workload-classification.md +0 -1000
  378. package/.claude/skills/infrastructure-strategy/SKILL.md +0 -924
  379. package/.claude/skills/network-engineering/SKILL.md +0 -385
  380. package/.claude/skills/network-engineering/resources/dns-management.md +0 -738
  381. package/.claude/skills/network-engineering/resources/load-balancing.md +0 -820
  382. package/.claude/skills/network-engineering/resources/network-architecture.md +0 -546
  383. package/.claude/skills/network-engineering/resources/network-security.md +0 -921
  384. package/.claude/skills/network-engineering/resources/network-troubleshooting.md +0 -749
  385. package/.claude/skills/network-engineering/resources/routing-switching.md +0 -373
  386. package/.claude/skills/network-engineering/resources/sdn-networking.md +0 -695
  387. package/.claude/skills/network-engineering/resources/service-mesh-networking.md +0 -777
  388. package/.claude/skills/network-engineering/resources/tcp-ip-protocols.md +0 -444
  389. package/.claude/skills/network-engineering/resources/vpn-connectivity.md +0 -672
  390. package/.claude/skills/node-development/SKILL.md +0 -317
  391. package/.claude/skills/observability-engineering/SKILL.md +0 -101
  392. package/.claude/skills/observability-engineering/resources/apm-tools.md +0 -97
  393. package/.claude/skills/observability-engineering/resources/correlation-strategies.md +0 -87
  394. package/.claude/skills/observability-engineering/resources/distributed-tracing.md +0 -98
  395. package/.claude/skills/observability-engineering/resources/logs-aggregation.md +0 -118
  396. package/.claude/skills/observability-engineering/resources/observability-cost-optimization.md +0 -141
  397. package/.claude/skills/observability-engineering/resources/opentelemetry.md +0 -110
  398. package/.claude/skills/platform-engineering/SKILL.md +0 -555
  399. package/.claude/skills/platform-engineering/resources/architecture-overview.md +0 -600
  400. package/.claude/skills/platform-engineering/resources/container-orchestration.md +0 -916
  401. package/.claude/skills/platform-engineering/resources/cost-optimization.md +0 -634
  402. package/.claude/skills/platform-engineering/resources/developer-platforms.md +0 -670
  403. package/.claude/skills/platform-engineering/resources/gitops-automation.md +0 -650
  404. package/.claude/skills/platform-engineering/resources/infrastructure-as-code.md +0 -778
  405. package/.claude/skills/platform-engineering/resources/infrastructure-standards.md +0 -708
  406. package/.claude/skills/platform-engineering/resources/multi-tenancy.md +0 -602
  407. package/.claude/skills/platform-engineering/resources/platform-security.md +0 -711
  408. package/.claude/skills/platform-engineering/resources/resource-management.md +0 -592
  409. package/.claude/skills/platform-engineering/resources/service-mesh.md +0 -628
  410. package/.claude/skills/release-engineering/SKILL.md +0 -393
  411. package/.claude/skills/release-engineering/resources/artifact-management.md +0 -108
  412. package/.claude/skills/release-engineering/resources/build-optimization.md +0 -84
  413. package/.claude/skills/release-engineering/resources/ci-cd-pipelines.md +0 -411
  414. package/.claude/skills/release-engineering/resources/deployment-strategies.md +0 -197
  415. package/.claude/skills/release-engineering/resources/pipeline-security.md +0 -62
  416. package/.claude/skills/release-engineering/resources/progressive-delivery.md +0 -83
  417. package/.claude/skills/release-engineering/resources/release-automation.md +0 -68
  418. package/.claude/skills/release-engineering/resources/release-orchestration.md +0 -77
  419. package/.claude/skills/release-engineering/resources/rollback-strategies.md +0 -66
  420. package/.claude/skills/release-engineering/resources/versioning-strategies.md +0 -59
  421. package/.claude/skills/route-tester/SKILL.md +0 -392
  422. package/.claude/skills/skill-developer/ADVANCED.md +0 -197
  423. package/.claude/skills/skill-developer/HOOK_MECHANISMS.md +0 -306
  424. package/.claude/skills/skill-developer/PATTERNS_LIBRARY.md +0 -152
  425. package/.claude/skills/skill-developer/SKILL.md +0 -430
  426. package/.claude/skills/skill-developer/SKILL_RULES_REFERENCE.md +0 -315
  427. package/.claude/skills/skill-developer/TRIGGER_TYPES.md +0 -305
  428. package/.claude/skills/skill-developer/TROUBLESHOOTING.md +0 -514
  429. package/.claude/skills/skill-rules.json +0 -2989
  430. package/.claude/skills/sre/SKILL.md +0 -464
  431. package/.claude/skills/sre/resources/alerting-best-practices.md +0 -282
  432. package/.claude/skills/sre/resources/capacity-planning.md +0 -226
  433. package/.claude/skills/sre/resources/chaos-engineering.md +0 -193
  434. package/.claude/skills/sre/resources/disaster-recovery.md +0 -232
  435. package/.claude/skills/sre/resources/incident-management.md +0 -436
  436. package/.claude/skills/sre/resources/observability-stack.md +0 -240
  437. package/.claude/skills/sre/resources/on-call-runbooks.md +0 -167
  438. package/.claude/skills/sre/resources/performance-optimization.md +0 -108
  439. package/.claude/skills/sre/resources/reliability-patterns.md +0 -183
  440. package/.claude/skills/sre/resources/slo-sli-sla.md +0 -464
  441. package/.claude/skills/sre/resources/toil-reduction.md +0 -145
  442. package/.claude/skills/systems-engineering/SKILL.md +0 -648
  443. package/.claude/skills/systems-engineering/resources/automation-patterns.md +0 -771
  444. package/.claude/skills/systems-engineering/resources/configuration-management.md +0 -998
  445. package/.claude/skills/systems-engineering/resources/linux-administration.md +0 -672
  446. package/.claude/skills/systems-engineering/resources/networking-fundamentals.md +0 -982
  447. package/.claude/skills/systems-engineering/resources/performance-tuning.md +0 -871
  448. package/.claude/skills/systems-engineering/resources/powershell-scripting.md +0 -482
  449. package/.claude/skills/systems-engineering/resources/security-hardening.md +0 -739
  450. package/.claude/skills/systems-engineering/resources/shell-scripting.md +0 -915
  451. package/.claude/skills/systems-engineering/resources/storage-management.md +0 -628
  452. package/.claude/skills/systems-engineering/resources/system-monitoring.md +0 -787
  453. package/.claude/skills/systems-engineering/resources/troubleshooting-guide.md +0 -753
  454. package/.claude/skills/systems-engineering/resources/windows-administration.md +0 -738
  455. package/.claude/skills/technical-leadership/SKILL.md +0 -728
  456. package/backend/docs/SECRETS_DOCUMENTATION.md +0 -327
  457. package/backend/package-lock.json +0 -6801
  458. package/backend/src/core/node-registries/actions.js +0 -202
  459. package/backend/src/core/node-registries/arrays.js +0 -155
  460. package/backend/src/core/node-registries/bot.js +0 -23
  461. package/backend/src/core/node-registries/container.js +0 -162
  462. package/backend/src/core/node-registries/data.js +0 -290
  463. package/backend/src/core/node-registries/debug.js +0 -26
  464. package/backend/src/core/node-registries/events.js +0 -201
  465. package/backend/src/core/node-registries/flow.js +0 -139
  466. package/backend/src/core/node-registries/furnace.js +0 -143
  467. package/backend/src/core/node-registries/logic.js +0 -62
  468. package/backend/src/core/node-registries/math.js +0 -42
  469. package/backend/src/core/node-registries/navigation.js +0 -111
  470. package/backend/src/core/node-registries/objects.js +0 -98
  471. package/backend/src/core/node-registries/strings.js +0 -187
  472. package/backend/src/core/node-registries/time.js +0 -113
  473. package/backend/src/core/node-registries/type.js +0 -25
  474. package/backend/src/core/node-registries/users.js +0 -79
  475. package/frontend/dist/assets/index-BC-NbKXi.css +0 -32
  476. package/frontend/dist/assets/index-DqJXZMHY.js +0 -11266
@@ -1,820 +0,0 @@
1
- # Load Balancing
2
-
3
- Comprehensive guide to load balancing covering algorithms, protocols, health checks, and implementation across different platforms including HAProxy, nginx, and cloud-native load balancers.
4
-
5
- ## Table of Contents
6
-
7
- - [Overview](#overview)
8
- - [Load Balancer Types](#load-balancer-types)
9
- - [Load Balancing Algorithms](#load-balancing-algorithms)
10
- - [Health Checks](#health-checks)
11
- - [SSL/TLS Termination](#ssltls-termination)
12
- - [Session Persistence](#session-persistence)
13
- - [Cloud Load Balancers](#cloud-load-balancers)
14
- - [HAProxy Configuration](#haproxy-configuration)
15
- - [Nginx Load Balancing](#nginx-load-balancing)
16
- - [Kubernetes Ingress](#kubernetes-ingress)
17
- - [Best Practices](#best-practices)
18
- - [Anti-Patterns](#anti-patterns)
19
-
20
- ## Overview
21
-
22
- Load balancing distributes network traffic across multiple servers to ensure high availability, optimal resource utilization, and improved application performance.
23
-
24
- **Key Benefits:**
25
- - High availability through redundancy
26
- - Horizontal scalability
27
- - Zero-downtime deployments
28
- - Traffic distribution optimization
29
- - SSL/TLS offloading
30
- - Protection against DDoS attacks
31
-
32
- ## Load Balancer Types
33
-
34
- ### Layer 4 (Transport Layer)
35
-
36
- **Characteristics:**
37
- - Operates at TCP/UDP level
38
- - Routes based on IP address and port
39
- - Fast, low latency
40
- - Protocol-agnostic
41
- - Cannot inspect application data
42
-
43
- **Use Cases:**
44
- - High-throughput applications
45
- - Non-HTTP protocols
46
- - UDP load balancing
47
- - Simple TCP pass-through
48
-
49
- **Example: AWS Network Load Balancer (NLB)**
50
- ```yaml
51
- # NLB via Terraform
52
- resource "aws_lb" "network" {
53
- name = "app-nlb"
54
- internal = false
55
- load_balancer_type = "network"
56
- subnets = var.public_subnet_ids
57
-
58
- enable_cross_zone_load_balancing = true
59
- enable_deletion_protection = true
60
-
61
- tags = {
62
- Name = "app-nlb"
63
- Environment = "production"
64
- }
65
- }
66
-
67
- resource "aws_lb_target_group" "tcp" {
68
- name = "app-tcp-targets"
69
- port = 8080
70
- protocol = "TCP"
71
- vpc_id = var.vpc_id
72
-
73
- health_check {
74
- enabled = true
75
- interval = 30
76
- port = "traffic-port"
77
- protocol = "TCP"
78
- healthy_threshold = 3
79
- unhealthy_threshold = 3
80
- }
81
-
82
- deregistration_delay = 30
83
- }
84
-
85
- resource "aws_lb_listener" "tcp" {
86
- load_balancer_arn = aws_lb.network.arn
87
- port = 443
88
- protocol = "TCP"
89
-
90
- default_action {
91
- type = "forward"
92
- target_group_arn = aws_lb_target_group.tcp.arn
93
- }
94
- }
95
- ```
96
-
97
- ### Layer 7 (Application Layer)
98
-
99
- **Characteristics:**
100
- - Operates at HTTP/HTTPS level
101
- - Content-based routing
102
- - SSL termination
103
- - Request inspection
104
- - URL/header-based routing
105
- - WebSocket support
106
-
107
- **Use Cases:**
108
- - HTTP/HTTPS applications
109
- - Microservices routing
110
- - A/B testing
111
- - Canary deployments
112
- - API gateways
113
-
114
- **Example: AWS Application Load Balancer (ALB)**
115
- ```yaml
116
- # ALB with path-based routing
117
- resource "aws_lb" "application" {
118
- name = "app-alb"
119
- internal = false
120
- load_balancer_type = "application"
121
- security_groups = [aws_security_group.alb.id]
122
- subnets = var.public_subnet_ids
123
-
124
- enable_deletion_protection = true
125
- enable_http2 = true
126
- enable_waf = true
127
-
128
- access_logs {
129
- bucket = aws_s3_bucket.alb_logs.id
130
- enabled = true
131
- }
132
- }
133
-
134
- resource "aws_lb_target_group" "api" {
135
- name = "api-targets"
136
- port = 8080
137
- protocol = "HTTP"
138
- vpc_id = var.vpc_id
139
-
140
- health_check {
141
- enabled = true
142
- path = "/health"
143
- port = "traffic-port"
144
- protocol = "HTTP"
145
- healthy_threshold = 2
146
- unhealthy_threshold = 2
147
- timeout = 5
148
- interval = 30
149
- matcher = "200"
150
- }
151
-
152
- stickiness {
153
- type = "lb_cookie"
154
- cookie_duration = 86400
155
- enabled = true
156
- }
157
-
158
- deregistration_delay = 30
159
- }
160
-
161
- resource "aws_lb_listener" "https" {
162
- load_balancer_arn = aws_lb.application.arn
163
- port = 443
164
- protocol = "HTTPS"
165
- ssl_policy = "ELBSecurityPolicy-TLS-1-2-2017-01"
166
- certificate_arn = var.certificate_arn
167
-
168
- default_action {
169
- type = "forward"
170
- target_group_arn = aws_lb_target_group.api.arn
171
- }
172
- }
173
-
174
- # Path-based routing
175
- resource "aws_lb_listener_rule" "api_v2" {
176
- listener_arn = aws_lb_listener.https.arn
177
- priority = 100
178
-
179
- action {
180
- type = "forward"
181
- target_group_arn = aws_lb_target_group.api_v2.arn
182
- }
183
-
184
- condition {
185
- path_pattern {
186
- values = ["/api/v2/*"]
187
- }
188
- }
189
- }
190
-
191
- # Header-based routing
192
- resource "aws_lb_listener_rule" "canary" {
193
- listener_arn = aws_lb_listener.https.arn
194
- priority = 50
195
-
196
- action {
197
- type = "forward"
198
- target_group_arn = aws_lb_target_group.canary.arn
199
- }
200
-
201
- condition {
202
- http_header {
203
- http_header_name = "X-Canary-Version"
204
- values = ["v2"]
205
- }
206
- }
207
- }
208
- ```
209
-
210
- ### Global Load Balancers
211
-
212
- **Characteristics:**
213
- - Geographic distribution
214
- - DNS-based routing
215
- - Multi-region failover
216
- - Latency-based routing
217
-
218
- **Example: AWS Global Accelerator**
219
- ```hcl
220
- resource "aws_globalaccelerator_accelerator" "main" {
221
- name = "app-accelerator"
222
- ip_address_type = "IPV4"
223
- enabled = true
224
-
225
- attributes {
226
- flow_logs_enabled = true
227
- flow_logs_s3_bucket = aws_s3_bucket.flow_logs.id
228
- }
229
- }
230
-
231
- resource "aws_globalaccelerator_listener" "main" {
232
- accelerator_arn = aws_globalaccelerator_accelerator.main.id
233
- protocol = "TCP"
234
-
235
- port_range {
236
- from_port = 443
237
- to_port = 443
238
- }
239
- }
240
-
241
- resource "aws_globalaccelerator_endpoint_group" "us_east" {
242
- listener_arn = aws_globalaccelerator_listener.main.id
243
- endpoint_group_region = "us-east-1"
244
-
245
- health_check_interval_seconds = 30
246
- health_check_path = "/health"
247
- health_check_port = 443
248
- health_check_protocol = "HTTPS"
249
- threshold_count = 3
250
- traffic_dial_percentage = 100
251
-
252
- endpoint_configuration {
253
- endpoint_id = aws_lb.us_east.arn
254
- weight = 100
255
- }
256
- }
257
-
258
- resource "aws_globalaccelerator_endpoint_group" "eu_west" {
259
- listener_arn = aws_globalaccelerator_listener.main.id
260
- endpoint_group_region = "eu-west-1"
261
-
262
- traffic_dial_percentage = 100
263
-
264
- endpoint_configuration {
265
- endpoint_id = aws_lb.eu_west.arn
266
- weight = 100
267
- }
268
- }
269
- ```
270
-
271
- ## Load Balancing Algorithms
272
-
273
- ### Round Robin
274
-
275
- **How it works:** Distributes requests sequentially across all servers.
276
-
277
- **Pros:**
278
- - Simple and fair distribution
279
- - No state required
280
- - Works well with identical servers
281
-
282
- **Cons:**
283
- - Doesn't account for server load
284
- - Not suitable for varying server capacities
285
-
286
- **Configuration:**
287
- ```nginx
288
- upstream backend {
289
- server backend1.example.com;
290
- server backend2.example.com;
291
- server backend3.example.com;
292
- }
293
- ```
294
-
295
- ### Weighted Round Robin
296
-
297
- **How it works:** Distributes based on assigned weights.
298
-
299
- ```nginx
300
- upstream backend {
301
- server backend1.example.com weight=3; # Gets 3x traffic
302
- server backend2.example.com weight=2; # Gets 2x traffic
303
- server backend3.example.com weight=1; # Gets 1x traffic
304
- }
305
- ```
306
-
307
- ### Least Connections
308
-
309
- **How it works:** Routes to server with fewest active connections.
310
-
311
- **Best for:** Long-lived connections, varying request durations
312
-
313
- ```nginx
314
- upstream backend {
315
- least_conn;
316
-
317
- server backend1.example.com;
318
- server backend2.example.com;
319
- server backend3.example.com;
320
- }
321
- ```
322
-
323
- ### IP Hash
324
-
325
- **How it works:** Hash client IP to determine server.
326
-
327
- **Best for:** Session persistence, sticky sessions
328
-
329
- ```nginx
330
- upstream backend {
331
- ip_hash;
332
-
333
- server backend1.example.com;
334
- server backend2.example.com;
335
- server backend3.example.com;
336
- }
337
- ```
338
-
339
- ### Consistent Hashing
340
-
341
- **How it works:** Hash-based distribution with minimal disruption on server changes.
342
-
343
- ```haproxy
344
- backend app_servers
345
- balance hdr(X-User-ID)
346
- hash-type consistent
347
-
348
- server app1 10.0.1.10:8080 check
349
- server app2 10.0.1.11:8080 check
350
- server app3 10.0.1.12:8080 check
351
- ```
352
-
353
- ## Health Checks
354
-
355
- ### Active Health Checks
356
-
357
- **HTTP/HTTPS Health Checks:**
358
- ```yaml
359
- # Kubernetes Liveness Probe
360
- livenessProbe:
361
- httpGet:
362
- path: /health
363
- port: 8080
364
- httpHeaders:
365
- - name: X-Health-Check
366
- value: "true"
367
- initialDelaySeconds: 30
368
- periodSeconds: 10
369
- timeoutSeconds: 5
370
- failureThreshold: 3
371
- successThreshold: 1
372
-
373
- # Kubernetes Readiness Probe
374
- readinessProbe:
375
- httpGet:
376
- path: /ready
377
- port: 8080
378
- initialDelaySeconds: 5
379
- periodSeconds: 5
380
- timeoutSeconds: 3
381
- failureThreshold: 3
382
- successThreshold: 1
383
- ```
384
-
385
- **TCP Health Checks:**
386
- ```haproxy
387
- backend mysql_servers
388
- mode tcp
389
- balance leastconn
390
-
391
- option tcp-check
392
- tcp-check connect port 3306
393
-
394
- server mysql1 10.0.1.20:3306 check inter 2s rise 2 fall 3
395
- server mysql2 10.0.1.21:3306 check inter 2s rise 2 fall 3
396
- ```
397
-
398
- ### Passive Health Checks
399
-
400
- **Circuit Breaker Pattern:**
401
- ```nginx
402
- upstream backend {
403
- server backend1.example.com max_fails=3 fail_timeout=30s;
404
- server backend2.example.com max_fails=3 fail_timeout=30s;
405
- server backend3.example.com max_fails=3 fail_timeout=30s;
406
- }
407
- ```
408
-
409
- ## SSL/TLS Termination
410
-
411
- ### HAProxy SSL Termination
412
-
413
- ```haproxy
414
- global
415
- maxconn 4096
416
- tune.ssl.default-dh-param 2048
417
-
418
- frontend https_frontend
419
- bind *:443 ssl crt /etc/haproxy/certs/site.pem alpn h2,http/1.1
420
-
421
- # Security headers
422
- http-response set-header Strict-Transport-Security "max-age=31536000; includeSubDomains"
423
- http-response set-header X-Frame-Options "SAMEORIGIN"
424
- http-response set-header X-Content-Type-Options "nosniff"
425
-
426
- # Redirect HTTP to HTTPS
427
- redirect scheme https code 301 if !{ ssl_fc }
428
-
429
- default_backend app_servers
430
-
431
- backend app_servers
432
- balance roundrobin
433
- option httpchk GET /health
434
- http-check expect status 200
435
-
436
- server app1 10.0.1.10:8080 check
437
- server app2 10.0.1.11:8080 check
438
- ```
439
-
440
- ### Nginx SSL Termination
441
-
442
- ```nginx
443
- server {
444
- listen 443 ssl http2;
445
- server_name app.example.com;
446
-
447
- ssl_certificate /etc/nginx/ssl/cert.pem;
448
- ssl_certificate_key /etc/nginx/ssl/key.pem;
449
-
450
- # Modern SSL configuration
451
- ssl_protocols TLSv1.2 TLSv1.3;
452
- ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
453
- ssl_prefer_server_ciphers off;
454
-
455
- ssl_session_cache shared:SSL:10m;
456
- ssl_session_timeout 10m;
457
- ssl_stapling on;
458
- ssl_stapling_verify on;
459
-
460
- add_header Strict-Transport-Security "max-age=31536000" always;
461
-
462
- location / {
463
- proxy_pass http://backend;
464
- proxy_set_header Host $host;
465
- proxy_set_header X-Real-IP $remote_addr;
466
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
467
- proxy_set_header X-Forwarded-Proto $scheme;
468
- }
469
- }
470
- ```
471
-
472
- ## Session Persistence
473
-
474
- ### Cookie-Based Persistence
475
-
476
- ```haproxy
477
- backend app_servers
478
- balance roundrobin
479
-
480
- # Insert cookie for session stickiness
481
- cookie SERVERID insert indirect nocache
482
-
483
- server app1 10.0.1.10:8080 check cookie app1
484
- server app2 10.0.1.11:8080 check cookie app2
485
- server app3 10.0.1.12:8080 check cookie app3
486
- ```
487
-
488
- ### Application-Controlled Sessions
489
-
490
- ```nginx
491
- upstream backend {
492
- hash $cookie_session_id consistent;
493
-
494
- server backend1.example.com;
495
- server backend2.example.com;
496
- server backend3.example.com;
497
- }
498
- ```
499
-
500
- ## Cloud Load Balancers
501
-
502
- ### AWS Load Balancer Comparison
503
-
504
- ```
505
- Feature ALB NLB GLB
506
- Layer 7 4 4
507
- Protocol HTTP/HTTPS TCP/UDP/TLS Any IP
508
- Routing Content Connection Network
509
- Static IP No Yes No
510
- PrivateLink Yes Yes No
511
- WebSocket Yes Yes No
512
- gRPC Yes Yes No
513
- Lambda Target Yes No No
514
- ```
515
-
516
- ### GCP Load Balancer
517
-
518
- ```yaml
519
- # GCP HTTP(S) Load Balancer via Terraform
520
- resource "google_compute_global_forwarding_rule" "https" {
521
- name = "app-https-forwarding-rule"
522
- target = google_compute_target_https_proxy.default.id
523
- port_range = "443"
524
- ip_address = google_compute_global_address.default.address
525
- }
526
-
527
- resource "google_compute_target_https_proxy" "default" {
528
- name = "app-https-proxy"
529
- url_map = google_compute_url_map.default.id
530
- ssl_certificates = [google_compute_ssl_certificate.default.id]
531
- }
532
-
533
- resource "google_compute_url_map" "default" {
534
- name = "app-url-map"
535
- default_service = google_compute_backend_service.default.id
536
-
537
- host_rule {
538
- hosts = ["app.example.com"]
539
- path_matcher = "allpaths"
540
- }
541
-
542
- path_matcher {
543
- name = "allpaths"
544
- default_service = google_compute_backend_service.default.id
545
-
546
- path_rule {
547
- paths = ["/api/v2/*"]
548
- service = google_compute_backend_service.api_v2.id
549
- }
550
- }
551
- }
552
-
553
- resource "google_compute_backend_service" "default" {
554
- name = "app-backend-service"
555
- protocol = "HTTP"
556
- timeout_sec = 30
557
- health_checks = [google_compute_health_check.default.id]
558
-
559
- backend {
560
- group = google_compute_instance_group.us_central1.id
561
- balancing_mode = "UTILIZATION"
562
- capacity_scaler = 1.0
563
- }
564
-
565
- backend {
566
- group = google_compute_instance_group.us_east1.id
567
- balancing_mode = "UTILIZATION"
568
- capacity_scaler = 1.0
569
- }
570
-
571
- log_config {
572
- enable = true
573
- sample_rate = 1.0
574
- }
575
- }
576
-
577
- resource "google_compute_health_check" "default" {
578
- name = "app-health-check"
579
- check_interval_sec = 10
580
- timeout_sec = 5
581
- healthy_threshold = 2
582
- unhealthy_threshold = 3
583
-
584
- http_health_check {
585
- port = 8080
586
- request_path = "/health"
587
- }
588
- }
589
- ```
590
-
591
- ## HAProxy Configuration
592
-
593
- ```haproxy
594
- global
595
- log /dev/log local0
596
- maxconn 4096
597
- user haproxy
598
- group haproxy
599
- daemon
600
-
601
- # SSL settings
602
- ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256
603
- ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets
604
-
605
- stats socket /run/haproxy/admin.sock mode 660 level admin
606
- stats timeout 30s
607
-
608
- defaults
609
- log global
610
- mode http
611
- option httplog
612
- option dontlognull
613
- option http-server-close
614
- option forwardfor except 127.0.0.0/8
615
- option redispatch
616
- retries 3
617
- timeout connect 5000
618
- timeout client 50000
619
- timeout server 50000
620
- errorfile 400 /etc/haproxy/errors/400.http
621
- errorfile 403 /etc/haproxy/errors/403.http
622
- errorfile 408 /etc/haproxy/errors/408.http
623
- errorfile 500 /etc/haproxy/errors/500.http
624
- errorfile 502 /etc/haproxy/errors/502.http
625
- errorfile 503 /etc/haproxy/errors/503.http
626
- errorfile 504 /etc/haproxy/errors/504.http
627
-
628
- frontend stats
629
- bind *:8404
630
- stats enable
631
- stats uri /stats
632
- stats refresh 10s
633
- stats auth admin:password
634
-
635
- frontend http_frontend
636
- bind *:80
637
- redirect scheme https code 301
638
-
639
- frontend https_frontend
640
- bind *:443 ssl crt /etc/haproxy/certs/
641
-
642
- # Rate limiting
643
- stick-table type ip size 100k expire 30s store http_req_rate(10s)
644
- http-request track-sc0 src
645
- http-request deny deny_status 429 if { sc_http_req_rate(0) gt 100 }
646
-
647
- # ACLs for routing
648
- acl is_api path_beg /api
649
- acl is_admin path_beg /admin
650
- acl is_static path_end .jpg .png .css .js
651
-
652
- use_backend api_servers if is_api
653
- use_backend admin_servers if is_admin
654
- use_backend static_servers if is_static
655
- default_backend app_servers
656
-
657
- backend app_servers
658
- balance roundrobin
659
- option httpchk GET /health HTTP/1.1\r\nHost:\ localhost
660
- http-check expect status 200
661
-
662
- server app1 10.0.1.10:8080 check inter 2s rise 2 fall 3 maxconn 1000
663
- server app2 10.0.1.11:8080 check inter 2s rise 2 fall 3 maxconn 1000
664
- server app3 10.0.1.12:8080 check inter 2s rise 2 fall 3 maxconn 1000
665
-
666
- backend api_servers
667
- balance leastconn
668
- option httpchk GET /api/health
669
-
670
- server api1 10.0.2.10:8080 check
671
- server api2 10.0.2.11:8080 check
672
- ```
673
-
674
- ## Nginx Load Balancing
675
-
676
- ```nginx
677
- http {
678
- upstream backend {
679
- least_conn;
680
-
681
- server backend1.example.com:8080 max_fails=3 fail_timeout=30s;
682
- server backend2.example.com:8080 max_fails=3 fail_timeout=30s;
683
- server backend3.example.com:8080 max_fails=3 fail_timeout=30s;
684
-
685
- # Backup server
686
- server backup.example.com:8080 backup;
687
-
688
- keepalive 32;
689
- }
690
-
691
- upstream api_backend {
692
- hash $request_uri consistent;
693
-
694
- server api1.example.com:8080;
695
- server api2.example.com:8080;
696
-
697
- keepalive 32;
698
- }
699
-
700
- server {
701
- listen 80;
702
- server_name app.example.com;
703
- return 301 https://$server_name$request_uri;
704
- }
705
-
706
- server {
707
- listen 443 ssl http2;
708
- server_name app.example.com;
709
-
710
- ssl_certificate /etc/nginx/ssl/cert.pem;
711
- ssl_certificate_key /etc/nginx/ssl/key.pem;
712
-
713
- location / {
714
- proxy_pass http://backend;
715
- proxy_http_version 1.1;
716
- proxy_set_header Connection "";
717
- proxy_set_header Host $host;
718
- proxy_set_header X-Real-IP $remote_addr;
719
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
720
- proxy_set_header X-Forwarded-Proto $scheme;
721
-
722
- # Timeouts
723
- proxy_connect_timeout 60s;
724
- proxy_send_timeout 60s;
725
- proxy_read_timeout 60s;
726
-
727
- # Buffering
728
- proxy_buffering on;
729
- proxy_buffer_size 4k;
730
- proxy_buffers 8 4k;
731
- }
732
-
733
- location /api/ {
734
- proxy_pass http://api_backend;
735
- proxy_http_version 1.1;
736
- proxy_set_header Connection "";
737
- }
738
-
739
- location /health {
740
- access_log off;
741
- return 200 "healthy\n";
742
- add_header Content-Type text/plain;
743
- }
744
- }
745
- }
746
- ```
747
-
748
- ## Kubernetes Ingress
749
-
750
- ```yaml
751
- apiVersion: networking.k8s.io/v1
752
- kind: Ingress
753
- metadata:
754
- name: app-ingress
755
- annotations:
756
- kubernetes.io/ingress.class: nginx
757
- cert-manager.io/cluster-issuer: letsencrypt-prod
758
- nginx.ingress.kubernetes.io/rate-limit: "100"
759
- nginx.ingress.kubernetes.io/ssl-redirect: "true"
760
- nginx.ingress.kubernetes.io/use-regex: "true"
761
- nginx.ingress.kubernetes.io/affinity: "cookie"
762
- nginx.ingress.kubernetes.io/session-cookie-name: "route"
763
- nginx.ingress.kubernetes.io/session-cookie-max-age: "86400"
764
- spec:
765
- tls:
766
- - hosts:
767
- - app.example.com
768
- secretName: app-tls
769
- rules:
770
- - host: app.example.com
771
- http:
772
- paths:
773
- - path: /api/v1
774
- pathType: Prefix
775
- backend:
776
- service:
777
- name: api-v1
778
- port:
779
- number: 8080
780
- - path: /api/v2
781
- pathType: Prefix
782
- backend:
783
- service:
784
- name: api-v2
785
- port:
786
- number: 8080
787
- - path: /
788
- pathType: Prefix
789
- backend:
790
- service:
791
- name: frontend
792
- port:
793
- number: 80
794
- ```
795
-
796
- ## Best Practices
797
-
798
- 1. **Always use health checks** - Detect and remove unhealthy instances
799
- 2. **Enable connection draining** - Allow in-flight requests to complete
800
- 3. **Use SSL/TLS termination** - Offload encryption from backends
801
- 4. **Implement rate limiting** - Protect against abuse and DDoS
802
- 5. **Enable access logs** - Debug issues and analyze traffic patterns
803
- 6. **Use appropriate timeouts** - Prevent resource exhaustion
804
- 7. **Configure proper session persistence** - When stateful sessions required
805
- 8. **Enable monitoring and metrics** - Track performance and errors
806
- 9. **Use multiple availability zones** - Ensure high availability
807
- 10. **Test failover regularly** - Verify redundancy works
808
-
809
- ## Anti-Patterns
810
-
811
- - **Single load balancer** - Creates single point of failure
812
- - **No health checks** - Sends traffic to failed instances
813
- - **Overly aggressive health checks** - Can overload backends
814
- - **No SSL/TLS** - Exposes traffic to interception
815
- - **Hard-coded server IPs** - Makes scaling difficult
816
- - **Insufficient connection limits** - Can exhaust resources
817
- - **No monitoring** - Can't detect issues
818
- - **Same health check and application port** - Can give false positives
819
- - **No timeout configuration** - Leads to resource leaks
820
- - **Ignoring connection draining** - Causes dropped requests during deployments