blockmine 1.24.0 → 1.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (346) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/README.en.md +427 -0
  3. package/README.md +40 -0
  4. package/backend/cli.js +1 -1
  5. package/backend/src/ai/plugin-assistant-system-prompt.md +664 -5
  6. package/backend/src/api/routes/bots.js +13 -0
  7. package/backend/src/api/routes/servers.js +14 -2
  8. package/backend/src/core/BotProcess.js +98 -2
  9. package/backend/src/core/PluginLoader.js +83 -3
  10. package/backend/src/core/PluginManager.js +75 -5
  11. package/backend/src/core/services/BotLifecycleService.js +186 -2
  12. package/backend/src/server.js +11 -1
  13. package/frontend/dist/assets/browser-ponyfill-DN7pwmHT.js +2 -0
  14. package/frontend/dist/assets/index-LSy71uwm.js +11261 -0
  15. package/frontend/dist/assets/index-SfhKxI4-.css +32 -0
  16. package/frontend/dist/flags/en.svg +32 -0
  17. package/frontend/dist/flags/ru.svg +5 -0
  18. package/frontend/dist/index.html +2 -2
  19. package/frontend/dist/locales/en/admin.json +100 -0
  20. package/frontend/dist/locales/en/api-keys.json +58 -0
  21. package/frontend/dist/locales/en/bots.json +110 -0
  22. package/frontend/dist/locales/en/common.json +47 -0
  23. package/frontend/dist/locales/en/configuration.json +22 -0
  24. package/frontend/dist/locales/en/console.json +10 -0
  25. package/frontend/dist/locales/en/dashboard.json +85 -0
  26. package/frontend/dist/locales/en/dialogs.json +70 -0
  27. package/frontend/dist/locales/en/event-graphs.json +50 -0
  28. package/frontend/dist/locales/en/graph-store.json +70 -0
  29. package/frontend/dist/locales/en/login.json +34 -0
  30. package/frontend/dist/locales/en/management.json +114 -0
  31. package/frontend/dist/locales/en/minecraft-viewer.json +27 -0
  32. package/frontend/dist/locales/en/nodes.json +1077 -0
  33. package/frontend/dist/locales/en/permissions.json +50 -0
  34. package/frontend/dist/locales/en/plugin-detail.json +49 -0
  35. package/frontend/dist/locales/en/plugins.json +110 -0
  36. package/frontend/dist/locales/en/proxies.json +81 -0
  37. package/frontend/dist/locales/en/servers.json +39 -0
  38. package/frontend/dist/locales/en/setup.json +17 -0
  39. package/frontend/dist/locales/en/sidebar.json +27 -0
  40. package/frontend/dist/locales/en/tasks.json +62 -0
  41. package/frontend/dist/locales/en/visual-editor.json +219 -0
  42. package/frontend/dist/locales/en/websocket.json +86 -0
  43. package/frontend/dist/locales/ru/admin.json +100 -0
  44. package/frontend/dist/locales/ru/api-keys.json +58 -0
  45. package/frontend/dist/locales/ru/bots.json +110 -0
  46. package/frontend/dist/locales/ru/common.json +49 -0
  47. package/frontend/dist/locales/ru/configuration.json +22 -0
  48. package/frontend/dist/locales/ru/console.json +10 -0
  49. package/frontend/dist/locales/ru/dashboard.json +85 -0
  50. package/frontend/dist/locales/ru/dialogs.json +70 -0
  51. package/frontend/dist/locales/ru/event-graphs.json +50 -0
  52. package/frontend/dist/locales/ru/graph-store.json +70 -0
  53. package/frontend/dist/locales/ru/login.json +34 -0
  54. package/frontend/dist/locales/ru/management.json +114 -0
  55. package/frontend/dist/locales/ru/minecraft-viewer.json +27 -0
  56. package/frontend/dist/locales/ru/nodes.json +1077 -0
  57. package/frontend/dist/locales/ru/permissions.json +50 -0
  58. package/frontend/dist/locales/ru/plugin-detail.json +49 -0
  59. package/frontend/dist/locales/ru/plugins.json +110 -0
  60. package/frontend/dist/locales/ru/proxies.json +81 -0
  61. package/frontend/dist/locales/ru/servers.json +39 -0
  62. package/frontend/dist/locales/ru/setup.json +17 -0
  63. package/frontend/dist/locales/ru/sidebar.json +27 -0
  64. package/frontend/dist/locales/ru/tasks.json +62 -0
  65. package/frontend/dist/locales/ru/visual-editor.json +221 -0
  66. package/frontend/dist/locales/ru/websocket.json +86 -0
  67. package/frontend/dist/monacoeditorwork/css.worker.bundle.js +7 -7
  68. package/frontend/dist/monacoeditorwork/html.worker.bundle.js +7 -7
  69. package/frontend/dist/monacoeditorwork/json.worker.bundle.js +7 -7
  70. package/frontend/dist/monacoeditorwork/ts.worker.bundle.js +3 -3
  71. package/frontend/package.json +4 -0
  72. package/package.json +1 -1
  73. package/screen/3dviewer.png +0 -0
  74. package/screen/console.png +0 -0
  75. package/screen/dashboard.png +0 -0
  76. package/screen/graph_collabe.png +0 -0
  77. package/screen/graph_live_debug.png +0 -0
  78. package/screen/language_selector.png +0 -0
  79. package/screen/management_command.png +0 -0
  80. package/screen/node_debug_trace.png +0 -0
  81. package/screen/plugin_/320/276/320/261/320/267/320/276/321/200.png +0 -0
  82. package/screen/websocket.png +0 -0
  83. 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
  84. 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
  85. package/.claude/agents/README.md +0 -469
  86. package/.claude/agents/auth-route-debugger.md +0 -118
  87. package/.claude/agents/auth-route-tester.md +0 -93
  88. package/.claude/agents/auto-error-resolver.md +0 -97
  89. package/.claude/agents/build-optimizer.md +0 -236
  90. package/.claude/agents/code-architect.md +0 -34
  91. package/.claude/agents/code-architecture-reviewer.md +0 -83
  92. package/.claude/agents/code-explorer.md +0 -51
  93. package/.claude/agents/code-refactor-master.md +0 -94
  94. package/.claude/agents/code-reviewer.md +0 -46
  95. package/.claude/agents/cost-optimizer.md +0 -134
  96. package/.claude/agents/deployment-orchestrator.md +0 -113
  97. package/.claude/agents/documentation-architect.md +0 -82
  98. package/.claude/agents/frontend-error-fixer.md +0 -77
  99. package/.claude/agents/iac-code-generator.md +0 -71
  100. package/.claude/agents/incident-responder.md +0 -346
  101. package/.claude/agents/infrastructure-architect.md +0 -31
  102. package/.claude/agents/kubernetes-specialist.md +0 -56
  103. package/.claude/agents/migration-planner.md +0 -181
  104. package/.claude/agents/network-architect.md +0 -196
  105. package/.claude/agents/plan-reviewer.md +0 -52
  106. package/.claude/agents/refactor-planner.md +0 -63
  107. package/.claude/agents/security-scanner.md +0 -102
  108. package/.claude/agents/web-research-specialist.md +0 -78
  109. package/.claude/commands/cost-analysis.md +0 -315
  110. package/.claude/commands/dev-docs-update.md +0 -55
  111. package/.claude/commands/dev-docs.md +0 -51
  112. package/.claude/commands/feature-dev.md +0 -125
  113. package/.claude/commands/incident-debug.md +0 -247
  114. package/.claude/commands/infra-plan.md +0 -81
  115. package/.claude/commands/migration-plan.md +0 -478
  116. package/.claude/commands/route-research-for-testing.md +0 -37
  117. package/.claude/commands/security-review.md +0 -66
  118. package/.claude/hooks/CONFIG.md +0 -448
  119. package/.claude/hooks/README.md +0 -163
  120. package/.claude/hooks/SKILL_ACTIVATION_COMPLETE.md +0 -226
  121. package/.claude/hooks/WINDOWS_HOOKS_README.md +0 -151
  122. package/.claude/hooks/add-skill-activation-banners.ts +0 -132
  123. package/.claude/hooks/comprehensive-skill-test.ts +0 -1315
  124. package/.claude/hooks/error-handling-reminder.sh +0 -12
  125. package/.claude/hooks/error-handling-reminder.ts +0 -222
  126. package/.claude/hooks/k8s-manifest-validator.sh +0 -56
  127. package/.claude/hooks/package-lock.json +0 -556
  128. package/.claude/hooks/package.json +0 -16
  129. package/.claude/hooks/post-tool-use-tracker.ps1 +0 -174
  130. package/.claude/hooks/post-tool-use-tracker.sh +0 -183
  131. package/.claude/hooks/security-policy-check.sh +0 -247
  132. package/.claude/hooks/skill-activation-prompt.ps1 +0 -10
  133. package/.claude/hooks/skill-activation-prompt.sh +0 -10
  134. package/.claude/hooks/skill-activation-prompt.ts +0 -141
  135. package/.claude/hooks/stop-build-check-enhanced.sh +0 -130
  136. package/.claude/hooks/terraform-validator.sh +0 -53
  137. package/.claude/hooks/test-input.json +0 -7
  138. package/.claude/hooks/test-skill-activation.ts +0 -427
  139. package/.claude/hooks/trigger-build-resolver.sh +0 -79
  140. package/.claude/hooks/tsc-check.sh +0 -173
  141. package/.claude/hooks/tsconfig.json +0 -19
  142. package/.claude/settings.json +0 -59
  143. package/.claude/settings.local.json +0 -67
  144. package/.claude/skills/README.md +0 -507
  145. package/.claude/skills/api-engineering/SKILL.md +0 -63
  146. package/.claude/skills/api-engineering/resources/api-versioning.md +0 -88
  147. package/.claude/skills/api-engineering/resources/graphql-patterns.md +0 -106
  148. package/.claude/skills/api-engineering/resources/rate-limiting.md +0 -118
  149. package/.claude/skills/api-engineering/resources/rest-api-design.md +0 -105
  150. package/.claude/skills/backend-dev-guidelines/SKILL.md +0 -306
  151. package/.claude/skills/backend-dev-guidelines/resources/architecture-overview.md +0 -451
  152. package/.claude/skills/backend-dev-guidelines/resources/async-and-errors.md +0 -307
  153. package/.claude/skills/backend-dev-guidelines/resources/complete-examples.md +0 -638
  154. package/.claude/skills/backend-dev-guidelines/resources/configuration.md +0 -275
  155. package/.claude/skills/backend-dev-guidelines/resources/database-patterns.md +0 -224
  156. package/.claude/skills/backend-dev-guidelines/resources/middleware-guide.md +0 -213
  157. package/.claude/skills/backend-dev-guidelines/resources/routing-and-controllers.md +0 -756
  158. package/.claude/skills/backend-dev-guidelines/resources/sentry-and-monitoring.md +0 -336
  159. package/.claude/skills/backend-dev-guidelines/resources/services-and-repositories.md +0 -789
  160. package/.claude/skills/backend-dev-guidelines/resources/testing-guide.md +0 -235
  161. package/.claude/skills/backend-dev-guidelines/resources/validation-patterns.md +0 -754
  162. package/.claude/skills/budget-and-cost-management/SKILL.md +0 -850
  163. package/.claude/skills/build-engineering/SKILL.md +0 -431
  164. package/.claude/skills/build-engineering/resources/artifact-repositories.md +0 -72
  165. package/.claude/skills/build-engineering/resources/build-caching.md +0 -96
  166. package/.claude/skills/build-engineering/resources/build-pipelines.md +0 -105
  167. package/.claude/skills/build-engineering/resources/build-security.md +0 -95
  168. package/.claude/skills/build-engineering/resources/build-systems.md +0 -389
  169. package/.claude/skills/build-engineering/resources/compilation-optimization.md +0 -201
  170. package/.claude/skills/build-engineering/resources/dependency-management.md +0 -73
  171. package/.claude/skills/build-engineering/resources/monorepo-builds.md +0 -110
  172. package/.claude/skills/build-engineering/resources/performance-optimization.md +0 -113
  173. package/.claude/skills/build-engineering/resources/reproducible-builds.md +0 -82
  174. package/.claude/skills/cloud-engineering/SKILL.md +0 -675
  175. package/.claude/skills/cloud-engineering/resources/aws-patterns.md +0 -742
  176. package/.claude/skills/cloud-engineering/resources/azure-patterns.md +0 -714
  177. package/.claude/skills/cloud-engineering/resources/cleared-cloud-environments.md +0 -987
  178. package/.claude/skills/cloud-engineering/resources/cloud-cost-optimization.md +0 -757
  179. package/.claude/skills/cloud-engineering/resources/cloud-networking.md +0 -1058
  180. package/.claude/skills/cloud-engineering/resources/cloud-security-tools.md +0 -1530
  181. package/.claude/skills/cloud-engineering/resources/cloud-security.md +0 -990
  182. package/.claude/skills/cloud-engineering/resources/gcp-patterns.md +0 -758
  183. package/.claude/skills/cloud-engineering/resources/migration-strategies.md +0 -820
  184. package/.claude/skills/cloud-engineering/resources/multi-cloud-strategies.md +0 -670
  185. package/.claude/skills/cloud-engineering/resources/oci-patterns.md +0 -1198
  186. package/.claude/skills/cloud-engineering/resources/serverless-patterns.md +0 -795
  187. package/.claude/skills/cloud-engineering/resources/well-architected-frameworks.md +0 -966
  188. package/.claude/skills/cybersecurity/SKILL.md +0 -409
  189. package/.claude/skills/cybersecurity/resources/security-architecture.md +0 -266
  190. package/.claude/skills/database-engineering/SKILL.md +0 -61
  191. package/.claude/skills/database-engineering/resources/backup-and-recovery.md +0 -72
  192. package/.claude/skills/database-engineering/resources/database-replication.md +0 -63
  193. package/.claude/skills/database-engineering/resources/postgresql-fundamentals.md +0 -70
  194. package/.claude/skills/database-engineering/resources/query-optimization.md +0 -68
  195. package/.claude/skills/devsecops/SKILL.md +0 -374
  196. package/.claude/skills/devsecops/resources/ci-cd-security.md +0 -204
  197. package/.claude/skills/devsecops/resources/compliance-automation.md +0 -530
  198. package/.claude/skills/devsecops/resources/compliance-frameworks.md +0 -2322
  199. package/.claude/skills/devsecops/resources/container-security.md +0 -915
  200. package/.claude/skills/devsecops/resources/cspm-integration.md +0 -1440
  201. package/.claude/skills/devsecops/resources/policy-enforcement.md +0 -619
  202. package/.claude/skills/devsecops/resources/secrets-management.md +0 -755
  203. package/.claude/skills/devsecops/resources/security-monitoring.md +0 -146
  204. package/.claude/skills/devsecops/resources/security-scanning.md +0 -887
  205. package/.claude/skills/devsecops/resources/security-testing.md +0 -203
  206. package/.claude/skills/devsecops/resources/supply-chain-security.md +0 -518
  207. package/.claude/skills/devsecops/resources/vulnerability-management.md +0 -481
  208. package/.claude/skills/devsecops/resources/zero-trust-architecture.md +0 -177
  209. package/.claude/skills/documentation-as-code/SKILL.md +0 -323
  210. package/.claude/skills/documentation-as-code/resources/api-documentation.md +0 -90
  211. package/.claude/skills/documentation-as-code/resources/changelog-management.md +0 -79
  212. package/.claude/skills/documentation-as-code/resources/diagram-generation.md +0 -44
  213. package/.claude/skills/documentation-as-code/resources/docs-as-code-workflow.md +0 -99
  214. package/.claude/skills/documentation-as-code/resources/documentation-automation.md +0 -68
  215. package/.claude/skills/documentation-as-code/resources/documentation-sites.md +0 -79
  216. package/.claude/skills/documentation-as-code/resources/markdown-best-practices.md +0 -162
  217. package/.claude/skills/documentation-as-code/resources/openapi-specification.md +0 -77
  218. package/.claude/skills/documentation-as-code/resources/readme-engineering.md +0 -60
  219. package/.claude/skills/documentation-as-code/resources/technical-writing-guide.md +0 -202
  220. package/.claude/skills/engineering-management/SKILL.md +0 -356
  221. package/.claude/skills/engineering-management/resources/career-ladders.md +0 -609
  222. package/.claude/skills/engineering-management/resources/hiring-and-assessment.md +0 -555
  223. package/.claude/skills/engineering-management/resources/one-on-one-guides.md +0 -609
  224. package/.claude/skills/engineering-management/resources/resource-planning.md +0 -557
  225. package/.claude/skills/engineering-management/resources/team-organization-patterns.md +0 -491
  226. package/.claude/skills/engineering-management/resources/technical-interviews.md +0 -474
  227. package/.claude/skills/engineering-operations-management/SKILL.md +0 -817
  228. package/.claude/skills/error-tracking/SKILL.md +0 -379
  229. package/.claude/skills/frontend-design/SKILL.md +0 -42
  230. package/.claude/skills/frontend-dev-guidelines/SKILL.md +0 -403
  231. package/.claude/skills/frontend-dev-guidelines/resources/common-patterns.md +0 -331
  232. package/.claude/skills/frontend-dev-guidelines/resources/complete-examples.md +0 -872
  233. package/.claude/skills/frontend-dev-guidelines/resources/component-patterns.md +0 -502
  234. package/.claude/skills/frontend-dev-guidelines/resources/data-fetching.md +0 -767
  235. package/.claude/skills/frontend-dev-guidelines/resources/file-organization.md +0 -502
  236. package/.claude/skills/frontend-dev-guidelines/resources/loading-and-error-states.md +0 -501
  237. package/.claude/skills/frontend-dev-guidelines/resources/performance.md +0 -406
  238. package/.claude/skills/frontend-dev-guidelines/resources/routing-guide.md +0 -364
  239. package/.claude/skills/frontend-dev-guidelines/resources/styling-guide.md +0 -428
  240. package/.claude/skills/frontend-dev-guidelines/resources/typescript-standards.md +0 -418
  241. package/.claude/skills/general-it-engineering/SKILL.md +0 -393
  242. package/.claude/skills/general-it-engineering/resources/asset-management.md +0 -712
  243. package/.claude/skills/general-it-engineering/resources/automation-orchestration.md +0 -817
  244. package/.claude/skills/general-it-engineering/resources/business-continuity.md +0 -786
  245. package/.claude/skills/general-it-engineering/resources/change-management.md +0 -715
  246. package/.claude/skills/general-it-engineering/resources/enterprise-monitoring.md +0 -729
  247. package/.claude/skills/general-it-engineering/resources/help-desk-operations.md +0 -738
  248. package/.claude/skills/general-it-engineering/resources/incident-service-management.md +0 -834
  249. package/.claude/skills/general-it-engineering/resources/it-governance.md +0 -753
  250. package/.claude/skills/general-it-engineering/resources/itil-framework.md +0 -503
  251. package/.claude/skills/general-it-engineering/resources/service-management.md +0 -669
  252. package/.claude/skills/infrastructure-architecture/SKILL.md +0 -328
  253. package/.claude/skills/infrastructure-architecture/resources/architecture-decision-records.md +0 -505
  254. package/.claude/skills/infrastructure-architecture/resources/architecture-patterns.md +0 -528
  255. package/.claude/skills/infrastructure-architecture/resources/capacity-planning.md +0 -453
  256. package/.claude/skills/infrastructure-architecture/resources/cleared-environment-architecture.md +0 -773
  257. package/.claude/skills/infrastructure-architecture/resources/cost-architecture.md +0 -499
  258. package/.claude/skills/infrastructure-architecture/resources/data-architecture.md +0 -501
  259. package/.claude/skills/infrastructure-architecture/resources/disaster-recovery.md +0 -535
  260. package/.claude/skills/infrastructure-architecture/resources/migration-architecture.md +0 -512
  261. package/.claude/skills/infrastructure-architecture/resources/multi-region-design.md +0 -608
  262. package/.claude/skills/infrastructure-architecture/resources/reference-architectures.md +0 -562
  263. package/.claude/skills/infrastructure-architecture/resources/security-architecture.md +0 -538
  264. package/.claude/skills/infrastructure-architecture/resources/system-design-principles.md +0 -489
  265. package/.claude/skills/infrastructure-architecture/resources/workload-classification.md +0 -1000
  266. package/.claude/skills/infrastructure-strategy/SKILL.md +0 -924
  267. package/.claude/skills/network-engineering/SKILL.md +0 -385
  268. package/.claude/skills/network-engineering/resources/dns-management.md +0 -738
  269. package/.claude/skills/network-engineering/resources/load-balancing.md +0 -820
  270. package/.claude/skills/network-engineering/resources/network-architecture.md +0 -546
  271. package/.claude/skills/network-engineering/resources/network-security.md +0 -921
  272. package/.claude/skills/network-engineering/resources/network-troubleshooting.md +0 -749
  273. package/.claude/skills/network-engineering/resources/routing-switching.md +0 -373
  274. package/.claude/skills/network-engineering/resources/sdn-networking.md +0 -695
  275. package/.claude/skills/network-engineering/resources/service-mesh-networking.md +0 -777
  276. package/.claude/skills/network-engineering/resources/tcp-ip-protocols.md +0 -444
  277. package/.claude/skills/network-engineering/resources/vpn-connectivity.md +0 -672
  278. package/.claude/skills/node-development/SKILL.md +0 -317
  279. package/.claude/skills/observability-engineering/SKILL.md +0 -101
  280. package/.claude/skills/observability-engineering/resources/apm-tools.md +0 -97
  281. package/.claude/skills/observability-engineering/resources/correlation-strategies.md +0 -87
  282. package/.claude/skills/observability-engineering/resources/distributed-tracing.md +0 -98
  283. package/.claude/skills/observability-engineering/resources/logs-aggregation.md +0 -118
  284. package/.claude/skills/observability-engineering/resources/observability-cost-optimization.md +0 -141
  285. package/.claude/skills/observability-engineering/resources/opentelemetry.md +0 -110
  286. package/.claude/skills/platform-engineering/SKILL.md +0 -555
  287. package/.claude/skills/platform-engineering/resources/architecture-overview.md +0 -600
  288. package/.claude/skills/platform-engineering/resources/container-orchestration.md +0 -916
  289. package/.claude/skills/platform-engineering/resources/cost-optimization.md +0 -634
  290. package/.claude/skills/platform-engineering/resources/developer-platforms.md +0 -670
  291. package/.claude/skills/platform-engineering/resources/gitops-automation.md +0 -650
  292. package/.claude/skills/platform-engineering/resources/infrastructure-as-code.md +0 -778
  293. package/.claude/skills/platform-engineering/resources/infrastructure-standards.md +0 -708
  294. package/.claude/skills/platform-engineering/resources/multi-tenancy.md +0 -602
  295. package/.claude/skills/platform-engineering/resources/platform-security.md +0 -711
  296. package/.claude/skills/platform-engineering/resources/resource-management.md +0 -592
  297. package/.claude/skills/platform-engineering/resources/service-mesh.md +0 -628
  298. package/.claude/skills/release-engineering/SKILL.md +0 -393
  299. package/.claude/skills/release-engineering/resources/artifact-management.md +0 -108
  300. package/.claude/skills/release-engineering/resources/build-optimization.md +0 -84
  301. package/.claude/skills/release-engineering/resources/ci-cd-pipelines.md +0 -411
  302. package/.claude/skills/release-engineering/resources/deployment-strategies.md +0 -197
  303. package/.claude/skills/release-engineering/resources/pipeline-security.md +0 -62
  304. package/.claude/skills/release-engineering/resources/progressive-delivery.md +0 -83
  305. package/.claude/skills/release-engineering/resources/release-automation.md +0 -68
  306. package/.claude/skills/release-engineering/resources/release-orchestration.md +0 -77
  307. package/.claude/skills/release-engineering/resources/rollback-strategies.md +0 -66
  308. package/.claude/skills/release-engineering/resources/versioning-strategies.md +0 -59
  309. package/.claude/skills/route-tester/SKILL.md +0 -392
  310. package/.claude/skills/skill-developer/ADVANCED.md +0 -197
  311. package/.claude/skills/skill-developer/HOOK_MECHANISMS.md +0 -306
  312. package/.claude/skills/skill-developer/PATTERNS_LIBRARY.md +0 -152
  313. package/.claude/skills/skill-developer/SKILL.md +0 -430
  314. package/.claude/skills/skill-developer/SKILL_RULES_REFERENCE.md +0 -315
  315. package/.claude/skills/skill-developer/TRIGGER_TYPES.md +0 -305
  316. package/.claude/skills/skill-developer/TROUBLESHOOTING.md +0 -514
  317. package/.claude/skills/skill-rules.json +0 -2989
  318. package/.claude/skills/sre/SKILL.md +0 -464
  319. package/.claude/skills/sre/resources/alerting-best-practices.md +0 -282
  320. package/.claude/skills/sre/resources/capacity-planning.md +0 -226
  321. package/.claude/skills/sre/resources/chaos-engineering.md +0 -193
  322. package/.claude/skills/sre/resources/disaster-recovery.md +0 -232
  323. package/.claude/skills/sre/resources/incident-management.md +0 -436
  324. package/.claude/skills/sre/resources/observability-stack.md +0 -240
  325. package/.claude/skills/sre/resources/on-call-runbooks.md +0 -167
  326. package/.claude/skills/sre/resources/performance-optimization.md +0 -108
  327. package/.claude/skills/sre/resources/reliability-patterns.md +0 -183
  328. package/.claude/skills/sre/resources/slo-sli-sla.md +0 -464
  329. package/.claude/skills/sre/resources/toil-reduction.md +0 -145
  330. package/.claude/skills/systems-engineering/SKILL.md +0 -648
  331. package/.claude/skills/systems-engineering/resources/automation-patterns.md +0 -771
  332. package/.claude/skills/systems-engineering/resources/configuration-management.md +0 -998
  333. package/.claude/skills/systems-engineering/resources/linux-administration.md +0 -672
  334. package/.claude/skills/systems-engineering/resources/networking-fundamentals.md +0 -982
  335. package/.claude/skills/systems-engineering/resources/performance-tuning.md +0 -871
  336. package/.claude/skills/systems-engineering/resources/powershell-scripting.md +0 -482
  337. package/.claude/skills/systems-engineering/resources/security-hardening.md +0 -739
  338. package/.claude/skills/systems-engineering/resources/shell-scripting.md +0 -915
  339. package/.claude/skills/systems-engineering/resources/storage-management.md +0 -628
  340. package/.claude/skills/systems-engineering/resources/system-monitoring.md +0 -787
  341. package/.claude/skills/systems-engineering/resources/troubleshooting-guide.md +0 -753
  342. package/.claude/skills/systems-engineering/resources/windows-administration.md +0 -738
  343. package/.claude/skills/technical-leadership/SKILL.md +0 -728
  344. package/backend/docs/SECRETS_DOCUMENTATION.md +0 -327
  345. package/frontend/dist/assets/index-BC-NbKXi.css +0 -32
  346. package/frontend/dist/assets/index-DqJXZMHY.js +0 -11266
