Actors, or the Actor model is to replace the concurrency that was done via multithreading which has shared memory, but also has problems such as synchronizations, race conditions, etc.

Actors are communicating via asynchronous messages. Never share state. An actor is single threaded.

Each thread can run multiple actors concurrently, but a single actor is in a single thread. There are two additional advantages of this model: CPU utilization within a single computer and the ability to distribute the workload to several computers.

In the cloud things get even more complicated regarding distributed computing.

### Virtual Actors

- Microsoft Research: Project Orleans
- Port to Java: Orbit (by EA)

A Virtual Actor has two more traits: it always exists and never fails so need to handle the life-cycle of virtual actors. Takes away a lot of the complexity of the existing actor systems.

New Actor types:

- Worker - an actor that does not hold state. An auto-scaling processing-unit.
- Single Activation Guaranteed to have a single active instance in the cluster. (A stateful application middle-tier.)

Actors are actually Nanonservices very similar to Microservices

- Microservices is an organizational decision, not so much a technical decision.
- Base the communication on Interfaces instead of Messages.

The speaker is VP Architecture at Gigya