2. History of Hardware Architecture
• Single core era
• moore's law achieved by increasing clock cycles
• Multi core era
• moore's law achieved by increasing # of cores
4. PPP – Grand Challenge
• Parallel programming as easy as sequential
programming
• Moores’s law of performance – speed up 2 times year
on year
• Eliminate concurrency bugs
5. History of software applications
• pre .com era
• standalone desktop apps
• .com era
• web sites - static web pages, automated business
processes
• data controlled by software vendor
• deployed on data centers
6. contd ..
• web2.0/semantic web era
• web/networked applications
• Smart apps
• data not controlled by vendor but by the users
• deployed on cloud
7. Properties of modern day App
• Scalability
• Distributed
• Parallel & Concurrent
• Dynamic
• Agile & Swift
8. Parallelism & Concurrency
• Parallel Programming
• parallel execution of programs
• can't be performed without parallel hardware
• programs get faster
9. Parallelism & Concurrency
• Concurrent Programming
• simultaneous execution of programs
• can be performed without parallel hardware
• programs get more responsive
Both are too hard !!
10. Why Hard?
• non-determinism due to shared mutable state by
concurrent threads
• encapsulate state in actors or transactors but fundamental
problems still remains
non-determinism = parallel processing + mutable state
11. Remedy?
PREVENTION IS BETTER THAN CURE !!
• Avoid mutable state and get deterministic processing
• Which means program functionally
23. Akka - Middleware
• Concurrent, Scalable & fault-tolerant
• based on actor model
• highly performant
• event driven
• location transparency
24. Actor system
• ensemble of actors sharing common configuration
• hierarchical structure
• heavyweight
• has its own pool of resources threads
25. Supervision
• dependency relationship between actors
• supervisor - subordinate model
• supervisor monitors and reacts to any errors reported
by subordinates
• configurable supervision strategy
• lifecycle monitoring
27. Remoting
• ActorPath
• purely local - "akka://my-sys/user/service-a/worker1"
• local or remote - "akka://my-sys@host.example.com:5678
/user/service-b"
• Seamlessly send messages to actors on remote nodes
29. Dispatchers
• make akka actors tick
• manages the resources(threads) used by actors
• configure mailboxes of actors
• Examples
• fork-join-executor
• thread-pool-executor
30. Play
• ruby on rails like agility
• convention over configuration
• seamless integration with akka for scalability
• edit and test
31. Play contd ..
• an easy, out-of-the-box setup for unit and functional testing
• asynchronous HTTP request handling
• WebSocket support
• cache support (e.g. memcached)
• integrated JSON and XML handling