Avoiding Circular Dependency Problems in AWS CloudFormation

Avoiding Circular Dependency Problems in AWS CloudFormation

Recently I ran into a few circular dependency problems when creating resources with AWS CloudFormation. While creating the stack AWS will throw a “Circular dependency between resources: [ ResourceA, Resource B, …]”. The error message is not very specific on where exactly this happened. The message can even set you on the wrong track while solving the problem.

Modernizing legacy web frontends: adding templates (part 1)

Modernizing legacy web frontends: adding templates (part 1)

These days lots of really good libraries and frameworks exist to build well structured web frontends. This is true if we start a new project on a greenfield. However using them to modernize legacy code can be quite difficult if rewriting major parts from scratch is not an option (i.e. due to time, budget or technical constraints). In this article we will incrementally modernize a jQuery web frontend by rendering fragments of HTML with templates. This article is part of a series of blog posts in which we’ll have a look at different strategies for incrementally modernizing legacy web applications.

Why I like CloudFormation templates in YAML syntax

Why I like CloudFormation templates in YAML syntax

CloudFormation is the core component of AWS for implementing Infrastructure as Code. It allows easy creation and management of related AWS resources by writing CloudFormation templates. Originally those templates were all written in JSON but nowadays there is also an option to use YAML (AWS CloudFormation Update – YAML, Cross-Stack References, Simplified Substitution). Good stuff! Surprisingly the vast majority of example templates is still written in JSON. So here is my take on why I think you should definitely give CloudFormation in YAML a try.

From Callbacks and Promises to Async Functions with ES8

From Callbacks and Promises to Async Functions with ES8

This article is more of a primer on the history of writing asynchronous code with pure vanilla JavaScript. Feel free to skip to the end if you are solely interested in async functions with ES8 (a.k.a. ES2017). All of the examples below depend on each other. You should be able to follow along by pasting them one after the other into a file. The required new Javascript functionalities are available in Node.js 8 and any recent version of Chrome, Firefox, Safari, Opera and Edge.

Implementing a DevOps Pipeline in Jenkins with concurrent builds

Implementing a DevOps Pipeline in Jenkins with concurrent builds

In this article we will see how to implement a DevOps pipeline with Jenkins that can handle concurrent builds. Some stages of a  pipeline require resources that can only be used by one build at a time. For example we might have a single test or staging environment. Instead of limiting the number of concurrent builds of our pipeline we will marshal the access to resources with the “lock” functionality.