Actor Model

Pieter Joost van de Sande
Pieter Joost van de SandeSoftware Developer at Happy Pancake
Actor Model
Programming the future, with knowledge from the past
Actor Model
Actor Model
Concurrency.
Why shouldwe
care?
1973–2017
Actor Model
Actor Model
Actor Model
What the hell are you
talking about?
Concurrency
...time to embrace it.
Why is it so hard?
2
State
The devil is in
the state
The devil is in
the mutablestate
Definitions
&
Philosophy
What is a
Value?
What is a
Value?
A value is somethingthat
does not change
What is an
Identity?
What is an
Identity?
A stable logical
entity associated
with a
series of different
values over time
What is
State?
What is
State?
The Value
an entity with
a
specific Identity
has at a
particular point
How do we know if
something has
State?
How do we know if
something has
State?
If a function is invoked
with the same
arguments at
two different points in time
and returns different
values...
The problems
with Shared
State
Concurrency
Shared-State
Concurrency is
incredibly hard
>Inherently very hard to use
reliably
>Even the experts get it wrong
Example of
Shared-State Concurrency
Transfer funds
between bank
accounts
Account
public class Account {
private int balance;
public void withdraw(int amount){
if(balance < amount) throw;
balance ‐= amount;
}
public void deposit(int amount){
balance += amount;
}
}
Account
public class Account {
private int balance;
public void withdraw(int amount){
if(balance < amount) throw;
balance ‐= amount;
}
public void deposit(int amount){
balance += amount;
}
}
Not thread-safe 
Let’s make it thread-safe
public class Account {
private int balance;
public synchronized void withdraw(int amount) {
if(balance < amount) throw;
balance ‐= amount;
}
public synchronized void deposit(int amount) {
balance += amount;
}
}
Thread-safe right?
It’s still
brokenTransfers are not
atomic
Let’s write an
atomic transfer method
public class Account {
...
public synchronized void
transfer(Account to, int amount) {
this.withdraw(amount);
to.deposit(amount);
}
...
}
This will work right?
Let’s transfer funds
Account alice = ...
Account bob = ...
alice.transferTo(bob, 10.0D);
bob.transferTo(alice, 3.0D);
Let’s transfer funds
Account alice = ...
Account bob = ...
alice.transferTo(bob, 10.0D);
bob.transferTo(alice, 3.0D);
Might lead to
DEADLOCK
Darn, this is really
hard!!!
Weneed to enforce lock
ordering
>How?
>Java or C# won’t help us
>Need to use code convention (names
etc.)
>Requires knowledge about the internal
state and implementation of Account
>…runscounter to the principles
of encapsulation in OOP
You have a lock problem
It’s just
too hard
MULTITHREA DING
THEORY
PRACTICE
CHECK OUT
MYMULTITHREADEDCODE
HOW MA NY THREA DS
DOESITTAKETOCHANGEALIGHTBULB?
Infrasture!
Enterprise CRUDApp
Enterprise CRUDApp
Enterprise CRUDApp
Obvious Solution: Sharding
Actor Model
Brittle
Actor Model
What is the actor model?
MESSAGE
ALL THE THINGS
1973
Actor Model
Everything is an
actor.
Okay.. so what is an
actor?
3 Core Abilities
1. Send messages
2. Create other actors
3. Change behavior
Messages
Messages
→ Must be immutable
→ Processed serially
Messages are values
Actor Model
async by
default
Sending aMessage
myActorRef.Tell("this is my message");
Create Other
Actors
Actors never come
alone!
Actor Hierarchy
Location
Transparency
Actor Model
Actors Live at Unique Addresses
Actor Model
Actor Model
Which
means...
Actor Model
Actor Model
What is
Akka.NET?
Actor Model
Actor Model
This Is AnAkka.NET Actor
public class FooActor : UntypedActor
{
public FooActor()
{
// message handling code goes here...
}
}
These Are Messages
// just POCOs
public class
public class
Hello {}
NewOrder {
(string name)public NewOrder
{
Username
UserId =
= name;
Guid.NewGuid ();
}
Guid UserId { get; private set;}public
public string Username {get; private set;}
}
Actor Model
Without
Rewriting Your
Code
Money transfer
Actor style
Transfer
Manager
Transfer
Manager
Transfer 500
from A to B
//immutable message for withdraw:
public class TransferRequest
{
public string TransactionID;
public decimal Amount;
public string From;
public string To;
}
//the account actor
public class TransferManager : TypedActor, IHandle<Withdraw>
{
public void Handle(TransferRequest e)
{
...
}
}
Transfer
Manager
A
Withdraw 500
//immutable message for withdraw:
public class TransferRequest
{
public string TransactionID;
public decimal Amount;
public string From;
public string To;
}
//the account actor
public class TransferManager : TypedActor, IHandle<Withdraw>
{
public void Handle(TransferRequest e)
{
var fromAddress = "akka://my-sys/accounts/" + e.From;
Context.ActorSelection(fromAddress).Tell(new Withdraw(e.Amount));
}
}
Transfer
Manager
A
Withdraw 500
public class WithdrawRequest
{
public string TransactionID;
public decimal Amount;
}
//the account actor
public class BankAccount : TypedActor, IHandle<Withdraw>
{
private decimal _balance;
public void Handle(WithdrawRequest e)
{
if (_balance < e.Amount)
{
Sender.Tell(new WithdrawFailure(e.TransactionID));
return;
}
_balance -= e.Amount;
Sender.Tell(new WithdrawSuccess(e.TransactionID));
}
}
Transfer
Manager
A
B
Deposit 500
public class DepositRequest
{
public string TransactionID;
public decimal Amount;
}
//the account actor
public class BankAccount : TypedActor, IHandle<Withdraw>
{
private decimal _balance;
private decimal _maxAmount;
public void Handle(DepositRequest e)
{
if (_maxAmount < e.Amount)
{
Sender.Tell(new DepositFailure(e.TransactionID));
return;
}
_balance += e.Amount;
Sender.Tell(new DepositSuccess(e.TransactionID));
}
}
Transfer
Manager
A
B
//immutable message for withdraw:
public class TransferRequest
{
public string TransactionID;
public decimal Amount;
public string From;
public string To;
}
//the account actor
public class TransferManager : TypedActor, IHandle<Withdraw>
{
public void Handle(TransferRequest e)
{
Context.ActorSelection(transfer.From).Tell(new Withdraw(e.Amount));
Context.ActorSelection(transfer.To).Tell(new Deposit(e.Amount));
Sender.Tell(new TransferSuccess(e.TransactionID));
}
}
Transfer
Manager
A
B
Success
Change
Behavior
Actors
never come alone
Actors
have managers
Managed
References:a ?
:b ?
:c 42
:d ?
:e 6
• Typical OO: direct access to mutable
objects
foo
• Managed Reference: separates Identity &
Value
:a "fred"
:b "ethel"
:c 42
:d 17
:e 6
foo
@foo
How can this
be fast?
State Locality
Actor Model
Enterprise CRUD App
Actor Model
Let is crash!
An actor to monitor actors
Supervisor hierarchies
OneForOne
Wednesday, December 30,
2009
Supervisor hierarchies
AllForOne
Wednesday, December 30,
2009
THANK YOU!
Email: pj@craftify.nl
Twitter:
@pjvds
Actor Model
1 of 104

