SlideShare ist ein Scribd-Unternehmen logo
1 von 58
Downloaden Sie, um offline zu lesen
Jamie Allen
Sr. Director of Global Services
Effective
v2.0
@jamie_allen
Reac%ve'Applica%ons' 2'
Effective	Akka
Goal
Communicate	as	much	about	what	I’ve	learned	in	6+	years	of	actor	
development	within	one	hour	
We	will	start	with	a	cursory	overview	of	what	Actors	are	and	the	
problems	they	solve,	then	move	into	some	real-world	use	cases	and	
how	to	test	them
3
Effective	Akka
What are Actors?
• An abstraction over the primitives of concurrency, asynchrony and
resilience
• The embodiment of single-threaded interactions happening
concurrently and asynchronously across all of the resources available
to your application
• Finer-grained fault tolerance than thread pool utilities like
UncaughtExceptionHandler
• Location transparency in support of greater asynchrony and resilience
4
Effective	Akka
What are Actors?
• Actors never interact with each other via synchronous method calls,
only messages
• Actors can be domain instances:
• A “customer” representation, live in memory
• Messages arrive and tell them how the world is changing around
them
• Actors can be workers:
• Encapsulate no state, they just know what to do when they get
messages that have data in them
5
Effective	Akka
What are Actors?
• Should actors be used everywhere?
• Probably not, but they make excellent “boundaries”
• Across physical nodes
• Across services
• They’re also excellent for defining strategies to handle failures you
understand, as well as those you do not
6
Effective	Akka
What are Actors?
7
C2C1
D1 D2 D3Ac2Ac1
A1 A2 A3 A4
Customers
Accounts &
Devices
Applications
AS DS
Effective	Akka
Actors and Pure Functional Programming
are NOT Mutually Exclusive
• Pure FP is all about statically-checked correctness of logic, particularly
with type safety
• Actors are about resilience to failure beyond the type system
• Distributed systems offer no such guarantees except at the protocol
level - how do you verify types of what messages you can send/
receive through a message broker?
• There is no type checking for hardware failures or network split
brains
• Actors help you cope with problems at this level
8
USE CASES
Effective	Akka
Use Case 1
•A	large	cable	company	needs	to	stop	pinging	its	massive	database	for	
every	On	Demand	web	service	request	from	someone	using	their	remote	
control	
•A	live	cache	of	“entitlement”	data	is	required	that	is	updated	quickly	when	
a	customer	tries	to	change	their	service	
•Minimal	downtime	is	required	as	On	Demand	viewing	is	one	of	the	
corporation’s	largest	profit	centers
10
Effective	Akka
The Time-Based Approach
11
MegaCorp)
DB)
Riak)
Message)
Queue)
Warehoused)
Data)
DB)
Update)
Handler)
Transformer)
Transformer)
Transformer)
Transformer)
Transformer)
Effective	Akka
Issues
•A	missed	event	means	the	cache	is	now	out	of	synch	with	the	database	
•Assuming	we	even	know	a	failure	has	occurred	
•A	reload	of	the	cache	for	all	customers	would	be	2.5	hours	
•Latency	is	harder	to	track	and	dependent	on	“burstiness"	of	updates	
•How	do	you	represent	deleted	accounts?
12
Effective	Akka
The Self-Healing Approach
13
MegaCorp)
DB)
Riak)
Warehoused)
Data)
Account)
Retreiver)
Transformer)
Transformer)
Transformer)
Transformer)
Transformer)
Supervisor)
Supervisor)
Effective	Akka
Wins
•Fixed	and	tunable	latency	for	updates	depending	on	number	of	workers	
(and	the	size	of	their	buckets	of	accounts)	
•Resilience	via	supervision	
•Simpler	architecture	with	less	moving	parts	
•Never	out	of	synch	with	primary	database	for	longer	than	the	time	it	takes	
to	handle	the	maximum	size	of	a	bucket	of	accounts	
•Riak	handles	accounts	to	“delete”	automatically	by	tombstoning	records	
that	have	not	been	updated	within	a	time	window	(session	length	setting)
14
Effective	Akka
Use Case 2
•An	actor	will	receive	a	request	to	get	all	of	the	account	balances	for	a	
customer	(savings,	checking	and	money	market)	
•Actor	should	not	wait	to	finish	handling	one	request	before	handling	
another	
•Actor	should	receive	service	proxies	from	which	it	can	retrieve	each	
account’s	info	
•Actor	should	either	get	responses	from	all	three	within	a	specified	time,	or	
send	a	timeout	response	back	to	the	requestor
15
Effective	Akka
Cameo Pattern
16
•How	to	handle	individual	messages	to	an	actor	without	making	it	do	all	of	
the	work	before	handling	the	next	message	
•Similar	to	the	Saga	Pattern,	but	with	less	overhead	and	rules
Effective	Akka
Request Aggregation
• When an actor handles a message, it frequently has to perform
multiple interactions with other services to provide a valid response
• We do not want the actor that received the message to be tied up
performing that work
17
Request Receiver
Message 1
Handler
Message 2
Handler
Message 3
Handler
Message 1
Message 4
Message 2
Message 3
Message 4
Handler
Message 1
Handler
Effective	Akka
Transactions?
•Could	be!	
•You	have	to	write	the	logic	of	how	to	roll	back	if	anything	fails	
•But	you	have	the	control	and	the	context	to	do	it,	especially	if	your	effects	
are	going	to	multiple	external	places	or	data	stores
18
Effective	Akka
All Code is on GitHub
• I’m	going	to	be	showing	some	reasonably	complex	examples	
• Don’t	worry	about	trying	to	copy	the	code	from	the	slides	
http://github.com/jamie-allen/effective_akka
19
Effective	Akka
Use Futures and Promises?
•I	prefer	not	to.		Use	another	actor	responsible	for:	
•Capturing	the	context	(original	requestor)	
•Defining	how	to	handle	responses	from	other	services	
•Defining	the	timeout	that	will	race	against	your	
•Each	Future	and	the	resulting	AskSupport	have	an	additional	cost	that	we	
do	not	always	need	to	pay	
•Futures	do	make	an	excellent	mechanism	for	calling	into	an	actor	world	
from	a	non-actor	context	
•Futures	are	also	more	“composable”	and	can	help	define	a	problem	in	
more	simple	terms	
•Note	that	Future	failure	handling	via	callbacks	is	no	more	composable	than	
Try/Catch
20
Effective	Akka
Use Futures and Promises?
def receive = {
case GetCustomerAccountBalances(id) =>
val futSavings =
savingsAccounts ? GetCustomerAccountBalances(id)
val futChecking =
checkingAccounts ? GetCustomerAccountBalances(id)
val futMM =
moneyMarketAccounts ? GetCustomerAccountBalances(id)
val futBalances = for {
savings <- futSavings.mapTo[Option[List[(Long, BigDecimal)]]]
checking <- futChecking.mapTo[Option[List[(Long, BigDecimal)]]]
mm <- futMM.mapTo[Option[List[(Long, BigDecimal)]]]
} yield AccountBalances(savings, checking, mm)
futBalances.map(sender ! _)
}
}
21
Yuck!
Effective	Akka
Capturing the Sender
•This	is	trickier	than	it	sounds	
•You	need	the	“sender”	value	from	the	actor	that	received	the	original	
request,	not	the	sender	inside	of	the	actor	handling	it!	
•One	of	the	biggest	sources	of	actor	bugs
22
Effective	Akka
Use Futures and Promises?
def receive = {
case GetCustomerAccountBalances(id) =>
val futSavings =
savingsAccounts ? GetCustomerAccountBalances(id)
val futChecking =
checkingAccounts ? GetCustomerAccountBalances(id)
val futMM =
moneyMarketAccounts ? GetCustomerAccountBalances(id)
val futBalances = for {
savings <- futSavings.mapTo[Option[List[(Long, BigDecimal)]]]
checking <- futChecking.mapTo[Option[List[(Long, BigDecimal)]]]
mm <- futMM.mapTo[Option[List[(Long, BigDecimal)]]]
} yield AccountBalances(savings, checking, mm)
futBalances.map(sender ! _)
}
23
Bug!
Effective	Akka
Use Futures and Promises?
def receive = {
case GetCustomerAccountBalances(id) =>
val futSavings =
savingsAccounts ? GetCustomerAccountBalances(id)
val futChecking =
checkingAccounts ? GetCustomerAccountBalances(id)
val futMM =
moneyMarketAccounts ? GetCustomerAccountBalances(id)
val futBalances = for {
savings <- futSavings.mapTo[Option[List[(Long, BigDecimal)]]]
checking <- futChecking.mapTo[Option[List[(Long, BigDecimal)]]]
mm <- futMM.mapTo[Option[List[(Long, BigDecimal)]]]
} yield AccountBalances(savings, checking, mm)
futBalances.pipeTo(sender)
}
24
Fixed!
Effective	Akka
The Actor Approach
• Use an actor to encapsulate a context, such as a specific user request
• Define the values you need to retrieve/transform
• Define the behavior for what to do when you get them, or if you only
get partial responses (transaction management)
• Define the response to the original requester and SHUT DOWN THE
ACTOR
• Send the messages to start the work
• Set up the single competing timeout message send
25
Effective	Akka
Use an Anonymous Actor?
class OuterActor extends Actor
def receive = LoggingReceive {
case DoWork => {
val originalSender = sender
context.actorOf(Props(new Actor() {
def receive = LoggingReceive {
case HandleResponse(value) =>
timeoutMessager.cancel
sendResponseAndShutdown(Response(value))
case WorkTimeout =>
sendResponseAndShutdown(WorkTimeout)
}
def sendResponseAndShutdown(response: Any) = {
originalSender ! response
context.stop(self)
}
someService ! DoWork
import context.dispatcher
val timeoutMessager = context.system.scheduler.scheduleOnce(250 milliseconds) {
self ! WorkTimeout
}
}))
}
}
}
26
Anonymous	
Actor
}
Effective	Akka
Use an Anonymous Actor?
•I	call	this	the	“Extra”	Pattern	
•It’s	not	bad,	but	it	has	drawbacks:	
•Poor	stack	traces	due	to	“name	mangled”	actor	names,	like	$a	
•More	difficult	to	maintain	the	cluttered	code,	and	developers	have	to	
read	through	the	body	of	the	anonymous	actor	to	figure	out	what	it	is	
doing	
•More	likely	to	“close	over”	state
27
Effective	Akka
Create a “Cameo” Actor
•Externalize	the	behavior	of	such	an	anonymous	actor	into	a	specific	type	
•Anyone	maintaining	the	code	now	has	a	type	name	from	which	they	can	
infer	what	the	actor	is	doing	
•Most	importantly,	you	can’t	close	over	state	from	an	enclosing	actor	-	it	
must	be	passed	explicitly
28
Effective	Akka
Create a “Cameo” Actor
class WorkerActor(dependency: ActorRef) extends Actor {
def receive = LoggingReceive {
case HandleResponse(value) =>
timeoutMessager.cancel
sendResponseAndShutdown(Response(value))
case WorkTimeout =>
sendResponseAndShutdown(WorkTimeout)
}
def sendResponseAndShutdown(response: Any) = {
originalSender ! response
context.stop(self)
}
// Send request(s) required
dependency ! GetData(1L)
import context.dispatcher
val timeoutMessager = context.system.scheduler.scheduleOnce(
250 milliseconds, self, WorkTimeout)
}
class DelegatingActor extends Actor
def receive = LoggingReceive {
case DoWork => {
val originalSender = sender
val worker = context.actorOf(WorkerActor.props(), “worker”)
someService.tell(DoWork, worker)
}
}
}
29
Effective	Akka
Remember to Stop the Actor
• When	you	are	finished	handling	a	request,	ensure	that	the	actor	used	is	
shutdown	
• This	is	a	big	memory	leak	if	you	don’t	
def sendResponseAndShutdown(response: Any) = {
originalSender ! response
log.debug("Stopping context capturing actor")
context.stop(self)
}
30
Effective	Akka
Write Tests!
•Always	remember	to	write	tests	with	your	actors	
•Create	unit	tests	that	check	the	functionality	of	method	calls	without	actor	
interactions	using	TestActorRef	
•Create	integration	tests	that	send	messages	to	actors	and	check	the	
aggregated	results
31
Effective	Akka
"An AccountBalanceRetriever" should {
"return a list of account balances" in {
val savingsAccountsProxy = system.actorOf(Props(new SavingsAccountsProxyStub()), "svg")
val checkingAccountsProxy = system.actorOf(Props(new CheckingAccountsProxyStub()), "chk")
val moneyMarketAccountsProxy = system.actorOf(Props(new MoneyMarketAccountsProxyStub()), "mm")
val accountBalanceRetriever = system.actorOf(
Props(new AccountBalanceRetriever(savingsAccountsProxy,
checkingAccountsProxy,
moneyMarketAccountsProxy)),
"cameo-1")
val probe1 = TestProbe()
val probe2 = TestProbe()
within(300 milliseconds) {
probe1.send(accountBalanceRetriever, GetCustomerAccountBalances(1L))
val result = probe1.expectMsgType[AccountBalances]
result must equal(AccountBalances(Some(List((3, 15000))),
Some(List((1, 150000), (2, 29000))),
Some(List())))
}
within(300 milliseconds) {
probe2.send(accountBalanceRetriever, GetCustomerAccountBalances(2L))
val result = probe2.expectMsgType[AccountBalances]
result must equal(AccountBalances(
Some(List((6, 640000), (7, 1125000), (8, 40000))),
Some(List((5, 80000))),
Some(List((9, 640000), (10, 1125000), (11, 40000)))))
}
}
}
32
Effective	Akka
Add Non-Functional Requirements
within(300 milliseconds) {
probe1.send(accountBalanceRetriever,
GetCustomerAccountBalances(1L))
val result = probe1.expectMsgType[AccountBalances]
result must equal(AccountBalances(
Some(List((3, 15000))),
Some(List((1, 150000), (2, 29000))),
Some(List())))
}
within(300 milliseconds) {
probe2.send(accountBalanceRetriever,
GetCustomerAccountBalances(2L))
val result = probe2.expectMsgType[AccountBalances]
result must equal(AccountBalances(
Some(List((6, 640000), (7, 1125000), (8, 40000))),
Some(List((5, 80000))),
Some(List((9, 640000), (10, 1125000), (11, 40000)))))
}
33
Effective	Akka
Write Moar Tests!
"return a TimeoutException when timeout is exceeded" in {
val checkingAccountsProxy =
system.actorOf(Props(new CheckingAccountsProxyStub()),“timeout-chk")
within(250 milliseconds, 500 milliseconds) {
probe.send(accountBalanceRetriever, GetCustomerAccountBalances(1L))
probe.expectMsg(AccountRetrievalTimeout)
}
}
34
Best Practices
Effective	Akka
Avoid Complexity of Coordination
• If	your	implementation	can	be	accomplished	with	no	coordination,	you	
don’t	need	Remoting	or	Cluster	and	are	linearly	scalable	
• Use	Remoting	if:	
• You	need	to	scale	across	nodes	but	don’t	need	awareness	of	nodes	
going	down	
• You	don’t	need	to	scale	“tiers”	or	roles	in	the	cluster	independently	of	
one	another	
• You	can	get	away	with	DeathWatch	and	simple	multi-node	routing	
• Use	Cluster	if:	
• You	need	to	know	if	nodes	went	down	to	spin	up	an	actor	elsewhere	
• You	need	independent,	managed	scalability	across	tiers
36
Effective	Akka
Don’t Create Actors By Type Signature
• Akka	Actors	can	be	created	by	passing	a	type	to	the	Props	constructor	
• If	you	add	parameters	to	the	actor	later,	you	don’t	get	a	compile	time	error	
val myActor = context.actorOf(Props[AccountBalanceResponseHandler])
37
Effective	Akka
Create a Props Factory
• Creating	an	actor	within	another	actor	implicitly	closes	over	“this”	
• Necessary	until	spores	(SIP-21)	are	part	of	Scala,	always	necessary	from	
Java	
• Create	a	Props	factory	in	a	companion	object	
object AccountBalanceResponseHandler {
def props(savingsAccounts: ActorRef,
checkingAccounts: ActorRef,
moneyMarketAccounts: ActorRef,
originalSender: ActorRef): Props = {
Props(new AccountBalanceResponseHandler(savingsAccounts, checkingAccounts,
moneyMarketAccounts, originalSender))
}
}
38
Effective	Akka
Keep Your Actors Simple
• Do	not	conflate	responsibilities	in	actors	
• Becomes	hard	to	define	the	boundaries	of	responsibility	
• Supervision	becomes	more	difficult	as	you	handle	more	possibilities	
• Debugging	becomes	very	difficult
39
Effective	Akka
Be Explicit in Supervision
• Every	non-leaf	node	is	technically	a	supervisor	
• Create	explicit	supervisors	under	each	node	for	each	type	of	child	to	be	
managed
40
Effective	Akka
Conflated Supervision
41
C2C1
D1 D2 D3Ac2Ac1
A1 A2 A3 A4
Customers
Accounts &
Devices
Applications
Effective	Akka
Explicit Supervision
42
C2C1
D1 D2 D3Ac2Ac1
A1 A2 A3 A4
Customers
Accounts &
Devices
Applications
AS DS
Effective	Akka
Use Failure Zones
• Multiple	isolated	zones	with	their	own	resources	(thread	pools,	etc)	
• Prevents	starvation	of	actors	
• Prevents	issues	in	one	branch	from	affecting	another	
val responseHandler = system.actorOf(
AccountBalanceResponseHandler.props(),
"cameo-handler").withDispatcher(
"handler-dispatcher")
43
Effective	Akka
No Failure Zones
44
C2C1
D1 D2 D3Ac2Ac1
A1 A2 A3 A4
Customers
Accounts &
Devices
Applications
AS DS
Effective	Akka
Explicit Failure Zones
45
C2C1
D1 D2 D3Ac2Ac1
A1 A2 A3 A4
Customers
Applications
AS DS
Accounts &
Devices
Effective	Akka
Push, Pull or Backpressure?
• If	using	Reactive	Streams	(Akka	Streams/RxJava/etc),	you	get	back	
pressure	for	free	
• If	not,	you	have	to	choose	the	model	and	pain	you	want	to	endure	
• Pull	can	load	up	the	producer	
• Push	can	load	up	the	consumer(s)	
• Rules:	
• Start	with	no	guarantees	about	delivery	
• Add	guarantees	only	where	you	need	them	
• Retry	until	you	get	the	answer	you	expect,	or	timeout	
• Switch	your	actor	to	a	"nominal"	state	if	successful
46
Effective	Akka
Create Granular Messages
• Non-specific	messages	about	general	events	are	dangerous
47
AccountDeviceAdded(acctNum, deviceNum)
AccountsUpdated
• Can	result	in	"event	storms"	as	all	actors	react	to	them	
• Use	specific	messages	forwarded	to	actors	for	handling
• Don’t	reuse	messages,	even	if	they	have	similar	usages!	
• Hurts	refactoring
Effective	Akka
Create Specialized Exceptions
• Don't	use	java.lang.Exception	to	represent	failure	in	an	actor	
• Specific	exceptions	can	be	handled	explicitly	
• State	can	be	transferred	between	actor	incarnations	in	Akka	(if	need	be)
48
Effective	Akka
Never Reference “this”
• Actors	die	
• Doesn't	prevent	someone	from	calling	into	an	actor	with	another	thread	
• Akka	solves	this	with	the	ActorRef	abstraction	
• Never	expose/publish	“this”	
• Loop	by	sending	messages	to	“self”	
• Register	by	sending	references	to	your	“self”
49
Effective	Akka
Never Reference “this” - Exception is JMX
• Instrument	every	actor	containing	state	with	JMX	MxBeans	
• Only	use	accessors,	do	not	use	“operations”	
• Akka	Actor	Paths	are	a	natural	MxBean	ObjectName	
• Gives	you	visibility	into	state	that	no	monitoring	tool	can	provide	
• See	Will	Sargent’s	excellent	blog	post	about	this	at	tersesystems.com
50
Effective	Akka
Immutable Interactions
•All	messages	passed	between	actors	should	be	immutable	
•All	mutable	data	to	be	passed	with	messages	should	be	copied	before	
sending	
•You	don’t	want	to	accidentally	expose	the	very	state	you’re	trying	to	
protect
51
Effective	Akka
Externalize Logic
• Consider	using	external	functions	in	objects	to	encapsulate	complex	
business	logic	
• Now	only	data	passed	in	as	operands	can	be	accessed,	supports	
purity	
• Easier	to	unit	test	outside	of	actor	context	
• Not	a	rule	of	thumb,	but	something	to	consider	as	complexity	increases	
• Not	as	big	of	an	issue	with	Akka's	TestKit
52
Effective	Akka
Semantically Useful Logging
• Trace-level	logs	should	have	output	that	you	can	read	easily	
• Use	line	breaks	and	indentation	
• Both	Akka	and	Erlang	support	hooking	in	multiple	listeners	to	the	event	
log	stream
53
Effective	Akka
Monitoring is Coming Back!
54
Effective	Akka
Monitoring is Coming Back!
• Visual representations of actors at runtime are invaluable tools
• Keep an eye out for actors whose mailboxes never drain and keep
getting bigger
• Look out for message handling latency that keeps going higher
• These are signs that the actors cannot handle their load
• Optimize with routers
• Rethink usage of Dispatchers
• Look at “throughput” setting for some groups of actors to batch
message handling
55
Effective	Akka
Monitoring will be a SPI
• You can tap into the stream and work with it as well
• Will work with Graphite, Coda Hale Metrics, statsd and more
• Will require a Production Success Subscription from Typesafe
56
Effective	Akka
AsyncDebugger is Now Here in Scala IDE
v4.2!
• Feature of the FOSS Scala IDE
• Ability to “walk” an actor message send and see where it goes
• Ability to retrace backwards where a message came from, and see the
state of the actor at that time
• Ability to “walk” into Futures as well
• Documentation: http://scala-ide.org/docs/current-user-doc/features/
async-debugger/index.html
57
©Typesafe 2015 – All Rights Reserved

Weitere ähnliche Inhalte

Was ist angesagt?

Our way to microservices
Our way to microservicesOur way to microservices
Our way to microservicesAndi Pangeran
 
CQRS + Event Sourcing
CQRS + Event SourcingCQRS + Event Sourcing
CQRS + Event SourcingMike Bild
 
Guido schmutz-jax2011-event-driven soa
Guido schmutz-jax2011-event-driven soaGuido schmutz-jax2011-event-driven soa
Guido schmutz-jax2011-event-driven soaGuido Schmutz
 
Building Event Driven Services with Kafka Streams
Building Event Driven Services with Kafka StreamsBuilding Event Driven Services with Kafka Streams
Building Event Driven Services with Kafka StreamsBen Stopford
 
Maintaining Consistency for a Financial Event-Driven Architecture (Iago Borge...
Maintaining Consistency for a Financial Event-Driven Architecture (Iago Borge...Maintaining Consistency for a Financial Event-Driven Architecture (Iago Borge...
Maintaining Consistency for a Financial Event-Driven Architecture (Iago Borge...confluent
 
Unlocking the Power of Salesforce Integrations with Confluent
Unlocking the Power of Salesforce Integrations with ConfluentUnlocking the Power of Salesforce Integrations with Confluent
Unlocking the Power of Salesforce Integrations with ConfluentAaronLieberman5
 
Confluent Messaging Modernization Forum
Confluent Messaging Modernization ForumConfluent Messaging Modernization Forum
Confluent Messaging Modernization Forumconfluent
 
Agile Development From A Developers Perspective
Agile Development From A Developers PerspectiveAgile Development From A Developers Perspective
Agile Development From A Developers PerspectiveRichard Banks
 
Jay Kreps, Confluent | Kafka Summit SF 2019 Keynote ft. Dev Tagare, Lyft + Pr...
Jay Kreps, Confluent | Kafka Summit SF 2019 Keynote ft. Dev Tagare, Lyft + Pr...Jay Kreps, Confluent | Kafka Summit SF 2019 Keynote ft. Dev Tagare, Lyft + Pr...
Jay Kreps, Confluent | Kafka Summit SF 2019 Keynote ft. Dev Tagare, Lyft + Pr...confluent
 
A practical introduction to Event Sourcing and CQRS
A practical introduction to Event Sourcing and CQRSA practical introduction to Event Sourcing and CQRS
A practical introduction to Event Sourcing and CQRSRobert Lemke
 
Event Sourcing with Microservices
Event Sourcing with MicroservicesEvent Sourcing with Microservices
Event Sourcing with MicroservicesRalph Winzinger
 
Devoxx London 2017 - Rethinking Services With Stateful Streams
Devoxx London 2017 - Rethinking Services With Stateful StreamsDevoxx London 2017 - Rethinking Services With Stateful Streams
Devoxx London 2017 - Rethinking Services With Stateful StreamsBen Stopford
 
API Management, Meet Event Management
API Management, Meet Event ManagementAPI Management, Meet Event Management
API Management, Meet Event ManagementSolace
 
Event Driven Architecture
Event Driven ArchitectureEvent Driven Architecture
Event Driven Architectureandreaskallberg
 
JavaOne2017: ACID Is So Yesterday: Maintaining Data Consistency with Sagas
JavaOne2017: ACID Is So Yesterday: Maintaining Data Consistency with SagasJavaOne2017: ACID Is So Yesterday: Maintaining Data Consistency with Sagas
JavaOne2017: ACID Is So Yesterday: Maintaining Data Consistency with SagasChris Richardson
 
Event Driven Services Part 2: Building Event-Driven Services with Apache Kafka
Event Driven Services Part 2:  Building Event-Driven Services with Apache KafkaEvent Driven Services Part 2:  Building Event-Driven Services with Apache Kafka
Event Driven Services Part 2: Building Event-Driven Services with Apache KafkaBen Stopford
 
Putting the Micro into Microservices with Stateful Stream Processing
Putting the Micro into Microservices with Stateful Stream ProcessingPutting the Micro into Microservices with Stateful Stream Processing
Putting the Micro into Microservices with Stateful Stream Processingconfluent
 
NDC London 2017 - The Data Dichotomy- Rethinking Data and Services with Streams
NDC London 2017  - The Data Dichotomy- Rethinking Data and Services with StreamsNDC London 2017  - The Data Dichotomy- Rethinking Data and Services with Streams
NDC London 2017 - The Data Dichotomy- Rethinking Data and Services with StreamsBen Stopford
 
Event-Driven Architecture (EDA)
Event-Driven Architecture (EDA)Event-Driven Architecture (EDA)
Event-Driven Architecture (EDA)WSO2
 

Was ist angesagt? (20)

Our way to microservices
Our way to microservicesOur way to microservices
Our way to microservices
 
CQRS + Event Sourcing
CQRS + Event SourcingCQRS + Event Sourcing
CQRS + Event Sourcing
 
Guido schmutz-jax2011-event-driven soa
Guido schmutz-jax2011-event-driven soaGuido schmutz-jax2011-event-driven soa
Guido schmutz-jax2011-event-driven soa
 
Building Event Driven Services with Kafka Streams
Building Event Driven Services with Kafka StreamsBuilding Event Driven Services with Kafka Streams
Building Event Driven Services with Kafka Streams
 
Maintaining Consistency for a Financial Event-Driven Architecture (Iago Borge...
Maintaining Consistency for a Financial Event-Driven Architecture (Iago Borge...Maintaining Consistency for a Financial Event-Driven Architecture (Iago Borge...
Maintaining Consistency for a Financial Event-Driven Architecture (Iago Borge...
 
Unlocking the Power of Salesforce Integrations with Confluent
Unlocking the Power of Salesforce Integrations with ConfluentUnlocking the Power of Salesforce Integrations with Confluent
Unlocking the Power of Salesforce Integrations with Confluent
 
Confluent Messaging Modernization Forum
Confluent Messaging Modernization ForumConfluent Messaging Modernization Forum
Confluent Messaging Modernization Forum
 
Agile Development From A Developers Perspective
Agile Development From A Developers PerspectiveAgile Development From A Developers Perspective
Agile Development From A Developers Perspective
 
Jay Kreps, Confluent | Kafka Summit SF 2019 Keynote ft. Dev Tagare, Lyft + Pr...
Jay Kreps, Confluent | Kafka Summit SF 2019 Keynote ft. Dev Tagare, Lyft + Pr...Jay Kreps, Confluent | Kafka Summit SF 2019 Keynote ft. Dev Tagare, Lyft + Pr...
Jay Kreps, Confluent | Kafka Summit SF 2019 Keynote ft. Dev Tagare, Lyft + Pr...
 
A practical introduction to Event Sourcing and CQRS
A practical introduction to Event Sourcing and CQRSA practical introduction to Event Sourcing and CQRS
A practical introduction to Event Sourcing and CQRS
 
Event Sourcing with Microservices
Event Sourcing with MicroservicesEvent Sourcing with Microservices
Event Sourcing with Microservices
 
Devoxx London 2017 - Rethinking Services With Stateful Streams
Devoxx London 2017 - Rethinking Services With Stateful StreamsDevoxx London 2017 - Rethinking Services With Stateful Streams
Devoxx London 2017 - Rethinking Services With Stateful Streams
 
API Management, Meet Event Management
API Management, Meet Event ManagementAPI Management, Meet Event Management
API Management, Meet Event Management
 
Event Driven Architecture
Event Driven ArchitectureEvent Driven Architecture
Event Driven Architecture
 
JavaOne2017: ACID Is So Yesterday: Maintaining Data Consistency with Sagas
JavaOne2017: ACID Is So Yesterday: Maintaining Data Consistency with SagasJavaOne2017: ACID Is So Yesterday: Maintaining Data Consistency with Sagas
JavaOne2017: ACID Is So Yesterday: Maintaining Data Consistency with Sagas
 
Event Driven Services Part 2: Building Event-Driven Services with Apache Kafka
Event Driven Services Part 2:  Building Event-Driven Services with Apache KafkaEvent Driven Services Part 2:  Building Event-Driven Services with Apache Kafka
Event Driven Services Part 2: Building Event-Driven Services with Apache Kafka
 
Putting the Micro into Microservices with Stateful Stream Processing
Putting the Micro into Microservices with Stateful Stream ProcessingPutting the Micro into Microservices with Stateful Stream Processing
Putting the Micro into Microservices with Stateful Stream Processing
 
Reactive Architectures
Reactive ArchitecturesReactive Architectures
Reactive Architectures
 
NDC London 2017 - The Data Dichotomy- Rethinking Data and Services with Streams
NDC London 2017  - The Data Dichotomy- Rethinking Data and Services with StreamsNDC London 2017  - The Data Dichotomy- Rethinking Data and Services with Streams
NDC London 2017 - The Data Dichotomy- Rethinking Data and Services with Streams
 
Event-Driven Architecture (EDA)
Event-Driven Architecture (EDA)Event-Driven Architecture (EDA)
Event-Driven Architecture (EDA)
 

Andere mochten auch

Cassandra and Spark - Tim Berglund
Cassandra and Spark - Tim BerglundCassandra and Spark - Tim Berglund
Cassandra and Spark - Tim BerglundJAXLondon_Conference
 
Sane Sharding with Akka Cluster
Sane Sharding with Akka ClusterSane Sharding with Akka Cluster
Sane Sharding with Akka Clustermiciek
 
From 1 RPM to 1,000 RPM - succeeding in a software-defined economy - Sacha La...
From 1 RPM to 1,000 RPM - succeeding in a software-defined economy - Sacha La...From 1 RPM to 1,000 RPM - succeeding in a software-defined economy - Sacha La...
From 1 RPM to 1,000 RPM - succeeding in a software-defined economy - Sacha La...JAXLondon_Conference
 
Fowler, Fielding, and Haussmann - network-based architectures - Eric Horesnyi
Fowler, Fielding, and Haussmann - network-based architectures - Eric HoresnyiFowler, Fielding, and Haussmann - network-based architectures - Eric Horesnyi
Fowler, Fielding, and Haussmann - network-based architectures - Eric HoresnyiJAXLondon_Conference
 
Spring Boot in the Web Tier - Dave Syer
Spring Boot in the Web Tier - Dave SyerSpring Boot in the Web Tier - Dave Syer
Spring Boot in the Web Tier - Dave SyerJAXLondon_Conference
 
The Unit Test is dead. Long live the Unit Test! - Colin Vipurs
The Unit Test is dead. Long live the Unit Test! - Colin VipursThe Unit Test is dead. Long live the Unit Test! - Colin Vipurs
The Unit Test is dead. Long live the Unit Test! - Colin VipursJAXLondon_Conference
 
Java Generics Past, Present and Future - Richard Warburton, Raoul-Gabriel Urma
Java Generics Past, Present and Future - Richard Warburton, Raoul-Gabriel UrmaJava Generics Past, Present and Future - Richard Warburton, Raoul-Gabriel Urma
Java Generics Past, Present and Future - Richard Warburton, Raoul-Gabriel UrmaJAXLondon_Conference
 
VC from the inside - a techie's perspective - Adrian Colyer
VC from the inside - a techie's perspective - Adrian ColyerVC from the inside - a techie's perspective - Adrian Colyer
VC from the inside - a techie's perspective - Adrian ColyerJAXLondon_Conference
 
Love your architecture - Alexander von Zitzewitz
Love your architecture - Alexander von ZitzewitzLove your architecture - Alexander von Zitzewitz
Love your architecture - Alexander von ZitzewitzJAXLondon_Conference
 
The art of shifting perspectives - Rachel Davies
The art of shifting perspectives - Rachel DaviesThe art of shifting perspectives - Rachel Davies
The art of shifting perspectives - Rachel DaviesJAXLondon_Conference
 
Hybrid solutions – combining in memory solutions with SSD - Christos Erotocritou
Hybrid solutions – combining in memory solutions with SSD - Christos ErotocritouHybrid solutions – combining in memory solutions with SSD - Christos Erotocritou
Hybrid solutions – combining in memory solutions with SSD - Christos ErotocritouJAXLondon_Conference
 
DevOps, what should you decide, when, why & how - Vinita Rathi
DevOps, what should you decide, when, why & how - Vinita RathiDevOps, what should you decide, when, why & how - Vinita Rathi
DevOps, what should you decide, when, why & how - Vinita RathiJAXLondon_Conference
 
Thinking fast and slow with software development - Daniel Bryant
Thinking fast and slow with software development - Daniel BryantThinking fast and slow with software development - Daniel Bryant
Thinking fast and slow with software development - Daniel BryantJAXLondon_Conference
 
Use your type system; write less code - Samir Talwar
Use your type system; write less code - Samir TalwarUse your type system; write less code - Samir Talwar
Use your type system; write less code - Samir TalwarJAXLondon_Conference
 
How to defeat feature gluttony - Kasia Mrowca
How to defeat feature gluttony - Kasia MrowcaHow to defeat feature gluttony - Kasia Mrowca
How to defeat feature gluttony - Kasia MrowcaJAXLondon_Conference
 
Benchmarking - you're doing it wrong - Aysylu Greenberg
Benchmarking - you're doing it wrong - Aysylu GreenbergBenchmarking - you're doing it wrong - Aysylu Greenberg
Benchmarking - you're doing it wrong - Aysylu GreenbergJAXLondon_Conference
 
Coding for desktop and mobile with HTML5 and Java EE 7 - Geertjan Wielenga
Coding for desktop and mobile with HTML5 and Java EE 7 - Geertjan WielengaCoding for desktop and mobile with HTML5 and Java EE 7 - Geertjan Wielenga
Coding for desktop and mobile with HTML5 and Java EE 7 - Geertjan WielengaJAXLondon_Conference
 

Andere mochten auch (20)

Cassandra and Spark - Tim Berglund
Cassandra and Spark - Tim BerglundCassandra and Spark - Tim Berglund
Cassandra and Spark - Tim Berglund
 
Sane Sharding with Akka Cluster
Sane Sharding with Akka ClusterSane Sharding with Akka Cluster
Sane Sharding with Akka Cluster
 
From 1 RPM to 1,000 RPM - succeeding in a software-defined economy - Sacha La...
From 1 RPM to 1,000 RPM - succeeding in a software-defined economy - Sacha La...From 1 RPM to 1,000 RPM - succeeding in a software-defined economy - Sacha La...
From 1 RPM to 1,000 RPM - succeeding in a software-defined economy - Sacha La...
 
custom bracelets
custom braceletscustom bracelets
custom bracelets
 
ws_spring2015_e
ws_spring2015_ews_spring2015_e
ws_spring2015_e
 
Fowler, Fielding, and Haussmann - network-based architectures - Eric Horesnyi
Fowler, Fielding, and Haussmann - network-based architectures - Eric HoresnyiFowler, Fielding, and Haussmann - network-based architectures - Eric Horesnyi
Fowler, Fielding, and Haussmann - network-based architectures - Eric Horesnyi
 
Spring Boot in the Web Tier - Dave Syer
Spring Boot in the Web Tier - Dave SyerSpring Boot in the Web Tier - Dave Syer
Spring Boot in the Web Tier - Dave Syer
 
The Unit Test is dead. Long live the Unit Test! - Colin Vipurs
The Unit Test is dead. Long live the Unit Test! - Colin VipursThe Unit Test is dead. Long live the Unit Test! - Colin Vipurs
The Unit Test is dead. Long live the Unit Test! - Colin Vipurs
 
Feliz natal!
Feliz natal!Feliz natal!
Feliz natal!
 
Java Generics Past, Present and Future - Richard Warburton, Raoul-Gabriel Urma
Java Generics Past, Present and Future - Richard Warburton, Raoul-Gabriel UrmaJava Generics Past, Present and Future - Richard Warburton, Raoul-Gabriel Urma
Java Generics Past, Present and Future - Richard Warburton, Raoul-Gabriel Urma
 
VC from the inside - a techie's perspective - Adrian Colyer
VC from the inside - a techie's perspective - Adrian ColyerVC from the inside - a techie's perspective - Adrian Colyer
VC from the inside - a techie's perspective - Adrian Colyer
 
Love your architecture - Alexander von Zitzewitz
Love your architecture - Alexander von ZitzewitzLove your architecture - Alexander von Zitzewitz
Love your architecture - Alexander von Zitzewitz
 
The art of shifting perspectives - Rachel Davies
The art of shifting perspectives - Rachel DaviesThe art of shifting perspectives - Rachel Davies
The art of shifting perspectives - Rachel Davies
 
Hybrid solutions – combining in memory solutions with SSD - Christos Erotocritou
Hybrid solutions – combining in memory solutions with SSD - Christos ErotocritouHybrid solutions – combining in memory solutions with SSD - Christos Erotocritou
Hybrid solutions – combining in memory solutions with SSD - Christos Erotocritou
 
DevOps, what should you decide, when, why & how - Vinita Rathi
DevOps, what should you decide, when, why & how - Vinita RathiDevOps, what should you decide, when, why & how - Vinita Rathi
DevOps, what should you decide, when, why & how - Vinita Rathi
 
Thinking fast and slow with software development - Daniel Bryant
Thinking fast and slow with software development - Daniel BryantThinking fast and slow with software development - Daniel Bryant
Thinking fast and slow with software development - Daniel Bryant
 
Use your type system; write less code - Samir Talwar
Use your type system; write less code - Samir TalwarUse your type system; write less code - Samir Talwar
Use your type system; write less code - Samir Talwar
 
How to defeat feature gluttony - Kasia Mrowca
How to defeat feature gluttony - Kasia MrowcaHow to defeat feature gluttony - Kasia Mrowca
How to defeat feature gluttony - Kasia Mrowca
 
Benchmarking - you're doing it wrong - Aysylu Greenberg
Benchmarking - you're doing it wrong - Aysylu GreenbergBenchmarking - you're doing it wrong - Aysylu Greenberg
Benchmarking - you're doing it wrong - Aysylu Greenberg
 
Coding for desktop and mobile with HTML5 and Java EE 7 - Geertjan Wielenga
Coding for desktop and mobile with HTML5 and Java EE 7 - Geertjan WielengaCoding for desktop and mobile with HTML5 and Java EE 7 - Geertjan Wielenga
Coding for desktop and mobile with HTML5 and Java EE 7 - Geertjan Wielenga
 

Ähnlich wie Effective Akka v2.0 - Jamie Allen

Event-Driven Architectures Done Right | Tim Berglund, Confluent
Event-Driven Architectures Done Right | Tim Berglund, ConfluentEvent-Driven Architectures Done Right | Tim Berglund, Confluent
Event-Driven Architectures Done Right | Tim Berglund, ConfluentHostedbyConfluent
 
AWS Public Sector Symposium 2014 Canberra | Putting the "Crowd" to work in th...
AWS Public Sector Symposium 2014 Canberra | Putting the "Crowd" to work in th...AWS Public Sector Symposium 2014 Canberra | Putting the "Crowd" to work in th...
AWS Public Sector Symposium 2014 Canberra | Putting the "Crowd" to work in th...Amazon Web Services
 
Building Reactive applications with Akka
Building Reactive applications with AkkaBuilding Reactive applications with Akka
Building Reactive applications with AkkaKnoldus Inc.
 
The art of the event streaming application: streams, stream processors and sc...
The art of the event streaming application: streams, stream processors and sc...The art of the event streaming application: streams, stream processors and sc...
The art of the event streaming application: streams, stream processors and sc...confluent
 
Kafka summit SF 2019 - the art of the event-streaming app
Kafka summit SF 2019 - the art of the event-streaming appKafka summit SF 2019 - the art of the event-streaming app
Kafka summit SF 2019 - the art of the event-streaming appNeil Avery
 
AWS re:Invent 2016: How Fulfillment by Amazon (FBA) and Scopely Improved Resu...
AWS re:Invent 2016: How Fulfillment by Amazon (FBA) and Scopely Improved Resu...AWS re:Invent 2016: How Fulfillment by Amazon (FBA) and Scopely Improved Resu...
AWS re:Invent 2016: How Fulfillment by Amazon (FBA) and Scopely Improved Resu...Amazon Web Services
 
Eric Proegler Oredev Performance Testing in New Contexts
Eric Proegler Oredev Performance Testing in New ContextsEric Proegler Oredev Performance Testing in New Contexts
Eric Proegler Oredev Performance Testing in New ContextsEric Proegler
 
Kafka and event driven architecture -og yatra20
Kafka and event driven architecture -og yatra20Kafka and event driven architecture -og yatra20
Kafka and event driven architecture -og yatra20Vinay Kumar
 
Kafka and event driven architecture -apacoug20
Kafka and event driven architecture -apacoug20Kafka and event driven architecture -apacoug20
Kafka and event driven architecture -apacoug20Vinay Kumar
 
Service Mesh CTO Forum (Draft 3)
Service Mesh CTO Forum (Draft 3)Service Mesh CTO Forum (Draft 3)
Service Mesh CTO Forum (Draft 3)Rick Hightower
 
Patterns of Distributed Application Design
Patterns of Distributed Application DesignPatterns of Distributed Application Design
Patterns of Distributed Application DesignGlobalLogic Ukraine
 
Building Event-Driven Services with Apache Kafka
Building Event-Driven Services with Apache KafkaBuilding Event-Driven Services with Apache Kafka
Building Event-Driven Services with Apache Kafkaconfluent
 
Tef con2016 (1)
Tef con2016 (1)Tef con2016 (1)
Tef con2016 (1)ggarber
 
Network Solution
Network SolutionNetwork Solution
Network Solutionchris20854
 
Software Architectures, Week 4 - Message-based Architectures, Message Bus
Software Architectures, Week 4 - Message-based Architectures, Message BusSoftware Architectures, Week 4 - Message-based Architectures, Message Bus
Software Architectures, Week 4 - Message-based Architectures, Message BusAngelos Kapsimanis
 
Tokyo AK Meetup Speedtest - Share.pdf
Tokyo AK Meetup Speedtest - Share.pdfTokyo AK Meetup Speedtest - Share.pdf
Tokyo AK Meetup Speedtest - Share.pdfssuser2ae721
 
Patterns of Distributed Application Design
Patterns of Distributed Application DesignPatterns of Distributed Application Design
Patterns of Distributed Application DesignOrkhan Gasimov
 
The End of a Myth: Ultra-Scalable Transactional Management
The End of a Myth: Ultra-Scalable Transactional ManagementThe End of a Myth: Ultra-Scalable Transactional Management
The End of a Myth: Ultra-Scalable Transactional ManagementRicardo Jimenez-Peris
 

Ähnlich wie Effective Akka v2.0 - Jamie Allen (20)

Event-Driven Architectures Done Right | Tim Berglund, Confluent
Event-Driven Architectures Done Right | Tim Berglund, ConfluentEvent-Driven Architectures Done Right | Tim Berglund, Confluent
Event-Driven Architectures Done Right | Tim Berglund, Confluent
 
AWS Public Sector Symposium 2014 Canberra | Putting the "Crowd" to work in th...
AWS Public Sector Symposium 2014 Canberra | Putting the "Crowd" to work in th...AWS Public Sector Symposium 2014 Canberra | Putting the "Crowd" to work in th...
AWS Public Sector Symposium 2014 Canberra | Putting the "Crowd" to work in th...
 
Building Reactive applications with Akka
Building Reactive applications with AkkaBuilding Reactive applications with Akka
Building Reactive applications with Akka
 
The art of the event streaming application: streams, stream processors and sc...
The art of the event streaming application: streams, stream processors and sc...The art of the event streaming application: streams, stream processors and sc...
The art of the event streaming application: streams, stream processors and sc...
 
Kafka summit SF 2019 - the art of the event-streaming app
Kafka summit SF 2019 - the art of the event-streaming appKafka summit SF 2019 - the art of the event-streaming app
Kafka summit SF 2019 - the art of the event-streaming app
 
AWS re:Invent 2016: How Fulfillment by Amazon (FBA) and Scopely Improved Resu...
AWS re:Invent 2016: How Fulfillment by Amazon (FBA) and Scopely Improved Resu...AWS re:Invent 2016: How Fulfillment by Amazon (FBA) and Scopely Improved Resu...
AWS re:Invent 2016: How Fulfillment by Amazon (FBA) and Scopely Improved Resu...
 
Eric Proegler Oredev Performance Testing in New Contexts
Eric Proegler Oredev Performance Testing in New ContextsEric Proegler Oredev Performance Testing in New Contexts
Eric Proegler Oredev Performance Testing in New Contexts
 
Kafka and event driven architecture -og yatra20
Kafka and event driven architecture -og yatra20Kafka and event driven architecture -og yatra20
Kafka and event driven architecture -og yatra20
 
Kafka and event driven architecture -apacoug20
Kafka and event driven architecture -apacoug20Kafka and event driven architecture -apacoug20
Kafka and event driven architecture -apacoug20
 
Service Mesh CTO Forum (Draft 3)
Service Mesh CTO Forum (Draft 3)Service Mesh CTO Forum (Draft 3)
Service Mesh CTO Forum (Draft 3)
 
Patterns of Distributed Application Design
Patterns of Distributed Application DesignPatterns of Distributed Application Design
Patterns of Distributed Application Design
 
Building Event-Driven Services with Apache Kafka
Building Event-Driven Services with Apache KafkaBuilding Event-Driven Services with Apache Kafka
Building Event-Driven Services with Apache Kafka
 
Tef con2016 (1)
Tef con2016 (1)Tef con2016 (1)
Tef con2016 (1)
 
Network Solution
Network SolutionNetwork Solution
Network Solution
 
Software Architectures, Week 4 - Message-based Architectures, Message Bus
Software Architectures, Week 4 - Message-based Architectures, Message BusSoftware Architectures, Week 4 - Message-based Architectures, Message Bus
Software Architectures, Week 4 - Message-based Architectures, Message Bus
 
Tokyo AK Meetup Speedtest - Share.pdf
Tokyo AK Meetup Speedtest - Share.pdfTokyo AK Meetup Speedtest - Share.pdf
Tokyo AK Meetup Speedtest - Share.pdf
 
Patterns of Distributed Application Design
Patterns of Distributed Application DesignPatterns of Distributed Application Design
Patterns of Distributed Application Design
 
Praveen cv performancetesting
Praveen cv performancetestingPraveen cv performancetesting
Praveen cv performancetesting
 
The End of a Myth: Ultra-Scalable Transactional Management
The End of a Myth: Ultra-Scalable Transactional ManagementThe End of a Myth: Ultra-Scalable Transactional Management
The End of a Myth: Ultra-Scalable Transactional Management
 
Wavefront-by-VMware-April-2019
Wavefront-by-VMware-April-2019Wavefront-by-VMware-April-2019
Wavefront-by-VMware-April-2019
 

Mehr von JAXLondon_Conference

All change! How the new Economics of Cloud will make you think differently ab...
All change! How the new Economics of Cloud will make you think differently ab...All change! How the new Economics of Cloud will make you think differently ab...
All change! How the new Economics of Cloud will make you think differently ab...JAXLondon_Conference
 
Stop guessing, start testing – mobile testing done right - Timo Euteneuer
Stop guessing, start testing – mobile testing done right - Timo EuteneuerStop guessing, start testing – mobile testing done right - Timo Euteneuer
Stop guessing, start testing – mobile testing done right - Timo EuteneuerJAXLondon_Conference
 
Java Generics Past, Present and Future - Richard Warburton, Raoul-Gabriel Urma
Java Generics Past, Present and Future - Richard Warburton, Raoul-Gabriel UrmaJava Generics Past, Present and Future - Richard Warburton, Raoul-Gabriel Urma
Java Generics Past, Present and Future - Richard Warburton, Raoul-Gabriel UrmaJAXLondon_Conference
 
Smoothing the continuous delivery path – a tale of two teams - Lyndsay Prewer
Smoothing the continuous delivery path – a tale of two teams - Lyndsay PrewerSmoothing the continuous delivery path – a tale of two teams - Lyndsay Prewer
Smoothing the continuous delivery path – a tale of two teams - Lyndsay PrewerJAXLondon_Conference
 
The java memory model and the mutability matrix of pain - Jamie Allen
The java memory model and the mutability matrix of pain - Jamie AllenThe java memory model and the mutability matrix of pain - Jamie Allen
The java memory model and the mutability matrix of pain - Jamie AllenJAXLondon_Conference
 
Microservices from dream to reality in an hour - Dr. Holly Cummins
Microservices from dream to reality in an hour - Dr. Holly CumminsMicroservices from dream to reality in an hour - Dr. Holly Cummins
Microservices from dream to reality in an hour - Dr. Holly CumminsJAXLondon_Conference
 
Java vs. Java Script for enterprise web applications - Chris Bailey
Java vs. Java Script for enterprise web applications - Chris BaileyJava vs. Java Script for enterprise web applications - Chris Bailey
Java vs. Java Script for enterprise web applications - Chris BaileyJAXLondon_Conference
 
Java generics past, present and future - Raoul-Gabriel Urma, Richard Warburton
Java generics past, present and future - Raoul-Gabriel Urma, Richard WarburtonJava generics past, present and future - Raoul-Gabriel Urma, Richard Warburton
Java generics past, present and future - Raoul-Gabriel Urma, Richard WarburtonJAXLondon_Conference
 
Java 8 best practices - Stephen Colebourne
Java 8 best practices - Stephen ColebourneJava 8 best practices - Stephen Colebourne
Java 8 best practices - Stephen ColebourneJAXLondon_Conference
 
Intuitions for scaling data centric architectures - Benjamin Stopford
Intuitions for scaling data centric architectures - Benjamin StopfordIntuitions for scaling data centric architectures - Benjamin Stopford
Intuitions for scaling data centric architectures - Benjamin StopfordJAXLondon_Conference
 
Getting started with Spring Cloud - Dave Syer
Getting started with Spring Cloud - Dave SyerGetting started with Spring Cloud - Dave Syer
Getting started with Spring Cloud - Dave SyerJAXLondon_Conference
 
Garbage Collection Pause Times - Angelika Langer
Garbage Collection Pause Times - Angelika LangerGarbage Collection Pause Times - Angelika Langer
Garbage Collection Pause Times - Angelika LangerJAXLondon_Conference
 
From 0 to 60 million users scaling with microservices and multi cloud archite...
From 0 to 60 million users scaling with microservices and multi cloud archite...From 0 to 60 million users scaling with microservices and multi cloud archite...
From 0 to 60 million users scaling with microservices and multi cloud archite...JAXLondon_Conference
 
Events on the outside, on the inside and at the core - Chris Richardson
Events on the outside, on the inside and at the core - Chris RichardsonEvents on the outside, on the inside and at the core - Chris Richardson
Events on the outside, on the inside and at the core - Chris RichardsonJAXLondon_Conference
 
DevOps and the cloud: all hail the (developer) king - Daniel Bryant, Steve Poole
DevOps and the cloud: all hail the (developer) king - Daniel Bryant, Steve PooleDevOps and the cloud: all hail the (developer) king - Daniel Bryant, Steve Poole
DevOps and the cloud: all hail the (developer) king - Daniel Bryant, Steve PooleJAXLondon_Conference
 

Mehr von JAXLondon_Conference (16)

All change! How the new Economics of Cloud will make you think differently ab...
All change! How the new Economics of Cloud will make you think differently ab...All change! How the new Economics of Cloud will make you think differently ab...
All change! How the new Economics of Cloud will make you think differently ab...
 
Stop guessing, start testing – mobile testing done right - Timo Euteneuer
Stop guessing, start testing – mobile testing done right - Timo EuteneuerStop guessing, start testing – mobile testing done right - Timo Euteneuer
Stop guessing, start testing – mobile testing done right - Timo Euteneuer
 
Java Generics Past, Present and Future - Richard Warburton, Raoul-Gabriel Urma
Java Generics Past, Present and Future - Richard Warburton, Raoul-Gabriel UrmaJava Generics Past, Present and Future - Richard Warburton, Raoul-Gabriel Urma
Java Generics Past, Present and Future - Richard Warburton, Raoul-Gabriel Urma
 
Smoothing the continuous delivery path – a tale of two teams - Lyndsay Prewer
Smoothing the continuous delivery path – a tale of two teams - Lyndsay PrewerSmoothing the continuous delivery path – a tale of two teams - Lyndsay Prewer
Smoothing the continuous delivery path – a tale of two teams - Lyndsay Prewer
 
The java memory model and the mutability matrix of pain - Jamie Allen
The java memory model and the mutability matrix of pain - Jamie AllenThe java memory model and the mutability matrix of pain - Jamie Allen
The java memory model and the mutability matrix of pain - Jamie Allen
 
Microservices from dream to reality in an hour - Dr. Holly Cummins
Microservices from dream to reality in an hour - Dr. Holly CumminsMicroservices from dream to reality in an hour - Dr. Holly Cummins
Microservices from dream to reality in an hour - Dr. Holly Cummins
 
Lambdas puzzler - Peter Lawrey
Lambdas puzzler - Peter LawreyLambdas puzzler - Peter Lawrey
Lambdas puzzler - Peter Lawrey
 
Java vs. Java Script for enterprise web applications - Chris Bailey
Java vs. Java Script for enterprise web applications - Chris BaileyJava vs. Java Script for enterprise web applications - Chris Bailey
Java vs. Java Script for enterprise web applications - Chris Bailey
 
Java generics past, present and future - Raoul-Gabriel Urma, Richard Warburton
Java generics past, present and future - Raoul-Gabriel Urma, Richard WarburtonJava generics past, present and future - Raoul-Gabriel Urma, Richard Warburton
Java generics past, present and future - Raoul-Gabriel Urma, Richard Warburton
 
Java 8 best practices - Stephen Colebourne
Java 8 best practices - Stephen ColebourneJava 8 best practices - Stephen Colebourne
Java 8 best practices - Stephen Colebourne
 
Intuitions for scaling data centric architectures - Benjamin Stopford
Intuitions for scaling data centric architectures - Benjamin StopfordIntuitions for scaling data centric architectures - Benjamin Stopford
Intuitions for scaling data centric architectures - Benjamin Stopford
 
Getting started with Spring Cloud - Dave Syer
Getting started with Spring Cloud - Dave SyerGetting started with Spring Cloud - Dave Syer
Getting started with Spring Cloud - Dave Syer
 
Garbage Collection Pause Times - Angelika Langer
Garbage Collection Pause Times - Angelika LangerGarbage Collection Pause Times - Angelika Langer
Garbage Collection Pause Times - Angelika Langer
 
From 0 to 60 million users scaling with microservices and multi cloud archite...
From 0 to 60 million users scaling with microservices and multi cloud archite...From 0 to 60 million users scaling with microservices and multi cloud archite...
From 0 to 60 million users scaling with microservices and multi cloud archite...
 
Events on the outside, on the inside and at the core - Chris Richardson
Events on the outside, on the inside and at the core - Chris RichardsonEvents on the outside, on the inside and at the core - Chris Richardson
Events on the outside, on the inside and at the core - Chris Richardson
 
DevOps and the cloud: all hail the (developer) king - Daniel Bryant, Steve Poole
DevOps and the cloud: all hail the (developer) king - Daniel Bryant, Steve PooleDevOps and the cloud: all hail the (developer) king - Daniel Bryant, Steve Poole
DevOps and the cloud: all hail the (developer) king - Daniel Bryant, Steve Poole
 

Kürzlich hochgeladen

The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfCionsystems
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 

Kürzlich hochgeladen (20)

The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdf
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 

Effective Akka v2.0 - Jamie Allen