Skip to content

Instantly share code, notes, and snippets.

@aleixmorgadas
Last active October 2, 2021 04:53
Show Gist options
  • Save aleixmorgadas/e6057631f1d6eb1df00650380a032dfa to your computer and use it in GitHub Desktop.
Save aleixmorgadas/e6057631f1d6eb1df00650380a032dfa to your computer and use it in GitHub Desktop.
Distributed Systems Fundamentals Questions

Fallacy #1. The network is reliable

  • Why the pattern Client-Response might cause some troubles?
  • What are distributed objects?
  • How we can solve this problem?

Fallacy #2. Latency isn't a problem

  • How many calls do you do between services before replying a syncronous call to the end user?
  • Which pattern is more common in your application? Remote calls or messages?
  • Do you use ORM? Which's the difference between lazy-loading and eager-loading?

Fallacy #3. Bandwidth isn't a problem.

  • Why Fallacy #3 balances Fallacy #2?
  • Which is your services network bandwidth?
  • Is Gb Internet a lot? How it effects the TCP? and Serialization?
  • We are doing microservices, what happens if we add 10 more to your tribe? and 100? how does it affects the riability?
  • How Circuit Breakers relate to Fallacy #2 and #3?
  • Domain Models / Domain Boundaries / Domain Driven Deisgn relates?
  • Are we splitting batch jobs from high-priority APIs? Low priority networks vs high priority networks
  • Why Udi says, the business cannot affort a monolithic solution, why he says that?

Fallacy #4. The Network is Secure.

  • Are you plugging into your laptop random USBs you find in the street?
  • Are you oversharing in your social networks?
  • Are you familiar with Thread Modelling?
  • Are we in a secure network in our home office?
  • Are you using VPN when working in a shared wifi like a cafeteria?
  • Do you know about OWAP Top 10?
  • Are you doing security meanwhile you are developing? or you do it later?
  • Are our cryptographic algorithms strong enough for the next 10 years?

Book Recommendation: Secure by Design.

Fallacy #5. The network topology won't change

  • Do you know what's a discovery system and why it's used for?
  • Which are the discovery systems we are using today?
  • Do we have hardcoded addresses?
  • Are you familiar with multicast protocol?
  • Are you running performance tests?

Fallacy #6. The admin will know waht to do

  • How many configurations do your service have?
  • Do you know what they all do?
  • Are you sure what will happen if you change a configuration?
  • Do you have documentation of your configuration?
  • How does this relates to DevOps?
  • Are your systems High Availability?
  • Do you have High Availablity with Blue-Green Deployment but the code isn't backward compatible?
  • Apple is a crap.
  • Are you able to deploy your systems meanwhile someone else is doing a demo? Or they tell you to not deploy?
  • Are you overusing logging?

Fallacy #7. Transport cost isn't a problem

  • How this logical decoupling relates to microservices?
  • Do you agree that doing the things the right way is more expensive?
  • Udi says logical monolithic design is evil instead of monolithic deployments. Why?
  • Should the logical and phisical design be 1 to 1?
  • Is the Data Transport constant?
  • Do we know from how much time we can effort our systems? Are you concerned about this?

Fallacy #8. The network is homogeneous?

  • Did you have integration problems before?
  • Did you have different ways to serialize JSON?
  • Did you used default values without talking to the domain experts because it was easier?
  • Which has been the last time that you had an integration problem? How did you solve it?

Fallacy #9. The system is atomic

  • Could you identify a distributed logic system deployed in a monolithic way vs a monolithic system depolyed distributed?
  • How easy is to spot code coupling cross systems?
  • Do you have a monolithic data architecture?
  • Are you designing your data boundaries so you don't need to do joins?
  • What are the Entity Services?

Fallacy #10. The system is finished

  • Have you been in a project without realising you're in a project?
  • Are you working in a "maintenance" project?
  • Where are the most senior people in the team? Are they working in the early beginning or on the maintenance part of the system?
  • In how mainly rewrites have you been in?
  • Is it faster to rewrite from scratch rather make a small feature meanwhile dealing with legacy code?
  • Is maintenance concept applicable to software?
  • Viablility vs Maintainablity

Fallacy #10. Towards a better development

  • Are you receiving requirements or workarounds?
  • Are you prototyping to understand what they need?
  • Are we a team or a group of individuals?

Fallacy #11. Business logic can be should be centralized

  • Validation Logic Reimplementation. What happens when the rules change? Did you forget this scenario once? What did you did to solve it?
  • Are you drawing the dependencies between code? Is it ugly?
  • Are we using the Git to support changes our our business rules?

Coupling in Application: Afferent and Efferent

  • What's coupling? Which kind's of coupling exists?
  • Do we agree that a class without coupling is useless?
  • When you said in the past that something was coupled, which kind of coupling you were more concerned about?
  • Were you able to relate the kind of coupling which the kind of class we had in our code base?
  • Are you concerned by the amount dependencies with the logging library?
  • Are we coupling to stable things or volatile things?
  • Is the code analysis we are doing help us manage the coupling?
  • Are you aware of the coupling in your system?

Coupling in System: Platform, Temporal and Spatial

  • Are you making coupling explicit? Is it easy accessible?
  • Are we hidding the coupling?
  • What is Platform Coupling? What's run time coupling?
  • Are we sharing a contract and schema, or classes or types?
  • What's temporal coupling? Can you detect temporal coupling in your system?
  • What's Sepecial Coupling?
  • Do we have hidden coupling?

Coupling Solutions: Platform

  • How many options possible for interoperability do you know?
  • What does an schema solve?
  • Which are the transfer protocols you know?

Coupling Solutions: Temporal and Spatial

  • Do you have syncronous blocking request response queries between services?
  • Are you one of the 5 people that should be writing multithread code?
  • Are you using async await in your code?
  • Are you aware of what deadlocks, lifelocks, data races could imply in your code?
  • How could you remove the temporal coupling and still get the data from service B?
  • Did you do use Cache to solve multiple request to other services?
  • In which place you put the cache?
  • Are you familiar with subscribe solutions?
  • What means that Pub/Sub requires a single source of truth?
  • What is a Source of Truth?
  • What is a good event? What they should be facts?
  • When to do Pub/Sub? When not to use Pub/Sub?
  • What happens when two entities need to be consistency transactionally but they are in two different systems?
  • Document based routing, how does that relate with Special Coupling?
  • How many dimensions we have in coupling? Why we cannot have small degree of all types of coupling?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment