We all know that Salesforce is different when it comes to development. It does not require a developer to customize and create new apps using Lightning and declarative development. This “click-not-code” approach provides an easy way for citizen developers and those who don’t have a programming degree or experience coding to customize the database, user interface (UI), business logic, reports and analytics, and much more.
A Blessing and a Curse
On the surface this sounds like it can help accelerate development and release cycles to deliver so much more value to end users faster, right? But slow down… We still need to make sure we do not sacrifice release quality or “step all over each others’ changes”. In this type of environment, DevOps is a must-have. DevOps is a culture which promotes collaboration between the Development and Operations teams to deploy code to production faster in an automated and repeatable way. Companies must continuously work to better their processes and create a more efficient way of doing things in order to keep up with the industry, and thus DevOps is born. The goal of many organizations is Continuous Integration and Continuous Deployment (CI/CD), a culture, set of operating principles, and collection of practices that enable application development teams to deliver code changes more frequently and reliably.
Salesforce development, along with all types of application development, comes with many potential problems. From conflicting code or unintended destructive changes, to dependent missing components, to untested code that somehow finds its way into the production org, the issues that arise are common and consistent. A release management system is often necessary to mitigate these issues, which in turn can speed up the process of application management life cycle by tenfold. Let’s dive into some common themes that introduce risk and slow down the development process and exactly how they can be addressed:
Citizen Developers – Citizen developers need a “central cockpit” for additional tools like requirements and testing. The most efficient citizen developers are able to participate in the development and release process and collaborate with other stakeholders in the process but are generally not familiar with developer tools associated with traditional development. The right release management system will function similarly to Salesforce’s click-not-code model and allow them to participate as needed.
Conflict Resolution & Code Merge – In a distributed development environment, a lot of developers’ time is spent merging multiple team members code together to prepare for deployment. This can result in overlap and developers can end up modifying the same code or overwriting other modifications. The problem is that most traditional tools do not “understand” Salesforce components well. Salesforce developers and admins spend extra time manually identifying and resolving conflicts, or worse yet, undoing automated merges performed by tools that do not know how to handle the multitude of Salesforce component types. This comparative intelligence saves exponentially more time for teams working within a large or complicated codebase as the number of conflicts grows.
Quality Gates – Pull requests, peer code reviews, static code analysis, code coverage. Most organizations claim to have solid quality assurance practices. In reality, peer code reviews are inconsistent and automated checks may be lenient or not fully implemented. Automated quality gates and the ability to request code review from other users ensures that only quality code is pushed through to production. Static Code Analysis must be a required tool for quality software development. Since Flosum stores all the Salesforce related code of each org, it can be integrated with a Code Analysis tool to ensure code quality. User permissions within Flosum also ensure that code cannot be touched by users other than those necessary for development. This protects the quality of the code as well.
Branching and Release Strategy – Branching allows for software to be developed in parallel, which supports an organized and timely release strategy. Organizations must continually take a close look at their processes and decide at what point code requires review from stakeholders, undergoes testing and at what point code can be deployed to production. Within each layer of the process, certain stakeholders must complete specific processes at certain times. A system that can allow you to set specific requirements and hold users to those requirements before the process can move forward creates unprecedented security and a direct path to smooth, successful deployment.
Governance and Audit – Today, compliance to government legislation is essential to avoid hefty penalties at an organizational level. Companies must have process governance and audit capabilities to avoid breaking the law and facing huge consequences. So many organizations cannot even view history and trace every single change made to code in order to perform audits, which opens them up to liability. These are critical elements of a sound DevOps system, driving down cost of compliance and saving time. A governance framework also lays the groundwork for visibility, predictability and consistent processes that are cost-effective as well. Governance is the practice of how an organization uses data to benefit and protect itself, and should be at the forefront of every IT leader’s mind.
Security – The security of an organization’s systems development lifecycle management directly relates to the systems and tools used. Many organizations store confidential data and do not have the option to expose that data to systems beyond their corporate firewall. It is important to create a system that controls where the codebase and data resides and who has access to it helps organizations practice consent management and stay compliant.
At Flosum, we know that Salesforce is different from other development platforms, and so is the culture that surrounds it. That’s why we developed a native version control system that can stand alone or integrate with other enterprise DevOps systems like Git, requirements management tools, testing automation and more.
The ability for admins, developers, and architects to collaborate as closely as they do is unique to Salesforce. The architectural nature of Flosum is designed with Salesforce’s needs in mind, making it a great version control system for any company looking to increase productivity, security, as well as return on the investment. A native release management system will help any DevOps team create the right processes to build lasting success.