Some thoughts on switching to Pulumi

2022-08-01 5 min read Devops Quick Tips
I’ve become very comfortable with Terraform over the past several years of my career. So of course, the company wants to switch from Terraform to Pulumi, a newer competitor with a very different outlook on how IAC should be written. Prerequisites Terraform uses declarative code for IAC — you declare what you want to exist, and it generates the path to get there itself. Pulumi is much the same, however, while Terraform is written in Hashicorp Configuration Language which boils down to a bunch of static json-like declarations, Pulumi code is written in any of a number of turing-complete programming language. Continue reading

Dockerization Part 3: Deploybot

2018-02-01 12 min read Devops
One of the key components to making a good integration between products is understanding the mental model of each product. What one product calls a “counter” another could call a “metric” or a “stat”, for example; or worse, one product could be reporting, say, the amount of free memory, while another is reporting the percentage. The same goes for integration points between teams. When I built our previous release pipeline, I discovered very quickly that while developers were comfortable talking about repositories, operations thought in terms of applications, and neither knew nor cared how many moving parts went into a single app so long as it was all on a server together. Continue reading

Dockerization Part 2: Deploying

2018-01-20 7 min read Devops
Now that we have containers, we need to push them to our subprod environments so they can be tested. Bear with me, this is where things get a little complicated. Docker Setup Most people take the easy way out when they move to docker: they ship their containers to the cloud and let someone else manage the installation, upgrades, and maintenance on the docker hosts. We don’t do things the easy way around these parts, though, so we have our own server farm: a series of VMs in our datacenter. Continue reading

CI with Jenkins for Javascript: Part 3: Scheduling and reporting

2014-12-01 6 min read Longer Tales Javascript Workplace Tales
In Part One, we set up a Jenkins server and some unit testing. In Part Two, we added some static analysis tools to our build. But we’re still manually running all this, even if it’s all tied together now. Let’s talk about some of the features Jenkins brings to the table. Building automatically Our code release pipeline is going through some revisions to make better use of branching, so I have the good fortune of being able to detail for you two different build strategies for two different types of branching strategies. Continue reading

CI with Jenkins for Javascript: Part 2: Static Analysis

2014-11-15 7 min read Longer Tales Javascript Workplace Tales
Part one So. We’re up, we’re unit testing, we’re publishing results. But unit testing is only as good as the tests themselves, and that depends heavily on the programmers’ ability to write good tests. Maybe we want more than that. Maybe we want a metric that isn’t essentially self-reported. Maybe we want static analysis. What is Static Analysis Static Analysis is a category of testing techniques that covers any metric of code that can be collected without executing the code. Continue reading

CI with Jenkins for Javascript: Part 1: Unit Testing

2014-11-01 6 min read Longer Tales Javascript Workplace Tales
In a lot of ways, the Javascript world feels like it’s trapped in the year 2k: the dot com bubble is swelling huge, and nobody has time for best practices, it’s time to reinvent everything and strike it rich. As an SQA professional, it’s immensely frustrating to outline a technique and be told “Javascript doesn’t do that.” (That’s one of three answers that ought to be banned from a webdev’s vocabulary; the other two are “I think jQuery does that” and “Maybe with Node? Continue reading