Introduction
Hay steemit-community,
As I wrote in my introduction post, my first articles here will be a full tutorial for Continuous Delivery starting at the bottom – So here we go!
This is the first part in which I want to motivate the usage of Continuous Deployment (CD) and tell you what you can expect from the further parts I will create.
By the way, if you want to know more about me, read my first post :)
Motivation
You may ask yourself, what the heck is CD and why should I invest the time I could use to improve my software with installing and configuring tools.
CD is basically a collection of tools and techniques to automate everything from the the check in of a code change into version control, to a new version in production. If done right, CD allows improving the quality of your software by a bunch of automated tests and short release cycles.
The reason why you should use it is simple: If you want to start getting serious with the product you have created, it has to have a high quality. No one in this world likes Software with bugs and in most cases there are 10 other products for the same problem, so the most customers just switch the product if they are pissed off by the bugs of your software.
Chapters
As the topic is very complex, I will split this tutorial in several parts. In the next part, we will begin to create a very simple example-application in Java, as I hope that most of you can write Java code. We will then add the build-management-tool Maven to the project, which we will need later to automate our first unit tests.
The next chapter will teach some basic concepts of test driven development. This technique can be used to ensure high code coverage and well tested software.
As we no longer want to run all the steps manually, we will start to create a Continuous Integration pipeline with a CI-Server that runs our tests on every code change.
We than reach the tricky part: Docker. We will learn how to create and deploy Docker images of our Software.
In the last part I will talk about the blue/green deployment, which could be used for a zero-downtime deployment and a last final test in a production like environment.
Continue reading?
(I will edit the links when the parts are finished)
Part 2: An example project using Maven as an automation tool
Part 3: Test driven development
Part 4: Continuous Integration
Part 5: Docker basics
Part 6: Docker Swarm
Part 7: Blue/Green Deployment