Assembling core
Skip to content
Case study

SaaS delivery and Salesforce integration

A SaaS platform shipped by ZettaCore on containerised AWS EC2 with ECR and GitHub Actions CI/CD, plus bidirectional Salesforce synchronisation built on Apex triggers and custom webhooks.

Delivery console showing a release pipeline, container environments on AWS and two-way Salesforce record sync
Challenge

A SaaS product that has to stay in step with Salesforce faces two problems at once. The deployment pipeline has to make releases routine rather than eventful, and the integration has to keep two systems consistent in both directions — where each side can originate a change, and neither can be treated as the sole source of truth.

Solution

Containerised deployment to AWS EC2 using Docker Compose with images published to ECR, driven by GitHub Actions so a merge produces a deployed release without manual steps. Salesforce synchronisation runs bidirectionally: Apex triggers push changes outward and custom webhooks carry changes back, so an update on either side reaches the other.

Making releases uneventful

The main risk in a small SaaS deployment is not the infrastructure but the release ritual — manual steps performed rarely, remembered imperfectly and skipped under pressure. Publishing images to ECR and driving deployment from GitHub Actions removes the ritual: the pipeline performs the same steps every time, and a release becomes a merge.

Bidirectional sync and the direction problem

One-way synchronisation is straightforward because one system is authoritative. Bidirectional sync is harder, because the same record can change on both sides and the integration has to decide what that means. Apex triggers handle the outbound direction from Salesforce; custom webhooks carry inbound changes, so the product and the CRM converge rather than drift.

Containers as the deployment contract

Docker Compose on EC2 keeps the runtime identical between what was tested and what runs, which is the property that makes an automated pipeline trustworthy. The container is the contract; the pipeline only moves it.

Detail

How it was delivered.

Context, architecture, technology and outcome for this engagement.

A SaaS product that has to stay in step with Salesforce faces two problems at once. The deployment pipeline has to make releases routine rather than eventful, and the integration has to keep two systems consistent in both directions — where each side can originate a change, and neither can be treated as the sole source of truth.

Containerised deployment to AWS EC2 using Docker Compose with images published to ECR, driven by GitHub Actions so a merge produces a deployed release without manual steps. Salesforce synchronisation runs bidirectionally: Apex triggers push changes outward and custom webhooks carry changes back, so an update on either side reaches the other.

AWS EC2, Docker, Docker Compose, ECR, GitHub Actions, Salesforce Apex

Deployed to production on AWS with an automated release pipeline.

Ready to scope it properly?

Bring the problem, the constraints and the deadline. We will come back with an architecture and an honest view of effort.