Je Swagger utter crap?

Je Swagger utter crap?
« kdy: 03. 04. 2019, 16:37:42 »
Jsem jediny komu prijde absurdni, ze se i v enterprise informacnich systemech zacina rozmahat pouzivani Swaggeru na modelovani API pro komponenty, ktere potrebuji mit API jako RPC a ne jako Resource?

Tahle technologie, u ktere spolecnost co za ni stoji mela tu drzost ji pojmenovat jako OpenAPI, je utter crap.

Maly skok do historie. REST byl vyvinuty jako soucast HTTP v roce 1990 a je urcen pro modelovani webovych api typu Resource, tzn. webovka ma nejaky svuj backend, ze ktereho si potrebuje tahat data, zapisovat, updatovat atd. Je to neco designem dost spjateho s HTML, ktere se prenasi pres HTTP v RequestBody at uz pri GET, nebo kdyz se odesila nejaky formular, nebo co ja vim.

Dneska se za valecneho pokriku prumernych opic vyvojaru vytlacuje z backendu SOAP, nadavajic na to, jak je neflexibilni, pricemz se to nahrazuje necim tak naprosto nevhodnym, jako je Swagger api a rest. Samotny REST neni az zase tak problem, i SOAP se prenasi pres HTTP kde metoda je vzdy POST, problem je az teprve Swagger.

Backendove komponenty mezi sebou potrebuji delat RPC volani a ne si vzajemne sahat do Resource. Pouzitim Swaggeru, ktery je RPC dost unfriendly a nuti do Resource, vznikaji totoalni narovnavaky na ohybaky, protoze korporatni vyvojari jsou zmateni, nevi co to RPC vlastne vubec znamena a vo co go, a implementace Swaggeru je mystifikuje do tvorby kockopsa mezi RPC a Resource API. Swagger je navede na to, aby delali Resource API (vetsina ani nevi, co to je), jenze to jim v drtive vetsine pripadu nepasuje na to, co potrebuji delat, coz vsak vedome nevi, takze do toho michaji RPC az nakonec vznkne naprostgo zpackane gulas API.

Kdyz se k tomu prida zaklinadlo OpenAPI a prihodi se rvouci opico-ovce, tak z toho je dalsi jedna velka vyvojarska tragedie, ktera zase pro jednou vede k horsimu a zpackanejsimu backendu.

Clovek by rekl, ze by se mela metodologie vyvoje hybat dopredu, a ne dozadu a jeste dal.

Prohlasuju, ze kvuli Swaggeru se enteprise dostal z roku 2019 nekde do stavu vyvoje API pred rokem 2000, nez byl vymyslen SOAP. A to jsem jeste nemluvil o nahrazovani XMLek jinymi, "lepsimi" formaty.

Docela by me zajimal nazor mistnich.


Re:Je Swagger utter crap?
« Odpověď #1 kdy: 03. 04. 2019, 19:02:03 »
Ak som to pochopil správne tak jediný problém je, že tam kde ste mali použiť RPC máte REST. Použili ste dobrú technológiu na nesprávnom mieste a teba to serie. Vaša chyba.

PS: Prečo tam nedáte GraphQL?!  :D

alex6bbc

  • *****
  • 1 432
    • Zobrazit profil
    • E-mail
Re:Je Swagger utter crap?
« Odpověď #2 kdy: 03. 04. 2019, 19:48:00 »
Nejhorsi neni ani tak pouziti lehce nevhodne technologie, ale neustale zmenyv technologii. Jeden tyden rest, pak grpc, pak zas neco jineho.

Re:Je Swagger utter crap?
« Odpověď #3 kdy: 03. 04. 2019, 20:24:09 »
A v čem to tedy přesně vadí? Vadí Vám bezstavovost - nebo?

RDa

  • *****
  • 2 467
    • Zobrazit profil
    • E-mail
