Home
Categories
EXPLORE
True Crime
Comedy
Society & Culture
Business
TV & Film
History
Technology
About Us
Contact Us
Copyright
© 2024 PodJoint
00:00 / 00:00
Sign in

or

Don't have an account?
Sign up
Forgot password
https://is1-ssl.mzstatic.com/image/thumb/Podcasts221/v4/07/85/33/078533b5-bd05-6aa4-d93c-c87e26081cfc/mza_9604738249533254209.jpg/600x600bb.jpg
NO SILVER BULLET
Three Dots Labs
14 episodes
1 week ago
Based on nearly 20 years of working together on various projects, we discuss when it makes sense to move fast rather than aim for perfect code, and how to avoid technical debt that can kill your project. We focus on making mindful engineering decisions instead of blindly following rules like “always do X” or “never do Y”. Different situations need different approaches to code quality.
Show more...
Technology
RSS
All content for NO SILVER BULLET is the property of Three Dots Labs and is served directly from their servers with no modification, redirects, or rehosting. The podcast is not affiliated with or endorsed by Podjoint in any way.
Based on nearly 20 years of working together on various projects, we discuss when it makes sense to move fast rather than aim for perfect code, and how to avoid technical debt that can kill your project. We focus on making mindful engineering decisions instead of blindly following rules like “always do X” or “never do Y”. Different situations need different approaches to code quality.
Show more...
Technology
https://d3t3ozftmdmh3i.cloudfront.net/staging/podcast_uploaded_nologo/43392592/43392592-1744901791382-4acfb7879abd4.jpg
Synchronous vs Asynchronous Architecture
NO SILVER BULLET
1 hour 27 minutes 11 seconds
7 months ago
Synchronous vs Asynchronous Architecture

Full episode notes: https://threedots.tech/episode/sync-vs-async/


Quick takeaways

  • Start with synchronous architecture by default - it’s simpler to understand, debug, and maintain for most use cases
  • Async architecture improves scalability and resilience - message queues and events help handle traffic spikes and failures
  • Design matters more than the technology choice - tight coupling creates the same problems in both sync and async approaches
  • Consider team experience - async architecture require more experienced teams and better tooling to handle new challenges
  • Adjust as your system grows - external APIs, heavy operations, or the need to handle failures gracefully are good use cases
  • Hybrid approach - use both sync and async where they fit best, rather than forcing one over the other

In this episode, we discuss when to choose synchronous versus asynchronous architecture for backend systems.

We talk about the trade-offs between simple, predictable sync communication and the complexity but resilience of async approaches using message queues and event-driven architecture.

Instead of picking one approach over another, we focus on understanding when each makes sense and how to avoid common pitfalls like distributed monoliths and over-engineering.

  • Go Event-Driven training
  • Watermill - our open-source Go library for working with message streams
  • Event Storming - a design technique with a great unfinished ebook by Alberto Brandolini
  • CQRS (Command Query Responsibility Segregation) - a pattern that works well with both sync and async approaches
  • Our CQRS article and Server-Sent Events post
  • Message brokers mentioned: RabbitMQ, Kafka, NATS, Google Cloud Pub/Sub
  • Event schemas: Protobuf, Avro, CloudEvents
  • Event Sourcing - a pattern mentioned in context of recreating state from events
  • Clean Architecture/Hexagonal Architecture - architectural patterns mentioned for making sync/async migration easier

IntroductionShow Notes

NO SILVER BULLET
Based on nearly 20 years of working together on various projects, we discuss when it makes sense to move fast rather than aim for perfect code, and how to avoid technical debt that can kill your project. We focus on making mindful engineering decisions instead of blindly following rules like “always do X” or “never do Y”. Different situations need different approaches to code quality.