Morning
Good Morning!
π
!mΓ₯nΒ‘
mogge
morrrrrrrning
Good Morning All... Long time no see / chat... How're you all doin'?
fine... but summer is over. it seems here at least
autumn is much nicer anyway
Happy Friday π
i miss summer
I don't miss the heat - trying to sleep at night was bad π
But I'm a colder weather type of guy anyway
i'm a fair weather cyclist so winter makes me sad
Morn'
@maleghast I'm getting a bit sucked in to the new crusader kings, I really need to try and wander around the local park today...
Morning
It's a bit like trail running versus running on a treadmill indoors
i live on the edge of the peak district so in summer you can ride after work in the hills, actual climbs, views across manchester all the way to the sea
and then in winter you can... not do that
woo.
haha love that description (even if it is a bit sad)
So, how do people think about serverless? I just talked to some one who thinks it is a bad idea...
but as everything else, it has upsides and downsides.
it's the opinion of someone who's never done it, but i think it's a great idea... i suspect @alex.lynham will be able to give you a much more nuanced view though
as I think we'll have very few users I see the cost advantage. but maybe that is overrated. who knows
so start up times might be a problem.
(especially if we would use clj)
ahoy hoy
i was summoned
serverless is the future for basically everything but streaming imo
current gig: stood up a greenfield MVP for a project in an enterprise context in one week
now at 52 functions, 30K LOC, blue/green deploys, living the dream
costs us just over 1k$ a month iirc and we're at nationalish scale. 9/10 of that is RDS (Aurora in 3 AZs)
we're running 2 stacks of our fns for like a couple hundred $ a month and the usage we're paying for is tiny
and we've got it to the point where we can clojure-style test our endpoints like they were normal async functions
with cljs & shadow this is even nicer, but typescript was the best compromise available to me at the time
if you want to use JVM CLJ then startup times are going to kill you though, don't bother i think people have had some luck with graal mind you but yeah, just use cljs, the ecosystem and tooling is better anyway, there's the serverless framework, sls-offline and all sorts of useful dev tools
* don't bother being like, Just My Opinion man, but there's no way in heck i would do it myself or argue for it when node is so fast and the tooling/mindshare is there (even if i'm not wild about the node platform)
I have build 3 or 4 test function using node. It works and they are all tiny.
i'll go harder and say it could be the future of streaming too - a streaming-as-a-lib thing like kafka-streams could work well with serverless, and while kafka-streams is jvm-only, startup times aren't a concern
but at that point if it's constantly up the pricing will eventually exceed dedicated instances
it'll probably just be easier from a maintainance standpoint
doing anything with serverless is low maintainance, high pissing about in the AWS console IME
and ooft when you hit a platform bug in AWS
like, your IAM roles getting detached in prod (real bug, real sitation, root cause: essentially a wontfix from amazon)
errr.... wat ? gotta love IAM!
the fix was even better
for Reasonsβ’ this couldn't be done via CLI or automation but
you go to the console, unattach all perms from the lambda, hit save, reattach the perms, hit save, MAGIC :male_mage:
gruuuhhh
it's documented in our DR playbook as 'if this and this and this have gone wrong, then you need to do THE SWITCHEROO'
Graal is an interesting option, hadn't thought about that (yet)
and funny that you mention maintenance, that was mentioned as one of the downsides by the guy I was talking to
in what way?
not sure, I think the bottom line is that this team has never done serverless and therefore advice against it.
proposing Spring Boot and Hybernate instead π±
So we might have to look for a different vendor...
that's super weird. my experience has been whole classes of maintenance problems just cease to exist, but that your methodology needs to modernise e.g. use cloud CI, deploy more often, have a rolling dev deploy, do trunk-based development -> all help in various ways to go with the grain of the tech
what's the project trying to build? what's the problem domain?
on a technical level, just storing a bit of text and a few pics in a DB.
I think serverless benefits can be achieved by vendors without much effort. Ions is a great example.
later a few reports (PDF generation)
we've got some image processing stuff where we pretty much deployed the aws serverless template for image resizing etc and stuck it in our vpc
π
I dunno, seems to me that serverless was way more fiddly than an auto scaling group with a web server on.
I'm really interested if anyone does a good example / breakdown blogpost of this @alex.lynham π...
I've done it a bit for ml tasks...
there was a talk at the Dutch CLojure Days a few years ago about a team in Sweden doing serverless with great success.
i've done bare metal, managed instances, k8s and serverless and serverless (for simple web apps) is definitely the least pain
but you trade some of your regular pain for platform bugs
like, no more messing around with k8s dasboards or ssh'ing onto instances but when things are borked, expect to crawl aws docs etc etc
The shared responsibility for making your life difficult model
lol
yes
@folcon only got a short blog i wrote for mainly internal folks at current place https://the-frey.github.io/2020/06/15/functional-serverless-typescript on current typescript project (and it's a lil out of date already)
i need to update the cljs/shadow-cljs serverless workshop thing i did the other year but realistically i won't get around to it until a) i need it for a project or b) i'm using it for a talk/workshop which doesn't seem on the cards rn :/
Anyone got any good advice for how to "see" what's going on with a long running evaluation in CIDER..?
logging π¬
or a debugger, or yourkit or visualvm depending on what you need to see
yeah, I realise that no...
I just want to see the interim state of the atom that's being updated..
Can I connect a second REPL?
yes, you can usually connect a second repl
ok cool, will try that - thanks!
@mccraigmccraig - Thanks, that worked a treat!
π
So, anyone got any recommends for a distributed k/v store that works well with clojure? Some usual suspects are amazon dynamodb, consul, vault, etcd.
The values are likely to be configuration (maps?) but not just clojure stuff, but configuration as json docs, yaml docs etc.
should have a nice interface, RESTful if possible π
and by works well with clojure, I mean, it also has to work well with other languages, like Kotlin, Go etc... (I suppose if it has a RESTful interface, that would make it agnostic)