Skip to content

kimtth/software-architect-mindmap

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

28 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Software Architecture Mindmap

Software terminologies and concepts, software architecture overview

Summarized the keywords and solutions have faced in my learning and experience.

  • Full Version

Software_Architecture_Mindmap.png

Three main pillars upon software architecture

  • Modern Application Development

  • Cloud Computing (AWS/Azure/GCP)

  • Data Science (ML/NN)

and

Numerous technologies and methodologies.

โ“’ 2022. (https://github.com/kimtth) all rights reserved.

This mindmap created by https://app.mindmapmaker.org/


Software Architecture Reference



  • Google SRE Handbook

    Expand

    ๐Ÿ”น Latency is the response time of your application, usually expressed in milliseconds

    ๐Ÿ”น Throughput is how many transactions per second or minute your application can handle

    ๐Ÿ”น Errors is usually measured in a percent of

    ๐Ÿ”น Saturation is the ability of your application to use the available CPU and Memory

  • InfoQ minibooks: Architectures Youโ€™ve Always Wondered About .. 2021 / 2023 / 2024

Cloud Architecture

Computer Science courses

Industry Trends

Newsletter

Tools

Engineering blog

Computer Science Books

  1. General
    • The Pragmatic Programmer by David Thomas and Andrew Hunt
    • Modern Software Engineering by David Farley
    • Code Complete by Steve McConnell
    • Software Engineering at Google by Titus Winters, Tom Manshreck, and Hyrum Wright
  2. Good Practices
    • Clean Code by Uncle Bob Martin
    • Head First Design Patterns by Eric Freeman
    • Refactoring by Martin Fowler
    • Design Patterns by Eric Gamma and Others
  3. Data Structures and Algorithms
    • Grokking Algorithms by Aditya Bhargava
    • Introduction to Algorithms by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein
    • Cracking the Coding Interview by Gayle Laakmann McDowell
  4. Data
    • Designing Data-Intensive Applications by Martin Kleppman
    • Learning SQL by Alan Beaulieu
  5. Testing
    • Growing Object-Oriented Software by Tests by Steve Freeman Unit Testing Principles, Practices, and Patterns by Vladimir Khorikov
    • The Art of Unit Testing by Roy Osherove
    • TDD by Example by Kent Beck
  6. Software Architecture
    • Fundamentals Of Software Architecture by Mark Richards and Neil Ford
    • Clean Architecture by Uncle Bob Martin
    • Software Architecture The Hard Parts by Neal Ford, Mark Richards, Pramod Sadalage, and Zhamak Dehghani
    • Domain Driven Design Quickly by Abel Avram and Floyd Marinescu
    • A Philosophy of Software Design by John Ousterhout
    • System Design Interview by Alex Xu
    • Domain-Driven Design by Eric Evans
  7. Distributed Systems
    • Understanding Distributed Systems by Roberto Vitillo
    • Designing Distributed Systems by Brendan Burns
  8. DevOps
    • DevOps Handbook by Gene Kim, Patrick Debois, John Willis, and Jez Humble
    • Continuous Delivery by Jez Humble and David Farley
    • Accelerate by Nicole Forsgren, Jez Humble, and Gene Kim
  9. Machine Learning
    • The Hundred-Page Machine Learning Book by Andriy Burkov
    • Designing Machine Learning Systems by Chip Huyen

Computer Science Papers

Computer Science Papers Every Developers Should Read

  1. On the Criteria To Be Used in Decomposing Systems into Modules (1972), D.L. Parnas: ref
  2. An Axiomatic Basis for Computer Programming (1969), C.A.R. Hoare: ref
  3. Time, Clocks, and the Ordering of Events in a Distributed System (1978), L. Lamport: ref
  4. Out of the Tar Pit (2006), B. Moseley, P. Marks: ref
  5. Dynamo: Amazonโ€™s Highly Available Key-value Store (2007), G. DeCandia et al.: ref
  6. MapReduce: Simplified Data Processing on Large Clusters (2004), J. Dean, S. Ghemawat: ref
  7. A Note On Distributed Computing (1994), J. Waldo, G. Wyant, A. Wollrath, S. Kendall: ref
  8. A Metrics Suite for Object-Oriented Design (1994), S.R. Chidamber: ref
  9. A Relational Model of Data for Large Shared Data Banks (1969), E.F. Codd: ref
  10. Why Functional Programming Matters (1990), J. Hughes: ref

Distributed Systems!

25 Papers That Completely Transformed the Computer World

  • ref [May 2024]
  1. Dynamo - Amazonโ€™s Highly Available Key Value Store ref
  2. Google File System: Insights into a highly scalable file system ref
  3. Scaling Memcached at Facebook: A look at the complexities of Caching ref
  4. BigTable: The design principles behind a distributed storage system ref
  5. Borg - Large Scale Cluster Management at Google ref
  6. Cassandra: A look at the design and architecture of a distributed NoSQL database ref
  7. Attention Is All You Need: Into a new deep learning architecture known as the transformer ref
  8. Kafka: Internals of the distributed messaging platform ref
  9. FoundationDB: A look at how a distributed database ref
  10. Amazon Aurora: To learn how Amazon provides high-availability and performance ref
  11. Spanner: Design and architecture of Googleโ€™s globally distributed databas ref
  12. MapReduce: A detailed look at how MapReduce enables parallel processing of massive volumes of data ref
  13. Shard Manager: Understanding the generic shard management framework ref
  14. Dapper: Insights into Googleโ€™s distributed systems tracing infrastructure ref
  15. Flink: A detailed look at the uni๏ฌed architecture of stream and batch processing ref
  16. A Comprehensive Survey on Vector Databases ref
  17. Zanzibar: A look at the design, implementation and deployment of a global system for managing access control lists at Google ref
  18. Monarch: Architecture of Googleโ€™s in-memory time series database ref
  19. Thrift: Explore the design choices behind Facebookโ€™s code-generation tool ref
  20. Bitcoin: The ground-breaking introduction to the peer-to-peer electronic cash system ref
  21. WTF - Who to Follow Service at Twitter: Twitterโ€™s (now X) user recommendation system ref
  22. MyRocks: LSM-Tree Database Storage Engine ref
  23. GoTo Considered Harmful ref
  24. Raft Consensus Algorithm: To learn about the more understandable consensus algorithm ref
  25. Time Clocks and Ordering of Events: The extremely important paper that explains the concept of time and event ordering in a distributed system ref

Data Science (ML/NN)

30 free e-books

  1. Deep Learning - Ian Goodfellow, Yoshua Bengio, and Aaron Courville
  2. Mathematics for Machine Learning - Marc Peter Deisenroth, A. Aldo Faisal, Cheng Soon Ong
  3. An Introduction to Statistical Learning - Gareth James, Daniela Witten, Trevor Hastie, Robert Tibshirani, Jonathan Taylor
  4. The Elements of Statistical Learning - Jerome H. Friedman, Robert Tibshirani, and Trevor Hastie
  5. Probabilistic Machine Learning: An Introduction - Kevin Patrick Murphy
  6. Probabilistic Machine Learning: Advanced Topics - Kevin Patrick Murphy
  7. Understanding Machine Learning - Shai Shalev-Shwartz and Shai Ben-David
  8. Automated Machine Learning - Frank Hutter, Lars Kotthoff, Joaquin Vanschoren
  9. Applied Causal Inference - Uday Kamath, Kenneth Graham, Mitchell Naylor
  10. Reinforcement Learning: An Introduction - Richard S. Sutton and Andrew G. Barto
  11. The Hundred-Page Machine Learning Book - Andriy Burkov
  12. Machine Learning Engineering - Andriy Burkov
  13. Natural Language Processing with Python - Steven Bird, Ewan Klein, and Edward Loper
  14. Dive into Deep Learning - Aston Zhang, Zachary C. Lipton, Mu Li, Alexander J. Smola
  15. Machine Learning Yearning - Andrew NG
  16. Machine Learning for Humans - Vishal Maini, Samer Sabri
  17. Pattern Recognition and Machine Learning - Christopher M. Bishop
  18. Deep Learning on Graphs - Yao Ma and Jiliang Tang
  19. Approaching (Almost) Any Machine Learning Problem - Abhishek Thakur
  20. Feature Engineering and Selection - Max Kuhn and Kjell Johnson
  21. Hands-On Machine Learning with R - Bradley Boehmke & Brandon Greenwell
  22. Deep Learning Interviews - Shlomo Kashani and Amir Ivry
  23. Machine Learning Interpretability - Patrick Hall and Navdeep Gill
  24. Interpretable Machine Learning - Christoph Molnar
  25. Boosting: Foundations and Algorithms - Robert E. Schapire, Yoav Freund
  26. A Brief Introduction to Machine Learning for Engineers - Osvaldo Simeone
  27. Speech and Language Processing - Daniel Jurafsky & James Martin
  28. Computer Vision: Models, Learning, and Inference - Simon J.D. Prince
  29. Information Theory, Inference and Learning Algorithms - David J. C. MacKay
  30. Machine Learning For Dummies - Judith Hurwitz and Daniel Kirsch

github

  1. Machine Learning for Beginners
  2. Machine Learning YouTube Videos
  3. Mathematics for Machine Learning
  4. Deep Learning Book
  5. Machine Learning ZoomCamp
  6. Machine Learning Tutorials
  7. Awesome Machine Learning
  8. CS 229 Machine Learning Cheatsheets
  9. Machine Learning Interview Guide
  10. Awesome Production Machine Learning
  11. 365 Data Science Flashcards

Terminology and Comparisons

  1. Gartner's PACE Layered Application Strategy: A methodology for categorizing, selecting, managing and governing applications based on their characteristics and the speed of change they require1.

  2. JIT vs AOT: JIT and AOT are two types of compilers that differ in when they convert a program from one language to another, either at run-time or build-time.

  3. SSG: Static site generator list: A tool that generates a full static HTML website based on raw data and a set of templates.

  4. Popular Enterprise Architecture Frameworks: TOGAF, Zachman, Federal Enterprise Architecture (FEA), Gartner Enterprise Architecture Framework, Business Architecture Guildโ€™s BIZBOK, Department of Defense Architecture Framework (DoDAF), ArchiMate, and Sherwood Applied Business Security Architecture (SABSA).

  5. Are Architecture Styles, Patterns, and Design Patterns Different?

    Architecture Styles vs Patterns vs Design Patterns
     ๐Ÿญ. ๐—”๐—ฟ๐—ฐ๐—ต๐—ถ๐˜๐—ฒ๐—ฐ๐˜๐˜‚๐—ฟ๐—ฎ๐—น ๐˜€๐˜๐˜†๐—น๐—ฒ๐˜€
    
     This is the highest level of abstraction, where architectural designs instruct us on structuring our code. The highest level of granularity describes the application's layers and high-level modules and how they relate to and interact with one another. Examples of architectural styles include:
     ๐Ÿ”น Monolith
     ๐Ÿ”น Layered
     ๐Ÿ”น Event-driven
     ๐Ÿ”น Self-contained Systems
     ๐Ÿ”น Microservices
     ๐Ÿ”น Space-Based
    
     ๐Ÿฎ. ๐—”๐—ฟ๐—ฐ๐—ต๐—ถ๐˜๐—ฒ๐—ฐ๐˜๐˜‚๐—ฟ๐—ฎ๐—น ๐—ฝ๐—ฎ๐˜๐˜๐—ฒ๐—ฟ๐—ป๐˜€
    
     These patterns represent a way to implement an architectural style, so we can do this regularly. Some examples are how to separate the user interface (UI) and data, how internal modules interact, and what layers we will use. Patterns answer these types of questions. They usually impact the code base and how to structure the code inside. Examples of architectural patterns include:
    
     ๐Ÿ”น Model-View-Presenter (MVP): 1:1 Relationship between View and Presenter. e.g., Windows forms
     ๐Ÿ”น Model-View-Controller (MVC): e.g., Smalltalk, ASP.Net MVC
     ๐Ÿ”น Modelโ€“Viewโ€“Viewmodel (MVVM): One to Many relationship between View and ViewModel. e.g., Silverlight, WPF, AngularJs: 
     ๐Ÿ”น Domain-Driven Design
    
     ๐Ÿฏ. ๐——๐—ฒ๐˜€๐—ถ๐—ด๐—ป ๐—ฝ๐—ฎ๐˜๐˜๐—ฒ๐—ฟ๐—ป๐˜€
    
     These differ from architectural patterns in that they focus on a smaller code base area and have a smaller influence (focus on a local problem). These include limiting the creation of a class to only one object or notifying all dependent objects when the internal state of an object is changed. These patterns are described in the book "Design Patterns: Elements of Reusable Object-Oriented Software" by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides from 1994.
    
     We have ๐˜๐—ต๐—ฟ๐—ฒ๐—ฒ ๐—ด๐—ฟ๐—ผ๐˜‚๐—ฝ๐˜€ ๐—ผ๐—ณ ๐——๐—ฒ๐˜€๐—ถ๐—ด๐—ป ๐—ฃ๐—ฎ๐˜๐˜๐—ฒ๐—ฟ๐—ป๐˜€:
    
     ๐Ÿ”น ๐—–๐—ฟ๐—ฒ๐—ฎ๐˜๐—ถ๐—ผ๐—ป๐—ฎ๐—น: here we have Factory Method, Builder, Singleton, ...
     ๐Ÿ”น ๐—ฆ๐˜๐—ฟ๐˜‚๐—ฐ๐˜๐˜‚๐—ฟ๐—ฎ๐—น: here we have an Adapter, Bridge, and Decorator, ...
     ๐Ÿ”น ๐—•๐—ฒ๐—ต๐—ฎ๐˜ƒ๐—ถ๐—ผ๐—ฟ๐—ฎ๐—น: here we have Command, Iterator, State, Strategy, ...
    
  6. Memory consistency model: A Primer on Memory Consistency and Cache Coherence

    SC vs TSO vs Relaxed Memory Consistency
     ๐Ÿญ. Sequential Consistency (SC): Operations execute in order as per the program.
     ๐Ÿ”น SC preserves order for two memory operations from the same thread for all four combinations of loads and stores (Load โ†’ Load, Load โ†’ Store, Store โ†’ Store, and Store โ†’ Load). 
     ๐Ÿ”น MIPS R10000
    
     ๐Ÿฎ. Total Store Order (TSO): Reads can happen before preceding writes complete. 
     ๐Ÿ”น TSO preserves the first three orders (Load โ†’ Load, Load โ†’ Store, Store โ†’ Store) but not Store โ†’ Load order.
     ๐Ÿ”น x86 CPU.
    
     ๐Ÿฏ. Relaxed Memory Consistency: Allows more reordering of operations for performance. 
     ๐Ÿ”น ARM and RISC-V
    
  7. API Gateway vs Load Balancer

    Expand

    ๐Ÿ”น API Gateway: Manages access to backend services, handles tasks like rate-limiting, authentication, logging, and security policies.

    ๐Ÿ”น Load Balancer: Distributes network traffic across multiple servers for high availability and even load distribution.

  8. Data engineering & Data Scientists Vocab 101 ref

    Expand ๐Ÿ”น Data engineering Vocab 101

    ref

    Data engineering 101

    ๐Ÿ”น 75 Key Terms That Data Scientists Remember by Heart

    ref

    Data engineering 01

    ๐Ÿ”น A Comprehensive NumPy Cheat Sheet Of 40 Most Used Methods

    ref

    Data engineering 02

    ๐Ÿ”น 15 Pandas โ†” Polars โ†” SQL โ†” PySpark Translations

    ref

    Data engineering 03

    ๐Ÿ”น 11 Key Probability Distributions

    ref

    Data engineering 04

    ๐Ÿ”น 6 Must-Know Types of Clustering Algorithms in Machine Learning

    ref

    Data engineering 05

    ๐Ÿ”น 25 Most Important Mathematical Definitions in Data Science

    ref

  9. Transfer Learning, Fine-tuning, Multitask Learning and Federated Learning ref

    Expand -
  10. DevOps, Platform engineering and SRE (site reliability engineering) ref

    SRE vs. DevOps vs. Platform Engineering

    ๐Ÿ”นDevOps, SRE, and Platform Engineering are practices that streamline software development and maintenance. They all involve automation and collaboration.

    ๐Ÿ”นDevOps covers the entire software development process promoting team collaboration.

    ๐Ÿ”นSRE focuses on system reliability, including application monitoring and emergency response.

    ๐Ÿ”นPlatform Engineering manages the infrastructure and tools needed for software development and operations.

    ๐Ÿ”นDevOps is about the whole development process, SRE emphasizes reliability and scalability, and Platform Engineering is about infrastructure and tool management.

  11. API Protocols (ref. ByteByteGo)

    Expand api
  12. Web services and APIs (SOAP, RestAPI, GraphQL, gRPC and Kafka) ref

    SOAP, RestAPI, GraphQL, gRPC and Kafka

    ๐Ÿ”นSOAP (Simple Object Access Protocol): XML-based protocol for web services, heayweight, favored for security and reliability.

    ๐Ÿ”นREST (Representational State Transfer): Uses HTTP methods, simple and easy to use, but can be resource-heavy.

    ๐Ÿ”นGraphQL: Allows flexible data queries, reduces data over-fetching.

    ๐Ÿ”นgRPC (Google Remote Procedure Call)**: High-performance RPC framework, ideal for connecting microservices. Built on top of HTTP/2 and uses Protocol Buffers for data exchange.

    ๐Ÿ”นKafka: Distributed streaming platform, uses publish-subscribe model for message queueing. real-time consistency. "at-least-once" delivery.

  13. Real-time communication and messaging (MQTT, AMQP and WebSocket) ref

    MQTT vs AMQP vs WebSocket

    ๐Ÿ”นMQTT (Message Queuing Telemetry Transport): Lightweight messaging protocol, uses publish-subscribe model, ideal for IoT and M2M communication. Three levels of Quality of Service (QoS): โ€œAt most onceโ€ (QoS 0), โ€œAt least onceโ€ (QoS 1), and โ€œExactly onceโ€ (QoS 2).

    ๐Ÿ”นAMQP (Advanced Message Queuing Protocol): Open-standard application layer protocol, robust message delivery, routing, and security features. Two qualities of service: โ€œAt most once (delivered once or lost)โ€ and โ€œAt least once (delivered one or more times.)โ€.

    ๐Ÿ”นWebSocket: Enables full-duplex communication channels over a single TCP connection

  14. Reactive programming vs event-driven architecture ref

    • Event-Driven: Handles user actions or system events. More general and can be used in any context where an event occurs
    • Reactive: Data-driven approach. managing data streams and propagating changes, like in a spreadsheet model.
  15. RABC vs ReABC: RBAC (Role-Based Access Control) is an authorization model that assigns permissions based on predefined roles. On the other hand, ReBAC (Relationship-Based Access Control) extends RBACโ€™s capabilities by considering relationships between entities.

  16. Conway's law: Software engineering principle that states that the structure of a system reflects the structure of the organization that designs it.

  17. Data Management in Distributed systems (Partitioning, Shuffling and Bucketing)

    Partitioning vs Shuffling vs Bucketing

    ๐Ÿ”นPartitioning: The process of dividing a large dataset into smaller parts, known as partitions. This process splits Hive table's files into multiple files. For example, ../hive/warehouse/sales_table/product_id=P1.

    ๐Ÿ”นShuffling: Shuffling is the process of redistributing data across different partitions. The overhead of operations can be ranked as follows: orderby > join > groupby.

    ๐Ÿ”นBucketing: This is the process of decomposing data into manageable parts based on a certain column, thereby improving query performance and storage efficiency. It is best used when there are very few repeating values in a column (for example 1. a primary key column). For instance, Bucket0: ../hive/warehouse/sales_table/product_id=P1/000000_0, Bucket1: ../hive/warehouse/sales_table/product_id=P1/000001_0, and so on.

  18. SSO (Single Sign-On) is an authentication scheme that allows a user to log in with a single ID and password to any of several related, yet independent, software systems.

    SSO workflow, Types of SSO, SSO Implementations

    ๐Ÿ”นSSO workflow: Identity Provider (IdP), Service Provider (SP), SSO Server

    • IdP: Central Authentication server e.g., Google
    • SP: Individual Applications rely on SSO e.g, Trello
    • SSO Server: Bridge between IdP and SPs

    ๐Ÿ”นTypes of SSO: SAML, OAuth (Open Authorization) 2.0, Open ID Connect (OIDC)

    Protocol Purpose Token Format -
    OAuth 2.0 Open standard for Authorization Access Tokens Temporary access to 3rd party app
    OpenID Connect (OIDC) Open standard for Authentication JSON Web Token (JWT) Newer type of SSO based on OAuth 2.0, Straightforward protocol than SAML
    SAML Authentication, Authorization XML Most common, Use SAML Protocol to exchange authentication between SSO server and SP

    ๐Ÿ”นSome other Types of SSO: Kerberos, Smart card authentication

    • Kerberos: Less suitable for internet-facing SSO due to the shared secret between KDC (Key Distributin Center) and all participants.
    • Smart card authentication: Physical card

    ๐Ÿ”นSSO Implementations: Microsoft Entra ID (FKA Micorsoft Active Directory), Okta, Ping Identity, OneLogin, Auth0

  19. Deployment Styles: Blue/Green, Canary, and A/B

    Blue/Green, Canary, A/B

    ๐Ÿ”นBlue/Green Deployment: Two identical environments, "Blue" and "Green". Deploy new version in inactive environment, test, then switch users to it. For example, AWS supports blue/green deployment strategies including Elastic Beanstalk, OpsWorks, CloudFormation, CodeDeploy, and Amazon ECS.

    ๐Ÿ”นCanary Deployment: Roll out new version to a small group of users, monitor feedback, then do a full-scale release.

    ๐Ÿ”นA/B Testing: Compare two versions of a webpage or app to see which performs better. A typical example of A/B testing is website usability testing.

  20. Flaky Test: A Flaky Test is a test that sometimes passes and sometimes fails, despite no changes in the code. Causes can include poorly written tests, async waits, test order dependency, and concurrency issues. They can slow down CI/CD pipelines and cause issues for end users. ref

  21. Hadoop Ecosystem

    Hadoop vs Azure, AWS, GCP

    ๐Ÿ”น1. HDFS (File Storage): Azure Data Lake Storage, Amazon S3, Google Cloud Storage

    ๐Ÿ”น2. YARN (Resource Management): No direct equivalent in Azure, AWS, GCP

    ๐Ÿ”น3. MapReduce (Data Processing): HDInsight, Amazon EMR, Google Cloud Dataproc

    ๐Ÿ”น4. Spark (Fast Data Processing): Databricks, Spark in HDInsight, Azure Synapse Analytics, Amazon EMR, Google Cloud Dataproc

    ๐Ÿ”น5. PIG, HIVE (Query Data): HDInsight, Azure Synapse Analytics, Amazon EMR, Google Cloud Dataproc

    ๐Ÿ”น6. HBase (NoSQL DB): Azure Cosmos DB, HBase on a virtual machine (VM), HBase in Azure HDInsight, Amazon DynamoDB, Google Cloud Bigtable

    ๐Ÿ”น7. Mahout, Spark MLLib (ML Libraries): Databricks, Amazon SageMaker, No direct equivalent in GCP

    ๐Ÿ”น8. Solar, Lucene (Search/Index): Azure Cognitive Search, Amazon CloudSearch, Google Cloud Search

    ๐Ÿ”น9. Zookeeper (Cluster Management): No direct equivalent in Azure, Amazon Managed Apache ZooKeeper, No direct equivalent in GCP

    ๐Ÿ”น10. Oozie (Job Scheduling): Azure Data Factory, AWS Step Functions, Google Cloud Composer

  22. Software defined Networking(SDN) Northbound vs Southbound

    Expand
    graph TD
        A[Application layer - routing, load balancing, etc] -->|Northbound APIs| B[Control layer - SDN controller]
        B -->|Southbound APIs| C[Infrastructure layer - physical switches, data plane]
    

    ๐Ÿ”นThe Controller is the SDN network's brain, directing traffic flows.

    ๐Ÿ”น The Southbound Interface communicates the controller's decisions to the switches using protocols like OpenFlow.

    ๐Ÿ”นSDN Switches direct traffic based on the controller's instructions.

    ๐Ÿ”นNetwork Devices (servers, routers, etc.) send and receive data flows as directed by the SDN switches.

    ๐Ÿ”นThe Northbound Interface uses APIs to exchange data between the controller and applications.

    ๐Ÿ”นSDN Applications use network data to perform tasks, communicating their needs to the controller.

    graph LR
    A[Controller] -- API --> B[Southbound Interface]
    B -- OpenFlow --> C[SDN Switches]
    C -- Data Flow --> D[Network Devices]
    A -- API --> E[Northbound Interface]
    E -- Applications --> F[SDN Applications]
    
  23. Cracking coding interviews

    Expand

    ๐Ÿ”นsrc: ref

    ๐Ÿ”นTwo Pointers: Navigating arrays with two indices. ref

    ๐Ÿ”นIntervals: Working with ranges of values. ref / ref / ref

    ๐Ÿ”นDynamic Programming: Solving complex problems by breaking them down into simpler subproblems. ref / ref

    ๐Ÿ”นTree Traversal: Visiting all nodes in a tree. ref / ref

    ๐Ÿ”นDFS-BFS: Depth-first and breadth-first search algorithms. ref / ref / ref / ref

    ๐Ÿ”นBinary Search: Finding an element in a sorted array. ref

    ๐Ÿ”นArray: A data structure holding elements. ref

    ๐Ÿ”นSliding Window: A subset of data that moves. ref / ref / ref / ref / ref

    ๐Ÿ”นBacktracking: Trying out all possibilities to find a solution. ref / ref / ref

    ๐Ÿ”นCombination: Finding all possible arrangements of elements. ref

    ๐Ÿ”นTrie: A tree-like data structure for storing strings. ref

    ๐Ÿ”นWord Break: Dividing a string into words. ref

    ๐Ÿ”นBit Manipulation: Performing operations on binary numbers. ref / ref

    ๐Ÿ”นSum: Adding numbers together. ref

    ๐Ÿ”นMonotonic Stack: A stack keeping elements in an ordered manner. ref

  24. Medallion architecture: A data design pattern for lakehouses. It enhances data quality across three layers: bronze (raw), silver (curated), and gold (presentation). This โ€œmulti-hopโ€ architecture allows data to transition between layers as required. ref

  25. Slowly changing dimensions (SCD): Slowly Changing Dimensions change over time, but at a slow pace and unpredictably. For example, a customerโ€™s address in a retail business.

  26. Star schema: The Star Schema is a data model for data warehouses. It has a central fact table for measurable data and surrounding dimension tables for descriptive data. ref

  27. OLAP vs OLTP: OLAP: Used for complex data analysis and business reporting, such as financial analysis and sales forecasting. OLTP: Used for real-time processing of online transactions, including everyday transactions like ATM withdrawals and in-store purchases.