skip to main content
Technical Operations > ICE Server > ICE Server architecture
ICE Server architecture
ICE Server is authored primarily in Java and makes use of Kafka (an open-source messaging platform) and Cassandra (an open-source non-relational database).
ICE Server is comprised of the following subcomponents:
Resource
Description
Apache Cassandra
All data persisted by ICE Server is stored in Apache Cassandra, a distributed, wide column store, NoSQL database management system designed to handle large amounts of data across severs and data center, providing high availability with no single point of failure.
CassKop Cassandra Operator
Provides Kubernetes-level administration and management over Apache Cassandra (database) resources running inside the cluster.
Client Bridge
Client bridge terminates ICE Desktop and ICE Mobile WebSocket connections to the ICE Server, placing messages received from clients on the platform Kafka message topic (for processing by Platform Services). Forwards relevant messages from the platform Kafka message bus to attached clients.
Elasticsearch
Elasticsearch is a distributed search and analytics engine providing powerful, lightning-fast search capabilities. Used by ICE Server to power people and channel search functions in the application. Be aware that the Kubernetes EFK monitoring and analysis tools ships with its own Elasticsearch that operates independently of ICE Server’s.
Apache Kafka
A stream-processing platform providing a unified, high-throughput, low-latency platform for handling real-time data feeds. Services inside of ICE Server communicate with one another using Kafka message topics.
Strimzi Kafka Operator
Provides Kubernetes-level administration and management over Apache Kafka (messaging) resources running inside the cluster.
Model Manager
Responsible for establishing required keyspaces, tables, columns and topics within Cassandra and Kafka. Manages database table versioning and migrating data during in-place ICE Server software updates.
Platform Services
Primary message processing and application business logic. Platform Services receives messages from a Kafka message topic, processes them (which may include performing database lookups or writes), and places a response message back on the topic.
REST Bridge
A REST-style facade over the system. Takes incoming HTTP requests, converts them to Kafka messages destined for Platform Services, and converts the resulting response message into an HTTP response.
Server Bridge
Similar to Client Bridge, Server Bridge terminates WebSocket connections established by ancillary server components (like ICE Telephony, ICE Static Reflectors and ICE Patch Servers).
Apache Zookeeper
Apache Zookeeper is a centralized service to maintain naming and configuration data and to provide flexible and robust synchronization within distributed systems. Zookeeper keeps track of status of the Kafka cluster nodes and it also keeps track of Kafka topics, partitions etc, and keeps them in sync.
ICE Server system subcomponents
ICE Server system component diagram