Architecture Decision Record

Active theme: Light

← Eisimpleirean de chlàran co-dhùnaidh

Clàr co-dhùnaidh ailtireachd: frèam aplacaid-lìn, batairidhean air an gabhail a-steach, làn-stac, airson toradh tòiseachaidh

Prìomh amas:
Aplacaid-lìn a thogail do chustaimearan a tha a’ pàigheadh gus clàradh a-steach, faidhlichean a luchdadh suas, dàta a phròiseasadh, agus aithisgean a choimhead, le fòcas air leasachadh lùghdaichte (agile), gnìomhachd làn-stac, agus co-chòrdalachd làidir le innealan AI/ML, gu sònraichte notebooks Project Jupyter.

Co-theacsa agus riatanasan:

  1. Leasachadh lùghdaichte (Prìomhachas àrd): Mar chompanaidh tòiseachaidh, feumaidh sinn ath-aithris luath agus sùbailteachd. Tha cleachdaidhean agile, leithid prototypadh luath, leasachadh ath-aithriseach, agus atharrachadh ri atharrachadh, nam prìomh phàirtean de ar cuairt leasachaidh.

  2. Frèam làn-stac (Prìomhachas àrd): Tha sinn ag amas air cosgais a lùghdachadh le bhith a’ taghadh frèam as urrainn an dà chuid cùl-obrach agus aghaidh a làimhseachadh gu h-èifeachdach, a’ lùghdachadh an fheum airson frèamaichean aghaidh fa leth.

  3. Co-chòrdalachd le innealan AI/ML (Prìomhachas àrd): Tha e riatanach a bhith comasach air amalachadh gu furasta le innealan mion-sgrùdaidh dàta leithid notebooks Jupyter agus eag-shiostam saidheans dàta Python (NumPy, Pandas, TensorFlow, msaa.). Chuidicheadh seo le giullachd dàta agus aithris èifeachdach.

  4. Slatan-tomhais cudromachd ìosal:

    • Astar ùine-ruith: Ged a tha coileanadh buntainneach, chan e am factar as èiginniche aig an toiseach oir tha barrachd dragh againn mu astar leasachaidh agus iomlanachd fheartan.
    • So-sgèileachd: Tha sinn an dùil ri fàs, ach faodar draghan so-sgèileachd a làimhseachadh nas fhaide air adhart, agus chan e prìomh riatanas a th’ ann an-dràsta.
    • Co-chòrdalachd air ais: Tha sinn a’ cuimseachadh air teicneolasan làithreach agus chan eil mòran dragh againn mu cho-chòrdalachd air ais le siostaman dìleabach.

Frèamaichean a chaidh a mheasadh:

  1. Django (Python)
  2. Ruby on Rails (Ruby)
  3. Phoenix (Elixir)
  4. Loco (Rust)

1. Django (Python)

Sealladh coitcheann:
Tha Django na fhrèam-lìn àrd-ìre airson Python a bhrosnaicheas leasachadh luath agus dealbhadh glan, practaigeach. Tha e ainmeil airson feallsanachd “batairidhean air an gabhail a-steach”, a tha a’ ciallachadh gu bheil mòran fheartan leithid dearbhadh, rathad-stiùiridh, ORM, agus làimhseachadh fhoirmean air an gabhail a-steach dìreach às a’ bhogsa.