@@ -1,795 +0,0 @@
1
- # Serverless Patterns
2
-
3
- Comprehensive guide to serverless architectures across AWS Lambda, Azure Functions, and Google Cloud Functions. Covers patterns, best practices, and real-world implementations.
4
-
5
- ## Serverless Architecture Overview
6
-
7
- ```
8
- ┌────────────────────────────────────────────────────────┐
9
- │ Serverless Stack │
10
- ├────────────────────┬───────────────────────────────────┤
11
- │ Event Sources │ Compute Layer │
12
- ├────────────────────┼───────────────────────────────────┤
13
- │ API Gateway │ AWS Lambda │
14
- │ S3 Events │ Azure Functions │
15
- │ DynamoDB Streams │ Cloud Functions │
16
- │ SQS/SNS │ Cloud Run │
17
- │ EventBridge │ │
18
- │ CloudWatch Events │ │
19
- ├────────────────────┼───────────────────────────────────┤
20
- │ Data Layer │ Integration │
21
- ├────────────────────┼───────────────────────────────────┤
22
- │ DynamoDB │ Step Functions │
23
- │ S3 │ Logic Apps │
24
- │ Firestore │ Workflows │
25
- │ Aurora Serverless │ EventBridge │
26
- └────────────────────┴───────────────────────────────────┘
27
- ```
28
-
29
- ## Pattern 1: API with Lambda
30
-
31
- ### AWS Lambda + API Gateway
32
-
33
- **Serverless REST API:**
34
- ```yaml
35
- # SAM template
36
- AWSTemplateFormatVersion: '2010-09-09'
37
- Transform: AWS::Serverless-2016-10-31
38
-
39
- Globals:
40
- Function:
41
- Runtime: python3.11
42
- Timeout: 30
43
- MemorySize: 256
44
- Environment:
45
- Variables:
46
- TABLE_NAME: !Ref UsersTable
47
- POWERTOOLS_SERVICE_NAME: users-api
48
- LOG_LEVEL: INFO
49
- Layers:
50
- - !Sub 'arn:aws:lambda:${AWS::Region}:017000801446:layer:AWSLambdaPowertoolsPythonV2:51'
51
-
52
- Resources:
53
- # API Gateway
54
- UsersApi:
55
- Type: AWS::Serverless::Api
56
- Properties:
57
- StageName: prod
58
- TracingEnabled: true
59
- MethodSettings:
60
- - ResourcePath: '/*'
61
- HttpMethod: '*'
62
- LoggingLevel: INFO
63
- DataTraceEnabled: true
64
- MetricsEnabled: true
65
- Auth:
66
- DefaultAuthorizer: CognitoAuthorizer
67
- Authorizers:
68
- CognitoAuthorizer:
69
- UserPoolArn: !GetAtt UserPool.Arn
70
- ApiKeyRequired: false
71
- Cors:
72
- AllowMethods: "'GET,POST,PUT,DELETE,OPTIONS'"
73
- AllowHeaders: "'Content-Type,Authorization,X-Amz-Date'"
74
- AllowOrigin: "'*'"
75
- AccessLogSetting:
76
- DestinationArn: !GetAtt ApiLogGroup.Arn
77
- Format: '{"requestId":"$context.requestId","ip":"$context.identity.sourceIp","requestTime":"$context.requestTime","httpMethod":"$context.httpMethod","routeKey":"$context.routeKey","status":"$context.status","protocol":"$context.protocol","responseLength":"$context.responseLength"}'
78
-
79
- # Lambda Functions
80
- GetUserFunction:
81
- Type: AWS::Serverless::Function
82
- Properties:
83
- CodeUri: functions/get_user/
84
- Handler: app.lambda_handler
85
- Description: Get user by ID
86
- Events:
87
- GetUser:
88
- Type: Api
89
- Properties:
90
- RestApiId: !Ref UsersApi
91
- Path: /users/{userId}
92
- Method: GET
93
- Policies:
94
- - DynamoDBReadPolicy:
95
- TableName: !Ref UsersTable
96
- Environment:
97
- Variables:
98
- POWERTOOLS_METRICS_NAMESPACE: UsersAPI
99
-
100
- CreateUserFunction:
101
- Type: AWS::Serverless::Function
102
- Properties:
103
- CodeUri: functions/create_user/
104
- Handler: app.lambda_handler
105
- Description: Create new user
106
- MemorySize: 512
107
- Events:
108
- CreateUser:
109
- Type: Api
110
- Properties:
111
- RestApiId: !Ref UsersApi
112
- Path: /users
113
- Method: POST
114
- Policies:
115
- - DynamoDBCrudPolicy:
116
- TableName: !Ref UsersTable
117
- Environment:
118
- Variables:
119
- POWERTOOLS_METRICS_NAMESPACE: UsersAPI
120
-
121
- UpdateUserFunction:
122
- Type: AWS::Serverless::Function
123
- Properties:
124
- CodeUri: functions/update_user/
125
- Handler: app.lambda_handler
126
- Description: Update user
127
- Events:
128
- UpdateUser:
129
- Type: Api
130
- Properties:
131
- RestApiId: !Ref UsersApi
132
- Path: /users/{userId}
133
- Method: PUT
134
- Policies:
135
- - DynamoDBCrudPolicy:
136
- TableName: !Ref UsersTable
137
-
138
- DeleteUserFunction:
139
- Type: AWS::Serverless::Function
140
- Properties:
141
- CodeUri: functions/delete_user/
142
- Handler: app.lambda_handler
143
- Description: Delete user
144
- Events:
145
- DeleteUser:
146
- Type: Api
147
- Properties:
148
- RestApiId: !Ref UsersApi
149
- Path: /users/{userId}
150
- Method: DELETE
151
- Policies:
152
- - DynamoDBCrudPolicy:
153
- TableName: !Ref UsersTable
154
-
155
- # DynamoDB Table
156
- UsersTable:
157
- Type: AWS::DynamoDB::Table
158
- Properties:
159
- TableName: Users
160
- BillingMode: PAY_PER_REQUEST
161
- AttributeDefinitions:
162
- - AttributeName: userId
163
- AttributeType: S
164
- - AttributeName: email
165
- AttributeType: S
166
- - AttributeName: createdAt
167
- AttributeType: N
168
- KeySchema:
169
- - AttributeName: userId
170
- KeyType: HASH
171
- GlobalSecondaryIndexes:
172
- - IndexName: EmailIndex
173
- KeySchema:
174
- - AttributeName: email
175
- KeyType: HASH
176
- Projection:
177
- ProjectionType: ALL
178
- - IndexName: CreatedAtIndex
179
- KeySchema:
180
- - AttributeName: userId
181
- KeyType: HASH
182
- - AttributeName: createdAt
183
- KeyType: RANGE
184
- Projection:
185
- ProjectionType: ALL
186
- StreamSpecification:
187
- StreamViewType: NEW_AND_OLD_IMAGES
188
- PointInTimeRecoverySpecification:
189
- PointInTimeRecoveryEnabled: true
190
- SSESpecification:
191
- SSEEnabled: true
192
-
193
- # CloudWatch Log Groups
194
- ApiLogGroup:
195
- Type: AWS::Logs::LogGroup
196
- Properties:
197
- LogGroupName: /aws/apigateway/users-api
198
- RetentionInDays: 30
199
-
200
- # Cognito User Pool
201
- UserPool:
202
- Type: AWS::Cognito::UserPool
203
- Properties:
204
- UserPoolName: users-pool
205
- MfaConfiguration: OPTIONAL
206
- EnabledMfas:
207
- - SOFTWARE_TOKEN_MFA
208
- Schema:
209
- - Name: email
210
- Required: true
211
- Mutable: false
212
- AutoVerifiedAttributes:
213
- - email
214
-
215
- Outputs:
216
- UsersApiUrl:
217
- Description: API Gateway endpoint URL
218
- Value: !Sub 'https://${UsersApi}.execute-api.${AWS::Region}.amazonaws.com/prod'
219
-
220
- UsersTableName:
221
- Description: DynamoDB table name
222
- Value: !Ref UsersTable
223
- ```
224
-
225
- **Lambda Function with Best Practices:**
226
- ```python
227
- # functions/get_user/app.py
228
- import json
229
- import os
230
- import boto3
231
- from aws_lambda_powertools import Logger, Tracer, Metrics
232
- from aws_lambda_powertools.utilities.typing import LambdaContext
233
- from aws_lambda_powertools.metrics import MetricUnit
234
- from botocore.exceptions import ClientError
235
-
236
- # Initialize Powertools
237
- logger = Logger()
238
- tracer = Tracer()
239
- metrics = Metrics()
240
-
241
- # DynamoDB client
242
- dynamodb = boto3.resource('dynamodb')
243
- table = dynamodb.Table(os.environ['TABLE_NAME'])
244
-
245
- @logger.inject_lambda_context(log_event=True)
246
- @tracer.capture_lambda_handler
247
- @metrics.log_metrics(capture_cold_start_metric=True)
248
- def lambda_handler(event: dict, context: LambdaContext) -> dict:
249
- """
250
- Get user by ID from DynamoDB
251
- """
252
- try:
253
- # Extract user ID from path parameters
254
- user_id = event['pathParameters']['userId']
255
-
256
- logger.info(f"Retrieving user: {user_id}")
257
-
258
- # Get item from DynamoDB
259
- response = table.get_item(
260
- Key={'userId': user_id}
261
- )
262
-
263
- if 'Item' not in response:
264
- logger.warning(f"User not found: {user_id}")
265
- metrics.add_metric(name="UserNotFound", unit=MetricUnit.Count, value=1)
266
-
267
- return {
268
- 'statusCode': 404,
269
- 'headers': {
270
- 'Content-Type': 'application/json',
271
- 'Access-Control-Allow-Origin': '*'
272
- },
273
- 'body': json.dumps({
274
- 'error': 'User not found',
275
- 'userId': user_id
276
- })
277
- }
278
-
279
- # Success
280
- user = response['Item']
281
- logger.info(f"User retrieved successfully: {user_id}")
282
- metrics.add_metric(name="UserRetrieved", unit=MetricUnit.Count, value=1)
283
-
284
- return {
285
- 'statusCode': 200,
286
- 'headers': {
287
- 'Content-Type': 'application/json',
288
- 'Access-Control-Allow-Origin': '*'
289
- },
290
- 'body': json.dumps(user, default=str)
291
- }
292
-
293
- except ClientError as e:
294
- logger.exception(f"DynamoDB error: {e}")
295
- metrics.add_metric(name="DynamoDBError", unit=MetricUnit.Count, value=1)
296
-
297
- return {
298
- 'statusCode': 500,
299
- 'headers': {
300
- 'Content-Type': 'application/json',
301
- 'Access-Control-Allow-Origin': '*'
302
- },
303
- 'body': json.dumps({
304
- 'error': 'Internal server error'
305
- })
306
- }
307
-
308
- except Exception as e:
309
- logger.exception(f"Unexpected error: {e}")
310
- metrics.add_metric(name="UnexpectedError", unit=MetricUnit.Count, value=1)
311
-
312
- return {
313
- 'statusCode': 500,
314
- 'headers': {
315
- 'Content-Type': 'application/json',
316
- 'Access-Control-Allow-Origin': '*'
317
- },
318
- 'body': json.dumps({
319
- 'error': 'Internal server error'
320
- })
321
- }
322
- ```
323
-
324
- ## Pattern 2: Event-Driven Architecture
325
-
326
- ### S3 Event Processing
327
-
328
- ```yaml
329
- # SAM template for S3 event processing
330
- Resources:
331
- ImageProcessorFunction:
332
- Type: AWS::Serverless::Function
333
- Properties:
334
- CodeUri: functions/image_processor/
335
- Handler: app.lambda_handler
336
- Runtime: python3.11
337
- MemorySize: 1024
338
- Timeout: 300
339
- Environment:
340
- Variables:
341
- DEST_BUCKET: !Ref ProcessedBucket
342
- Events:
343
- S3Event:
344
- Type: S3
345
- Properties:
346
- Bucket: !Ref UploadBucket
347
- Events: s3:ObjectCreated:*
348
- Filter:
349
- S3Key:
350
- Rules:
351
- - Name: prefix
352
- Value: uploads/
353
- - Name: suffix
354
- Value: .jpg
355
- Policies:
356
- - S3ReadPolicy:
357
- BucketName: !Ref UploadBucket
358
- - S3CrudPolicy:
359
- BucketName: !Ref ProcessedBucket
360
-
361
- UploadBucket:
362
- Type: AWS::S3::Bucket
363
- Properties:
364
- BucketName: !Sub '${AWS::StackName}-uploads'
365
- NotificationConfiguration:
366
- LambdaConfigurations:
367
- - Event: s3:ObjectCreated:*
368
- Function: !GetAtt ImageProcessorFunction.Arn
369
- Filter:
370
- S3Key:
371
- Rules:
372
- - Name: prefix
373
- Value: uploads/
374
-
375
- ProcessedBucket:
376
- Type: AWS::S3::Bucket
377
- Properties:
378
- BucketName: !Sub '${AWS::StackName}-processed'
379
- ```
380
-
381
- **Image Processing Lambda:**
382
- ```python
383
- # functions/image_processor/app.py
384
- import os
385
- import boto3
386
- from PIL import Image
387
- from io import BytesIO
388
- from aws_lambda_powertools import Logger
389
-
390
- logger = Logger()
391
- s3 = boto3.client('s3')
392
-
393
- @logger.inject_lambda_context
394
- def lambda_handler(event, context):
395
- """Process uploaded images"""
396
-
397
- dest_bucket = os.environ['DEST_BUCKET']
398
-
399
- for record in event['Records']:
400
- bucket = record['s3']['bucket']['name']
401
- key = record['s3']['object']['key']
402
-
403
- logger.info(f"Processing {bucket}/{key}")
404
-
405
- try:
406
- # Download image
407
- response = s3.get_object(Bucket=bucket, Key=key)
408
- image_data = response['Body'].read()
409
-
410
- # Process image
411
- img = Image.open(BytesIO(image_data))
412
-
413
- # Create thumbnail
414
- img.thumbnail((200, 200))
415
-
416
- # Save to buffer
417
- buffer = BytesIO()
418
- img.save(buffer, format='JPEG', quality=85)
419
- buffer.seek(0)
420
-
421
- # Upload to destination
422
- thumb_key = f"thumbnails/{key.split('/')[-1]}"
423
- s3.put_object(
424
- Bucket=dest_bucket,
425
- Key=thumb_key,
426
- Body=buffer,
427
- ContentType='image/jpeg'
428
- )
429
-
430
- logger.info(f"Thumbnail created: {thumb_key}")
431
-
432
- except Exception as e:
433
- logger.exception(f"Error processing {key}: {e}")
434
- raise
435
- ```
436
-
437
- ## Pattern 3: Async Processing with SQS
438
-
439
- ```yaml
440
- Resources:
441
- # SQS Queue
442
- ProcessingQueue:
443
- Type: AWS::SQS::Queue
444
- Properties:
445
- QueueName: data-processing-queue
446
- VisibilityTimeout: 300
447
- MessageRetentionPeriod: 1209600
448
- RedrivePolicy:
449
- deadLetterTargetArn: !GetAtt DeadLetterQueue.Arn
450
- maxReceiveCount: 3
451
-
452
- DeadLetterQueue:
453
- Type: AWS::SQS::Queue
454
- Properties:
455
- QueueName: data-processing-dlq
456
- MessageRetentionPeriod: 1209600
457
-
458
- # Lambda processor
459
- ProcessorFunction:
460
- Type: AWS::Serverless::Function
461
- Properties:
462
- CodeUri: functions/processor/
463
- Handler: app.lambda_handler
464
- Runtime: python3.11
465
- MemorySize: 512
466
- Timeout: 300
467
- ReservedConcurrentExecutions: 10
468
- Events:
469
- SQSEvent:
470
- Type: SQS
471
- Properties:
472
- Queue: !GetAtt ProcessingQueue.Arn
473
- BatchSize: 10
474
- MaximumBatchingWindowInSeconds: 5
475
- Policies:
476
- - SQSPollerPolicy:
477
- QueueName: !GetAtt ProcessingQueue.QueueName
478
- - DynamoDBCrudPolicy:
479
- TableName: !Ref ResultsTable
480
-
481
- # API to submit jobs
482
- SubmitJobFunction:
483
- Type: AWS::Serverless::Function
484
- Properties:
485
- CodeUri: functions/submit_job/
486
- Handler: app.lambda_handler
487
- Runtime: python3.11
488
- Events:
489
- ApiEvent:
490
- Type: Api
491
- Properties:
492
- Path: /jobs
493
- Method: POST
494
- Environment:
495
- Variables:
496
- QUEUE_URL: !Ref ProcessingQueue
497
- Policies:
498
- - SQSSendMessagePolicy:
499
- QueueName: !GetAtt ProcessingQueue.QueueName
500
- ```
501
-
502
- ## Pattern 4: Step Functions Orchestration
503
-
504
- ```json
505
- {
506
- "Comment": "Order processing workflow",
507
- "StartAt": "ValidateOrder",
508
- "States": {
509
- "ValidateOrder": {
510
- "Type": "Task",
511
- "Resource": "${ValidateOrderFunction}",
512
- "Next": "CheckInventory",
513
- "Catch": [{
514
- "ErrorEquals": ["ValidationError"],
515
- "Next": "OrderFailed"
516
- }]
517
- },
518
- "CheckInventory": {
519
- "Type": "Task",
520
- "Resource": "${CheckInventoryFunction}",
521
- "Next": "InventoryAvailable?",
522
- "Retry": [{
523
- "ErrorEquals": ["ServiceException"],
524
- "IntervalSeconds": 2,
525
- "MaxAttempts": 3,
526
- "BackoffRate": 2
527
- }]
528
- },
529
- "InventoryAvailable?": {
530
- "Type": "Choice",
531
- "Choices": [{
532
- "Variable": "$.inventory.available",
533
- "BooleanEquals": true,
534
- "Next": "ProcessPayment"
535
- }],
536
- "Default": "OutOfStock"
537
- },
538
- "ProcessPayment": {
539
- "Type": "Task",
540
- "Resource": "${ProcessPaymentFunction}",
541
- "Next": "CreateShipment",
542
- "Catch": [{
543
- "ErrorEquals": ["PaymentFailed"],
544
- "Next": "PaymentFailed"
545
- }]
546
- },
547
- "CreateShipment": {
548
- "Type": "Task",
549
- "Resource": "${CreateShipmentFunction}",
550
- "Next": "SendConfirmation"
551
- },
552
- "SendConfirmation": {
553
- "Type": "Task",
554
- "Resource": "${SendConfirmationFunction}",
555
- "Next": "OrderComplete"
556
- },
557
- "OrderComplete": {
558
- "Type": "Succeed"
559
- },
560
- "OutOfStock": {
561
- "Type": "Task",
562
- "Resource": "${NotifyOutOfStockFunction}",
563
- "Next": "OrderFailed"
564
- },
565
- "PaymentFailed": {
566
- "Type": "Task",
567
- "Resource": "${NotifyPaymentFailedFunction}",
568
- "Next": "OrderFailed"
569
- },
570
- "OrderFailed": {
571
- "Type": "Fail",
572
- "Error": "OrderProcessingFailed"
573
- }
574
- }
575
- }
576
- ```
577
-
578
- ## Pattern 5: Scheduled Tasks
579
-
580
- ```yaml
581
- Resources:
582
- CleanupFunction:
583
- Type: AWS::Serverless::Function
584
- Properties:
585
- CodeUri: functions/cleanup/
586
- Handler: app.lambda_handler
587
- Runtime: python3.11
588
- Events:
589
- DailyCleanup:
590
- Type: Schedule
591
- Properties:
592
- Schedule: 'cron(0 2 * * ? *)' # 2 AM UTC daily
593
- Description: Daily cleanup task
594
- Enabled: true
595
- Policies:
596
- - S3CrudPolicy:
597
- BucketName: !Ref TempBucket
598
- - DynamoDBCrudPolicy:
599
- TableName: !Ref SessionsTable
600
-
601
- WeeklyReportFunction:
602
- Type: AWS::Serverless::Function
603
- Properties:
604
- CodeUri: functions/weekly_report/
605
- Handler: app.lambda_handler
606
- Runtime: python3.11
607
- Events:
608
- WeeklyReport:
609
- Type: Schedule
610
- Properties:
611
- Schedule: 'cron(0 9 ? * MON *)' # 9 AM UTC every Monday
612
- Environment:
613
- Variables:
614
- REPORT_BUCKET: !Ref ReportsBucket
615
- ```
616
-
617
- ## Azure Functions
618
-
619
- **HTTP Trigger:**
620
- ```python
621
- # function_app.py
622
- import azure.functions as func
623
- import logging
624
- import json
625
-
626
- app = func.FunctionApp()
627
-
628
- @app.function_name(name="HttpTrigger")
629
- @app.route(route="users/{userId}", methods=["GET"])
630
- def get_user(req: func.HttpRequest) -> func.HttpResponse:
631
- logging.info('Python HTTP trigger function processed a request.')
632
-
633
- user_id = req.route_params.get('userId')
634
-
635
- if not user_id:
636
- return func.HttpResponse(
637
- json.dumps({"error": "userId is required"}),
638
- status_code=400,
639
- mimetype="application/json"
640
- )
641
-
642
- # Get user from database
643
- # ...
644
-
645
- return func.HttpResponse(
646
- json.dumps({"userId": user_id, "name": "John Doe"}),
647
- status_code=200,
648
- mimetype="application/json"
649
- )
650
-
651
- @app.function_name(name="BlobTrigger")
652
- @app.blob_trigger(arg_name="myblob",
653
- path="uploads/{name}",
654
- connection="AzureWebJobsStorage")
655
- def process_blob(myblob: func.InputStream):
656
- logging.info(f"Processing blob: {myblob.name}")
657
- # Process blob
658
- ```
659
-
660
- ## Google Cloud Functions
661
-
662
- **HTTP Function:**
663
- ```python
664
- # main.py
665
- import functions_framework
666
- from google.cloud import firestore
667
- import json
668
-
669
- db = firestore.Client()
670
-
671
- @functions_framework.http
672
- def get_user(request):
673
- """HTTP Cloud Function"""
674
-
675
- # Set CORS headers
676
- if request.method == 'OPTIONS':
677
- headers = {
678
- 'Access-Control-Allow-Origin': '*',
679
- 'Access-Control-Allow-Methods': 'GET',
680
- 'Access-Control-Allow-Headers': 'Content-Type',
681
- }
682
- return ('', 204, headers)
683
-
684
- headers = {'Access-Control-Allow-Origin': '*'}
685
-
686
- # Get user ID from path
687
- user_id = request.args.get('userId')
688
-
689
- if not user_id:
690
- return (json.dumps({'error': 'userId is required'}), 400, headers)
691
-
692
- # Get user from Firestore
693
- doc_ref = db.collection('users').document(user_id)
694
- doc = doc_ref.get()
695
-
696
- if not doc.exists:
697
- return (json.dumps({'error': 'User not found'}), 404, headers)
698
-
699
- return (json.dumps(doc.to_dict()), 200, headers)
700
-
701
- @functions_framework.cloud_event
702
- def process_storage(cloud_event):
703
- """Cloud Storage trigger"""
704
-
705
- data = cloud_event.data
706
-
707
- bucket = data["bucket"]
708
- name = data["name"]
709
-
710
- print(f"Processing file: gs://{bucket}/{name}")
711
- # Process file
712
- ```
713
-
714
- ## Cold Start Optimization
715
-
716
- **Provisioned Concurrency (AWS):**
717
- ```yaml
718
- Resources:
719
- ApiFunction:
720
- Type: AWS::Serverless::Function
721
- Properties:
722
- # ... function configuration
723
- AutoPublishAlias: live
724
- ProvisionedConcurrencyConfig:
725
- ProvisionedConcurrentExecutions: 5
726
-
727
- # Scheduled scaling
728
- ProvisionedConcurrencySchedule:
729
- Type: AWS::ApplicationAutoScaling::ScalableTarget
730
- Properties:
731
- ServiceNamespace: lambda
732
- ResourceId: !Sub 'function:${ApiFunction}:live'
733
- ScalableDimension: lambda:function:ProvisionedConcurrentExecutions
734
- MinCapacity: 1
735
- MaxCapacity: 10
736
- ```
737
-
738
- **Keep-Warm Strategy:**
739
- ```python
740
- # Scheduled ping to keep functions warm
741
- @app.function_name(name="KeepWarm")
742
- @app.schedule(schedule="0 */5 * * * *",
743
- arg_name="timer")
744
- def keep_warm(timer: func.TimerRequest):
745
- # Invoke critical functions to keep them warm
746
- pass
747
- ```
748
-
749
- ## Best Practices
750
-
751
- 1. **Function Design:**
752
- - Single responsibility
753
- - Stateless functions
754
- - Idempotent operations
755
- - Efficient memory usage
756
- - Fast initialization
757
-
758
- 2. **Error Handling:**
759
- - Comprehensive logging
760
- - Dead letter queues
761
- - Retry policies
762
- - Circuit breakers
763
- - Error metrics
764
-
765
- 3. **Performance:**
766
- - Right-size memory
767
- - Minimize cold starts
768
- - Reuse connections
769
- - Async where possible
770
- - Batch processing
771
-
772
- 4. **Security:**
773
- - Least privilege IAM
774
- - Environment variables for secrets
775
- - VPC for private resources
776
- - Enable tracing
777
- - Encrypt sensitive data
778
-
779
- 5. **Cost Optimization:**
780
- - Right-size memory and timeout
781
- - Use provisioned concurrency wisely
782
- - Implement caching
783
- - Batch operations
784
- - Monitor and optimize
785
-
786
- ## Anti-Patterns
787
-
788
- - Long-running functions (use containers instead)
789
- - Storing state in function memory
790
- - No error handling or retries
791
- - Synchronous chaining of functions
792
- - Ignoring cold start impact
793
- - No monitoring or logging
794
- - Overuse of provisioned concurrency
795
- - Not using layers for dependencies