Re:Je Swagger utter crap?
« Odpověď #4 kdy: 03. 04. 2019, 20:26:01 »
Vlastne souhlasim s tim postem. Dnes kazdy proklamuje ze zna REST a pritom netusi co je to SOAP. Stejne tak, jako pro IPC komunikaci pouzije zcela nevhodne napr. nanomsg, namisto toho, aby se protokol udelal nad UDP, nebo TCP. Myslim ze je to dusledek toho, ze dnesni mladi lidi neznaji historii a nedokazou se z ni poucit nebo ji aplikovat.. a sahaj po trendy resenich, ktere jsou mozna v jedne veci lepsi, ale ve vsech ostatnich horsi. Z programatoru se stavaji lepici kodu, co se bez trendy knihoven a stackoverflow nezmuzou vubec na nic. Ale neplati to jen u programovani.. typicka rodinna situace - dnes varis ty - ... a uz leze na damejidlo.cz a pod :))


Re:Je Swagger utter crap?
« Odpověď #5 kdy: 03. 04. 2019, 21:48:48 »
Vlastne souhlasim s tim postem. Dnes kazdy proklamuje ze zna REST a pritom netusi co je to SOAP. Stejne tak, jako pro IPC komunikaci pouzije zcela nevhodne napr. nanomsg, namisto toho, aby se protokol udelal nad UDP, nebo TCP. Myslim ze je to dusledek toho, ze dnesni mladi lidi neznaji historii a nedokazou se z ni poucit nebo ji aplikovat.. a sahaj po trendy resenich, ktere jsou mozna v jedne veci lepsi, ale ve vsech ostatnich horsi. Z programatoru se stavaji lepici kodu, co se bez trendy knihoven a stackoverflow nezmuzou vubec na nic. Ale neplati to jen u programovani.. typicka rodinna situace - dnes varis ty - ... a uz leze na damejidlo.cz a pod :))

Prostě zákon č. 1: V byznysu nevítězí kvalita, ale průměrnost. Geniální myšlenky a teoreticky dobře podložené koncepty z dávných let (70. léta...) jsou dodnes považovány za nereálné vizionářství. Pokrok je diskutabilní, nejvíce času se stráví na vynalézání kola a efektních nesmyslů.

Nicméně kdo kontext zná a má zkušenosti, se může zasadit o to, aby nějakou tu myšlenku napříč generacemi udržel. Neboť na tom je kultura založena a bez toho vpodstatě zaniká.

Ale původní tazatel (nebo klidně někdo jiný) by měl rozvést konkrétní připomínky, proč jsou ty které technologie nevhodné, jinak budeme stejně všichni jen mlátit slámu. Co by třeba ty firmy měly teda použít místo REST a Swagger a co tím získají navíc?
« Poslední změna: 03. 04. 2019, 21:50:25 od Ondrej Nemecek »

Re:Je Swagger utter crap?
« Odpověď #6 kdy: 03. 04. 2019, 21:53:08 »
V podstatě souhlasím s tím, že REST je vhodný jenom na některé aplikace a rozhodně je nevhodný tam, kde je potřeba RPC. OpenAPI neznám, ale swagger jsem viděl a dospěl jsem k názoru že je to k ničemu.

Nicméně by to celé to kazí ten naprosto zmatený odstavec:
Maly skok do historie. REST byl vyvinuty jako soucast HTTP v roce 1990 a je urcen pro modelovani webovych api typu Resource, tzn. webovka ma nejaky svuj backend, ze ktereho si potrebuje tahat data, zapisovat, updatovat atd. Je to neco designem dost spjateho s HTML, ktere se prenasi pres HTTP v RequestBody at uz pri GET, nebo kdyz se odesila nejaky formular, nebo co ja vim.
No, evidentně jsou u vás programátoři hodně zmateni a ti co si stěžují na rootu jsou akorát jednoocí mezi slepými :-) O správném zařazení primátů do čeledí raději nebudu spekulovat...

Dneska se za valecneho pokriku prumernych opic vyvojaru vytlacuje z backendu SOAP, nadavajic na to, jak je neflexibilni, pricemz se to nahrazuje necim tak naprosto nevhodnym, jako je Swagger api a rest. Samotny REST neni az zase tak problem, i SOAP se prenasi pres HTTP kde metoda je vzdy POST, problem je az teprve Swagger.
No já nevím, vytlačování SOAPu bylo moderní tak před deseti lety - to musí být nějaký extra konzervativní korporát, co? Podle toho co jsem viděl osobně a v Dilbertovi, tak problém je primárně tam :-)

Btw, hidopišská poznámka: SOAP rozhodně nemusí používat HTTP ani POST.

