SciOps, because Data Scientists need DevOps too! · Language agnostic - just connect to rabbitmq...

23
SciOps, because Data Scientists need DevOps too!

Transcript of SciOps, because Data Scientists need DevOps too! · Language agnostic - just connect to rabbitmq...

Page 1: SciOps, because Data Scientists need DevOps too! · Language agnostic - just connect to rabbitmq Connectors handle parallelism Prefer using native message passing Go -> Channels Scala

SciOps, because Data Scientists need DevOps too!

Page 2: SciOps, because Data Scientists need DevOps too! · Language agnostic - just connect to rabbitmq Connectors handle parallelism Prefer using native message passing Go -> Channels Scala

What happens when an idea is born?

Page 3: SciOps, because Data Scientists need DevOps too! · Language agnostic - just connect to rabbitmq Connectors handle parallelism Prefer using native message passing Go -> Channels Scala
Page 4: SciOps, because Data Scientists need DevOps too! · Language agnostic - just connect to rabbitmq Connectors handle parallelism Prefer using native message passing Go -> Channels Scala

What actually happens

Page 5: SciOps, because Data Scientists need DevOps too! · Language agnostic - just connect to rabbitmq Connectors handle parallelism Prefer using native message passing Go -> Channels Scala
Page 6: SciOps, because Data Scientists need DevOps too! · Language agnostic - just connect to rabbitmq Connectors handle parallelism Prefer using native message passing Go -> Channels Scala
Page 7: SciOps, because Data Scientists need DevOps too! · Language agnostic - just connect to rabbitmq Connectors handle parallelism Prefer using native message passing Go -> Channels Scala

Data scientist should have full control over the solutions they implement

Page 8: SciOps, because Data Scientists need DevOps too! · Language agnostic - just connect to rabbitmq Connectors handle parallelism Prefer using native message passing Go -> Channels Scala

A move to useful solutions from brilliant ideas

Page 9: SciOps, because Data Scientists need DevOps too! · Language agnostic - just connect to rabbitmq Connectors handle parallelism Prefer using native message passing Go -> Channels Scala

Frustration!

Page 10: SciOps, because Data Scientists need DevOps too! · Language agnostic - just connect to rabbitmq Connectors handle parallelism Prefer using native message passing Go -> Channels Scala

Engineer Data Scientist

Boring Long iterations

Repetitive No control

No time for Innovation Lots of waiting

Page 11: SciOps, because Data Scientists need DevOps too! · Language agnostic - just connect to rabbitmq Connectors handle parallelism Prefer using native message passing Go -> Channels Scala

● Single library import will turn any function into a high performance server

● Works best with Docker and Kubernetes● Facilitate DevOps culture

AssafSimple Model Serving Platform

Page 12: SciOps, because Data Scientists need DevOps too! · Language agnostic - just connect to rabbitmq Connectors handle parallelism Prefer using native message passing Go -> Channels Scala

Centralized services

Request queues

Response queues

Models

Assaf infrastructure on Kubernetes

Connectors

Page 13: SciOps, because Data Scientists need DevOps too! · Language agnostic - just connect to rabbitmq Connectors handle parallelism Prefer using native message passing Go -> Channels Scala

Major Design Decisions

Page 14: SciOps, because Data Scientists need DevOps too! · Language agnostic - just connect to rabbitmq Connectors handle parallelism Prefer using native message passing Go -> Channels Scala

Request queues

Response queues

Message Queues

● Request queue: messages are picked up by the connector on the designated process

● Response queue: messages are picked up and served to clients

● Both: one-way message queues

Page 15: SciOps, because Data Scientists need DevOps too! · Language agnostic - just connect to rabbitmq Connectors handle parallelism Prefer using native message passing Go -> Channels Scala

Request queues

Response queues

Benefits

● Decoupling of producers and consumers ● Resilient communications - even if services are down

requests are persisted by the queues ● Language agnostic - just connect to rabbitmq

Page 16: SciOps, because Data Scientists need DevOps too! · Language agnostic - just connect to rabbitmq Connectors handle parallelism Prefer using native message passing Go -> Channels Scala

● Connectors handle parallelism ● Prefer using native message passing

○ Go -> Channels○ Scala -> Actors

● ØMQ is used when messages are not supported natively

Message Passing For Concurrency

Connectors

Page 17: SciOps, because Data Scientists need DevOps too! · Language agnostic - just connect to rabbitmq Connectors handle parallelism Prefer using native message passing Go -> Channels Scala

Anatomy an assaf connector

Page 18: SciOps, because Data Scientists need DevOps too! · Language agnostic - just connect to rabbitmq Connectors handle parallelism Prefer using native message passing Go -> Channels Scala

● Embarrassingly Parallel Applications● Write procedural, run in parallel

○ Requests must be atomic ● High Availability out of the box● Infinite horizontal scaling

Benefits

Page 19: SciOps, because Data Scientists need DevOps too! · Language agnostic - just connect to rabbitmq Connectors handle parallelism Prefer using native message passing Go -> Channels Scala

Centralized Services

● High performance collector

● Tracing

● Monitoring Centralized

services

Page 20: SciOps, because Data Scientists need DevOps too! · Language agnostic - just connect to rabbitmq Connectors handle parallelism Prefer using native message passing Go -> Channels Scala

Benefits

● Freedom to choose best tool for

the job

● Change once, enjoy everywhereCentralized

services

Page 21: SciOps, because Data Scientists need DevOps too! · Language agnostic - just connect to rabbitmq Connectors handle parallelism Prefer using native message passing Go -> Channels Scala

Demo

Page 22: SciOps, because Data Scientists need DevOps too! · Language agnostic - just connect to rabbitmq Connectors handle parallelism Prefer using native message passing Go -> Channels Scala

What improvements did we deliver??

Centralized application

Cohesive process for shipping to production

Low effort deployment

Incremental improvements

Propagation of improvements

Responsibility stays with the implementer

CI/CD

Easy to use library

Page 23: SciOps, because Data Scientists need DevOps too! · Language agnostic - just connect to rabbitmq Connectors handle parallelism Prefer using native message passing Go -> Channels Scala

https://github.com/assaf-platform

@raam86

@dalidepicciottoart: