W poprzednim odcinku rozmawialiśmy na temat Deno i krótko mówiąc nie byliśmy zbyt optymistyczni. Główne założenia Deno nie robiły różnicy w kontekście porównań z Node.js.
Wracamy po “wakacyjnej” przerwie. Nowa usługa - Deno Deploy - wchodzi na scenę. Czy to zmienia wszystko? Czy nasze przemyślenia nadal mają sens? Czy porównanie do Node.js to dobre zestawienie? Czy zbliża się godny konkurent dla AWS Lamda?
Zapraszamy do wysłuchania rozmowy 🙏
Bartek witczak
Witam Panie Marku.
Marek Piechut
Witam Panie Bartku.
Bartek witczak
Mieliśmy dosyć krótką przerwę ale już wracamy.
Marek Piechut
Przerwa wakacyjna.
Bartek witczak
Przerwa wakacyjna plus wakacyjna.
Marek Piechut
Z tej okazji, że wracamy, ja zacząłem szukać tematów i wypadła taka ciekawa sytuacja, że temat zupełnie niechcący ale przy okazji ostatnich wydarzeń jest taką klamrą do ostatniego odcinka, który wydaliśmy przed przerwą wakacyjną. Zupełnie niechcący w sensie, że to się okazało już po pracy nad tematem. Mianowicie chciałbym żebyśmy wrócili do naszego Deno, które uznaliśmy na końcu, że jest jest bez sensu, nie oszukujmy się i porozmawiali sobie chwilę o tym Deno, bo w związku z ostatnimi wydarzeniami okazało się, że trochę z tych koncepcji z tego Deno nie było zupełnie bez sensu i wymyślonych tylko po to żeby były i żeby zrobić swoją wersję Node. Już mówię dlaczego. Dlatego, że ostatnimi czasy pojawiła się beta 1 alfa 7 albo coś takiego czegoś co się nazywa Deno deploy, czyli wersji w rodzaju Lambdy amazonowej od Deno ja zapisałem się na demo wersję tego, która jest bezpłatna można sobie tam spokojnie testować, nawet w miarę spoko to działa. Interfejs jest bardzo taki, powiedziałbym początkowy, wygląda jak Twitter bootstrap i nie ma nawet opcji skasowania tej lambdy, więc tam dużo rzeczy brakuje, ale w miarę skocznie to działa, można sobie tam deployować rzeczy, one dosyć szybko startują i nawet tam jakoś to działa. Chciałem z tobą właśnie o tym porozmawiać, bo to troszkę nadaje innego charakteru, innego wyrazu, tym rzeczom o których rozmawialiśmy wtedy że w Deno położono na nie duży nacisk. Nam się to wydawało bez sensu i bezcelowe ale moim zdaniem w kwestii tego, że oni poszli w tę stronę, że docelowo chyba to miało tak być że że powstaje z tego taka Lambda, że one zaczynają nabierać sensu.
Bartek witczak
No dobra, to jeżeli ktoś nie słuchał albo już zapomniał o czym rozmawialiśmy ostatnio, to jeżeli chodzi o Deno to poruszyliśmy kilka elementów. I takie rzeczy, które rzeczywiście były istotne to secure by default, czyli jakby takie security, które jest wbudowane, które z założenia jest bardzo soundbox’owe i jest powiedzmy, że dużo lepsze niż w Node, to była jedna rzecz. Druga rzecz to był brak kompatybilności z npm, czyli nie możemy sobie tych modułów zaciągać tylko jest jakby inny system zaciągania zależności.
Marek Piechut
Co ważne w tym systemie chciałem zaznaczyć, że zależności pobiera się bezpośrednio z URL, na którym są zdeployowane. Czyli ty sobie robisz po prostu masz sobie swoją paczkę i ktoś zaciąga ją bezpośrednio jakby z tego URL.
Bartek witczak
I to jest tak jak fajnie, jak mówisz, że my jakby myśleliśmy na temat demo z informacjami, które mieliśmy w tamtym momencie. Nie siedzimy w głowach twórców, więc nie wiedzieliśmy dlaczego takie a nie inne decyzje były podejmowane. Część rzeczy wydawała nam się dziwna, szczególnie dla mnie był to brak kompatybilności z NPM był taki dziwny gdzie mamy cały ekosystem już modułów i to jest naprawdę coś mocno rozbudowanego akurat w Node. no a tutaj okazuje się, że wychodzą powiedzmy takie Lambdy, w wersji Deno, i nagle część tych rzeczy, o których rozmawialiśmy, zaczyna nabierać nowego znaczenia.
Marek Piechut
Tak. To w ogóle w innym świetle. Właśnie dlatego chciałem żebyśmy ten temat poruszyli, dlatego on mnie w ogóle zainteresował, bo nagle te rzeczy zaczynają się składać w całość. Tak jak wtedy rozmawialiśmy, że czemu nie ma kompatybilności z NPM, a tu się okazuje, że to w ogóle nie jest spójne z ich celami. Że jeżeli traktujemy tą pracę z Deno, ten stand the lawn Deno serwer traktujemy jako tylko deweloperskie narzędzie, żeby przygotowywać kod do tych lambd no to nagle się okazuje, że ten cały npm nie ma sensu. I to, że ściągamy te zależności gdzieś tam z netu po prostu bezpośrednio podając Url zaczyna nabierać dużo sensu bo okazuje się właśnie, że to jest jeden z ciekawszych feature w tym całym Deno diploy bo w Amazon lambdach np. ty musisz pakować te wszystkie zależności. Jest z tym dużo zabawy. Czy właśnie np. to co jest w web workerach, które tam dosyć głośne były ostatnio, no to tam też z zależnościami jest trochę szopy. Musisz to budować coś takie różne rzeczy i to nie jest tak proste jak w tym Deno, że to co nam się wydawało że jest takie “po co to jest nic to nie zmienia” i nagle się okazuje że w tym usecas’ie to zmienia bardzo dużo. I to było dla mnie właśnie bardzo ciekawe że nagle to wszystko nabiera zupełnie innego światła i szczególnie właśnie apropo ładowania tych thependesis, które są upierdliwe np. w Amazonie gdzie tam musisz to zipować gdzieś tam to jest rozpakowywane i tak dalej i tak dalej. To tutaj to działa z palca.
Bartek witczak
Czyli jakby to nasze założenie i to nasze pytanie, które było zamknięte- otwarte w poprzednim odcinku czyli “czy Deno jest w stanie zastąpić Node?” nie do końca w ogóle jest po to. A w ogóle myślisz, że to jest jakby taki ciekawy kierunek jeżeli chodzi o kolejność wydarzeń, że najpierw jakby jest Deno, które ma zastąpić node’a a potem jakby jest dopiero ta cała otoczka związana z lambdami?
Marek Piechut
To jest ciekawe pytanie bo mi się wydaje że jest dużo powodów dla których mogło tak się stać. Jeden z nich jest taki że oni próbowali zainteresować ludzi dając to jako alternatywę dla Node. Druga kwestia jest może taka że oni budowali to środowisko i np. nie zdążyli i klaudfer zrobił te webworkery, co jest tym co oni mniej więcej chcieli zrobić i musieli z czymś wchodzić na rynek i już zacząć robić jakieś tam echo itd. No bo patrząc na ten Deno diploy, to widać że tamten interfejs jest nie gotowy itd. że dużo rzeczy jeszcze jest niegotowe, że to widać, że to jest w trakcie pracy. Także też może tak być. I powiem ci że właśnie apropo tych rzeczy które właśnie wtedy pomyśleliśmy o tym że one są bez sensu. No to zobacz to całe soundboxowanie zaczyna mieć duży sens. Bo oni są w stanie robić bardzo tanim kosztem z zerowym jakby worm up czasem bo te serwery cały czas chodzą i ty tylko dorzucasz swoje skrypty i one są wyizolowane dzięki temu że oni mają to soundboxowanie i nie masz tak jak w Lambdach które startują ileś tam czasu zanim się rozkręcą to coś tam itd itd.
Bartek witczak
Teraz zobacz jeszcze jedną rzecz taką a propos soundboxowania. Rozmawialiśmy że w Deno jest tak że każdy dostęp musisz nadać osobno. Czyli jeżeli chcesz HTTP to osobno jeżeli dostęp do dysku to osobn, tak? I każdą rzecz trzeba osobno nadać. Jak rozmawialiśmy to mówiliśmy “kurczę to jest bez sensu” bo jak weźmiemy sobie taką aplikację z Node to przeważnie ona dotyka. O ile nie wszystkich tych zabezpieczeń to powiedzmy że większość z nich no nie. No to każda aplikacja od razu będzie miała te zabezpieczenia odpalone, będzie można mieć dostęp do HTTP do plików do wszystkiego i uznaliśmy że to jest jakby zupełnie niepotrzebne. A tu się okazuje że jeżeli wykorzystanie nagle jest takie jak Lambda gdzie to ma w założeniu wykonać jedną funkcję wiec to że ty musisz odblokować sobie pojedynczo te rzeczy to nagle zaczyna nabierać dużego sensu bo prawdopodobnie ty będziesz chciał albo odblokować dostęp do pliku albo dostęp do innych elementów systemu gdzie wcześniej przy takim systemie to zawsze było wszystko.
Marek Piechut
Druga sprawa jest taka że teraz też z punktu widzenia tego że ty deployujesz ten system jako Standalone zamiast Node gdzie tam pewnie deployujesz go na jakichś dockerach, obrazach jakichś ec2, czy innych wynalazków to np. tak bardzo Cię nie ekscytuje ten dostęp do pliku czy coś takiego, no bo co to dla ciebie za problem a teraz jak ty masz chmurę w której odpalać ludzi KOD i masz taką możliwość soundboxsowania bez robienia jakichś bardzo dużych i wygibasów w stylu że ty masz naprawdę osobne dockery pod spodem no bo Amazon musi tak robić bo nie jest w stanie izolować od siebie tych aplikacji a tutaj oni są w stanie izolować te aplikacje bo tam to jest wbudowane już w cały RAM time. I okazuje się że Ty masz dużo mniejszy koszt i pewnie user experience będzie dużo lepszy dzięki właśnie takim ruchom które z punktu widzenia tych standalone aplikacji nie bardzo były sensowne.
Bartek witczak
Dlatego tak mocno interesuje mnie ten aspekt czy najpierw była kura czy jajko, czyli czy najpierw było tak że to było już wymyślone i ograne i pod to przygotowywane, czy raczej było tak że ok zrobimy Deno tutaj za bardzo nie ma rynku żebyśmy walczyli więc pójdźmy trochę w inną stronę.
Marek Piechut
Właśnie te rzeczy, że dependensis są nagle ładowane z Ulri, że one są cashowane itd bo oni wtedy też to opisywali że ty ładujesz z urli ale on to cashuje w systemie i nie ściąga. I to wszystko zaczyna mieć bardzo dużo sensu. Tak samo ty swój kod deployujesz z urli że jest też integracja z gidhabem która automatycznie zaciąga rzeczy i ci deployuje ale możesz po prostu zdeployować URL, mówisz mu “dobra zdeployuj mi ten URL” i nagle się okazuje że nie potrzeba żadnych narzędzi dodatkowyc, żadnych buildów, cudów i tym podobnych tylko po prostu “aha to TypeScript wrzucam tu, daje mu indeks ts, działaj”.
Bartek witczak
No dobra powiedz jak to wygląda czy to jest tak że te Deno Lambdy, nazwijmy to tak, działają sobie jakby u jakiegoś konkretnego prowidera, czy to jest jakby cały serwis, czy to jest tak że to będzie deployowane na Amazonie. Jak to wygląda?
Marek Piechut
Z tego jak to teraz wygląda to tam w ogóle nie wiesz, to jest całkiem przezroczyste. To jest troszkę tak jak jest ten cloutler, czyli ty mówisz mu “Masz weź mi tu zdeployuj ten skrypt”, i koniec i nawet w tym momencie nie wiesz, zresztą w amazonie też nie wiesz na czym on będzie działał. Jedyna rzecz, która jest to jest ta geolokalizacja, nie wiem jak to nazwać po polsku, że ten twój kod będzie sie odpalał blisko klienta, więc to jest jakby taka rzecz za darmo, którą też dostajesz z tym cloutlerem. A tak poza tym to tam niewiele wiadomo. I masz jakieś tam oczywiście limity, też tam w ileś czasu musisz się wyrobić, ale we wszystkich tych rozwiązaniach jest podobnie
Bartek witczak
Mnie jakby chodziło właśnie o to że to jest jakby całościowy serwis od Deno, ty tam te rzeczy odpalasz, co też, jak tak sobie myślę, może mieć znaczenie odnośnie tego że twórca Deno i Node przez długi czas pracował w Google.
Marek Piechut
Może tak być, gdzieś tam w Google sobie działa. Tu jest jeszcze jedna kwestia, bo to mi się bardzo podoba z tymi zależnościami z tymi urlami akurat mi się to podoba w tym zastosowaniu tych lambd bo okazuje się że właśnie wszystkie te dependencies i jakieś te wszystkie build procesy nagle niczego już nie potrzebują, ty nie potrzebujesz jakichś tam wysublimowanych tooli które ci będą te lambdy deploywać czy pakować te dependencies czy coś takiego, to też nie jest aż takie proste bo nie wszystkie rzeczy zadziałają, trzeba jednak brać pod uwagę to że nie masz tego file systemu, część rzeczy nie będzie działać, część rzeczy działa troszkę inaczej i że to nie jest takie proste. Ale to wszystko jest takie naprawdę, że jest stayed forward - dajesz URL i działasz. Jest jeszcze jedna rzecz którą chciałem poruszyć a propos tego, że oni są alternatywą dla lambdy w Amazonie. Znaczy nie wiem co oni mają dalej w rękawie przygotowane, ale moim zdaniem z Amazonem jest ten problem jaki wszyscy dostawcy chmurowych rozwiązań mają z Amazonem, czyli ty nie jesteś w stanie przeskoczyć tego, że używając lambdy używasz serwisów Amazona, których jest trylion i to jest jeden cole API, że nikt ci nie dostarczy czegoś takiego że ty piszesz trzy linijki JavaScript, które robią rozpoznawanie mowy i z niego generują wideo czy coś takiego. Tak że to jest dużo bardziej skomplikowane jeżeli Ty nie jesteś w Amazonie, a jak już jesteś w Amazonie to masz tam wiesz SQS, RDS tam AI, cuda na kiju i to wszystko działa pięknie, ładnie wszystko spina i te lambdy świetnie się tam wspinają, że ty możesz tak łatwo to wszystko pokleić tymi lambdami, a tutaj jesteś niestety już bardziej zdany na zewnętrzne serwisy jeżeli chcesz coś więcej.
Bartek witczak
No tak tylko wiesz to jest też zawsze ta kwestia, że możesz sobie po prostu wykroić kawałek świata i po prostu zjeść pewną część biznesu w pewnych rozwiązaniach, dla których jest to wystarczające.
Marek Piechut
Nie wszystkie rozwiązania potrzebują takiej rzeczy. Ale właśnie mi się wydaje że ze względu na to oni są jakąś alternatywą dla tego cloutler’a, bo tam właściwie tak jest. Oni dają chyba tylko key/value store z takich ciekawszych rzeczy które możesz sobie dorzucić do tych workerów.
Bartek witczak
No wiesz dlatego właśnie też ciekawi mnie ten aspekt odnośnie Google, bo jeżeli to jakoś tam wiesz jest gdzieś tam w zamyśle możliwe do połączenia no to po prostu może być tak, że to jest jakaś taka furtka, że korzystasz z Deno do takich właśnie skryptowych rzeczy lambdowych rzeczy, a tam serwisy z Google cloud masz pozostał
Marek Piechut
Oni troszkę w tą stronę co hero pójść, że masz Amazona trochę drożej przez to, że masz one click deploy np.
Bartek witczak
Będą w stanie relatywnie łatwo zamknąć część innych serwisów i je łatwo podpiąć i to będzie niby Deno, a tak naprawdę pod spodem będzie Google Cloud będzie trochę inaczej targetowane.
Marek Piechut
Jest to ciekawa sprawa. I tutaj pierwszy też system z developmentem. Mi się wydaje że jest jest o tyle spoko że w miarę jednak odpala się na w miarę tym samym Deno.
Bartek witczak
Rozmawialiśmy ostatnio z kilkoma osobami tak odnośnie właśnie developmentu na lambdach i jakie to tam wyzwania niesie ze sobą przy takim day to day developmencie.
Marek Piechut
To też jest ciężko powiedzieć no bo to trzeba by było coś tam robić na tym trochę więcej. Ale wydaje mi się, że to może być też troszkę taki selling point, chociaż nie jestem pewien. Także jak mówię, to jest taka ciekawa klamra w ogóle z tym, że te rzeczy, które nam się wydawały bez sensu, nagle się okazuje, że mają dużo sensu jak spojrzeć na to z perspektywy zupełnie innych celów. Gdy twoim celem wcale nie jest zastąpienie Node w żaden sposób.
Bartek witczak
Jest to bardzo ciekawe i jestem ciekawy jak ta sytuacja w ogóle będzie się rozwijała i co z tego wyjdzie.
Marek Piechut
Zobaczymy. Będziemy testować, zobaczymy co z tego wyjdzie a nóż widelec okaże się, że jednak Deno jest na plus.
Bartek witczak
No zobaczymy.