Recommended

ETL in the Cloud With Microsoft Azure by
ETL in the Cloud With Microsoft AzureETL in the Cloud With Microsoft Azure
ETL in the Cloud With Microsoft AzureMark Kromer
3K views5 slides
Event Sourcing with Cassandra (from Cassandra Japan Meetup in Tokyo March 2016) by
Event Sourcing with Cassandra (from Cassandra Japan Meetup in Tokyo March 2016)Event Sourcing with Cassandra (from Cassandra Japan Meetup in Tokyo March 2016)
Event Sourcing with Cassandra (from Cassandra Japan Meetup in Tokyo March 2016)Luke Tillman
2.7K views44 slides
Data quality and data profiling by
Data quality and data profilingData quality and data profiling
Data quality and data profilingShailja Khurana
44.9K views22 slides
Data Governance in a big data era by
Data Governance in a big data eraData Governance in a big data era
Data Governance in a big data eraPieter De Leenheer
2.3K views48 slides
Key Elements of a Successful Data Governance Program by
Key Elements of a Successful Data Governance ProgramKey Elements of a Successful Data Governance Program
Key Elements of a Successful Data Governance ProgramDATAVERSITY
940 views69 slides
Simplifying Change Data Capture using Databricks Delta by
Simplifying Change Data Capture using Databricks DeltaSimplifying Change Data Capture using Databricks Delta
Simplifying Change Data Capture using Databricks DeltaDatabricks
3.3K views38 slides

