{
 "id": 36959,
 "slug": "2020-12-02_desena-un-fila-di-kapasidat-multidimensional",
 "url": "https://agents.willem.com/pap/posts/2020-12-02_desena-un-fila-di-kapasidat-multidimensional/",
 "source_url": "https://willem.com/pap/2020-12-02_desena-un-fila-di-kapasidat-multidimensional/",
 "language": "pap",
 "date": "2020-12-02",
 "published": "2020-12-02T00:00:00+01:00",
 "created": "2025-06-26T22:09:41.003000+02:00",
 "updated": "2026-10-20T09:21:07.940000+02:00",
 "title": "Desèñá un fila di kapasidat multidimensional",
 "subtitle": "Maneha kapasidat di kushina, delivery i pickup",
 "summary": "E luna aki mi tabatin ku krea dimenshon adishonal pa un mekanismo di fila di kapasidat. E app pa pidi kuminda ku mi a krea mester por limitá kapasidat basá riba e kantidat di orden, e kontenido di orden individual i e tipo di despachu (takeaway/delivery). Lesa hunto pa wak kon mi a usa un Lambda Architecture pa hasi esaki.",
 "topics": [
  "data",
  "ecommerce",
  "lemmid-store",
  "payments",
  "server",
  "work"
 ],
 "author": {
  "name": "Willem L. Middelkoop",
  "url": "https://willem.com"
 },
 "provenance": {
  "kind": "model",
  "method": "Claude Sonnet, two passes (translation, then proofreading) against a glossary; Curaçao/Bonaire (FPI) spelling, no dictionary available",
  "date": "2026-10-20",
  "reviewed_by_native_reader": false,
  "language": "pap",
  "source_language": "en"
 },
 "translations": [
  {
   "language": "en",
   "title": "Designing a multi dimensional capacity queue",
   "url": "https://agents.willem.com/en/posts/2020-12-02_designing-a-multi-dimensional-capacity-queue/",
   "source_url": "https://willem.com/en/2020-12-02_designing-a-multi-dimensional-capacity-queue/"
  },
  {
   "language": "nl",
   "title": "Het ontwerpen van een multidimensionale capaciteitswachtrij",
   "url": "https://agents.willem.com/nl/posts/2020-12-02_het-ontwerpen-van-een-multidimensionale-capaciteitswachtrij/",
   "source_url": "https://willem.com/nl/2020-12-02_het-ontwerpen-van-een-multidimensionale-capaciteitswachtrij/"
  },
  {
   "language": "de",
   "title": "Entwurf einer mehrdimensionalen Kapazitätswarteschlange",
   "url": "https://agents.willem.com/de/posts/2020-12-02_entwurf-einer-mehrdimensionalen-kapazitatswarteschlange/",
   "source_url": "https://willem.com/de/2020-12-02_entwurf-einer-mehrdimensionalen-kapazitatswarteschlange/"
  },
  {
   "language": "es",
   "title": "Diseño de una cola de capacidad multidimensional",
   "url": "https://agents.willem.com/es/posts/2020-12-02_diseno-de-una-cola-de-capacidad-multidimensional/",
   "source_url": "https://willem.com/es/2020-12-02_diseno-de-una-cola-de-capacidad-multidimensional/"
  },
  {
   "language": "fr",
   "title": "Concevoir une file de capacité multidimensionnelle",
   "url": "https://agents.willem.com/fr/posts/2020-12-02_concevoir-une-file-de-capacite-multidimensionnelle/",
   "source_url": "https://willem.com/fr/2020-12-02_concevoir-une-file-de-capacite-multidimensionnelle/"
  },
  {
   "language": "it",
   "title": "Progettare una coda di capacità multidimensionale",
   "url": "https://agents.willem.com/it/posts/2020-12-02_progettare-una-coda-di-capacita-multidimensionale/",
   "source_url": "https://willem.com/it/2020-12-02_progettare-una-coda-di-capacita-multidimensionale/"
  },
  {
   "language": "pt",
   "title": "Desenhar uma fila de capacidade multidimensional",
   "url": "https://agents.willem.com/pt/posts/2020-12-02_desenhar-uma-fila-de-capacidade-multidimensional/",
   "source_url": "https://willem.com/pt/2020-12-02_desenhar-uma-fila-de-capacidade-multidimensional/"
  },
  {
   "language": "fy",
   "title": "In multidimensjonale kapasiteitswachtrige ûntwerpe",
   "url": "https://agents.willem.com/fy/posts/2020-12-02_in-multidimensjonale-kapasiteitswachtrige-untwerpe/",
   "source_url": "https://willem.com/fy/2020-12-02_in-multidimensjonale-kapasiteitswachtrige-untwerpe/"
  }
 ],
 "image": "https://willem.com/global/images/774a2243490d.webp",
 "image_width": 2560,
 "images": [
  {
   "url": "https://willem.com/global/images/e9229d524bd1.webp",
   "description": "Kome pizza durante desaroyo ta kon bo \"biba e algoritmo\"",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_36959_images-1.jpg"
  },
  {
   "url": "https://willem.com/global/images/db564dd30d9f.webp",
   "description": "Tres restrikshon di kapasidat: kushina / delivery / pickup",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_36959_images-2.jpg"
  },
  {
   "url": "https://willem.com/global/images/1e59e0b31de7.webp",
   "description": "Un stream di evento di orden ta e kurason di e mekanismo, konsulta ta wòrdu kumplí dor di wak e stream aki: kuantu pizza lo ta prontu na 18:00hrs?",
   "manager_file": "148-bf2d6faf6057f115dc72e82d984e71359f16b48d8c42b4b41c2ee918cf46b556_ContentAsPost_36959_images-3.jpg"
  }
 ],
 "text": "Limitá kapasidat\nAunke talbes bo no ta realisá esaki, un di e funshonnan mas poderoso di e app_pa_pidi_kuminda_ku_mi_a_krea (https://willem.com/blog/lemmid-store/) ta di bèrdat e posibilidat di limitá e kantidat di orden. Esaki ta soná kontra-intuitivo, pero dor di limitá e kantidat di orden ku por wòrdu hasí, mi klientenan (e restorantnan i dònonan di tenda ku ta usa mi app) por asegurá ku ordenan ta wòrdu prepará i entregá na un bon manera.\nKompleksidat di tres pizza\nSupon ku bo ke pidi tres pizza. E app di kuminda e ora ei mester sa:\n- Bo ke bai buska nan òf ke nan wòrdu entregá?\n- Ki ora? Ki ora nan mester drenta e horno?\n- Tin spasio sufisiente pa tres pizza den e horno na e ora ei?\n- Si bo a skohe pickup: nos por risibí bo sigur na e ora ei?\n- Si bo a skohe delivery: tin un hende di delivery disponibel pa trese bo pizza?\n- Tur kos ta OK? E ora ei por fabor paga miéntras nos tene bo pizza programá den e horno i den delivery òf pickup. No a paga? Bo a kambia di opinion? E ora ei nos \"deshasi\" tur programashon i warda pa un otro hende pidi pizza!\nTres dimenshon di kapasidat\nSpesial rònt di \"ora di diner\" tin risko ku masha hopi hende ta pidi kuminda na mes tempu. Aunke e app por maneha e trafiko ekstra danki na su arkitektura_hopi_eskalabel (https://willem.com/en/2020-05-11_scalable-application-design-without-magic/), restrikshon físiko ta keda, manera:\n- kapasidat di kushina: e kantidat di plato ku bo por prepará na mes tempu\n- kapasidat di pickup: e kantidat di hende ku bo por risibí sigur na mes tempu, ku respekto na e restrikshonnan di COVID-19\n- kapasidat di delivery: e kantidat di orden ku bo por entregá, tene kuenta ku trafiko, distansia i rutu\nDiferente ma interdependente\nE tres tipo di restrikshon aki ta interdependente. Por ehèmpel, ta posibel ku un orden grandi di pickup ta okupá henter e kapasidat di kushina, ku ta resultá den indisponibilidat pa delivery tambe. Ordenan mas chikí por wòrdu aseptá ainda pa yena kapasidat di kushina, miéntras ku por no tin kapasidat sufisiente mas pa orden grandi. Esaki ta nifiká ku bo mester un mekanismo ku ta wak tur e métrika huntu pa determiná e disponibilidat pa orden nobo, inkluso e kontenido di un orden ku ainda no a wòrdu pone (por ehèmpel kiko ta den bo karo di kompra).\nDiferensia den granularidat di periodo\nTa komun pa definí un restrikshon físiko ku un periodo di tempu, por ehèmpel \"e kushina por produsí 10 plato pa 15 minüt\". E ta bira un reto ora bo definí otro restrikshon físiko ku periodo di tempu di diferente largura. Miéntras e kushina por wòrdu limitá pa 15 minüt, e kapasidat di delivery por usa un periodo mas largu (por ehèmpel 3 delivery pa 30 minüt). Di algun manera e mekanismo mester por trata ku e diferensia aki den granularidat di periodo.\nPidi di antemano\nE posibilidat ku hende por pone nan orden di antemano ta agregá na e reto. Hende por skohe un time slot den futuro i tin e kapasidat nesesario reservá. Algun biaha mi ta mira hende pone nan orden dianan di antemano pa asegurá ku nan haña nan kuminda entregá riba un dia i ora spesífiko. Esaki ta nifiká ku tin (por lo menos) dos tempu asosiá ku kada orden: ora di orden i ora di entrega.\nReservá i libera kapasidat\nMayoria di dònonan di negoshi ta rekerí pago online pa ordenan online; esaki ta pa asegurá ku tur orden ta legítimo i ningun kapasidat (òf kuminda) ta wòrdu gastá riba no-show òf orden fantasma. E problema ku pagonan_online (https://willem.com/en/2020-03-25_designing-and-implementing-a-micro-payment-system/) ta ku no tur transakshon ta eksitoso. Algun biaha un pago ku kredito òf débito ta wòrdu refusá (por ehèmpel pa fondo insufisiente). Algun biaha hende djis sera e app promé ku kompletá e orden. E sistema mester reservá e kapasidat nesesario pa un orden dá miéntras e ta pèrmití hende hasi e pago online, i e mester libera e kapasidat reservá si e orden ta wòrdu abandoná òf si e pago faya.\nVolumen haltu, velosidat haltu\nUltimo ma no menos importante, e mekanismo mester ta konfiabel i di bon rendimentu. Disponibilidat di orden mester wòrdu determiná den milisegundonan mes miéntras e ta trata ku konkurensia pisá, pasobra tin hopi kliente diferente konektá ku e app di kuminda durante ora di rush. Ora un hende pone un orden, e ta afektá e disponibilidat pa tur otro orden (potensial). No tur hende lo ta konektá di manera konfiabel, pasobra algun hende ta usa e app riba telefòn ku resepshon malu òf wifi. E sistema mester funshoná bon bou di kondishon variá ku hopi hende diferente konektá.\nLambda Architecture\nE Lambda_Architecture (https://en.wikipedia.org/wiki/Lambda_architecture) ta un manera pa trata ku kantidat grandi di dato dor di usa tantu stream processing komo batch processing. Un lambda architecture ta depende di un model di dato ku un fuente di dato append-only i inmutabel, ku ta konsistí di evento ku timestamp.\nDato inmutabel\nEsaki ta un fundamentu masha importante pa e mekanismo: tur dato ta tin timestamp i nunka ta kambia. Na lugá di kambia rekòrdnan existente, rekòrdnan nobo ta wòrdu agregá djis pa sobreskirbi e rekòrdnan existente. Esaki ta pèrmití konkurensia haltu i algoritmonan distribuí, pasobra sinkronisashon ta bira mas simpel: bo so tin ku buska dato nobo (na lugá di tantu nobo komo aktualisá!).\nRealtime / speed layer\nE stream processing, òf realtime/speed layer, den un lambda architecture ta desèñá pa duna repuesta super lihé na nesesidat di dato na tempu real. E ta mantené view i métrika basá riba prosesamentu di evento na tempu real.\nPrecomputation layer\nE batch processing, òf precomputation layer, ta duna un base kompletu i eksakto di tur dato den e sistema. Komo prosesá kantidat grandi di dato por tuma tempu, e batch processing no ta lihé sufisiente pa hasi tur kos mesora. Esaki ta pakiko e dos layer ta traha huntu den un lambda architecture.\nImplementashon\nE servernan di backend ku ta maneha orden di kuminda for di e app ta traha ku un stream di dato di evento ku timestamp. Na esensia: kada orden ta un evento den e sistema. Kada orden ta wòrdu warda ku su dia/ora di orden, dia/ora di despachu (ora programá di delivery òf pickup), detaye di kliente i kontenido di orden (kantidat di plato, etc).\nReservá i libera kapasidat\nSi pago ta faya òf si un orden ta wòrdu abandoná, un orden \"negativo\" ta wòrdu agregá na e stream di dato. E ta neutralisá kualkier efekto riba e restrikshonnan di kapasidat ku su métrikanan negativo. Por ehèmpel: pa kansela un orden di tres pizza, un orden negativo di \"minus tres pizza\" ta wòrdu krea den e stream di dato ku e mes timestamp di despachu. Esaki ta un manera elegante pa asegurá ku kapasidat ta wòrdu reservá i liberá.\nMétrika multidimensional na tempu real\nNa lugá di abstrakshon kapasidat den kontadornan, e server di backend ta usa e dato real di e stream pa kontestá konsulta pa métrika na tempu real. Esaki ta pèrmití e sistema trata ku diferensia den granularidat di periodo.\nE promé biaha ku un konsulta pa un métrika dá ta wòrdu risibí, e sistema ta karga dato históriko via un mekanismo di batch pa inisialisá e model ku e por mantené aktualisá na tempu real. E métrika aki ta wòrdu mantené aktualisá dor di wak tur orden nobo ku ta drenta e sistema miéntras konsulta pa un métrika dá ta sigui yega. Ora e dato no ta wòrdu pidí mas, e model ta wòrdu kitá for di memoria. Si e ta nesesario di nobo, e proseso ta repití.\nE kos grandi di e aproximashon aki ta ku mayoria di konsulta ta wòrdu kontestá den milisegundonan mes, pasobra nan ta wòrdu lesa direkt for di RAM sin interakshon ku database òf disko. Esaki ta pèrmití rendimentu ultra haltu riba un base di \"need to have\". Esaki ta traha bon ku e app di kuminda pasobra no tur periodo ta mes popular.\nE app di kuminda ta konsultá biaha tras biaha un server sentral di kapasidat ku ta mantené e métrika di fila. E ora ei e ta filtrá e time slot disponibel dor di wak kiko un persona ta skohe awor pa su orden. Skohe un time slot (probabel) disponibel p'esei ta pasa riba banda di kliente, ku ta redusí e karga riba e backend. Ora un orden ta wòrdu pone, e backend ta reservá e kapasidat dor di aktualisá e métrika sentral di fila, blòkea otro hende pa no reklamá e mes lugá den fila.\nKonklushon\nMekanismonan di fila por ta reto ora bo trata ku varios métrika ku ta kontrolá e velosidat. Bo mester di bèrdat tuma tempu pa modelá esaki bon, pensa riba e tipo di dato ku bo di bèrdat tin mester pa hasi chèk relashoná ku fila.\nAwor bo sa ku pidi tres pizza no ta asina simpel! Garantisá ku nan por wòrdu sirbi kayente i na tempu ta un gran reto téknico, apart di ta un bon kushinero. Kontentu pa bo ku mi no ta fokus riba esei último, ha!",
 "word_count": 1531,
 "markdown_url": "https://agents.willem.com/pap/posts/2020-12-02_desena-un-fila-di-kapasidat-multidimensional/post.md"
}