Transitioning from a monolithic Salesforce org to using Salesforce Unlocked Packages is a significant step towards achieving more modular, scalable, and maintainable setups. The approach to organizing these packages can greatly influence the ease of development, deployment, and future scalability. Here are some common strategies to consider, particularly for a financial industry context:
1. Organize by Capability (Domain-Driven Design)
Organizing packages by capability means aligning them with specific business capabilities or domains. This is closely aligned with the principles of domain-driven design (DDD), where the organization reflects logical business domains.
Advantages:
- Business alignment: Packages align with business functions (e.g., loans, accounts, payments), which makes it easier for business stakeholders to understand and engage with the development process.
- Encapsulation: Each package encapsulates a specific business capability, leading to clear ownership and fewer dependencies across teams.
- Scalability: Easier to scale and update specific areas of the business without impacting others.
Considerations:
- Requires a deep understanding of the business to effectively define domains.
- Might lead to initial overhead in identifying and defining boundaries.
2. Organize by Team (Stream-aligned Teams)
Organizing packages by team involves creating packages that correspond to the structure of your teams, typically stream-aligned teams that are cross-functional and focus on particular features or products.
Advantages:
- Team autonomy: Teams own their packages entirely, from development to deployment, enhancing speed and innovation.
- Simplicity: Aligns with existing team structures, making it simpler to manage responsibility and accountability.
- Direct correlation: Changes and deployments can happen quickly and independently if teams are not overlapping significantly in their areas of responsibility.
Considerations:
- Can lead to duplication of efforts if multiple teams work on similar capabilities.
- Requires clear inter-team communication channels to manage dependencies.
3. Hybrid Approach
A hybrid approach combines elements of both capability and team-based structures. Critical common services (like authentication, logging, or regulatory compliance features critical in finance) might be separated into shared packages, while other capabilities are aligned with team structures.
Advantages:
- Flexibility: Combines the best of both worlds, allowing for both efficient team operations and clear business alignment.
- Focused common services: Ensures that essential services that need to be consistent across the organization are maintained centrally.
Considerations:
- Can be complex to manage without clear guidelines on when to use shared versus team-specific packages.
4. Common Services Packages
Especially relevant in the financial industry, where certain functions like security, auditing, and compliance need to be uniformly applied across all domains and teams.
Advantages:
- Consistency: Ensures all parts of the organization adhere to necessary regulations and standards.
- Reuse: Reduces duplication by providing common services that all teams can use.
Considerations:
- Needs to be carefully managed to ensure they don’t become bottlenecks.
Implementation Steps
- Assess Current Architecture: Understand the current monolith structure and identify logical separations.
- Define Package Boundaries: Based on the chosen strategy, define what each package will contain and its interfaces.
- Prioritize and Plan: Start with the most critical domains or teams to transition.
- Implement Governance: Define how packages will be versioned, dependencies managed, and upgrades handled.
- Train and Rollout: Ensure all teams are on board with the new approach and understand how to work with unlocked packages.
For organizations in the financial sector, a mix of capability-based and common services packages often yields the best balance between functional clarity and operational efficiency. Each organization’s specific needs and existing structures should guide the final decision.