Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OSS at CCAD

OSS at CCAD

Recently, CCAD (A joint venture of Comcast and Arris) contributed Open Source Software to the Scala community that you may want to use in your projects! These technologies are currently used in various cloud-based, microservice systems, but are not limited to these areas. Jack Rudnick (@jrudnick), a co-organizer of the CASE group and Software Developer at CCAD will provide an overview of the various projects, as well as take a look at some basic code examples readily available in their documentation.

Originally presented at: https://www.meetup.com/chicagoscala/events/236784873/

Avatar for Jack Rudnick

Jack Rudnick

January 19, 2017

Other Decks in Technology

Transcript

  1. Background •  Jack Rudnick, Engineer for CCAD LLC •  Twitter:

    @jrudnick •  CCAD LLC is a joint venture of Comcast and Arris, building set-top box control systems •  We’ve been using Scala since 2008: - scalaz => cats - akka & akka-http - Circe - etc… •  Recently, moving to a microservice architecture (in the cloud) 2
  2. cedi-circuitbreakers •  “ensuring that a failure or overload does not

    cascade to bring down the whole system.” •  This is not a new programming pattern: - http://martinfowler.com/bliki/CircuitBreaker.html •  Other libraries exist: - Akka - Spring - JRugged - Hystrix •  What’s so great about ours? - Provides throttling - Events on circuit breaker activity - Streams of circuitbreaker statistics - Uses FS2 •  https://github.com/ccadllc/cedi-circuitbreakers/blob/master/README.md 8
  3. cedi-dtrace •  Dtrace <-> Distributed trace •  Provides a functional

    API for tracing programs across system and network boundaries. •  Beneficial for microservice architectures, when it may be otherwise difficult to keep track of a logical element as it moves through alarger system. •  Conceptually, Trace is a directed graph of Spans linked by SpanId. •  What’s so great about ours? - Interoperable with Comcast Money - https://github.com/Comcast/money - Purely functional - Uses FS2 •  https://github.com/ccadllc/cedi-dtrace/blob/master/README.md 9
  4. cedi-config •  Provides a safe API for parsing settings objects

    out of Typesafe Config. •  What’s so great about ours? - errors in the configuration are returned as values -- exceptions are never thrown - all errors present in the configuration are reported, not just the first error that is encountered - configuration parsers can be built manually or derived automatically from the structure of application specific types - limited dependencies -- only Typesafe Config and Shapeless •  https://github.com/ccadllc/cedi-config/blob/master/README.md Presentation title (optional) 10
  5. scodec •  Scala combinator library for working with binary data

    •  Focuses on contract-first and pure functional encoding and decoding of binary data •  Leverages shapeless to create a transparent view of binary data, as domain relevant types •  Encoding and decoding of to/from these types is purely functional 12
  6. fs2 •  Functional Streams for Scala (previously scalaz-streams) •  “Compositional,

    streaming I/O library for Scala ” •  Other libraries exist: - akka-streams - monix •  Capabilities: - The ability to build arbitrarily complex streams, possibly with embedded effects. - The ability to transform one or more streams using a small but powerful set of operations •  https://github.com/functional-streams-for-scala/fs2 13
  7. Credits •  Images: - Under CC0 Public Domain, requiring no attribution

    •  https://github.com/ccadllc •  Special Thanks to Mike Pilquist 14