ligase

module
v0.0.0-...-9835270 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 22, 2021 License: AGPL-3.0, Apache-2.0

README

FinChat

A general purpose, open, Messsging As A Platform (MaaP) solution.

👉 https://www.finogeeks.com/Finchat 👈


Introduction

Ligase is a Golang-based implementation of Matrix home server, following the Matrix spec as defined at matrix.org. It has been used in production by an array of financial institutions in various scenarios, including but not limited to OTC-style trading (i.e in the bond trading market), collaborative workspace, stock brokerage, retail banking and more. It usually serves as the core to support more sophisticated financial applications running in secured, on-premise and regulation-compliant environments.

But nothing limits it as a powerful Instant Messaging server as well as a general purpose, open, Messsging As A Platform (MaaP) solution.

Alternatives to Synapse and Dendrite

Synapse and Dendrite are two reference implementation based upon the Matrix spec, implemented in Python and Golang, respectively. Here we provide yet another alternative, field-tested by a number of banks, stock brokerage houses and fintech companies since 2018. Financial applications require an IM with lower latency, better scalability, higher concurrency and stronger backend monitoring capabilities. We therefore derived a branch originally from Dendrite but since then parting our way from it to drill into a completely different implementation with a different architecture.

Architecture and other technological considerations

While sticking to the Matrix spec as much as it could be, this implementation has adopted the following approaches:

  • a Fan-in/Fan-out topology
  • a CQRS (Command and Query Responsibility Segregation) pattern
  • leveraging Kafka for event sourcing and stream message storage
  • micro-service based with full leverage to containers (i.e. Docker) and container choreography platforms (i.e. Kubernetes/Rancher)

A Cloud-native K8S application

The implementation will gradually take advantage of cloud facilities so as to reach the state of being cloud-native, inherently supporting DevOps. It deploys via docker-compose as a single node deployment. But it meets enterprise-grade requirements to run as a native K8S application, leveraging K8S' elasticity and resiliency. Integration with Prometheus gives IT operators a powerful monitoring tool.

Installation

Read the INSTALL

Contributing

Read the CONTRIBUTING

Troubleshooting

problems and known solutions

Support channels

Slack/Reddit/StackOverflow/FinChat

About Finogeeks

You can visit finogeeks.com to get more details.

Directories

Path Synopsis
api
rpc
cmd
Package auth implements authentication checks and storage.
Package auth implements authentication checks and storage.
uid
api
roomservertypes
Package types provides the types that are used internally within the roomserver.
Package types provides the types that are used internally within the roomserver.
service/roomserverapi
Package api provides the types that are used to communicate with the roomserver.
Package api provides the types that are used to communicate with the roomserver.
api
api
rpc
api
api
rpc
rpc
skunkworks
gomatrix
Package gomatrix implements the Matrix Client-Server API.
Package gomatrix implements the Matrix Client-Server API.
log
util/cas
compare and swap util
compare and swap util
zap
Package zap provides fast, structured, leveled logging.
Package zap provides fast, structured, leveled logging.
zap/buffer
Package buffer provides a thin wrapper around a byte slice.
Package buffer provides a thin wrapper around a byte slice.
zap/internal/bufferpool
Package bufferpool houses zap's shared internal buffer pool.
Package bufferpool houses zap's shared internal buffer pool.
zap/internal/color
Package color adds coloring functionality for TTY output.
Package color adds coloring functionality for TTY output.
zap/internal/exit
Package exit provides stubs so that unit tests can exercise code that calls os.Exit(1).
Package exit provides stubs so that unit tests can exercise code that calls os.Exit(1).
zap/zapcore
Package zapcore defines and implements the low-level interfaces upon which zap is built.
Package zapcore defines and implements the low-level interfaces upon which zap is built.
zap/zapgrpc
Package zapgrpc provides a logger that is compatible with grpclog.
Package zapgrpc provides a logger that is compatible with grpclog.
zap/zaptest
Package zaptest provides low-level helpers for testing log output.
Package zaptest provides low-level helpers for testing log output.
zap/zaptest/observer
Package observer provides a zapcore.Core that keeps an in-memory, encoding-agnostic repesentation of log entries.
Package observer provides a zapcore.Core that keeps an in-memory, encoding-agnostic repesentation of log entries.
storage
api
rpc
api
rpc
rpc

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL