Automating Application Development
(OBJ 4.7)
Automating Application Development
- Enhances efficiency, consistency, and the quality of software products
- Automation
- In application development, it involves using technology to manage, test, and deploy applications or features with minimal human intervention
- Relying on humans for every step takes a lot of hurdle
- Automation gives features developed and released rapidly with continuous integration
- Move from the Waterfall methodology of development to the agile or iterative one.
Continuous Integration and Continuous Deployment
-
Continuous Integration and Continuous Deployment (CI/CD) significantly improve software efficiency, consistency, and quality
-
Continuous Integration (CI)
- Practice in software development where developers merge code changes frequently in one place
- Developers merge code changes frequently in a central repository
- Automated build process verifies each check-in and detects problems during integration
- Automation tools manage code integration, provide notifications for conflicts or errors
- Automated tests ensure software quality and efficiency after integration
- Developers receive feedback on detected issues to make necessary corrections
- Release
- Process of finalizing and preparing new software or updates
- Enabling software installation and usage
- Marks the transition point where a particular piece of software is ready for users to access it.
- Deployment
- Involves automated process of software releases to users
- Actual installation of software in a new environment
- Practice in software development where developers merge code changes frequently in one place
-
Continuous Integration and Continuous Delivery (CI/CD)
- CI/CD includes continuous integration
- Continuous Delivery (CD) ensures code is always deployable after every change
- Automated testing and build processes
- CD stops short of automatic production deployment
- CD is part of the release process
- Full deployment process is automated only to a certain stage
- Doesn’t deploy into the production environment automatically
- Deployment to production environment is a manual business decision
- Allows manual control of deploying changes to the live production environment
- Allows flexibility in timing, market conditions, and stakeholder readiness
-
Continuous Integration and Continuous Deployment
- Takes CI/CD further by automatically deploying code changes to testing and production environments
- All changes passing through the production pipeline are fully released with no human intervention
- Automation ensures consistent deployments, faster releases, and offers rollback capabilities
- Removes human-error from the process
- Rollback capability is crucial for ensuring service continuity in a continuous deployment model
- Requires a paradigm shift, more developer involvement in the deployment process
- Constantly deploying changes into the live production network
- Promotes increased communication and collaboration within teams for collective responsibility
- IN CI/DC, developers take responsibility for code testing and deployment, moving away from the traditional hand-off approach
-
Benefits of CI/CD
- Adapting to changing market demands more quickly
- Efficient workflow from development to deployment
- Improves code quality, streamlines deployment processes, and allows flexible production release
- Reduces deployment risks and enhances software reliability
- Example:
- GitHub Repository