Fork me on GitHub
#clojure-uk
<
2017-11-22
>
yogidevbear09:11:58

Slow start in #clojure-uk land

yogidevbear09:11:16

That bad, huh?

yogidevbear09:11:54

Takes a massive swig from my coffee mug to calm my heart rate

yogidevbear09:11:42

Thank you all for the feedback on AWS, etc. yesterday. It's good to see what people are using and their reasoning behind it. @mccraigmccraig I'm a little confused as to where you're using EC2/ELB/Auto-scaling and DC/OS. Is the AWS stuff for the app code (Clojure/ClojureScript/etc) and DC/OS for your data layer, etc?

mccraigmccraig09:11:16

@yogidevbear the DC/OS agents are in auto-scaling groups (one for private agents, one for public agents) - when i want more (or less) capacity for my cluster i just fiddle with the auto-scaling group params

mccraigmccraig09:11:14

i use ELB for TLS termination and to balance across the (yada) API instances running on the public agents

mccraigmccraig09:11:53

all the data layer runs on private agents

yogidevbear09:11:56

So the DC/OS stuff is hosted on AWS?

yogidevbear09:11:10

Thank you 👍

mccraigmccraig09:11:14

DC/OS effectively turns your instances into a big bag of compute/ram/disk and tasks get run somewhere in that bag, and moved around when necessary

yogidevbear09:11:11

Yeah, that makes complete sense now

mccraigmccraig09:11:29

there's an IP overlay network, and a service DNS, so containers for tasks get their own IP address and a well-known DNS name - which makes it easy to deploy tasks and easy to discover running tasks

yogidevbear09:11:48

I've watched the demo videos on their website and was in awe of the awesomeness of DC/OS. It looks like a fun tool to play with

mccraigmccraig09:11:06

it's not all roses - i've just run in to a problem with the datastax-enterprise package which is quite opaque and doesn't provide the configuration to work around the problem

dominicm11:11:23

@carr0t what's wrong with it?

danm11:11:25

It doesn't have feature parity with the web UI or CLI tools

dominicm11:11:41

In what case? Something new?

danm11:11:37

I want to be able to add autoscaling to secondary indexes on a dynamodb table. On the web UI this is 2 clicks. I can then use the CLI to see what change this made to the scaling policies for dynamodb. When I try and add those same scaling policies via CloudFormation I get the error "Unsupported service namespace, resource type or scalable dimension"

danm11:11:38

(Because the scalable dimension of my new targets are dynamodb:index:[Read|Write]CapacityUnits instead of dynamodb:table:[Read|Write]CapacityUnits)

danm11:11:55

We've hit a number of problems like this. It's not possible to set the Path of an IAM role via CloudFormation, or it didn't used to be, so we had to have CLI scripts to create our roles where we needed a path, instead of using CF

danm11:11:20

It's not new stuff, it's just stuff that the majority of people don't notice/care about/use

danm11:11:02

But when you do get to the stage of wanting to use it, you've probably got hundreds of things you want to use it on, so not being able to do that via your standard CF deployment pipeline then becomes a massive PITA

maleghast12:11:20

@mccraigmccraig - Do you have the Enterprise version of DC/OS?

maleghast12:11:29

(I’ve been doing some more reading)

mccraigmccraig12:11:21

enterprise buys you fine-grained authentication, which would be nice, but i can get away without it for now

maleghast12:11:50

Oh, shame, I was hoping to ask you if you’d ballpark the prices… Also the Enterprise page / site does say that they will offer you support on getting Cassandra working, so I assume that they have some insight into working with Datastax Enterprise…

mccraigmccraig12:11:13

i had a call with mesosphere about enterprise a while back @maleghast - here's my note on pricing: enterprise dc/os annual pricing per node - $3950/node/year - non-production nodes $3250/node/year

maleghast12:11:28

Bloody Hell…

mccraigmccraig12:11:44

those were approximately my thoughts

maleghast12:11:52

Thanks for that, I agree with you that getting by without might be a good call…

maleghast12:11:21

The Enterprise site does seem to intimate that they might sell you one-off support if you get REALLY stuck with the issue you mentioned ^^, but they are pricey buggers, huh?

mccraigmccraig13:11:12

there is a dc/os slack, and the mesosphere people on there are helpful and never ask if you have enterprise

maleghast13:11:26

Oh that’s cool

maleghast13:11:51

I mean they are going to get paid by any Public Company as and where it needs the indemnity, so I suppose they take a more long term view with emerging companies, which is wise on their part - builds strong goodwill if nothing else.

mccraigmccraig13:11:44

datastax have similarly eye-watering prices, but will also enrol you in their startup programme, which gives you everything for free until your revenues hit $5m or your funding $100m

maleghast13:11:46

Note to self - if ever buying this kind of thing have the money to also have big, crunchy nodes…

maleghast13:11:29

@mccraigmccraig That’s pretty cool too - I like the model. Cognitect appear to have a similar approach for Datomic too, which allayed some of my sticker-shock on that one.

otfrom13:11:35

@maleghast I'd say that was a good idea anyway as jvm things use up RAM fast

maleghast13:11:20

@otfrom - Oh, don’t I know it… I am currently running the largest AWS instance I have ever been responsible for because of that…

maleghast13:11:36

(it’s not that big, but it was new ground for me)

maleghast13:11:28

I must admit that the RAM issue is one of the things that’s putting me off the idea of using Docker with the app(s) I am currently prototyping.

otfrom13:11:28

