Esim. C ohjelma voi sisältää useampia DLL:iä, minkä funktioita voi kutsua headeria käyttämällä. Onko microservices tälle web-maailman analogia, missä DLL:ää vastaa joku WebAPI?
Microservices - olenko ymmärtänyt oikein?
Anonyymi
111924
0Äänestä
Muut lukivat myös
Odottaa vastausta
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Vastaukset 11
Vanhimmat
Webbipalvelu voi koostua muutamasta mikropalveluista, kuten ingressistä, frontendistä, backendeistä, tietokannoista jne.
Lopeta nää sekoavaukset!
Ei.
DLL on kirjasto. Microservicessä kyse on palvelusta. Windowsin tulostusjono esimerkiksi on palvelu. Webservicessä palvelua käytetään HTTP API:lla.
Palvelu on keskeinen tapa tehdä uudelleen käytettävä komponentti backendiin.
Kuinka tuollaista HTTP API:ia käytetään?
No sillä HTTP:llä.
Ei sitä HTTP protokollan tukea sattumalta ole joka puolella. Tästä voit tutustua protokollan ominaisuuksiin tarkemmin: https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol
Tai sitten Amazon Aws tapauksessa Sqs-jono ja Sns S3
"DLL on kirjasto. Microservicessä kyse on palvelusta"
Niin: HTTP APIa voit käyttää suoraan omasta ohjelmastasi tekemällä HTTP GET tai POST -kutsun (joka nykyaikaan on kyllä yleensä HTTPS eikä enää HTTP kuten oli vielä 2000 -luvun alussa pankkipalveluja lukuunottamatta, jotka ovat aina olleet HTTPS).
Vaihtoehto:
Jos jokin taho on tehnyt DLL:n, joka tekee HTTPS -kutsun puolestasi, silloin voit omasta ohjelmastasi käyttää tuon DLL:n sisältämiä funktioita, jolloin ko. DLL tekee sen HTTPS -kutsun puolestasi.
DLL ei tähän liity oikeasti millään tavalla.
DLL Windowseissa käytetty dynaamisesti linkattava kirjasto. Käytännössä on käännetty läjä koodia palikaksi mitä voi käyttää sellaisenaan. Sillä ei ole mitään tekemistä serviceiden kanssa.
Eikös tästä ollu joku tehnyt mikrokerneleinä käyttöjärjestelmänkin, ts. tiedostojen tallennus oli palvelu(mikrokernel), jota muut osat käyttivät halutessaan tallentaa tietoja, jne. En muista, miksi tämä ei yleistynyt, mutta kai siihen oli jokin tekninen syy. Periaatteessa tulee kuitenkin helpommin ylläpidettävää koodia, joka on erittäin selvärajaista - sopii hyvin olio-ohjelmoinnin kanssa yhteen!
Mikrokernel ei ole palvelu, mikrokernelissä esimerkiksi tiedon tallennus tai verkkopino ovat palveluita.
Ei ole. Tuo on linkkaamista, ei microservice.
Microservice on sitä että ohjelma palastellaan serviceihin, jokainen service on prosessi, ja niitä sitten käytetään jollain protokollalla. Aika tavallisesti serviceihin laitetaan kommunikointia varten publish-subscribe patternin mukaisesti jokin millä välitetään viestit. Servicet voivat tietenkin olla eri laitteilla myös, että protokollat laitetaan toimimaan verkkosocketien läpi.
Idea tietenkin on se että voi päivittää jotain serviceä koskematta muuhun ohjelmaan mikä on käynnissä ja on helppo testata niitä serviceitä. Samalla järjestelmä huomioi laitteella rinnakkaisuuden myös automaattisesti, että ei tarvitse käydä vaikka kikkailemaan säikeiden kanssa.
Temppu toki onnistuu C-kielellä myös vaikka se onkin huono siinä. Helpoin tapa olisi määrittää servicet vaikka Apache HTTP serverillä ja laittaa sinne C-kieliä prosesseja vastaamaan queryihin. Näitähän voi sitten vaihdella ajon aikana helposti.
Tästä enempää C-tyylillä ei asiaa oikein voi tehdä. On huomioitava että C on tarkoitettu käytännössä matalammella tasolle, ilman että hajautetaan ohjelmaa useille laitteille, että tässä lähinnä vastine olisi "init" ja "systemd".
Init on se vanha mikä oli aikoinaan käytössä yleisesti unixeissa mutta ne kun vaihtuivat suurelta osin linuxeihin niin on siirrytty systemd serviceihin
https://en.wikipedia.org/wiki/Init
https://en.wikipedia.org/wiki/Systemd
Eli toki voi tehdä serviceistä koostuvan järjestelmän tietokoneelle hajauttamatta sitä useammalle laitteelle. C-kieli tosin on aikoja sitten jäänyt vanhaksi että sitä käytetään enää tällaissa vain matalalla tasolla, käyttöjärjestelmän palveluiden muodossa.