Backendove komponenty mezi sebou potrebuji delat RPC volani a ne si vzajemne sahat do Resource.
Ok, tohle si zaslouží komentář: rozhodně to neplatí všeobecně, existují aplikace kde je "šahání si do Resource" naprosto v pořádku a REST je dobře pasující architektura. Na druhou stranu, existují aplikace kde je to hovadina.

Swagger je navede na to, aby delali Resource API (vetsina ani nevi, co to je), jenze to jim v drtive vetsine pripadu nepasuje na to, co potrebuji delat, coz vsak vedome nevi, takze do toho michaji RPC az nakonec vznkne naprostgo zpackane gulas API.

Kdyz se k tomu prida zaklinadlo OpenAPI a prihodi se rvouci opico-ovce, tak z toho je dalsi jedna velka vyvojarska tragedie, ktera zase pro jednou vede k horsimu a zpackanejsimu backendu.

Clovek by rekl, ze by se mela metodologie vyvoje hybat dopredu, a ne dozadu a jeste dal.
Bohužel, naprosto normální. Pokud ti to vadí, doporučuji změnit obor. Minimálně pak změnit působiště, evidentně to stávající je zbytečně stresující.


Prohlasuju, ze kvuli Swaggeru se enteprise dostal z roku 2019 nekde do stavu vyvoje API pred rokem 2000, nez byl vymyslen SOAP. A to jsem jeste nemluvil o nahrazovani XMLek jinymi, "lepsimi" formaty.

Docela by me zajimal nazor mistnich.
SOAP nebyl první RPC (a to ani první RPC použitelné přes http) a není poslední. Existují jiné varianty, spousta z nich použitelnější, a některé dokonce použitelné v PHP (to je jeden z problémů SOAPu - pokud vím, neexistuje funkční implementace pro PHP).

Re:Je Swagger utter crap?
« Odpověď #7 kdy: 03. 04. 2019, 22:02:36 »
Stejne tak, jako pro IPC komunikaci pouzije zcela nevhodne napr. nanomsg, namisto toho, aby se protokol udelal nad UDP, nebo TCP.
Ok, o nanomsg jsem dodnes neslyšel, ale podíval jsem se na https://nanomsg.org a musím se zeptat: proč je to zcela nevhodné a proč je lepší navrhnout vlastní protokol nad TCP?

Tedy kromě toho, že je to moc nové a že je "trendy" a že je to "lepení" - to já osobně nepovažuji za relevantní argumenty. Pravda, sedmdesátá léta nepamatuji, tak jsem možná jeden z těch "mladých lidí"

alex6bbc

  • *****
  • 1 432
    • Zobrazit profil
    • E-mail
Re:Je Swagger utter crap?
« Odpověď #8 kdy: 03. 04. 2019, 22:04:38 »
Nejlepsi byl plan9, vyexportoval si cizi cpu a na nem pustil kod.
co bylo schovane dole programator ani nemusel moc resit (9p).

No tak mame dneska velkou mydlovou operu smichanou z  rpc, rest, http, json, soap, a technologii bude pribyvat. Mam pit rum, nebo whisky, nebo pivo?!?
Vratime se k tcp, udp a bajtum?

alex6bbc

  • *****
  • 1 432
    • Zobrazit profil
    • E-mail
Re:Je Swagger utter crap?
« Odpověď #9 kdy: 03. 04. 2019, 22:08:39 »
Clovek co nadava na nanomsg, zmq apod a chtel by se vratit k tcp a udp casem zacne vymyslet gigamsg a infinity-mq.

RDa

  • *****
  • 2 467
    • Zobrazit profil
    • E-mail
Re:Je Swagger utter crap?
« Odpověď #10 kdy: 03. 04. 2019, 22:21:19 »
Stejne tak, jako pro IPC komunikaci pouzije zcela nevhodne napr. nanomsg, namisto toho, aby se protokol udelal nad UDP, nebo TCP.
Ok, o nanomsg jsem dodnes neslyšel, ale podíval jsem se na https://nanomsg.org a musím se zeptat: proč je to zcela nevhodné a proč je lepší navrhnout vlastní protokol nad TCP?

Tedy kromě toho, že je to moc nové a že je "trendy" a že je to "lepení" - to já osobně nepovažuji za relevantní argumenty. Pravda, sedmdesátá léta nepamatuji, tak jsem možná jeden z těch "mladých lidí"

