Starting with a little flashback– with the traditional way of development, challenges arise when developers set up to merge all the code changes in a single integration.
Each developer working on different features writes and tests code individually. But they use long-running feature branches existing for several weeks or even months to integrate the code changes once into production. As a result, the changes in the application often conflict with similar changes made by other developers. Things become worse when deployment is done only once or infrequently.
However, modern software development demands a system where multiple developers can simultaneously work on different features of the same application and deploy changes seamlessly. Enter CI/CD.