More Related Content

What's hot

HDFS Architecture by
HDFS ArchitectureHDFS Architecture
HDFS ArchitectureJeff Hammerbacher
11.9K views25 slides
Data Modeling is Data Governance by
Data Modeling is Data GovernanceData Modeling is Data Governance
Data Modeling is Data GovernanceDATAVERSITY
2.4K views22 slides
Big Data & Hadoop Introduction by
Big Data & Hadoop IntroductionBig Data & Hadoop Introduction
Big Data & Hadoop IntroductionJayant Mukherjee
3.8K views36 slides
Managing Data Integration Initiatives by
Managing Data Integration InitiativesManaging Data Integration Initiatives
Managing Data Integration InitiativesAllinConsulting
5.6K views40 slides
Best Practices Scaling Web Application Up to Your First 10 Million Users by
Best Practices Scaling Web Application Up to Your First 10 Million UsersBest Practices Scaling Web Application Up to Your First 10 Million Users
Best Practices Scaling Web Application Up to Your First 10 Million UsersAmazon Web Services
3.7K views76 slides
Data lineage and observability with Marquez - subsurface 2020 by
Data lineage and observability with Marquez - subsurface 2020Data lineage and observability with Marquez - subsurface 2020
Data lineage and observability with Marquez - subsurface 2020Julien Le Dem
698 views40 slides

What's hot(20)

Data Modeling is Data Governance by DATAVERSITY
Data Modeling is Data GovernanceData Modeling is Data Governance
Data Modeling is Data Governance
DATAVERSITY2.4K views
Managing Data Integration Initiatives by AllinConsulting
Managing Data Integration InitiativesManaging Data Integration Initiatives
Managing Data Integration Initiatives
AllinConsulting5.6K views
Best Practices Scaling Web Application Up to Your First 10 Million Users by Amazon Web Services
Best Practices Scaling Web Application Up to Your First 10 Million UsersBest Practices Scaling Web Application Up to Your First 10 Million Users
Best Practices Scaling Web Application Up to Your First 10 Million Users
Amazon Web Services3.7K views
Data lineage and observability with Marquez - subsurface 2020 by Julien Le Dem
Data lineage and observability with Marquez - subsurface 2020Data lineage and observability with Marquez - subsurface 2020
Data lineage and observability with Marquez - subsurface 2020
Julien Le Dem698 views
Anatomy of a data driven architecture - Tamir Dresher by Tamir Dresher
Anatomy of a data driven architecture - Tamir Dresher   Anatomy of a data driven architecture - Tamir Dresher
Anatomy of a data driven architecture - Tamir Dresher
Tamir Dresher355 views
Keeping the Pulse of Your Data – Why You Need Data Observability to Improve D... by DATAVERSITY
Keeping the Pulse of Your Data – Why You Need Data Observability to Improve D...Keeping the Pulse of Your Data – Why You Need Data Observability to Improve D...
Keeping the Pulse of Your Data – Why You Need Data Observability to Improve D...
DATAVERSITY392 views
Overview of big data in cloud computing by Viet-Trung TRAN
Overview of big data in cloud computingOverview of big data in cloud computing
Overview of big data in cloud computing
Viet-Trung TRAN5.3K views
Kafka streams windowing behind the curtain by confluent
Kafka streams windowing behind the curtain Kafka streams windowing behind the curtain
Kafka streams windowing behind the curtain
confluent1.3K views
Exactly-Once Financial Data Processing at Scale with Flink and Pinot by Flink Forward
Exactly-Once Financial Data Processing at Scale with Flink and PinotExactly-Once Financial Data Processing at Scale with Flink and Pinot
Exactly-Once Financial Data Processing at Scale with Flink and Pinot
Flink Forward699 views
Building Scalable Data Pipelines - 2016 DataPalooza Seattle by Evan Chan
Building Scalable Data Pipelines - 2016 DataPalooza SeattleBuilding Scalable Data Pipelines - 2016 DataPalooza Seattle
Building Scalable Data Pipelines - 2016 DataPalooza Seattle
Evan Chan5.7K views
Managing and Versioning Machine Learning Models in Python by Simon Frid
Managing and Versioning Machine Learning Models in PythonManaging and Versioning Machine Learning Models in Python
Managing and Versioning Machine Learning Models in Python
Simon Frid7.8K views
Building an Effective Data Warehouse Architecture by James Serra
Building an Effective Data Warehouse ArchitectureBuilding an Effective Data Warehouse Architecture
Building an Effective Data Warehouse Architecture
James Serra138.5K views
Palantir, Quid, RecordedFuture: Augmented Intelligence Frontier by Daniel Kornev
Palantir, Quid, RecordedFuture: Augmented Intelligence FrontierPalantir, Quid, RecordedFuture: Augmented Intelligence Frontier
Palantir, Quid, RecordedFuture: Augmented Intelligence Frontier
Daniel Kornev9.1K views
Phar Data Platform: From the Lakehouse Paradigm to the Reality by Databricks
Phar Data Platform: From the Lakehouse Paradigm to the RealityPhar Data Platform: From the Lakehouse Paradigm to the Reality
Phar Data Platform: From the Lakehouse Paradigm to the Reality
Databricks333 views
Interactive real time dashboards on data streams using Kafka, Druid, and Supe... by DataWorks Summit
Interactive real time dashboards on data streams using Kafka, Druid, and Supe...Interactive real time dashboards on data streams using Kafka, Druid, and Supe...
Interactive real time dashboards on data streams using Kafka, Druid, and Supe...
DataWorks Summit9.6K views
ELK Stack - Kibana操作實務 by Kedy Chang
ELK Stack - Kibana操作實務ELK Stack - Kibana操作實務
ELK Stack - Kibana操作實務
Kedy Chang7.4K views
Redis + Structured Streaming—A Perfect Combination to Scale-Out Your Continuo... by Databricks
Redis + Structured Streaming—A Perfect Combination to Scale-Out Your Continuo...Redis + Structured Streaming—A Perfect Combination to Scale-Out Your Continuo...
Redis + Structured Streaming—A Perfect Combination to Scale-Out Your Continuo...
Databricks1.6K views

