preview

Immmutable Application Research Paper

Decent Essays

Delivering Immutable Applications In consistent application deployment, the over-arching goal is to deliver an artifact bundled with it’s dependencies in a way that discourages modification. When performed in a manner that is quick and easily repeated, you can effectively increase development velocity through faster iterations. Effectively, you will put yourself on the right path to building and delivering a Twelve-Factor app! In traditional methods of application deployment, we would provision servers with necessary dependencies before shipping the application itself. In general, this works fine for a new server. However, what happens when we need to upgrade a dependency on that machine for a new version of the application? Problems …show more content…

However, building a new image and swapping the old one out can easily take an hour or more. Luckily we can employ containers, with the assistance of Docker, to help elegantly solve this issue. Containerization Containers allow us to build a unit to house our application and all of it’s dependencies in an inherently immutable format. This provides us with a consistent deployment unit, capable of being injected into any server and behaving the exact same, regardless of its coded environment. Now that we have an immutable, self-contained artifact requiring no packages or libraries for server installation, we can discuss branching strategies. In the spirit of immutability, it’s in our best interest to build this artifact only once priory to emplacing it in our various environments. In contrast, the popular Gitflow pattern seen here would dictate that we build separate artifacts, based on branch merges, for all of our environments. This does not align with our goals, however, as it introduces a point of potential change. We want to build once and deploy everywhere, handling configuration through environment variables. What About Hotfixes? Though it may hinder immutability when building artifacts, Gitflow can still be a valuable tool for making improvements to hotfixes. When your production environment has its own version control branch (usually master), it’s simple to make a commit to that branch with the hotfix, thereby alleviating any concerns over deploying it with

Get Access