[2/3] Acing the System Design Interview (System Design: Survive an Interview) (Category Architecture)
Continue. story I’ll talk about the last four chapters of the first part.
3. Non-functional requirements This chapter deals entirely with non-functional requirements, often referred to as architectural characteristics. ("-ilities") or attributes of quality. The author separately analyzes such things as scalability, availability, fault-tolerance, performance/latency and throughput, consistency, accuracy, maintainability, cost, security, privacy, cloud native. It's interesting that I've talked a lot about the NFT or "-ilities," for example, with the same guys from {between parentheses} we've somehow stripper Work with architectural characteristics. I recently reviewed the whitepaper "Quality Metrics in Software Architecture" in three parts: 1, 2 and 3.
4. Scaling databases This chapter is entirely devoted to how to live with a state that must be stored somewhere. In system deisgn tasks, this stateful part is usually one of the most interesting and requires the ability to scale it and answer the question of how to handle hundreds of millions of users and billions of queries. Here the author talks about replication and sharding, event aggregation, batching and streaming. Then comes the time of denormalization and caching, where various techniques of caching, disabling cache, as well as warming them up are discussed. I recommend reading the book Database Internals, which I described in two parts: storage engines and distributed systems.
5. Distributed transactions The whole chapter is devoted to distributed transactions, although the two-phase commit is brought to the application and the author talks about the demand to avoid distributed transactions. To do this, he talks about major themes of the species.
- Event driven architecture and event sourcing - it is interesting that Vlad Hononov discusses this topic perfectly in the book "Learning Domain-Driven Design", I even reviewed this topic in the form of a review of the topic. blog posts. CDC - description of how to cast changes from databases using conditional Debezium Use of transaction supervisors and use of sagas (orchestrated) In general, an interesting chapter, but a short one – for a real understanding of the topics covered, you will have to read books in depth.
6. Common services for functional partitioning queue In this chapter, the author explains the general functionality that services need:
- Authentication, authorization, encryption Error Verification: Validation, deduplication Performance and reliability: again caching, rate limiting
- Logistics and analytics Next are the patterns for decomposition of the form service mesh (istio) and sidecars, service discovery, use of libraries for general functionality or takeaway services. Well, everything is finalized by the discussion of the API, which the author begins with a story about the model. OSIAnd then there are standard REST, RPC, GraphQL, WebSocket and their comparisons.
In general, the first part outlines important concepts that are useful not only in interviews, but also in practical work:) A structured approach to working with requirements, analyzing trade-offs and making architectural decisions helps in real projects. The author of the book pays special attention to communication and maturity of engineers - the ability to explain solutions, discuss compromises, adapt to changing requirements. These qualities are important for interaction with other teams and business stakeholders.
#Software #Architecture #DistributedSystems #SystemDesign #Engineering