Skip to content

update: wpb-22590 documentation for Fake AWS (SNS/SQS) for websocket#98

Merged
mohitrajain merged 4 commits intomainfrom
wpb-22590-use-websockets-no-fcm-apns
Mar 9, 2026
Merged

update: wpb-22590 documentation for Fake AWS (SNS/SQS) for websocket#98
mohitrajain merged 4 commits intomainfrom
wpb-22590-use-websockets-no-fcm-apns

Conversation

@mohitrajain
Copy link
Contributor

@mohitrajain mohitrajain commented Feb 20, 2026

Update documentation for Fake AWS (SNS/SQS) for websocket only notifications (no FCM/APNS)

Change type

  • Documentation change
  • Build pipeline change
  • Submodule update
  • Deployment change

Basic information

  • THIS CHANGE REQUIRES A WIRE-DOCS RELEASE NOW

Testing

  • I ran/applied the changes myself, in a test environment.

Tracking

  • I mentioned this PR in Jira, OR I mentioned the Jira ticket in this PR.
  • I mentioned this PR in one of the issues attached to one of our repositories.

@mohitrajain mohitrajain requested review from a team as code owners February 20, 2026 14:25
@mohitrajain mohitrajain changed the title update: wpb-22590 documentation for Fake AWS (SNS/SQS) for websocket-… update: wpb-22590 documentation for Fake AWS (SNS/SQS) for websocket Feb 20, 2026
Copy link
Contributor

@sghosh23 sghosh23 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall good, may be you can mention for on-prem this chart might be present in the cluster if they installed the wrapper chart fake-aws, in this case for any existing system they just need to expose the sns/sqs Endpoint to the gundeck config to satisfy the gundeck service.

If you use the fake-aws version, clients will use the websocket method to receive notifications, which keeps connections to the servers open, draining battery.

Open a terminal and run:
To enable **websocket-only notifications** (no FCM/APNS), you must:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

May be its a good idea to put some context why must and what does the fakeAWS do here? (i.e, for initialization of the gundeck service by design)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have added 2 more sections:
What is the fake-aws Helm chart?
Why are these Helm charts required when not using APNS/FCM?

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you should make clear that websocket only notifications are only available for the android client

account: "123456789012"
region: "eu-west-1"
arnEnv: integration
queueName: integration-gundeck-events
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

account, arnEnv, region, queueName can be any string value i guess

Copy link
Contributor Author

@mohitrajain mohitrajain Feb 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These should follow AWS expected values https://hackage.haskell.org/package/amazonka-1.4.5/docs/Network-AWS.html#t:Credentials, having default should be good.

Copy link
Contributor

@sghosh23 sghosh23 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mohitrajain good work, added two more comments, please take a look. Let me know if you have any open questions regarding the comment.


### Why are these Helm charts required when not using APNS/FCM?

Even when APNS (Apple Push Notification Service) or FCM (Firebase Cloud Messaging) are not used, the `wire-server` component **gundeck** still depends on SNS and SQS APIs for handling notifications and user device events.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

for handling notifications and user device events is a bit of misleading because I read it like it implies SNS/SQS play an active role at runtime even without FCM/APNS but they don't.

SNS and SQS are exclusively for native push (FCM/APNS delivery feedback — cleaning up stale tokens). They have zero involvement in websocket-based notification delivery

The truth based on the evidence is: Gundeck unconditionally requires SNS and SQS endpoints to be reachable at startup — even when FCM/APNS are not used because these are hardcoded non-optional config fields with no feature flag to disable them

I would suggest to change the statement or remove it

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Confirming with backend team on this behaviour


Even when APNS (Apple Push Notification Service) or FCM (Firebase Cloud Messaging) are not used, the `wire-server` component **gundeck** still depends on SNS and SQS APIs for handling notifications and user device events.

When running in websocket-only mode, `gundeck` must still interact with SNS and SQS endpoints. Therefore, these APIs need to be mocked privately inside the Kubernetes cluster. The `fake-aws` Helm chart provides these mocked services so that `gundeck` can function correctly without connecting to real AWS infrastructure.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fake-aws is a group of charts not a single chart. If you want to be more specific
fake-aws-sqs (ElasticMQ) — mocks the SQS API
fake-aws-sns (Localstack) — mocks the SNS API

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have added the links to the chart above and added definitions as well on line 132

  • fake-aws-sns – a dummy, ephemeral SNS service based on LocalStack. LocalStack allows you to use the SNS APIs in your local environment to coordinate the delivery of messages to subscribing endpoints or clients.
  • fake-aws-sqs – a dummy, ephemeral SQS service that mocks the Amazon SQS API.

If you use the fake-aws version, clients will use the websocket method to receive notifications, which keeps connections to the servers open, draining battery.

Open a terminal and run:
To enable **websocket-only notifications** (no FCM/APNS), you must:
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you should make clear that websocket only notifications are only available for the android client

- **fake-aws-sns** – a dummy, ephemeral SNS service based on LocalStack. LocalStack allows you to use the SNS APIs in your local environment to coordinate the delivery of messages to subscribing endpoints or clients.
- **fake-aws-sqs** – a dummy, ephemeral SQS service that mocks the Amazon SQS API.

Both services include lightweight custom initialization logic required for Wire’s internal service-to-service communication. They are not intended to replace real AWS in production with native push, but to provide compatible SNS/SQS APIs inside the cluster for websocket-only setups.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

only SQS is relevant for inter-service-communication.
SNS is just a mock so the gundeck service has an endpoint to use

@mohitrajain mohitrajain merged commit 904cb77 into main Mar 9, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants