The document discusses building reliable, flexible, secure, introspectable, and scalable IT systems on a platform. It notes common failures include complexity, legacy restrictions, lack of clean concepts, and lack of time/budget. The author proposes a platform with cleanly defined core concepts that is conceptually simple and focuses more on the product than specific development. The platform would bet on a specific set of technologies to let developers focus on business needs, taking inspiration from reactive, cloud, microservices, Kubernetes, serverless, and Orleans/OpenWhisk approaches. The rest of the document describes NetComposer as such a platform and provides details on its architecture, features, advantages, use of Erlang/OTP, packages/plugins
3. How IT systems should be
Reliable. Continue working even after problems of any kind.
Flexible. Adapt to different requirements easily.
Secure. At all layers.
Introspectable. Know what’s happening at all times.
Scalable. Allow high loads when needed.
Responsive. Every response should be fast with low latency.
4. Where most fail
Complexity
No clean core concepts. Users, Domains, Files
Legacy. Too many old restrictions.
Implies low security, low flexibility.
No time/budget. To build the system we would like
Specific development vs Product.
Changing technology trends. Cloud, containers,
serverless…
5. What if
We build a platform that:
Has cleanly defined core concepts.
Is conceptually very simple
80% product. 20% specific development
Bets on a specific set of technologies
Lets the developer focus on the business
6. Inspiration
Reactive systems
Resilient, responsive, elastic, message-driven.
Cloud solutions
Ok, but with freedom and owning my data. And cheaper.
Microservices
Ok, but without much of the complexity.
Kubernetes
Everything is an API. Network takes care of plumbing.
Serverless
Close, but we want the high-level functions I need.
Microsoft Orleans, IBM OpenWhisk
Very close, but we want an out-of-the box solution and high-level functions.
7. What is NetComposer?
“A platform that offers the core pieces to build and operate
distributed, massively scalable applications, with a focus on
simplicity, security, flexibility, uptime and low latency.
9. NetActor Actor Actor Actor Actor
REST/WS interface GraphQL interface
NetComposer Architecture (v2)
PushProvider VideoMixer Elasticsearch Tracing …
Distributed database Distributed filesystem
10. NetActor Actor Actor Actor Actor
REST/WS interface GraphQL interface
NetComposer v2
PushProvider VideoMixer Elasticsearch Tracing …
Distributed database Distributed filesystem
Auth Chat Audio/Video
Project 1
11. Telemedicine
Actor Actor Actor Actor Actor
REST/WS interface GraphQL interface
PushProvider VideoMixer Elasticsearch Tracing …
Distributed database Distributed filesystem
Reports
NetComposer v2
Auth Chat Audio/Video
Project 1Project 1 Project 2
12. Net
Auth Chat Audio/Video Telemedicine
Actor Actor Actor Actor Actor
REST/WS interface GraphQL interface
Lex
(Amazon)
Speech Services
(Google)
CloudDB
PushProvider VideoMixer Elasticsearch Tracing …
Reports
NetComposer v2
S3
13. Net
Auth Chat Audio/Video Telemedicine
Actor Actor Actor Actor Actor
REST/WS interface GraphQL interface
Lex
(Amazon)
Speech Services
(Google)
CloudDB
PushProvider VideoMixer Elasticsearch Tracing …
Reports
NetComposer v2
S3
14. Core Features
Actor model 100%.
Multi-versioned APIs. Multiple high level APIs already available.
Scalable from one node to thousands of nodes.
Fault tolerant. No master, shared-nothing architecture.
Secure. Security is a major design criteria from the ground up at all layers.
Multi data center. Hybrid clouds.
Mobile first. WebSocket support, GraphQL, massive number of simultaneous connections.
Lightweight. Flexible. Very easy to install and operate. Single image for all of the nodes.
From a $5 Raspberry Pi to big multicore machines.
Under load, on-the-fly updates of any part of the system. No service interruption.
Core is open source.
15. Advantages
Everything is an actor, with the exact same
API and database representation: Domains,
Users, Messages, Doctors, Reports, Files.
Actors are distributed evenly on the cluster.
Loaded actors work as a cache, providing
very low latency.
Every action on every actor generates an
Event. External entities can subscribe to
events of any kind.
Domains allow hierarchical grouping of
actors for every operation.
Powerful search operations can include any
actor types at any domain (and subdomains).
GraphQL engine allows discovering of the
information without any help and building
powerful graph queries in a single request.
New APIs can be incorporated globally or at a
specific domain.
New versions of APIs can be incorporated /
maintaining availability of old versions
Deployments can be done in stages
Plugins are applied by domain level and allow
modification of APIs at that level (for example,
adding new video providers)
Database vendor independent persistence layer
allows the use of very different databases using
plugins.
End-to-end tracing support.
17. Language, environment and best practices from
Ericsson (late 80s).
Open source from 1988.
“Erlang was designed for writing concurrent
systems that run for ever”.
Up-to-date. Current version 22.1 (2019-10-28)
Functional programming: no state.
Millions of processes, concurrent and distributed.
Virtual machine. Very few dependencies.
Soft real time.
Let it fail. Supervisors.
Hot code reloading, under heavy load.
Multiprocessor.
The secret behind WhatsApp, RabbitMQ, Riak…
Erlang/OTP
APPLICATION
SUPERVISOR
WORKER
20. Packages and Plugins
NetComposer offers a series of packages.
Each package offers one or more APIs, supporting several versions.
The main idea is to free the developers from all common, tedious
backend work and allow them to focus on business rules.
All packages are cluster aware, distributed and highly available.
Packages can be customised with plugins.
Plugins are hierarchical. Any plugin can modify or upgrade the
functionality of lower level, more basic core services.
All packages’ code can be upgraded on the fly
21. Current packages
core Users, contacts, permissions, nodes, roles, files, tokens, tasks
chat Conversations, messages, notifications, invitations
media Audio/videoconference, recording, telephony
collab Calendars, tasks, teams
telemed Encounters, devices, reports, patients, doctors
notify Massive Push, SMS, Email, Fax
image Image manipulation, reports. Internal or cloud
video Video transcoding. Internal or cloud
kafka Producer / Consumer of Kafka topics
database PostgreSQL, CockroachDB, Elasticsearch, Cassandra
23. Telemedicine
NetComposer is an ideal base platform to build telemedicine systems
core support for users, doctors, reports, encounters
advanced file management
chat, voice and video
mobile & desktop
remote device connections
Domains are used to represent regions, hospitals and clinics.
Can be fully installed on local servers and use anonymised cloud
service
24. Integrated Communications
NetComposer is a perfect base to build a a robust, full integrated,
massively scalable communications platform including:
Voice (PSTN) & Fax
Audio & video (WebRTC)
Messaging (SMS, MMS, WhatsApp)
Chat & Presence
Email
Recording
Document management
Domains can be used to represent companies, departments, build
groups & hierarchies at any level
Focus on security, in cloud or in local servers. Full encryption.
Advanced communications capabilities (like “moving my VoIP call to my
mobile phone while in the car”) are trivial to implement.
25. Teletraining & Media
Ideal base to develop systems for schools & universities.
Presentation management & content distribution.
Domains to represent regions, schools, classes, etc.
Teachers, students, parents interaction on chat, video and
telephone.
Mobile & desktop
26. IoT / Devices
NetComposer allows for the development of low-latency,
massively scalable solutions.
Millions of simultaneous connections.
Highly available and distributed in multiple data centres world
wide.
Flexible and easy to adapt quickly.
27. Gaming
NetComposer allows for the development of low-latency,
massively scalable solutions.
Video & chat already integrated.
Fully cloud compatible.
Flexible and easy to adapt quickly.
29. DKV Telemedicine
App with case management, chat, audio & video
Integration of medical devices
Integration with EHR
Push, SMS & Email centralised tool
Multi-tier orchestrator tool with
Multi-policy queues
Cost estimation
Full doctor and
provider management
31. SMS / MMS Engine
Interface is high-performance Kafka system
Persistence on distributed Cassandra
Currently processing 30K msg/day
Bulk detection
Throttling at multiple levels
Media storage on S3
Powerful tracing
Simulated to 3K msg/sec (260M/day) (per node)