Similar to Actor Model

"An introduction to object-oriented programming for those who have never done... by
"An introduction to object-oriented programming for those who have never done..."An introduction to object-oriented programming for those who have never done...
"An introduction to object-oriented programming for those who have never done...Fwdays
162 views16 slides
Improving application design with a rich domain model (springone 2007) by
Improving application design with a rich domain model (springone 2007)Improving application design with a rich domain model (springone 2007)
Improving application design with a rich domain model (springone 2007)Chris Richardson
8K views48 slides
Dependency injection - the right way by
Dependency injection - the right wayDependency injection - the right way
Dependency injection - the right wayThibaud Desodt
23.1K views50 slides
Clojure workshop by
Clojure workshopClojure workshop
Clojure workshopAlf Kristian Støyle
555 views126 slides
Behavioral Design Patterns by
Behavioral Design PatternsBehavioral Design Patterns
Behavioral Design PatternsLidan Hifi
2.7K views70 slides
Logging in code by
Logging in codeLogging in code
Logging in codeJannarong Wadthong
49 views47 slides

Similar to Actor Model(20)

"An introduction to object-oriented programming for those who have never done... by Fwdays
"An introduction to object-oriented programming for those who have never done..."An introduction to object-oriented programming for those who have never done...
"An introduction to object-oriented programming for those who have never done...
Fwdays162 views
Improving application design with a rich domain model (springone 2007) by Chris Richardson
Improving application design with a rich domain model (springone 2007)Improving application design with a rich domain model (springone 2007)
Improving application design with a rich domain model (springone 2007)
Chris Richardson8K views
Dependency injection - the right way by Thibaud Desodt
Dependency injection - the right wayDependency injection - the right way
Dependency injection - the right way
Thibaud Desodt23.1K views
Behavioral Design Patterns by Lidan Hifi
Behavioral Design PatternsBehavioral Design Patterns
Behavioral Design Patterns
Lidan Hifi2.7K views
Real Object-Oriented Programming: Empirically Validated Benefits of the DCI P... by James Coplien
Real Object-Oriented Programming: Empirically Validated Benefits of the DCI P...Real Object-Oriented Programming: Empirically Validated Benefits of the DCI P...
Real Object-Oriented Programming: Empirically Validated Benefits of the DCI P...
James Coplien215 views
stateyouredoingitwrongjavaone2009-090617031310-phpapp02.pdf by Hiroshi Ono
stateyouredoingitwrongjavaone2009-090617031310-phpapp02.pdfstateyouredoingitwrongjavaone2009-090617031310-phpapp02.pdf
stateyouredoingitwrongjavaone2009-090617031310-phpapp02.pdf
Hiroshi Ono623 views
stateyouredoingitwrongjavaone2009-090617031310-phpapp02.pdf by Hiroshi Ono
stateyouredoingitwrongjavaone2009-090617031310-phpapp02.pdfstateyouredoingitwrongjavaone2009-090617031310-phpapp02.pdf
stateyouredoingitwrongjavaone2009-090617031310-phpapp02.pdf
Hiroshi Ono264 views
stateyouredoingitwrongjavaone2009-090617031310-phpapp02.pdf by Hiroshi Ono
stateyouredoingitwrongjavaone2009-090617031310-phpapp02.pdfstateyouredoingitwrongjavaone2009-090617031310-phpapp02.pdf
stateyouredoingitwrongjavaone2009-090617031310-phpapp02.pdf
Hiroshi Ono413 views
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM by Jonas Bonér
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVMState: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
State: You're Doing It Wrong - Alternative Concurrency Paradigms For The JVM
Jonas Bonér11.9K views
stateyouredoingitwrongjavaone2009-090617031310-phpapp02.pdf by Hiroshi Ono
stateyouredoingitwrongjavaone2009-090617031310-phpapp02.pdfstateyouredoingitwrongjavaone2009-090617031310-phpapp02.pdf
stateyouredoingitwrongjavaone2009-090617031310-phpapp02.pdf
Hiroshi Ono690 views
Building microservices with Scala, functional domain models and Spring Boot (... by Chris Richardson
Building microservices with Scala, functional domain models and Spring Boot (...Building microservices with Scala, functional domain models and Spring Boot (...
Building microservices with Scala, functional domain models and Spring Boot (...
Chris Richardson3.7K views
Cooking your Ravioli "al dente" with Hexagonal Architecture by Jeroen Rosenberg
Cooking your Ravioli "al dente" with Hexagonal ArchitectureCooking your Ravioli "al dente" with Hexagonal Architecture
Cooking your Ravioli "al dente" with Hexagonal Architecture
Jeroen Rosenberg300 views
Evolving a Clean, Pragmatic Architecture - A Craftsman's Guide by Victor Rentea
Evolving a Clean, Pragmatic Architecture - A Craftsman's GuideEvolving a Clean, Pragmatic Architecture - A Craftsman's Guide
Evolving a Clean, Pragmatic Architecture - A Craftsman's Guide
Victor Rentea1.6K views
Advanced Object-Oriented/SOLID Principles by Jon Kruger
Advanced Object-Oriented/SOLID PrinciplesAdvanced Object-Oriented/SOLID Principles
Advanced Object-Oriented/SOLID Principles
Jon Kruger18.7K views
Building and deploying microservices with event sourcing, CQRS and Docker (Be... by Chris Richardson
Building and deploying microservices with event sourcing, CQRS and Docker (Be...Building and deploying microservices with event sourcing, CQRS and Docker (Be...
Building and deploying microservices with event sourcing, CQRS and Docker (Be...
Chris Richardson38.8K views

More from Pieter Joost van de Sande

Microservices by
MicroservicesMicroservices
MicroservicesPieter Joost van de Sande
8.7K views65 slides
Microservices by
MicroservicesMicroservices
MicroservicesPieter Joost van de Sande
1.2K views62 slides
Werckers path to Go by
Werckers path to GoWerckers path to Go
Werckers path to GoPieter Joost van de Sande
595 views41 slides
Lessons for developers - long edition by
Lessons for developers  - long editionLessons for developers  - long edition
Lessons for developers - long editionPieter Joost van de Sande
728 views38 slides
Introduction to CQRS by
Introduction to CQRSIntroduction to CQRS
Introduction to CQRSPieter Joost van de Sande
1.7K views63 slides
Introduction to (n)CQRS by
Introduction to (n)CQRSIntroduction to (n)CQRS
Introduction to (n)CQRSPieter Joost van de Sande
314 views1 slide

Recently uploaded

Introduction to Maven by
Introduction to MavenIntroduction to Maven
Introduction to MavenJohn Valentino
7 views10 slides
predicting-m3-devopsconMunich-2023-v2.pptx by
predicting-m3-devopsconMunich-2023-v2.pptxpredicting-m3-devopsconMunich-2023-v2.pptx
predicting-m3-devopsconMunich-2023-v2.pptxTier1 app
14 views33 slides
Understanding HTML terminology by
Understanding HTML terminologyUnderstanding HTML terminology
Understanding HTML terminologyartembondar5
8 views8 slides
JioEngage_Presentation.pptx by
JioEngage_Presentation.pptxJioEngage_Presentation.pptx
JioEngage_Presentation.pptxadmin125455
9 views4 slides
How to build dyanmic dashboards and ensure they always work by
How to build dyanmic dashboards and ensure they always workHow to build dyanmic dashboards and ensure they always work
How to build dyanmic dashboards and ensure they always workWiiisdom
16 views13 slides
.NET Deserialization Attacks by
.NET Deserialization Attacks.NET Deserialization Attacks
.NET Deserialization AttacksDharmalingam Ganesan
7 views50 slides

Recently uploaded(20)

predicting-m3-devopsconMunich-2023-v2.pptx by Tier1 app
predicting-m3-devopsconMunich-2023-v2.pptxpredicting-m3-devopsconMunich-2023-v2.pptx
predicting-m3-devopsconMunich-2023-v2.pptx
Tier1 app14 views
Understanding HTML terminology by artembondar5
Understanding HTML terminologyUnderstanding HTML terminology
Understanding HTML terminology
artembondar58 views
JioEngage_Presentation.pptx by admin125455
JioEngage_Presentation.pptxJioEngage_Presentation.pptx
JioEngage_Presentation.pptx
admin1254559 views
How to build dyanmic dashboards and ensure they always work by Wiiisdom
How to build dyanmic dashboards and ensure they always workHow to build dyanmic dashboards and ensure they always work
How to build dyanmic dashboards and ensure they always work
Wiiisdom16 views
Advanced API Mocking Techniques Using Wiremock by Dimpy Adhikary
Advanced API Mocking Techniques Using WiremockAdvanced API Mocking Techniques Using Wiremock
Advanced API Mocking Techniques Using Wiremock
Dimpy Adhikary5 views
Top-5-production-devconMunich-2023.pptx by Tier1 app
Top-5-production-devconMunich-2023.pptxTop-5-production-devconMunich-2023.pptx
Top-5-production-devconMunich-2023.pptx
Tier1 app10 views
How To Make Your Plans Suck Less — Maarten Dalmijn at the 57th Hands-on Agile... by Stefan Wolpers
How To Make Your Plans Suck Less — Maarten Dalmijn at the 57th Hands-on Agile...How To Make Your Plans Suck Less — Maarten Dalmijn at the 57th Hands-on Agile...
How To Make Your Plans Suck Less — Maarten Dalmijn at the 57th Hands-on Agile...
Stefan Wolpers44 views
Introduction to Git Source Control by John Valentino
Introduction to Git Source ControlIntroduction to Git Source Control
Introduction to Git Source Control
John Valentino8 views
Mobile App Development Company by Richestsoft
Mobile App Development CompanyMobile App Development Company
Mobile App Development Company
Richestsoft 5 views
aATP - New Correlation Confirmation Feature.pptx by EsatEsenek1
aATP - New Correlation Confirmation Feature.pptxaATP - New Correlation Confirmation Feature.pptx
aATP - New Correlation Confirmation Feature.pptx
EsatEsenek1222 views
Supercharging your Python Development Environment with VS Code and Dev Contai... by Dawn Wages
Supercharging your Python Development Environment with VS Code and Dev Contai...Supercharging your Python Development Environment with VS Code and Dev Contai...
Supercharging your Python Development Environment with VS Code and Dev Contai...
Dawn Wages5 views
FOSSLight Community Day 2023-11-30 by Shane Coughlan
FOSSLight Community Day 2023-11-30FOSSLight Community Day 2023-11-30
FOSSLight Community Day 2023-11-30
Shane Coughlan8 views
Top-5-production-devconMunich-2023-v2.pptx by Tier1 app
Top-5-production-devconMunich-2023-v2.pptxTop-5-production-devconMunich-2023-v2.pptx
Top-5-production-devconMunich-2023-v2.pptx
Tier1 app9 views
Streamlining Your Business Operations with Enterprise Application Integration... by Flexsin
Streamlining Your Business Operations with Enterprise Application Integration...Streamlining Your Business Operations with Enterprise Application Integration...
Streamlining Your Business Operations with Enterprise Application Integration...
Flexsin 5 views
Transport Management System - Shipment & Container Tracking by Freightoscope
Transport Management System - Shipment & Container TrackingTransport Management System - Shipment & Container Tracking
Transport Management System - Shipment & Container Tracking
Freightoscope 6 views

Actor Model