Najaty programator naprogramoval aplikaci kde je 1 management node, a N slave nodu stylem ze se ten centralni uzel pripojuje skrze nanomsg do klienta a provadi jakysi pokus o RPC. Sakra velky problem je, ze to spojeni navrhnul opacne (protoze dnes je vsecho P2P tak na to co je klient a co server s*re pes vid?), takze moznost pripojit libovolny, predem neznamy pocet uzlu neni mozny. Druhy problem neznalosti sitariny je, ze borec to pseudo RPC mel v blokujicim rezimu pro obe strany. Jako really? A pak to lepi pouzitim X vlaken podle poctu klientu. Dusledek opacne konektivity je, ze namisto dorucovani zprav a normalniho FSM, delal polling, ktery ve spojeni s blokujicim pristupem delal psi kusy a musel dolepovat mutexy. Nemluvne o stavu, kdy jeden klient vypadl, a cely distribuovany system chcipl. Na to, ze UDP by bylo vyhodnejsi pro distribuci broadcast sdeleni, protoze ty uzly se musi synchronizovat a ridit spolecne muzeme taky zapomenout. Co to melo delat bylo znamo predem, ale jak to ma presne udelat nebylo dano. Tak z toho vznikl takovej humus... opravdu neni kazdy hodne programatorske profese.


Re:Je Swagger utter crap?
« Odpověď #11 kdy: 03. 04. 2019, 22:49:05 »
Stejne tak, jako pro IPC komunikaci pouzije zcela nevhodne napr. nanomsg, namisto toho, aby se protokol udelal nad UDP, nebo TCP.
Ok, o nanomsg jsem dodnes neslyšel, ale podíval jsem se na https://nanomsg.org a musím se zeptat: proč je to zcela nevhodné a proč je lepší navrhnout vlastní protokol nad TCP?

Tedy kromě toho, že je to moc nové a že je "trendy" a že je to "lepení" - to já osobně nepovažuji za relevantní argumenty. Pravda, sedmdesátá léta nepamatuji, tak jsem možná jeden z těch "mladých lidí"

Najaty programator naprogramoval aplikaci kde je 1 management node, a N slave nodu stylem ze se ten centralni uzel pripojuje skrze nanomsg do klienta a provadi jakysi pokus o RPC. Sakra velky problem je, ze to spojeni navrhnul opacne (protoze dnes je vsecho P2P tak na to co je klient a co server s*re pes vid?), takze moznost pripojit libovolny, predem neznamy pocet uzlu neni mozny. Druhy problem neznalosti sitariny je, ze borec to pseudo RPC mel v blokujicim rezimu pro obe strany. Jako really? A pak to lepi pouzitim X vlaken podle poctu klientu. Dusledek opacne konektivity je, ze namisto dorucovani zprav a normalniho FSM, delal polling, ktery ve spojeni s blokujicim pristupem delal psi kusy a musel dolepovat mutexy. Nemluvne o stavu, kdy jeden klient vypadl, a cely distribuovany system chcipl. Na to, ze UDP by bylo vyhodnejsi pro distribuci broadcast sdeleni, protoze ty uzly se musi synchronizovat a ridit spolecne muzeme taky zapomenout. Co to melo delat bylo znamo predem, ale jak to ma presne udelat nebylo dano. Tak z toho vznikl takovej humus... opravdu neni kazdy hodne programatorske profese.

Tak asi to dělal poprvé. Možná měl dostat pro začátek menší zadání. Ale s technologií to moc nesouvisí, ne? Ani to automaticky neznamená, že by bylo UDP vhodnější.

RDa

  • *****
  • 2 467
    • Zobrazit profil
    • E-mail
Re:Je Swagger utter crap?
« Odpověď #12 kdy: 03. 04. 2019, 22:58:45 »
Tak asi to dělal poprvé. Možná měl dostat pro začátek menší zadání. Ale s technologií to moc nesouvisí, ne? Ani to automaticky neznamená, že by bylo UDP vhodnější.

To ho neomlouva.. zaklady sitariny a BSD socketu by mel mit. Rikam to porad - to, ze nekdo zna jazyk neznamena ze je dobrym spisovatelem. To, ze nekdo zna syntaxi jazyka neznamena ze umi programovat. Jsem z mladejch znechucen. Ale ptat si obri hodinovku, jo to umi.