biggest I run at the moment are a few r3.8xlarge machines for a spark job that gets a bit chunky in the middle (like me)

maleghast13:11:33

Oh, that’s a LOT bigger

otfrom13:11:48

I'm a bit embarrassed tbh. There should be a way to do it in much less RAM, but I've not found it yet.

maleghast13:11:53

I had basically never spun up anything larger than a T2 before I spun up my / our m4.large

mccraigmccraig13:11:27

an 8xlarge is pretty darn chunky @otfrom

maleghast13:11:55

It is, but I bet he runs them periodically rather than 24/7

mccraigmccraig13:11:37

what do you have that requires 0.25TB of RAM @otfrom?

mccraigmccraig13:11:03

i guess a bunch of massive hash-joins would do it

otfrom13:11:44

a huuuuuuuuuuuuuuge join

otfrom13:11:22

I'm not proud of it, but even getting it to this point took some time

otfrom13:11:47

it at least works and only takes a few hrs to run on a 3 node cluster w/an extra master (that is smaller)

otfrom13:11:19

they can be pretty cheap on spot (the larger instances often are and the prices can be quite stable, esp if you choose a slightly "unfashionable" one)

otfrom13:11:58

but, yeah, they don't run all day. Just for the job and then get shut down

mccraigmccraig13:11:54

no reasonable possibility of sort-merge joins then @otfrom?

dominicm13:11:26

You can throw a merge sort at any problem

otfrom13:11:15

@mccraigmccraig I'd have to do the sorting (as it is just a big pile of badly formatted csv files)

mccraigmccraig13:11:37

sure - probably wouldn't take many passes of some smaller machines though, and would give you a fixed-memory solution

mccraigmccraig13:11:56

though doubtless slower

otfrom14:11:21

but possibly cheaper if slower is still fast enough (I've got about 18hrs to turn it around in)

mccraigmccraig14:11:55

"The sort-merge join can be activated through spark.sql.join.preferSortMergeJoin property that, when enabled, will prefer this type of join over shuffle one."

mccraigmccraig14:11:52

if you are using spark-sql that would presumably make it happen automatically

otfrom14:11:37

using sparkling, but thinking about the way I'm doing it I could probably do it in plain old clojure (need to think a bit about it)

iaint16:11:57

so disappointed that the director isn't listed as Mr Bobby Tables

dominicm16:11:24

I'm disappointed it didn't work

yogidevbear16:11:15

Maybe it did and they had a backup 😉

otfrom17:11:34

aleph, http-kit, or clj-http for a http(s) client?

Rachel Westmacott17:11:52

I usually use aleph, because it is close at hand.

mccraigmccraig17:11:53

@otfrom aleph so i don't have to convert to manifold/deferred

dominicm17:11:05

Did something happen @mccraigmccraig

mccraigmccraig17:11:57

i think i've just found the source of my frustration with my apparent inability to effect a change in a docker image for the last 2 hours

mccraigmccraig17:11:40

and it is because whoever created the image installed 2 copies of the relevant packages at different paths. and i've been changing the unused one

otfrom17:11:37

I hate that

otfrom17:11:59

thx for the aleph advice. No love out there for other http clients?

maleghast18:11:46

@otfrom - I used to be all about the http-kit and then I met Aleph… Never looking back now…

guy18:11:22

The right tool for the right job 😄

maleghast18:11:36

I’ve been thinking about this in the background of my mind for a while, so I am just going to come out and ask y’all… Who’s using Docker in Production (with Clojure, obvs), why’d you decide to Containerise, do you run Docker in dev as well as your deployed envs and finally are you finding it’s possible to run on meagre resources?

maleghast18:11:19

I have had really satisfying experiences with Docker in Python and Ruby, but I have heard some really negative things about it vis à vis the JVM in particular…

maleghast18:11:30

Your thorts are greatly appreciated, as ever 🙂

mccraigmccraig18:11:56

we're using it for production and staging... not for local dev though

maleghast18:11:30

*nods* Do you containerise an ÜberJar..?

mccraigmccraig18:11:50

yeah, a compiled uberjar

maleghast18:11:45

That seems like a solid idea - do you use a lightweight basebuild like Alpine etc., or do you base your containers on Ubuntu / CentOS type of thing?

maleghast18:11:08

Also, I’ve heard people talking about Docker having issues with running Oracle Java…?

mccraigmccraig18:11:37

it varies - our api is on ubuntu and stream processing on alpine/oracle ... not for any particularly considered reasons

maleghast18:11:54

Fair enough 🙂

mccraigmccraig18:11:59

nope, no issues with oracle java - i've always used oracle java for production deploys of everything

maleghast18:11:35

Oh cool - I thought that there was some kind of Licence problem…

dominicm18:11:27

Tl;dr you opt into commercial features

maleghast18:11:21

@mccraigmccraig - thanks for the Gist... why do you add OpenJDK and then install Oracle Java though?

maleghast18:11:39

(I may be being incredibly dumb)

mccraigmccraig19:11:28

the danger of comments @maleghast - i don't add OpenJDK, but i probably did at some point in the past

maleghast19:11:18

Ah, yes... I was being dumb. Thx 🤐

yogidevbear22:11:00

Any PS4 owners here? I'm getting one for Christmas as a joint gift for my son and I. PlayStation are running their official Black Friday deals from tomorrow. Huge discounts on loads of titles including latest releases. https://store.playstation.com/en-gb/grid/STORE-MSF75508-BLACKFRIDAY17PS4/1?smcid=pdc%3Aen-gb%3Apdc-buy-playstation-store