官术网_书友最值得收藏!

The monolithic scenario

One way to understand the issues that a problematic architecture can cause for Continuous Delivery is to consider a counterexample for a while.

Let's suppose we have a large web application with many different functions. We also have a static website inside the application. The entire web application is deployed as a single Java EE application archive. So, when we need to fix a spelling mistake in the static website, we need to rebuild the entire web application archive and deploy it again.

While this might be seen as a silly example, and the enlightened reader would never do such a thing, I have seen this anti-pattern live in the real world. As DevOps engineers, this could be an actual situation that we might be asked to solve.

Let's break down the consequences of this tangling of concerns. What happens when we want to correct a spelling mistake? Let's take a look:

  1. We know which spelling mistake we want to correct, but in which code base do we need to do it? Since we have a monolith, we need to make a branch in our code base's revision control system. This new branch corresponds to the code that we have running in production.
  2. Make the branch and correct the spelling mistake.
  3. Build a new artifact with the correction. Give it a new version.
  4. Deploy the new artifact to production.

Okay, this doesn't seem altogether too bad at first glance. But consider the following too:

  • We made a change in the monolith that our entire business critical system comprises. If something breaks while we are deploying the new version, we lose revenue by the minute. Are we really sure that the change affects nothing else?
  • It turns out that we didn't really just limit the change to correcting a spelling mistake. We also changed a number of version strings when we produced the new artifact. But changing a version string should be safe too, right? Are we sure?

The point here is that we have already spent considerable mental energy in making sure that the change is really safe. The system is so complex that it becomes difficult to think about the effects of changes, even though they might be trivial.

Now, a change is usually more complex than a simple spelling correction. Thus, we need to exercise all aspects of the deployment chain, including manual verification, for all changes to a monolith.

We are now in a place that we would rather not be.

主站蜘蛛池模板: 大石桥市| 临潭县| 成都市| 青海省| 名山县| 多伦县| 佛冈县| 临江市| 房产| 慈溪市| 康马县| 湘潭市| 固镇县| 横峰县| 宁国市| 东平县| 阿坝县| 桐城市| 尚义县| 太仓市| 邵东县| 平度市| 广东省| 那坡县| 新竹市| 沅江市| 墨玉县| 永济市| 丹江口市| 江华| 大名县| 介休市| 金华市| 齐齐哈尔市| 宁化县| 桐庐县| 阿克陶县| 织金县| 安阳市| 泾阳县| 江门市|