Neartan:

  • Làn-stac: Tha Django na fhrèam làn-stac farsaing as urrainn feumalachdan cùil-obrach agus aghaidh a làimhseachadh le feartan amalaichte (m.e., einnsean teamplaidean, eadar-aghaidh rianachd).
  • Leasachadh lùghdaichte: Leigidh structar agus gnàthasan Django, a tha air am mìneachadh gu math, leasachadh luath agus atharrachadh, a tha èiginneach ann an àrainneachd tòiseachaidh. Thig am frèam le sgrìobhainnean sàr-mhath agus eag-shiostam beairteach de phacaidean treas-phàrtaidh, a luathaicheas leasachadh.
  • Amalachadh AI/ML: Chan eil eag-shiostam Python coltach ri rud sam bith eile a thaobh saidheans dàta agus ionnsachadh inneal. Tha Django, air a bhith stèidhichte air Python, ag amalachadh gun fhuaigheal le innealan leithid notebooks Jupyter, Pandas, NumPy, TensorFlow, agus scikit-learn.
  • Coimhearsnachd agus eag-shiostam: Tha coimhearsnachd fharsaing, sgrìobhainnean làidir, agus raon farsaing de phlugainean is leudachain aig Django, a luathaicheas leasachadh agus fuasgladh dhuilgheadasan gu mòr.

Laigsean:

  • Astar ùine-ruith: Tha Python buailteach a bhith nas slaodaiche an coimeas ri cànanan leithid Rust no Elixir. Ach, airson a’ chùis chleachdaidh seo, far nach e coileanadh am prìomh dhragh, is dòcha nach e bacadh-dèile a th’ ann.
  • So-sgèileachd: Ged a tha Django gu math so-sgèilidh, dh’fhaodadh dùbhlain a bhith ann aig sgèile glè àrd gun optimachadh faiceallach (m.e., nuair a thathar a’ làimhseachadh iarrtasan co-aontach trom). Ach, faodar Django a sgèileadh gu h-èifeachdach fhathast le bhith a’ cleachdadh cothromachadh luchdaidh agus dòighean caching.

Breith:
Tha Django a’ freagairt gu math ri na riatanasan airson leasachadh lùghdaichte, taic làn-stac, agus co-chòrdalachd AI/ML. Bheir an amalachadh Python aige ruigsinneachd gun fhuaigheal air na h-innealan saidheans dàta agus leabharlannan a tha riatanach don aplacaid.


2. Ruby on Rails (Ruby)

Sealladh coitcheann:
Tha Ruby on Rails (RoR) na fhrèam aplacaid-lìn làn-stac aibidh ainmeil airson na dòigh-obrach gnàthas-seach-rèiteachadh aige, a nì leasachadh luath nas fhasa.

Neartan:

  • Làn-stac: Thig RoR le innealan togte a-staigh airson leasachadh cùil-obrach agus aghaidh (m.e., seallaidhean, teamplaidean, scaffolding), agus leigidh an leabharlann bheairteach de gems cur an gnìomh luath de dhiofar fheartan.
  • Leasachadh lùghdaichte: Tha Ruby on Rails ainmeil gu sònraichte airson a chuairtean ath-aithris luath, a tha buannachdail do chompanaidhean tòiseachaidh a tha airson ath-aithris luath a dhèanamh air feartan. Bheir RoR taic do leasachadh stiùirichte le deuchainn (TDD) agus tha eag-shiostam stèidhichte aige airson sruthan-obrach agile.
  • Coimhearsnachd agus eag-shiostam: Tha coimhearsnachd làidir, stèidhichte aig RoR agus raon farsaing de gems a luathaicheas leasachadh.
  • Furasta a chleachdadh: Tha co-chòrdadh gu math càirdeil do luchd-leasachaidh aig Rails agus tha e ainmeil airson gnìomhan leithid imrichean stòir dàta, ailtireachd model-view-controller (MVC), agus làimhseachadh rathaidean a dhèanamh luath agus sìmplidh.

Laigsean:

  • Coileanadh: Tha coileanadh ùine-ruith nas slaodaiche aig Ruby an coimeas ri Python no Elixir. Ged as urrainn RoR sgèileadh leis a’ bhun-structar cheart, dh’fhaodadh coileanadh Ruby a bhith na chnap-starra airson aplacaidean a dh’fheumas giullachd fìor-ùine trom no trafaig co-aontach àrd.
  • Amalachadh AI/ML: Ged a tha beagan leabharlannan ionnsachaidh inneal aig Ruby, chan eil e air a ghabhail cho farsaing ann an coimhearsnachd AI/ML ri Python. Chan eil amalachadh le innealan leithid notebooks Jupyter cho rèidh, a’ fàgail Python na roghainn nas làidire airson aplacaidean le tòrr dàta.

