# Kafka Asynchronous Guidelines There are several technologies to implement event-driven architectures, but this section is going to focus on the predominant technology on this subject: Apache Kafka. **Apache Kafka** can be considered as a Streaming Platform which relies on the several concepts: * Super high-performance, scalable, highly-available cluster of brokers * Availability * Replication of partitions across different brokers * Scalability * Partitions * Ability to re-balance partitions across consumers automatically when adding/removing them * Performance * Partitioned, re-playable log (collection of messages appended sequentially to a file) * Data copied directly from disk buffer to network buffer (zero copy) without even being imported to the JVM * Extreme throughput by using the concept of consumer group * Security * Secure encrypted connections using TLS client certificates * Multi-tenant management through quotas/ACLs * Client APIs on different programming languages : Go, Scala, Python, REST, JAVA, ... * Stream processing APIs like Kafka Streams * Ecosystem of connectors to pull/push data from/to Kafka * Clean-up processes for storage optimization * Retention periods * Compacted topics