Top Banner
1 Proprietary & Confidential 1 Proprietary & Confidential Using Akka Streams For Real Time Decision Making Dustin Lyons Engineering Manager, Data Platform
48

How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

Jan 23, 2018

Download

Technology

Lightbend
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

1 Proprietary & Confidential1 Proprietary & Confidential

Using Akka Streams

For Real Time Decision MakingDustin LyonsEngineering Manager, Data Platform

Page 2: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

2 Proprietary & Confidential

● Engineer turned Engineering Manager at Credit Karma

● Data & Analytics on the Platform team● Build things that make decisions on

where data should go● Lover of science fiction, sushi, and

electronic music

Who I am

Page 3: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

3 Proprietary & Confidential

Credit Karma is a free financial assistant, helping over 60 million people make progress.

Page 4: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

4 Proprietary & Confidential

1. Data Infrastructure at Credit Karma: Past and current2. Mo’ data, mo’ problems3. Akka Streams saves the day4. Results and learnings5. Q&A

Agenda for today

Page 5: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

5 Proprietary & Confidential

Data scale (MB/min) @ Credit Karma

Page 6: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

6 Proprietary & Confidential

Credit Karma data platform: PHP days

PHP Scripts

Page 7: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

7 Proprietary & Confidential

New tools to help with scale

Page 8: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

8 Proprietary & Confidential

Credit Karma data platform: Scala in 2014

Data Warehouse Import

Page 9: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

9 Proprietary & Confidential

New tools to help with concurrency

Page 10: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

10 Proprietary & Confidential

Credit Karma data platform: Akka in 2015

Analytics Export Service+

Data Warehouse Import

Page 11: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

11 Proprietary & Confidential

Credit Karma data platform: Akka in 2015

Analytics Export Service+

Data Warehouse Import

Page 12: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

12 Proprietary & Confidential

Analytics export service

Coordinator Data Transformer Workers

Kafka Importer Workers

Analytics Export Service

HTTP Ingest Server

Page 13: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

13 Proprietary & Confidential

Analytics export service

Page 14: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

14 Proprietary & Confidential

Analytics export service

Coordinator Data Transformer Workers

Kafka Importer Workers

Analytics Export Service

HTTP Ingest Server

Page 15: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

15 Proprietary & Confidential

Analytics export service

Page 16: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

16 Proprietary & Confidential

Data warehouse import

ReaderDeduplicatorProcessor Extractors

Data Warehouse Import Service

Page 17: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

17 Proprietary & Confidential

Data warehouse import

Page 18: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

18 Proprietary & Confidential

Marble maze

Page 19: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

19 Proprietary & Confidential

Marble maze

Page 20: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

20 Proprietary & Confidential

Marble maze

Page 21: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

21 Proprietary & Confidential

Marble maze

Page 22: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

22 Proprietary & Confidential

Marble maze

1Reading from file

Page 23: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

23 Proprietary & Confidential

Marble maze

1

2

Reading from file

Waiting for external service

Page 24: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

24 Proprietary & Confidential

Marble maze

1

3

2

Reading from file

Objects sit in heap

Waiting for external service

Page 25: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

25 Proprietary & Confidential

Marble maze

1

3

2

Reading from file

Objects sit in heap

Waiting for external service

4 Database Insert

Page 26: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

26 Proprietary & Confidential

Backpressure

Page 27: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

27 Proprietary & Confidential

What is backpressure?

Backpressure refers to the buildup of data at an I/O switch when buffers are full and not able to receive additional data.

No additional data packets are transferred until the bottleneck of data has been eliminated or the buffer has been emptied.

Page 28: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

28 Proprietary & Confidential

Analytics export service

Coordinator Data Transformer Workers

Kafka Importer Workers

Analytics Export Service

HTTP Ingest Server

Page 29: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

29 Proprietary & Confidential

Analytics export service

Coordinator Data Transformer Workers

Kafka Importer Workers

Analytics Export Service

HTTP Ingest Server

Page 30: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

30 Proprietary & Confidential

Analytics export service

Coordinator Data Transformer Workers

Kafka Importer Workers

Analytics Export Service

HTTP Ingest Server

Page 31: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

31 Proprietary & Confidential

Data warehouse import

ReaderDeduplicatorProcessor Extractors

Data Warehouse Import Service

Page 32: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

32 Proprietary & Confidential

Akka Streams: Backpressure in action

Actor Actor

Data

Demand

Page 33: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

33 Proprietary & Confidential

Akka Streams: Creating a stream

Source Flow Sink

Page 34: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

34 Proprietary & Confidential

Akka Streams: Built in stages

Built In Sources• actorRef • actorPublisher• fromIterator • fromFile• Apply (from a Seq)

Built In Processing Stages• map • filter• grouped • drop/take• dropWhile/takeWhile • sliding

Built In Sinks• head • last• seq • foreach• actorRef • actorSubscriber• reduce • fold

Backpressure Aware Stages• mapAsync • buffer (Backpressure)• batch • buffer (Drop)

• buffer (Fail)

Reference: http://doc.akka.io/docs/akka/current/scala/stream/stages-overview.html

Page 35: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

35 Proprietary & Confidential

Analytics export service

Coordinator Data Transformer Workers

Kafka Importer Workers

Analytics Export Service

HTTP Ingest Server

Page 36: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

36 Proprietary & Confidential

Analytics export service

Coordinator

Analytics Export Service

HTTP Ingest ServerAkka Stream

Page 37: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

37 Proprietary & Confidential

Analytics export service

Page 38: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

38 Proprietary & Confidential

Data warehouse import

ReaderDeduplicatorProcessor Extractors

Data Warehouse Import Service

Page 39: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

39 Proprietary & Confidential

Data warehouse import

Extractors

Data Warehouse Import Service

Akka Stream

Page 40: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

40 Proprietary & Confidential

Data warehouse import service

Page 41: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

41 Proprietary & Confidential

Analytics export service heap (before)

GiB

=>

Time =>

28 GiB

Red: Heap SpaceBlue: Used Heap SpacePurple: Max Heap Space

Page 42: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

42 Proprietary & Confidential

Analytics export service heap (after)

GiB

=>

Time =>

28 GiB

Page 43: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

43 Proprietary & Confidential

Data warehouse import

Page 44: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

44 Proprietary & Confidential

Data warehouse import

Page 45: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

45 Proprietary & Confidential

Data warehouse import

Page 46: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

46 Proprietary & Confidential

• Akka Streams allowed us to move data with increased throughput and optimal performance

• No longer getting paged for JVM out of memory or spending time tuning our services

• Reduced the SLA for data delivery to our business stakeholders

Final results

Page 47: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

47 Proprietary & Confidential

• Akka Actors: Great for low latency• Akka Streams: Optimized for high throughput and solving back pressure

• Built on top of Akka Actors• Don’t try to build high throughput systems with an actor system, you’ll just start

building Akka Streams

Lessons learned

Page 48: How Credit Karma Makes Real-Time Decisions For 60 Million Users With Akka Streams And Actors

48 Proprietary & Confidential48 Proprietary & Confidential

Thank you!

Q&ADustin LyonsEngineering Manager, Data Platform