Customer Data Platforms are a set of products, architectures and tools developed to allow brands to enhance understanding of their customer base. • Customer record analysis and enrichment with AI • A unified view of customer data • Integration between different data sources A CDP provides • Customer record analysis and enrichment with AI
long-running virtual machines with ephemeral compute power that comes into existence on request and disappears immediately after use. Use of this architecture can mitigate some security concerns such as security patching and SSH access control, and can make much more efficient use of compute resources. These systems cost very little to operate and can have inbuilt scaling features.” — ThoughtWorks, 2016
simple e-commerce during Black Friday • On Dec 1, 2020 AWS Lambda pricing slots changed from 100ms down to 1ms • 100K users * 200 invocations per day * 30 days = 600M invocations • Before Dec 1, 2020 every invocation timed at least 100ms, now we can have functions running for ~30ms • 600M * 100ms * 0.0000000167$ = 1000$ • 600M * 30ms * 0.0000000167$ = 300$ yes, it matters a lot!
Download the code Start new execution environment Execute init code Execute handler code INIT INVOKE How to optimize the function? • Small packages • Use Lambda Execution Context • Avoid Fat Lambda • Cache assets • Use parallelism
rules that governs how Rust manages memory. Garbage collector memory management • declare and forget model: variables are declared, then the language runtime takes care • the language has to keep track of variables • once variables are not used anymore, they are recycled • you don’t have to worry about stack and heap allocation Manual memory management • declare the variable, maintain ownership along with your code • create data and pass a reference, retaining ownership • let the recipient borrow it for a while • once the code returns all retained references are released • choose between stack and heap allocation
structure, is a custom data type that lets you package together and name multiple related values that make up a meaningful group. A trait abstractly defines shared behaviour. For example, we can use trait bounds to specify that a generic type can be any type that has particular behaviour.
CLI tool to handle serverless project creation through CloudFormation transforms. • Start from Rust boilerplate with simple hello-world. • Provides a set of dependencies (crates) useful within AWS and Lambda • Provides a make file to handle code compile task • Ease out deployment tasks • Support for local run through docker
deploy which uploads our binary functions code to S3, and starts AWS Cloudformation changesets to script infrastructure. Deployment step can be interactively managed with the —guided option.
implementation of the Apache Arrow specification, enabling efficient resource use and processing performances • Exposes a complete Python API to manipulate data frames, enforcing parallel execution and efficient cache management • Written in Rust, offering a feature-complete DataFrame library for the ecosystem • ~3x faster than Pandas, with better memory management
aim to provide a general purpose development language and leverage Rust speed, a direct binding to torch is under development, named tch-rs • Rust bindings for the C++ api of PyTorch. The goal of the tch crate is to provide some thin wrappers around the C++ PyTorch api (a.k.a. libtorch). It aims at staying as close as possible to the original api. • No idiomatic rust bindings on top of this.
to implement best practices on serverless. Patterns are out-of-the-box solutions ready to be instantiated and integrated into existing or new projects.