Breith:
Ged a tha Ruby on Rails air leth math ann an leasachadh lùghdaichte agus prototypadh luath, tha e a’ tuiteam goirid a thaobh co-chòrdalachd AI/ML an coimeas ri Python (Django). Tha e na roghainn ion-dhèanta do chompanaidhean tòiseachaidh a chuireas ath-aithris luath air thoiseach air amalachadh mion-sgrùdaidh dàta domhainn.


3. Phoenix (Elixir)

Sealladh coitcheann:
Tha Phoenix na fhrèam-lìn a tha air a thogail le Elixir, cànan prògramachaidh gnìomhach a chaidh a dhealbhadh airson so-sgèileachd agus co-aontachd. Bidh Phoenix a’ cleachdadh an Erlang VM, a tha ainmeil airson siostaman co-aontachd mòr is fulang-mhearachd a làimhseachadh.

Neartan:

  • So-sgèileachd agus coileanadh: Tha Phoenix a’ deàrrsadh ann an so-sgèileachd agus ann a bhith a’ làimhseachadh co-aontachd àrd. Tha e air a thogail air an Erlang VM, as urrainn taic a thoirt do mhìltean (no fiù ’s milleanan) de cheanglaichean co-aontach, ga dhèanamh na thagraiche làidir airson aplacaidean a dh’fheumas giullachd dàta fìor-ùine no trafaig àrd-mheud.
  • Làn-stac: Tha Phoenix a’ gabhail a-steach a h-uile rud a tha a dhìth gus an dà chuid cùl-obrach agus aghaidh aplacaid a thogail. Bheir e taic do live views airson ùrachaidhean UI eadar-ghnìomhach agus tha einnsean teamplaidean ann.
  • Leasachadh lùghdaichte: Tha Phoenix gu math modalach, a’ leigeil le ath-aithris luath air feartan. Tha e freagarrach airson chompanaidhean tòiseachaidh a dh’fheumas gluasad gu luath.
  • Co-chòrdalachd AI/ML: Ged a tha leabharlannan ionnsachaidh inneal a’ nochdadh ann an Elixir, chan eil taic cho farsaing ann airson gnìomhan AI/ML ri Python. Dh’fheumadh amalachadh le innealan leithid notebooks Jupyter fuasglaidhean-seach, oir chan eil eag-shiostam Elixir airson saidheans dàta cho aibidh ri eag-shiostam Python.

Laigsean:

  • Eag-shiostam AI/ML: Chan e Elixir am prìomh chànan a thathar a’ cleachdadh ann an saidheans dàta no ionnsachadh inneal, agus chan eil an eag-shiostam cho aibidh ri fear Python. Mar sin, bidh amalachadh le innealan leithid notebooks Jupyter no leabharlannan AI mòr-chòrdte (TensorFlow, PyTorch) trom.
  • Lùb ionnsachaidh: Mura h-eil an sgioba eòlach air prògramachadh gnìomhach agus Elixir, dh’fhaodadh lùb ionnsachaidh nas cas a bhith ann.

Breith:
Tha Phoenix na dheagh roghainn ma tha so-sgèileachd agus co-aontachd nam prìomh dhraghan. Ach, a thaobh a’ phrìomhachais air co-chòrdalachd AI/ML, is dòcha nach e Phoenix an roghainn as freagarraiche air sgàth eag-shiostam cuingealaichte Elixir san raon seo.


4. Loco (Rust)

Sealladh coitcheann:
Tha Loco na fhrèam-lìn a tha air a thogail le Rust, cànan prògramachaidh shiostaman ainmeil airson a choileanaidh, sàbhailteachd cuimhne, agus co-aontachd. Tha Rust a’ sìor fhàs mòr-chòrdte airson aplacaidean àrd-choileanaidh a thogail.

