SFDX Unlocked Packages Guide
  • Project Overview
  • Lifecycle Guidance
    • Development Models
    • Team Sprint Collaboration
    • Git Strategy
    • Development Guidance
    • Testing Guidance
    • Agile/DevOps shift-left testing
    • Code Promotion
  • Salesforce DX & CI/CD
    • Quality Hooks
  • Supporting Infrastructure & Environments
    • Environment Types
      • Scratch Org Guidance
      • Sandbox Guidance
      • Handling Secure Data
  • Opinionated Guide
    • Introduction
  • Developer Resources
    • SFDX Package Development
      • Introduction
      • Creating Unlocked Packages
        • Package Errors
      • Project Structure
    • Pipeline Introduction
    • Developer Machine Setup
      • VS Code Configuration
      • Creating the SFDX Project
    • Extras
      • SonarCloud / SonarLint
      • Code Review Checklist
      • Additional External Resources
    • Untitled
  • Running the Org
    • Team Responsibilites
    • Onboarding Resources
  • Journey to Unlocked Packages
    • Introduction
    • Getting Ready for Source Driven Development
    • Moving from Unmanaged to Unlocked
    • Unlocked Guidance
  • Test Automation
    • Manage Test Data
    • UI Test Automation - POM Framework
    • Agile/DevOps Shift-left Testing
    • Selenium Extent Reports - Dotnet Core
    • Dotnet Core Selenium Tests on Azure-devops-pipeline
Powered by GitBook
On this page
  • DevOps Resources
  • Architectural Design Patterns

Was this helpful?

Export as PDF
  1. Developer Resources
  2. Extras

Additional External Resources

PreviousCode Review ChecklistNextUntitled

Last updated 6 years ago

Was this helpful?

DevOps Resources

Architectural Design Patterns

Domain Layer - Domain Driven Design / Anti Monolith

It is desirable to segment the codebase into business domains that are not interdependent so that each business domain can evolve at its own rate and change can be isolated and changes moved to production independently.

In a microservices driven architecture there are significant advantages of ensuring that each microservice own the data that it interacts with and that no other microservice interacts with another's data directly. The net result allows microservice teams to evolve their codebase and underlying data structures/data stores with confidence that it will not impact any other part of the system.

Resources:

  • Eric Evans -

  • Andrew Fawcett -

Service Layer

Resources:

  • Martin Fowler -

  • Andrew Fawcett -

Selector Layer / CQRS

To help ensure queries are optimized, organized and reusable it may be important to implement a selector layer.

Resources:

Canary Releases / AB Testing

To minimize impact to production users of new features and to allow for better understanding of user usage it may desirable to employ canary releases and AB testing functionality. Canary releases allow releasing into production functionality but control the audience impacted, for example starting with production test accounts to allow QA to validate functionality in production, then to a smaller portion of the userbase and then finally to the entire userbase. We desire AB testing to allow the business to perform trials of functionality to determine if yields the expected outcome.

Resources:

Service Registry / Discovery

Andrew Fawcett suggests using a factory pattern to resolve services in Salesforce, it would be ideal have Service Registry / Discovery implementation. Developing an approahc resolving services would be beneficial. (i.e. ideally not having a direct reference between a visual force or lightning component controller and the service(s) it consumes) Having the ability to switch out implementations, or have multiple implementations with different functionality running in parallel is desired (for example speech to text with both Salesforce Eintstein and Amazon services)

Resources:

Application Telemetry

Providing runtime analytics to SREs at the org enables detailed behavior understanding.

Resources:

Andrew Fawcett - Video -

Andrew Fawcett -

Martin Fowler -

Salesforce Maximizer Blog:

Service Registry -

Event Monitoring - '

Financial Times Approach -

Using with LogStash - Plugin -

Integration Example :

Salesforce DX Community Group
Salesforce CLI release notes
Kitchener Salesforce Developer Group Event: Introduction to DevOps with Salesforce DX
Domain Driven Design
Domain Layer in Salesforce
https://martinfowler.com/eaaCatalog/serviceLayer.html
https://developer.salesforce.com/page/Apex_Enterprise_Patterns_-_Service_Layer
https://www.youtube.com/watch?v=qlq46AEAlLI
https://developer.salesforce.com/page/Apex_Enterprise_Patterns_-_Selector_Layer
https://martinfowler.com/articles/feature-toggles.html
http://sforcemaximizer.com/how-to-do-ab-testing-on-new-features-with-your-salesforce-crm/
http://microservices.io/patterns/service-registry.html
https://trailhead.salesforce.com/en/modules/event_monitoring/units/event_monitoring_intro
http://engineroom.ft.com/2016/01/28/logging-alerting-and-recovery-on-the-force-com-platform/
https://www.elastic.co/guide/en/logstash/current/plugins-inputs-salesforce.html
https://www.elastic.co/blog/analyzing-salesforce-data-with-logstash-elasticsearch-kibana