Fork me on GitHub
#reitit
<
2020-05-17
>
Kari Marttila08:05:08

Thanks! I've been so busy at Metosin with my first customer case (wonderful case: AWS, Pulumi, Clojure (with reitit, of course)...) that I forgot to follow Clojurians Slack. 😀

valtteri12:05:37

How btw does Pulumi feel like compared to Terraform, Cloudformation and AWS CDK?

valtteri12:05:04

Does it use CloudFormation internally or API-calls? :thinking_face:

Kari Marttila14:05:06

Hi @U6N4HSMFW! There are pros and cons using Pulumi vs Terraform. Terraform is pretty much declarative - a paradigm which works well with infrastructure. On the other hand it is nice to use a real imperative programming language in certain situation - which Pulumi offers. They are both good tools. I actually wrote a short blog post in which I compare Pulumi and AWS: https://www.karimarttila.fi/devops/2020/02/03/terraform-vs-pulumi-experiences.html I believe Pulumi uses AWS SDK under the hood. If I started a new AWS project I would probably use Terraform if the AWS infra is pretty standard and all entities are supported by Terraform. If there were some entities that are hard to configure using Terraform I probably would use Pulumi. I wouldn't use CloudFormation unless there were some specific reasons to choose it (e.g. customer requirement) - I feel that Terraform is easier to use and maintain than CloudFormation. In my previous job I wrote a comparison regarding Terraform and CloudFormation: https://www.karimarttila.fi/aws/2019/03/14/comparing-aws-cloudformation-and-terraform.html

valtteri15:05:45

Thanks @kari.marttila! With a quick look Pulumi looks quite similar to the new(ish) AWS CDK https://aws.amazon.com/cdk/ but it supports multiple cloud providers. In the past I’ve used also Troposphere, which is a python lib that generates CloudFormation. Personally I’ve grown to like plain CloudFormation over the years. It has it’s oddities and steep learning curve and YAML is a terrible format in my opinion, but I still kinda like it. I have mixed feelings about Terraform. I’ve tried it a couple of times but the odd templating sets me off. Also I don’t like that state needs to be stored and shared somewhere. With CloudFormation it’s simple because it’s managed by AWS. I’ll probably give Pulumi a spin one day and see how it fits to my ergonomics. :)

Kari Marttila16:05:15

Thanks @U6N4HSMFW for mentioning AWS CDK - I had completely forgotten that. I'll have to give it a try one day - and maybe write a blog post and compare it to Terraform and Pulumi. 🙂

👍 8
ikitommi07:05:49

fixed the swagger-ui 3.* issues with the latest 0.5.0-SNAPSHOT, looking good IMO. will push out the release today/tomorrow.

ikitommi07:05:59

good thing about DIY that you can fix bugs spanning multiple repos in minutes, not weeks/months/years. Pushed out new versions of sieppari and spec-tools too.

👍 8
ikitommi07:05:51

updated deps:

[metosin/sieppari "0.0.0-alpha10"] is available but we use "0.0.0-alpha8"
[metosin/malli "0.0.1-20200404.091302-14"] is available but we use "0.0.1-20200305.102752-13"
[metosin/ring-swagger-ui "3.25.3"] is available but we use "2.2.10"
[metosin/spec-tools "0.10.3"] is available but we use "0.10.0"
[metosin/schema-tools "0.12.2"] is available but we use "0.12.1"
[metosin/muuntaja "0.6.7"] is available but we use "0.6.6"
[metosin/jsonista "0.2.6"] is available but we use "0.2.5"
[com.bhauman/spell-spec "0.1.2"] is available but we use "0.1.1"
[fipp "0.6.23"] is available but we use "0.6.22"
[ring/ring-core "1.8.1"] is available but we use "1.8.0"

bartuka13:05:00

I was reading how open source projects works and found this blog post about ActiveMQ strategy to "optimistic merges" (http://hintjens.com/blog:106) seems related to the benefits of DIY you mentioned. More dynamic aspect of code contributions. I do not have an opinion yet, but its interesting read anyway.

ikitommi16:05:33

🎉

👍 20
jaide17:05:22

With sieppari, what should you use to remove a specific item from the queue? Filter and\or remove?

dharrigan17:05:03

great news on the release! well done! 🙂

jaide19:05:27

Another sieparri question: How does error handling work? If I'm in CLJS and an exception is thrown in say the :enter function of an interceptor, does it go to the next interceptor's :error function? I'm trying to test\read the code but if anyone has insight it would be appreciated.