I began my career as a Java developer at a cryptocurrency exchange company. Later, I joined a Scala bootcamp to deepen my understanding of functional programming. At the same time, I worked part-time as a university lecturer.
After completing the bootcamp, I transitioned to a full-time Scala developer role, which quickly became my main area of interest and expertise.
Recently, I was promoted to Scala Backend Team Lead at Appodeal Stack, which has broadened my experience in architecture, system design, and team management. Functional programming remains a significant passion of mine.
- how to control app features based on users attributes; - the architecture to do a simple yet effective attribute matching; - utilizing Scala to transform custom syntax into a binary tree of rule predicates; - integrating the designed solution into real applications, wrapping it as an SDK.
While my primary experience is in Scala development, I tried not to dive into language specifics in this talk. The focus is on the practical application of a rule matcher to solve various problems and its implementation using functional programming principles. Those with experience in functional languages will find this session particularly enlightening. However, the talk will also benefit others by providing a solid understanding of the general concepts and system architecture design for real-time rule management. There will be material on: - domain modeling and the use of higher-order functions to build a flexible system; - pattern matching to define allowed operations in rule definitions; - recursion schemes to optimize attribute matching during rule evaluation (here lies the more challenging content:)).
At some point, a business may reach a stage where app logic should be executed based on specific conditions like location, app version, or user type. For example, you may have to dynamically change discounts to sell leftover stock or limit low-profit requests during peak hours. Each new “crazy” idea from your manager often means coding, understanding needs, and system load with frequent redeployments. From a business perspective, as a manager, you want the ability to control the system's behavior without struggling through endless discussions, tickets, and running a full development cycle.
We will design a rule matcher to manage changing conditions in real-time in a user-friendly manner. It will use any app traffic attribute, verify rule validity, and keep rules easy to read and manage. We will leverage the capabilities of Scala and recursion schemes to create a fast and efficient solution that can be integrated into any app.