BDD (Behavior-Driven Development) | TDD (Test-Driven Development) | Traditional Development |
---|---|---|
Focuses on behaviors and outcomes | Focuses on code implementation and unit testing | Often focuses on features without explicit test criteria |
Tests written in natural language | Tests written in programming language | Testing often done after development |
Encourages collaboration between technical and non-technical team members | Primarily developer-focused | Often has communication gaps between teams |
Examples and scenarios describe expected behavior | Tests verif |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
+------------+-----------------------+--------------------+---------------------------+----------------------------------+ | |
| Protocol | Model | Transport | Architecture | Key Innovations | | |
+------------+-----------------------+--------------------+---------------------------+----------------------------------+ | |
| REST | Request-Response | HTTP/1.1 or HTTP/2 | Stateless, resource-based | Standard HTTP verbs | | |
| gRPC | Unary + Streaming | HTTP/2 | RPC, contract-first | Multiplexing, header compression | | |
| GraphQL | Flexible Queries | HTTP/1.1 (usually) | Schema-first | Client-driven queries | | |
| WebSockets | Full-Duplex Streaming | TCP (upgraded) | Connection-oriented | Persistent, bidirectional | | |
| SOAP | Request-Response | HTTP/1.1, SMTP | Strict XML contract | WS-* standards, WSDL | | |
+------------+-----------------------+-- |
Feature | Lambda Architecture | Kappa Architecture |
---|---|---|
Data Ingestion | Typically involves landing raw data into a distributed file system (e.g., HDFS, S3) for the batch layer, and a message queue (e.g., Kafka, Kinesis) for the speed layer. | Primarily relies on a durable, ordered message queue (e.g., Apache Kafka) as the central point of data ingestion for all data. |
Design Philosophy | Dual pipeline for batch a |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function createGUID() { | |
let guid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => { | |
let r = Math.random() * 16 | 0, | |
v = c == 'x' ? r : (r & 0x3 | 0x8); | |
return v.toString(16); | |
}); | |
return guid; | |
} | |
/** |