A/B Testing
A/B testing is a method of comparing two or more versions of a feature to evaluate their effectiveness. The goal of A/B testing is to determine which version better achieves set objectives, such as performance, user experience, or conversion rates. It also helps identify factors that influence user behavior.
Anti-patterns
1. Lack of Unified Release Planning: Teams plan and execute releases independently without a unified roadmap or coordination.
Anti-patterns
1. Lack of Clear Structure and Documentation: Implementing Git strategies without clear documentation and structure can lead to chaos. Developers may not understand which branches to use and in what order to merge.
Apex Exception Email
When developing applications and automation on the Salesforce platform using Apex, there may be situations where the code executes incorrectly, causing errors or failures. Such issues can go unnoticed, affecting business stability.
Automation of Deployment
Deployment automation plays a critical role in modern approaches to software development and deployment, including platforms like Salesforce. It helps eliminate issues such as errors, delays, and inconsistencies between environments, thereby improving the development lifecycle and boosting team efficiency. A lack of automation can lead to a deteriorating work environment, increased costs, and reduced team productivity.
Batch Size
In modern change management, whether delivering new features or updates, the concept of Batch Size plays a crucial role. Batch Size is one of the key factors affecting the efficiency of the development and delivery process. It is essential to understand that Batch Size influences not only the speed of change delivery but also system stability and the overall costs incurred by a company.
Big Bang
Big Bang Deployment is a deployment strategy where all changes are implemented simultaneously in the target environment. Unlike Phased rollouts or Dark Launches, Big Bang Deployment involves making all new functionalities available to all users at once. This approach carries a high level of risk, as all changes become active simultaneously, and rolling back changes is typically more challenging.
Blue-Green
Blue-Green Deployment is a deployment and change management strategy in which two identical environments are maintained simultaneously: Blue (current production environment) and Green (new application version). Users interact with the Blue environment, while the Green environment is prepared for updates. After successful testing and verification, traffic is switched to the Green environment, which then becomes the new primary production environment.
Copado Branching Strategy
Copado Branching Strategy is recognized as an independent strategy due to its unique approach to building a Git strategy. This strategy is part of the change delivery process using the Copado tool. It involves the use of separate branches for each user story or feature and supports regular back-promotion to synchronize changes between branches.
Dark Launches
Dark Launches are a method of deploying new features into production while keeping them hidden from most users until the official release. The main goal is to deploy the functionality in a real-world environment to test its performance, stability, and integration with existing systems without impacting end users.
Data Backup
Failure to perform regular data backups in Salesforce can lead to serious problems. Since business-critical data is stored in the cloud, any loss or corruption of that data can cause significant damage to an organization. The main risks of not having data backup include:
Debug Logs
Salesforce extensively utilizes process automation built on triggers and Apex classes, as well as Flow and Workflow Rules. Automation is a key element of CRM, significantly improving business process efficiency, minimizing manual work, and reducing the likelihood of errors.
Deployment Options for Metadata
The efficiency of delivering changes directly depends on the choice of code deployment methods to different environments. An incorrect choice can lead to excessive time and resource expenditures, slowing down the process, reducing efficiency, and increasing development costs.
Destructive Change
Destructive Changes refer to the process of removing outdated metadata (such as fields, objects, classes, pages, and other components) that are no longer needed in the target environment. This is important for maintaining system cleanliness and improving performance, as it helps eliminate unused or outdated components.
DevOps Maturity Matrix
What Is It?
Environment Monitoring
Salesforce is a cloud-based CRM platform that underpins business-critical processes: sales automation, customer service, integration with external systems, and analytics. All of this operates within a distributed architecture and platform constraints — including resource limits, security, data, and code.
Event Monitoring
Salesforce handles vast amounts of data and user activity, making it crucial to understand what's happening within the system. Without proper oversight, administrators might overlook critical incidents, such as:
Feature Branch
The Feature Branch strategy is an approach to branch management in version control systems where each new feature is developed in a separate branch originating from the main development branch (main, int, dev). This allows changes to be isolated and minimizes risks associated with integration.
Fundamentals of Delivery Strategies
In modern change management, the key task is to minimize risks when deploying new features while ensuring system stability. Deployment methods such as Big Bang, Phased Rollouts, Dark Launches, Blue-Green Deployment, and A/B Testing allow for a flexible approach to implementing changes depending on the context and business goals.
Fundamentals of Deployment in Salesforce
Deployment is an essential stage in the Software Development Lifecycle (SDLC), ensuring the delivery of a finished product to users. This process includes code transfer and environment setup and can be performed manually or automatically. A well-structured deployment process helps avoid errors, minimize implementation time, and ensure system stability.
Git Flow
Git Flow is a popular branching strategy in Git, developed by Vincent Driessen link, for a structured development process. The main branches are main for production code and develop for integrating new features. Feature branches are created from develop and merged back after completion. Release branches prepare releases, merging into both main and develop. Hotfix branches are for urgent production code fixes and also merge into both main branches. This strategy supports parallel development, simplifies large project management, and minimizes conflicts.
Git Fork Strategy
The Fork Git Strategy is an approach to repository and branch management primarily used in open-source projects but can also be effectively applied in corporate projects. This strategy allows developers to work on a project without having direct access to the main repository. Instead, they create their own copies (forks) of the main repository and make changes to them. The Fork Git Strategy provides an excellent solution for isolating changes, enhancing security, and ensuring code quality, but it requires careful organization and management, especially in a corporate environment. This strategy is effective for projects with a large number of contributors and external contractors.
Git Strategies
Git is becoming an essential part of Salesforce projects, although some projects still rely on changesets for delivery.
Health Check
Salesforce stores critical business data, making the security of the environment a top priority. Misconfigurations in security settings or data access and privacy policies can lead to serious consequences, such as:
HotFix
What is a Hotfix?
HotFix
The Hotfix Git Strategy aims to deliver fixes to the production environment as quickly and reliably as possible. The hotfix strategy is an integral part of the overall change management and deployment strategy adopted for the project.
Incremental Releases
An incremental release is a software development and deployment strategy in which updates and improvements are delivered in small, manageable increments rather than large, monolithic releases. This approach increases flexibility, minimizes risks, and speeds up user feedback. An incremental release is particularly well-suited for agile development methodologies like Scrum or Kanban, where projects progress through successive releases that add new features or improvements.
Large-scale Projects
Release management in large projects, which involve multiple teams and/or organizations, is a significant challenge. The success of implementing changes, system stability, and user satisfaction depends on proper coordination and management. Release management in such projects must include distinctive strategies and approaches to minimize risks and ensure the alignment of all participants' actions.
Metadata Backup
The absence of regular metadata backups can lead to serious consequences. If the system is damaged due to human error, a failed release, or an incorrect update, restoring it to a functional state can be difficult or even impossible without a backup. The loss of critical configuration data, such as object settings, business logic, or security rules, can significantly disrupt an entire company and result in substantial reputational and financial losses.
Org Branch
The Git Org Branch Strategy, where each branch corresponds to a specific environment (e.g., development, UAT, staging, production), is a useful concept for managing changes and deployments in corporate and large projects. This strategy is common in Salesforce projects due to licensing policies and environment setups that may not allow for full testing environments and limited use of Infrastructure as Code (IaC) approaches.
Parallel Releases
The Parallel Release Git strategy allows managing multiple versions of a product simultaneously. Separate release branches (release-x.x) are created for each release, enabling the preparation and testing of different product versions in parallel. Feature branches can be created from release-x.x branches, which serve as develop branches for the corresponding releases. This approach helps isolate changes and manage multiple product versions simultaneously, which is especially useful for projects with long development cycles and support for older versions. However, it requires strict branch management and synchronization of changes. An important feature is the designation of major and minor releases for their sequential synchronization.
Phased Rollouts
Phased Rollouts, or phased deployment, is a general term that describes strategies for implementing changes through gradual scaling. In this approach, new features or updates are introduced to specific groups of users or environments to minimize risks and manage workload effectively.
Quick Deploy
Quick Deploy is a Salesforce feature that speeds up the deployment process if validation with necessary test (unit tests) execution has been successfully completed beforehand. Quick Deploy is useful in situations where deployment needs to be performed at a specific time, minimizing the cost of re-testing, as testing was completed during validation. This method enables preparation for deployment in advance by validating changes, allowing deployment within a specific time window (e.g., to minimize business disruption or synchronize deployment with other events).
Release Management
In today’s environment, businesses demand flexibility, speed, and precision from IT departments when implementing new features and updates. Release management is the process aimed at ensuring the stability and quality of deployed changes.
Release on Demand
What is Release on Demand?
Release Planning
Release planning is a critically important stage in managing any IT project. The quality of release planning determines the success of implementing changes, the stability of the system, and user satisfaction.
Run Tests for Deployment
Effective testing is crucial to ensuring the quality of deployed changes. Choosing the right approach for test execution helps optimize time and resource costs while minimizing risks associated with potential errors. This article examines two main approaches to test execution during deployment: running all tests (RunLocalTests) and running specific tests (RunSpecifiedTests). Each approach has its advantages and disadvantages, and the choice depends on the project’s current goals and CI/CD strategy.
System Overview
Salesforce operates in the cloud and uses distributed computing, which imposes restrictions on resource consumption. Efficient management of system resources in solutions like Salesforce is critically important. Without resource management, system stability will eventually be compromised, leading to critical errors that can have serious consequences for the business.
Test Coverage Matrix
The Test Coverage Matrix is a tool that tracks the relationship between test classes and the classes they cover, along with additional information such as coverage percentage, the date of the last test run, and comments. It is a vital tool for managing code quality, providing simplified access to test coverage data, and enabling change tracking.
Trunk-Based Development (TBD)
The Trunk-Based Development (TBD) strategy is applied in projects where the main values are release frequency and speed. It is characterized by frequent commits and merges into a single main branch. If feature branches are used, they exist for no longer than a few days or hours. Under this strategy, the main branch is always ready for deployment to production, although release branches may also be used. This approach is more often used in small teams due to the need for close interaction and good communication among developers, clear process organization, and discipline.
Types of Packages in Salesforce
Unlocked Package — used for modular development, allowing developers to update, modify, and version packages for dependency management. Frequently utilized for internal development, it supports full CI/CD automation and enables a flexible approach to delivering solutions to users.
Unlocked Packages
Unlocked Packages are a type of package in Salesforce designed to enhance flexibility and modularity in application deployment. Unlike traditional deployment methods, unlocked packages* support versioning, modularity, and simplified dependency management. These packages are especially valuable for large projects and organizations with distributed environments where automation and version control are essential.