20
Functional programming @ Avast Jenda Kolena Scala dev, Avast Threat Labs

Functional programming @ Avast Scala dev, Avast Threat ... · Functional programming @ Avast Jenda Kolena Scala dev ... Runs on JVM - interoperability with Java, Kotlin, Groovy,

  • Upload
    others

  • View
    14

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Functional programming @ Avast Scala dev, Avast Threat ... · Functional programming @ Avast Jenda Kolena Scala dev ... Runs on JVM - interoperability with Java, Kotlin, Groovy,

Functional programming @ AvastJenda KolenaScala dev, Avast Threat Labs

Page 2: Functional programming @ Avast Scala dev, Avast Threat ... · Functional programming @ Avast Jenda Kolena Scala dev ... Runs on JVM - interoperability with Java, Kotlin, Groovy,

About Avast

Cyber-security software company, started and still headquartered in Prague.

One of the biggest AV companies in the world.

Page 3: Functional programming @ Avast Scala dev, Avast Threat ... · Functional programming @ Avast Jenda Kolena Scala dev ... Runs on JVM - interoperability with Java, Kotlin, Groovy,

Many teams in Avast do FP, mostly in Scala.

Page 4: Functional programming @ Avast Scala dev, Avast Threat ... · Functional programming @ Avast Jenda Kolena Scala dev ... Runs on JVM - interoperability with Java, Kotlin, Groovy,

More about Scala

Hybrid of Java, Haskell and ML - fusion of OOP and FP.

Powerful type system - comparable to Haskell.

Runs on JVM - interoperability with Java, Kotlin, Groovy, ...

Page 5: Functional programming @ Avast Scala dev, Avast Threat ... · Functional programming @ Avast Jenda Kolena Scala dev ... Runs on JVM - interoperability with Java, Kotlin, Groovy,

More about Scala

Type-classes.

Immutable data classes - case classes.

Pattern matching.

For-comprehension == do-notation.

Page 6: Functional programming @ Avast Scala dev, Avast Threat ... · Functional programming @ Avast Jenda Kolena Scala dev ... Runs on JVM - interoperability with Java, Kotlin, Groovy,

Avast Scala

Purely functional programming (we try).

Monix library - asynchronous programming, separation of side-effects.

Cats library - Functor, Monad, etc., advanced syntax

Page 7: Functional programming @ Avast Scala dev, Avast Threat ... · Functional programming @ Avast Jenda Kolena Scala dev ... Runs on JVM - interoperability with Java, Kotlin, Groovy,

We are the biggest Scala employer in Prague.

Probably even in whole Czechia.

Page 8: Functional programming @ Avast Scala dev, Avast Threat ... · Functional programming @ Avast Jenda Kolena Scala dev ... Runs on JVM - interoperability with Java, Kotlin, Groovy,

Threat Labs

We are the core department of antivirus company.

We do malware research and develop supporting systems.

Page 9: Functional programming @ Avast Scala dev, Avast Threat ... · Functional programming @ Avast Jenda Kolena Scala dev ... Runs on JVM - interoperability with Java, Kotlin, Groovy,

Threat LabsSAMPLES DETECTIONS

Page 10: Functional programming @ Avast Scala dev, Avast Threat ... · Functional programming @ Avast Jenda Kolena Scala dev ... Runs on JVM - interoperability with Java, Kotlin, Groovy,

Threat Labs is a virus laboratory.Download file

Test itSave metadata

Detail analysis

Is suspicious

?Create new detection

Publish new detection

Page 11: Functional programming @ Avast Scala dev, Avast Threat ... · Functional programming @ Avast Jenda Kolena Scala dev ... Runs on JVM - interoperability with Java, Kotlin, Groovy,

Written in Scala. And Python. And Perl.

We run a number of reactive microservices.

Page 12: Functional programming @ Avast Scala dev, Avast Threat ... · Functional programming @ Avast Jenda Kolena Scala dev ... Runs on JVM - interoperability with Java, Kotlin, Groovy,
Page 13: Functional programming @ Avast Scala dev, Avast Threat ... · Functional programming @ Avast Jenda Kolena Scala dev ... Runs on JVM - interoperability with Java, Kotlin, Groovy,
Page 14: Functional programming @ Avast Scala dev, Avast Threat ... · Functional programming @ Avast Jenda Kolena Scala dev ... Runs on JVM - interoperability with Java, Kotlin, Groovy,

We use gRPC and RabbitMQ for inter-service communication.

Page 15: Functional programming @ Avast Scala dev, Avast Threat ... · Functional programming @ Avast Jenda Kolena Scala dev ... Runs on JVM - interoperability with Java, Kotlin, Groovy,

RabbitMQ

Page 16: Functional programming @ Avast Scala dev, Avast Threat ... · Functional programming @ Avast Jenda Kolena Scala dev ... Runs on JVM - interoperability with Java, Kotlin, Groovy,

gRPC

Page 17: Functional programming @ Avast Scala dev, Avast Threat ... · Functional programming @ Avast Jenda Kolena Scala dev ... Runs on JVM - interoperability with Java, Kotlin, Groovy,

gRPC

Page 18: Functional programming @ Avast Scala dev, Avast Threat ... · Functional programming @ Avast Jenda Kolena Scala dev ... Runs on JVM - interoperability with Java, Kotlin, Groovy,

We run services in Kubernetes cluster.

Page 19: Functional programming @ Avast Scala dev, Avast Threat ... · Functional programming @ Avast Jenda Kolena Scala dev ... Runs on JVM - interoperability with Java, Kotlin, Groovy,

LUFT

Declarative deployment.

Infrastructure as a code.

Page 20: Functional programming @ Avast Scala dev, Avast Threat ... · Functional programming @ Avast Jenda Kolena Scala dev ... Runs on JVM - interoperability with Java, Kotlin, Groovy,

TITLE PHOTO SHAPE

Do not change photo, ask Marketing Dept. if need a different photo

Q&A