PageSourceSearch

https://bacalhau.org/assets/js/e5ba3f14.1e8a45b9.js

js bacalhau.org collected 2026-10-02 08:45:15 UTC 9,414 bytes, 1 lines download raw bytes

1"use strict";(globalThis.webpackChunkbacalhau_website||=[]).push([[5422],{3528(e,t,i){i.r(t),i.d(t,{assets:()=>d,contentTitle:()=>c,default:()=>u,frontMatter:()=>o,metadata:()=>a,toc:()=>l});const a=JSON.parse('{"id":"guides/edge-orchestration-buyers-guide","title":"Technical buyer\'s guide to distributed edge orchestration","description":"Evaluate edge orchestration by placement control, workload lifecycle, data access, and operability.","source":"@site/docs/guides/edge-orchestration-buyers-guide.mdx","sourceDirName":"guides","slug":"/guides/edge-orchestration-buyers-guide","permalink":"/docs/guides/edge-orchestration-buyers-guide","draft":false,"unlisted":false,"editUrl":"https://github.com/bacalhau-project/docs/tree/main/docs/guides/edge-orchestration-buyers-guide.mdx","tags":[],"version":"current","lastUpdatedAt":1785887124000,"frontMatter":{"title":"Technical buyer\'s guide to distributed edge orchestration","description":"Evaluate edge orchestration by placement control, workload lifecycle, data access, and operability."},"sidebar":"docs","previous":{"title":"Data locality, sovereignty, bandwidth, and egress patterns","permalink":"/docs/guides/data-locality-and-sovereignty"},"next":{"title":"Labels and Constraints","permalink":"/docs/guides/labels-and-constraints"}}');var s=i(4848),n=i(8453),r=i(9208);const o={title:"Technical buyer's guide to distributed edge orchestration",description:"Evaluate edge orchestration by placement control, workload lifecycle, data access, and operability."},c="Technical buyer's guide to distributed edge orchestration",d={},l=[{value:"Evaluation matrix",id:"evaluation-matrix",level:2},{value:"Pilot design",id:"pilot-design",level:2},{value:"Selection tradeoffs",id:"selection-tradeoffs",level:2},{value:"Limitations",id:"limitations",level:2}];function h(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,n.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(r.A,{title:"Technical buyer's guide to distributed edge orchestration",description:"A technical evaluation framework for distributed edge orchestration and Bacalhau workload placement.",path:"/docs/guides/edge-orchestration-buyers-guide/",faq:[{question:"What should an edge orchestration evaluation prove?",answer:"It should prove placement, data access, failure behavior, observability, identity, and result handling using representative sites and workloads."},{question:"Can Bacalhau run long-lived workloads?",answer:"Bacalhau supports multiple job types, including batch, ops, daemon, and service. Select a type based on lifecycle and test it under the operational conditions you expect."}]}),"\n",(0,s.jsx)(t.header,{children:(0,s.jsx)(t.h1,{id:"technical-buyers-guide-to-distributed-edge-orchestration",children:"Technical buyer's guide to distributed edge orchestration"})}),"\n",(0,s.jsx)(t.p,{children:"An edge orchestrator is useful only when it makes an operating boundary clearer: where code runs, which data it can reach, how it is observed, and what happens when a site is unavailable. Bacalhau is an Apache-2.0 open-source project for orchestrating Docker and WASM workloads across compute nodes; it does not replace your device-management, identity, or storage systems."}),"\n",(0,s.jsx)(t.h2,{id:"evaluation-matrix",children:"Evaluation matrix"}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"Evaluation area"}),(0,s.jsx)(t.th,{children:"Questions to ask"}),(0,s.jsx)(t.th,{children:"Bacalhau evidence to inspect"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"Placement"}),(0,s.jsx)(t.td,{children:"Can a workload target an approved region or capability?"}),(0,s.jsxs)(t.td,{children:[(0,s.jsx)(t.a,{href:"/docs/guides/labels-and-constraints/",children:"Labels and constraints"})," and a deliberate no-match test"]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"Lifecycle"}),(0,s.jsx)(t.td,{children:"Is the workload batch, ops, daemon, or service?"}),(0,s.jsx)(t.td,{children:(0,s.jsx)(t.a,{href:"/docs/specifications/job/type/",children:"Job type specification"})})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"Inputs and outputs"}),(0,s.jsx)(t.td,{children:"Are every source and result path explicit?"}),(0,s.jsxs)(t.td,{children:[(0,s.jsx)(t.a,{href:"/docs/specifications/job/input-source/",children:"Input sources"})," and ",(0,s.jsx)(t.a,{href:"/docs/specifications/job/result-path/",children:"result paths"})]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"Runtime"}),(0,s.jsx)(t.td,{children:"Which images, parameters, resources, and network assumptions apply?"}),(0,s.jsxs)(t.td,{children:[(0,s.jsx)(t.a,{href:"/docs/specifications/job/task/",children:"Task specification"})," and ",(0,s.jsx)(t.a,{href:"/docs/specifications/job/network/",children:"network specification"})]})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"Operations"}),(0,s.jsx)(t.td,{children:"Who sees job state and acts on failures?"}),(0,s.jsxs)(t.td,{children:[(0,s.jsx)(t.code,{children:"bacalhau job describe"}),", logs, and your monitoring system"]})]})]})]}),"\n",(0,s.jsx)(t.h2,{id:"pilot-design",children:"Pilot design"}),"\n",(0,s.jsx)(t.p,{children:"Begin with two sites that have different data or network conditions. Give nodes factual labels, submit a small workload with explicit constraints, then compare job state and result location. Do not begin by connecting production data."}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-bash",children:'bacalhau serve --compute -c Labels="site=plant-a,accelerator=false"\n\nbacalhau docker run \\\n  --constraints "site=plant-a" \\\n  --input https://example.org/telemetry.csv:/input/telemetry.csv \\\n  --output pilot-results:/outputs \\\n  --publisher local \\\n  alpine:3.21 sh -c \'wc -l /input/telemetry.csv > /outputs/rows.txt\'\n'})}),"\n",(0,s.jsx)(t.p,{children:"Record the node identity, job ID, input access method, result path, elapsed time, transfer measurements, and the behavior when the matching node is unavailable. This turns a pilot into reproducible evidence rather than a demo."}),"\n",(0,s.jsx)(t.h2,{id:"selection-tradeoffs",children:"Selection tradeoffs"}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"If you prioritize"}),(0,s.jsx)(t.th,{children:"Design implication"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"Strict site boundaries"}),(0,s.jsx)(t.td,{children:"Combine constraints with network, storage, and identity enforcement; constraints alone are insufficient"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"Low-touch operations"}),(0,s.jsx)(t.td,{children:"Favor a small, repeatable node configuration and a narrowly scoped pilot"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"Heterogeneous hardware"}),(0,s.jsx)(t.td,{children:"Label only verified capabilities and test each runtime image on its target architecture"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"Fast centralized analytics"}),(0,s.jsx)(t.td,{children:"A data warehouse or SQL engine may be a better primary tool than edge orchestration"})]})]})]}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.a,{href:"/docs/getting-started/quick-start/",children:"quick start"})," is a safe local starting point. Move to a multi-site design only after validating the ",(0,s.jsx)(t.a,{href:"/docs/overview/architecture/",children:"architecture"}),", job timeouts, resource limits, and recovery expectations."]}),"\n",(0,s.jsx)(t.h2,{id:"limitations",children:"Limitations"}),"\n",(0,s.jsx)(t.p,{children:"No orchestration tool can establish compliance or availability alone. Verify device patching, physical access, connectivity, secrets, storage policy, and incident response with the owners of those controls."})]})}function u(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},9208(e,t,i){i.d(t,{A:()=>r});var a=i(5260),s=i(4848);const n="https://bacalhau.org";function r({description:e,faq:t,path:i,title:r}){const o=`${n}${i}`,c=[{"@context":"https://schema.org","@type":"TechArticle",headline:r,description:e,mainEntityOfPage:o,author:{"@type":"Organization",name:"Bacalhau Project",url:n},about:["compute over data","distributed computing","data locality"]},{"@context":"https://schema.org","@type":"FAQPage",mainEntity:t.map((({question:e,answer:t})=>
1({"@type":"Question",name:e,acceptedAnswer:{"@type":"Answer",text:t}})))},{"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:[{"@type":"ListItem",position:1,name:"Documentation",item:`${n}/docs/`},{"@type":"ListItem",position:2,name:r,item:o}]}];return(0,s.jsx)(a.A,{children:(0,s.jsx)("script",{type:"application/ld+json",children:JSON.stringify(c)})})}},8453(e,t,i){i.d(t,{R:()=>r,x:()=>o});var a=i(6540);const s={},n=a.createContext(s);function r(e){const t=a.useContext(n);return a.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),a.createElement(n.Provider,{value:t},e.children)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.