Re:Je Swagger utter crap?
« Odpověď #13 kdy: 03. 04. 2019, 23:02:47 »
Zaprve je treba si ujasnit, proc chceme dat pryc SOAP. Z meho uhlu pohledu jediny rozumny duvod ktery jsem slysel je, ze se to blbe pouziva treba prave javascriptarum.

Podle me je SOAP v principu genialni a nikdo nevymysli nic lepsiho - tehda moc dobre vymysleli, jak mezi sebou maji backend komponenty komunikovat. SOAP ktery je zalozeny na RPC vlastne vytvari pro programatora ten use case, ze programator jakoby vola metodu v jine komponente a to volani je nezavisle na pouzite platforme.

SOAP zprava prenasena v HTTP je vzdycky POST - vsechny dalsi http metody jsou redundantni. V body se prenasi objekt, jehoz jmeno reprezentuje jmeno metody. Pro rozliseni ma zpravidla postfix "Request". Jeho atributy predstavuji 1:1 parametry metody. A to je v principu co se tyce RPC vsechno - nic vic neni potreba. je zde kompletni, osekana, takrka 1:1 vazba mezi SOAP zpravou a volanou metodou. To co je v REST API delanem jako Resource jsou akorat reduntantni nesmysly:
- HTTP metody - nanic
- path variables - nanic
- jenom jeden mozny request body - nanic
- url parametry - nanic

Je to uplne k nicemu, redundatni nesmysly, ktery oceni tak leda programatory typu impresionisticky umelec, ktery se minul povolanim.

Proc volani mezi komponentami je RPC a resource je nanic? Protoze my takrka vsichni programatori delame v proceduralnim paradigmatu - nepotrebujeme mit jedno paradigma pro programovy kod a jine paradigma pro komunikaci se vzdalenymi komponentami. A nevsiml jsem si, ze by mezi programatorama byl takovy prehrsel borcu, co maji vsechno v maliku, a zvladnou mit v pouzitych technologiich gulas, plny redundtnich kravin. Je to prave naopak.

At uz je programator zalozeny vice OOP nebo vice proceduralne, tak komponenty predstavuji objekty, ktere si mezi sebou posilaji zpravy (volanim metod) uplne stejne, jako kdyz volame v ramci kompinenty nejakou service. Neni tam zadny duvod pouzivat Resource API.

Nevim cim nahradit Swagger API, ale SOAP je v principu pekne a jendoduse nahraditelny a uz jsem to videl:

V prve rade se pouzije uplne stejny princip, jaky pouziva SOAP, protoze nikdo nic lepsiho nevymysli. Pouzije se REST, API se modeluje pomoci XSD, uplatni se uplne stejne pravidla jako ma SOAP:
- vsechny HTTP requesty jsou POST
- sere se z vysoka na path variables a jine kraviny, je tam jen body
- body je XMLko nebo JSON, je to jedno, jeho jmeno predstavuje jmeno metody a atributy jsou 1:1 parametry jakoby parametry metody
- jako bonus se uz zezacatku mysli na zpetnou kompatibilitu pro Response, aby se porad nemuselo verzovat API. K tomu slouzi v XSD tag "<xsd:any ... >" do ktereho se pri prekladu Response na Java objekt nastrkaji do Listu ty atributy, pro ktere se nepodarilo najit zadny konkretni element pro namapovani - takze kdyz se do Response nekdy prida dalsi atribut, tak kvuli tomu nezacnou okolni komponenty padat na hubu.

Neni zde zadny prostor pro impresionisticke umelce programatory, a to je vzycky dobre.
« Poslední změna: 03. 04. 2019, 23:04:28 od prihlaseny_uzivatel »

Re:Je Swagger utter crap?
« Odpověď #14 kdy: 03. 04. 2019, 23:21:38 »
A co se tyce toho Swaggeru, tak to v podstate stejne ani nepotrebuju. Kdyz si udelam vhodne XSD soubory, ktere udelam 1:1 ve stylu

jmeno souboru : jmeno tridy (interfacu)
jmeno requestu : jmeno metody
jmena atributu requestu : jmena parametru metody

Tak mam timto jasne definovane API. Jediny problem je, ze toto vyzaduje alespon nejakou minimalni disciplinu a domluvu, a te proste NEJSOU PROGRAMATORI schopni.