Development Team (Dev) - need to innovate and develop new functionality for their customers and employees.
Operation Team (Ops) - need existing systems to be stable, reliable, and secure.
There’s a natural tension between the need for innovation (change) and the need for trust (stability). Developers need to keep changing the system, while the operations team needs the system to remain stable so they can optimize performance and reduce the risk that change brings.
The end goal for both teams is customer satisfaction, but specific goals for Dev teams include quickly delivering features and bug fixes, whereas an Ops goal might be to maintain 99.99% server up-times. These goals can conflict, leading to inefficiency and finger pointing when things go wrong. This is often described as “working in silos.”
DevOps helps to break this silos. It avoids replace conflict with collaboration between the Dev and IT operations teams.
DevOps practices enable software development (dev) and operations (ops) teams to accelerate delivery through automation, collaboration, fast feedback, and iterative improvement.
Stemming from an Agile approach to software development, a DevOps process expands on the cross-functional approach of building and shipping applications in a faster and more iterative manner. In adopting a DevOps development process, you are making a decision to improve the flow and value delivery of your application by encouraging a more collaborative environment at all stages of the development cycle.
DevOps represents a change in mindset for IT culture. In building on top of Agile, lean practices, and systems theory, DevOps focuses on incremental development and rapid delivery of software. Success relies on the ability to create a culture of accountability, improved collaboration, empathy, and joint responsibility for business outcomes.
DevOps combines development and operations to increase the efficiency, speed, and security of software development and delivery compared to traditional processes. A more nimble software development lifecycle results in a competitive advantage for businesses and their customers.
“Three Ways” of DevOps: flow, feedback, and continuous improvement.
Flow refers to the left-to-right movement of changes from development to production. The goal is delivering value to end users with increasing speed and regularity, working toward a steady flow. This culminates in the practice of continuous delivery.
As we move faster, we need to gather feedback in the form of development metrics, production monitoring, and end-user feedback. This is the right-to-left movement of feedback back to development.
Feedback is not just information; it’s food for learning. Just like learning, DevOps is not a journey you ever finish. The Third Way is continuous improvement, striving to always improve not only our work but also the way we work.
DevOps practices like version control, automated deployments, and modular architecture help teams to coordinate and maintain high performance as they grow. To scale effectively, the practices of DevOps are essential.
The primary challenge that most Salesforce teams face is deployments. Deployments on Salesforce are not just a matter of moving files, they require sophisticated management of thousands of XML files and careful management of dependencies.
Integrated development environments (IDEs) have evolved beyond their humble beginnings as places to edit and compile code. Today, developers have the ability to perform nearly all their DevOps tasks from within a single user experience when they select the right development environment.
Git -
Most teams opt to use Git, the most popular version control system, to manage their code.
Continous Integration -
There are many other tasks that consume time of the development team. Compiling code, running tests, and preparing output for deployment are a few examples. To minimize the impact, DevOps emphasizes automating these types of tasks through the practice of continuous integration.
Continous Delivery -
Continuous delivery (CD) is the process of automating build, test, configuration, and deployment from a build to a production environment. A release pipeline can create multiple testing or staging environments to automate infrastructure creation and deploy new builds. Successive environments support progressively longer-running integration, load, and user acceptance testing activities.
Before CD, software release cycles were a bottleneck for application and operations teams. These teams often relied on manual handoffs that resulted in issues during release cycles. Manual processes led to unreliable releases that produced delays and errors.
CD is a lean practice, with the goal to keep production fresh with the fastest path from new code or component availability to deployment. Automation minimizes the time to deploy and time to mitigate (TTM) or time to remediate (TTR) production incidents. In lean terms, CD optimizes process time and eliminates idle time.
Continuous integration (CI) starts the CD process. The release pipeline stages each successive environment to the next environment after tests complete successfully. The automated CD release pipeline allows a fail fast approach to validation, where the tests most likely to fail quickly run first, and longer-running tests happen only after the faster ones complete successfully.
Additional Ref:
Copado is an AppExchange package that helps you implement DevOps for Salesforce. Copado lets you manage the entire planning, development, and delivery lifecycle from within Salesforce. Copado empowers admins, developers, and architects with a shared platform to plan, build, test, deploy, and monitor changes across teams. Copado DevOps 360 is an analytics package that gives executives and team leaders even deeper insight and governance to track progress, align teams, and enable continuous transformation and improvement.
Refer to the additional references and respurces below for the exam preparations.