Design (LLD) Google Authenticator - Machine CodingSubhahu Jain·Jan 5, 2024·7 min readTable of contentsFeatures Required:Design Patterns Involved or Used:DiagramCodeIssues in Above Design1️⃣ Singleton God Object (LLD + Concurrency)IssueLLD ProblemConcurrency ProblemImpactSolution2️⃣ Shared Mutable Command Invoker (Concurrency + Design)IssueLLD ProblemConcurrency ProblemImpactSolution3️⃣ OTP Verification Is Not Atomic (Security + Concurrency)IssueLLD ProblemConcurrency ProblemImpactSolution4️⃣ No Per-User Isolation (LLD + Concurrency)IssueLLD ProblemConcurrency ProblemImpactSolution5️⃣ In-Memory DAO Not Thread-Safe (LLD + Concurrency)IssueLLD ProblemConcurrency ProblemImpactSolution6️⃣ Token Factory and Crypto Reuse (Design + Thread Safety)IssueLLD ProblemConcurrency ProblemImpactSolution7️⃣ Time Window Handling Is Naive (LLD + Concurrency)IssueLLD ProblemConcurrency ProblemImpactSolution8️⃣ Observer Notifications Are Synchronous (LLD + Performance)IssueLLD ProblemConcurrency ProblemImpactSolution9️⃣ No Rate Limiting or Throttling (LLD + Concurrency)IssueLLD ProblemConcurrency ProblemImpactSolution🔟 No Idempotency Guarantees (LLD + Concurrency)IssueLLD ProblemConcurrency ProblemImpactSolutionProgramming BlogsJavaScriptJavaBeginner DevelopersAWSDeveloperGeneral ProgramminglearningNode.jsObject Oriented ProgrammingPythonReactsoftware developmenttechnologyUX