The Digitalist Team
August 23, 2021

No waiting!

Let’s look at software development activities with an agile aproach. This process is based on the regular repetition of subtasks, covering every element of software development lifecycles. Examples include design, analysis, programming, converting to executable format, unit testing, and failover testing.

Post-programming tasks can be highly automated. This is also necessary if you want to avoid allocating human resource for testing, and want feedback on the latest changes to reach developers as soon as possible. These automatic steps continuously integrate source code updates committed by developers into the application. Hence this phase is called: Continuous Integration. It is easy to understand that compared to traditional Waterfall type methods – where feedbacks often take months to arrive – this methodology results in projects that are a lot more flexible, pose lower risks and are substantially easier to adjust to business environment changes.

When taken further, Continuous Integration evolves into Continuous Delivery and Continuous Deployment. Coninuous Delivery means making newly implemented features available in the program. Here the new feature is deployed on a test server not owned by the customer – also as an automated process. This is an intermediary system where potential users can see and try the function early-on. So the feature undergoes a kind of a quality assurance process.

The last phase is Continuous Deployment: the automated deployment to the production systems.

The main goal of this process is automatically testing the program as early and as accurately as possible. Excessive testing takes too much time though, and places a huge load on the system. And for that you really need resources.


Another possible challenge for Kubernetes.

So certain processes require more resources than others – depending on the number and types of tests, the requirements of the tested system elements and the concurrency of automated processes – the resources allocated for execution need dynamic scaling. One possible technology for this purpose is containerization, for which an effective open source supporting platform is Kubernetes.

Although the task may look simple at first glance, its extreme complexity is reveals itself on a closer look. Just like flying: it seems cool and simple to just board an airplane and fly on a vacation, while the plane is operated by hundreds of buttons in the cockpit. The situation here is pretty similar: It is easy to get started with Kubernetes, but effective use needs proficiency and plenty of experience.


However in our modern world this is a tendency now.

Developers are completely "hooked" on it, since many useful goals can be achieved that previously were not possible. Related tools evolve mind-boggingly fast: several new features and solutions are created every month by the community, making its use progressively easier. This is an era of continuous learning.


And customers can be truly satisfied.

Practical application of the CI/CD concept significantly contributes to a more effective use of resources, resulting in the customer getting a program with less scope for errors and at a lower price.  As I have mentioned before, every change is tested right away, without time loss, thanks to the rapid feedback mechanism. While previously it was also time-consuming for the operations team to deploy the program to the production environment, here this is not an issue at all, since the user experience becomes instantly available.

Obviously the prerequisite for this is agility. Formerly used Waterfall models come from the engineering approach of the 60’s – the time of skyscrapers, bridges and other spectacular projects. Howver, going with this approach in the software industry was a huge waste, so it was high time for a paradigm shift. Because after all, the customers cannot wait.

And now they don’t have to.

No items found.
August 23, 2021

No waiting!

Let’s look at software development activities with an agile aproach. This process is based on the regular repetition of subtasks, covering every element of software development lifecycles. Examples include design, analysis, programming, converting to executable format, unit testing, and failover testing.

Post-programming tasks can be highly automated. This is also necessary if you want to avoid allocating human resource for testing, and want feedback on the latest changes to reach developers as soon as possible. These automatic steps continuously integrate source code updates committed by developers into the application. Hence this phase is called: Continuous Integration. It is easy to understand that compared to traditional Waterfall type methods – where feedbacks often take months to arrive – this methodology results in projects that are a lot more flexible, pose lower risks and are substantially easier to adjust to business environment changes.

When taken further, Continuous Integration evolves into Continuous Delivery and Continuous Deployment. Coninuous Delivery means making newly implemented features available in the program. Here the new feature is deployed on a test server not owned by the customer – also as an automated process. This is an intermediary system where potential users can see and try the function early-on. So the feature undergoes a kind of a quality assurance process.

The last phase is Continuous Deployment: the automated deployment to the production systems.

The main goal of this process is automatically testing the program as early and as accurately as possible. Excessive testing takes too much time though, and places a huge load on the system. And for that you really need resources.


Another possible challenge for Kubernetes.

So certain processes require more resources than others – depending on the number and types of tests, the requirements of the tested system elements and the concurrency of automated processes – the resources allocated for execution need dynamic scaling. One possible technology for this purpose is containerization, for which an effective open source supporting platform is Kubernetes.

Although the task may look simple at first glance, its extreme complexity is reveals itself on a closer look. Just like flying: it seems cool and simple to just board an airplane and fly on a vacation, while the plane is operated by hundreds of buttons in the cockpit. The situation here is pretty similar: It is easy to get started with Kubernetes, but effective use needs proficiency and plenty of experience.


However in our modern world this is a tendency now.

Developers are completely "hooked" on it, since many useful goals can be achieved that previously were not possible. Related tools evolve mind-boggingly fast: several new features and solutions are created every month by the community, making its use progressively easier. This is an era of continuous learning.


And customers can be truly satisfied.

Practical application of the CI/CD concept significantly contributes to a more effective use of resources, resulting in the customer getting a program with less scope for errors and at a lower price.  As I have mentioned before, every change is tested right away, without time loss, thanks to the rapid feedback mechanism. While previously it was also time-consuming for the operations team to deploy the program to the production environment, here this is not an issue at all, since the user experience becomes instantly available.

Obviously the prerequisite for this is agility. Formerly used Waterfall models come from the engineering approach of the 60’s – the time of skyscrapers, bridges and other spectacular projects. Howver, going with this approach in the software industry was a huge waste, so it was high time for a paradigm shift. Because after all, the customers cannot wait.

And now they don’t have to.

No items found.

Related Services

DevOps & Cloud

Cloud native and CI/CD as services
Learn more

Tags

get in touch.

Tell us about your project!
Contact Sales