Skip to content

Introduction

Ivan Dugalic edited this page Mar 14, 2023 · 1 revision

When you’re developing an information system to automate the activities of the business, you are modeling the business. The abstractions that you design, the behaviors that you implement, and the UI interactions that you build all reflect the business — together, they constitute the model of the domain.

Businesses today are increasingly data-first. They understand that delivering new services and improving their customer experiences depends on capturing and delivering accurate data.

Traditional information systems are shifting to more sophisticated technology stacks due to the increasing demand for real-time data processing. This requires redesigning traditional systems into message-driven, data-intensive, and scalable systems with first-class support for:

  • Functional programming: immutability, composability, and robust type system will make it easier for engineers to implement data-centric systems
  • Event Sourcing and CQRS patterns: being very explicit about every state change and advertising/streaming that change (fact/event) downstream
  • Concurrent and Parallel Processing: Concurrent processing (execution of multiple tasks or operations simultaneously) and parallel processing (dividing different parts of a task among multiple processors)
  • Big Data Processing: A rich set of libraries and frameworks (e.g., Apache Flink and Apache Spark)
  • Machine Learning and AI: The libraries and frameworks for working with ML and AI (e.g., TensorFlow)

Kotlin is a modern multi-paradigm and multiplatform programming language that is checking all these boxes. This project is taking note of that fact!

Essentially, this project is a set of abstract components that are generalized through parameterization to provide more excellent utility for implementing event-driven information systems faster.

Further reading

Clone this wiki locally