Neartan:

  • Coileanadh: Tha prìomh neart Rust anns a choileanadh àrd agus sàbhailteachd cuimhne, ga dhèanamh na roghainn sàr-mhath airson aplacaidean a dh’fheumas smachd aig ìre ìosal no coileanadh air leth àrd.
  • Co-aontachd: Bidh siostam seilbh Rust a’ dèanamh cinnteach à sàbhailteachd cuimhne fhad ’s a leigeas e prògramachadh co-aontach sàbhailte, ga dhèanamh air leth freagarrach airson siostaman a dh’fheumas sgèileadh gu h-èifeachdach agus co-shìneadh a làimhseachadh.

Laigsean:

  • Leasachadh làn-stac: Chan eil Loco, ged a tha e gealltanach, cho aibidh ris na frèamaichean eile a thaobh fuasgladh làn-stac iomlan a thoirt seachad. Tha e nas freagarraiche airson leasachadh cùil-obrach, agus tha an eag-shiostam aghaidh timcheall air Rust fhathast a’ nochdadh.
  • Leasachadh lùghdaichte: Faodaidh leasachadh le Rust a bhith nas slaodaiche an coimeas ri cànanan àrd-ìre leithid Python no Ruby air sgàth a nàdar aig ìre nas ìsle agus lùb ionnsachaidh nas cas.
  • Eag-shiostam AI/ML: Chan eil an aon eag-shiostam farsaing airson AI/ML aig Rust ri Python. Ged a tha leabharlannan a’ fàs ann an Rust airson coimpiutaireachd àireamhach, tha iad fada nas lugha aibidh na na tairgsean Python, leithid notebooks Jupyter no frèamaichean ionnsachaidh inneal.

Breith:
Ged a bheir Rust agus am frèam Loco aige coileanadh air leth, tha dìth taic làn-stac, buannachdan leasachaidh lùghdaichte, agus eag-shiostam AI/ML ga dhèanamh nas lugha freagarrach don chùis chleachdaidh shònraichte seo. Tha e nas freagarraiche airson aplacaidean èiginneach a thaobh coileanaidh seach leasachadh-lìn luath le innealan saidheans dàta amalaichte.


Co-dhùnadh

Às dèidh measadh a dhèanamh air na roghainnean stèidhichte air riatanasan a’ phròiseict, is e Django (Python) an roghainn as freagarraiche. Bheir e na buannachdan a leanas:

  • Comasan làn-stac: Tha Django na fhrèam làn-stac a tha ag amalachadh leasachadh cùil-obrach agus aghaidh.
  • Leasachadh lùghdaichte: Tha am frèam freagarrach airson prototypadh luath agus ath-aithris, a tha riatanach ann an àrainneachd tòiseachaidh.
  • Co-chòrdalachd AI/ML: Is e Python an cànan as ainmeile ann an AI/ML, agus bidh co-chòrdalachd Django le leabharlannan leithid notebooks Jupyter a’ dèanamh cinnteach à amalachadh rèidh airson mion-sgrùdadh agus giullachd dàta.
  • Coimhearsnachd agus eag-shiostam: Bheir taic làidir coimhearsnachd Django agus eag-shiostam farsaing leabharlannan iomadh inneal gus leasachadh a luathachadh.

Ged a tha Ruby on Rails cuideachd na thagraiche làidir airson leasachadh lùghdaichte, tha a thaic AI/ML cuingealaichte ga dhèanamh nas lugha freagarrach airson a’ chùis chleachdaidh shònraichte seo. Tha Phoenix (Elixir) agus Loco (Rust), ged a tha iad sàr-mhath airson so-sgèileachd agus coileanaidh, a’ tuiteam goirid a thaobh amalachadh AI/ML agus leasachadh làn-stac. Mar sin, tha Django na fhrèam a thathar a’ moladh airson a’ phròiseict seo.