SlideShare una empresa de Scribd logo
1 de 16
Descargar para leer sin conexión
https://github.com/nuclio/nuclio
Serverless for Real-Time Events and Data Processing
iguazio © 2016
2
Event
Listeners
Function Processors
Runtime
Function
Workers
Data
Bindings
Control, Logging, Monitoring, Security, ..
HTTP, stream
, msg Q, DB, ..
Pluggable
Data Services
Pluggable
Event Sources
Dealer BuilderController image
repo
Platform: Kubernetes, Cloud Provider, Device (IoT) .. Local or remote
nuclio - Comprehensive, Open, Portable, & Super Fast “serverless”
• Real-time processing, low CPU overhead and maximum parallelism
• Simple debugging, regression, and multi-versioned CI/CD pipeline
• Pluggable data/event sources with common APIs
• Portable across low-power devices, laptops, on-prem and public cloud
External
Monitoring
& Logging
Nuctl (CLI)
Playground
UI
https://github.com/nuclio/nuclio
iguazio © 2016
3
Function Processor
Event
Listeners
Fetch/Serve
events Language Runtime Engine
Function
Workers
Data
Bindings
Connect
& Cache
Control Framework: Portal, Logging, Monitoring, Security, …
Event Sources (Pluggable):
• Sync: HTTP
• Async: RabbitMQ, MQTT, NATS
• Stream: Kafka, Kinesis, v3io
• Polling: DB/file changes
Interface to platform resources through pluggable APIs Data Bindings (Pluggable):
• File & Obj: volumes, S3, v3io
• DB: DynamoDB, v3io
• Stream : Kafka, Kinesis, v3io
• Message: RabbitMQ
Develop, Test, Run ANYWHEREAny source and workload
Simple, fast, secure,
portable data integration
nuclio processor – Fast, Modular & Extensible
400K events/sec per process (100x faster than leading implementations)
Super fast, Zero-copy access
to events and data
Multiple async workers for
maximum parallelism with
minimum CPU overhead
Events and data
abstractions enable
re-use and portability
iguazio © 2016
4
Perf results, single process, using basic function
https://github.com/v3io/http_blaster
Tested using:
Native
Prometheus
integration
iguazio © 2016
5
Nuclio invocation modes
Function
Instance
invoker
Message
Function
Instance
invoker
Function
Instance
invoker
Exchange
Message Queue
(e.g. RabbitMQ)
HTTP
API GW
Function
Instance
invoker
Function
Instance
invoker
Function
Instance
invoker
Req
Function
Instance
invoker
Function
Instance
invoker
Function
Instance
invokerPartition 1
Messages
Synchronous Req/Rep
Message Stream
Async Message Queue
Kafka,
Kinesis, …
Function
Instance
invoker
Function
Instance
invoker
Function
Instance
invoker
Job
Job (Master/Worker)
Priority
Queue
Master
(dealer)
Dealer
Partition 2
Partition 3
Partition 4
iguazio © 2016
6
Dealer
Processor
Function
Workers
Partitioned data or
Stream shards
Job Spec:
- functions (selector)
- Task num/list
- Max tasks per processor
- Min/Max processors
- ..
- Job Metadata
Function
Workers
Job X (w 5 tasks)Job Y (w 4 tasks)
POD Up/Down events
Deployment scale changes
Auto-scale based on
CPU load or Q delay
Allocate or Re-distribute tasks to
processors (1 task per worker)
Nuclio
controller
Nuclio Dealer
• Enable real-time stream processing, batch and
interactive jobs on auto-scaling Serverless functions
• By dynamically allocating tasks to workers and
handling task lifecycle, checkpoint and completion
Every job or stream is
partitioned to N smaller Tasks
Processor
iguazio © 2016
7
nuclio features & Performance make Serverless broadly applicable
• Enrich
• Aggregate
• Predict
INTERACTIVE UI &
REAL-TIME DASHBOARDS
ACTIONS
UNSTRUCTURED
EVENTS & DATA
EXTERNAL SOURCES
CHANGE
DATA CAPTURE (CDC)
OPERATIONAL DATA
CONTAINERIZED ML
& ANALYTICS TOOLS
Complex event
Processing (CEP)
POLICY BASED
SYNC & BACKUP
DATA SERVICES
DATA INGESTION, PREP
& REAL-TIME DECISIONS
Higher-Productivity | Faster insights | No infrastructure hassle | Lower TCO
iguazio © 2016
8
Real example: Event Driven Analytics for Connected Cars
Geo Data
Weather/Road info
Vehicles Data
State
Changed?
Identify
Violation?
Drivers
Violations
Stream
State
Changes
Geo
Aggregate
Map
Process
Alerts
Process
Violations
External Sources
import
service
Enriched
Events
Parallel
Enrichment
ML Processing
Complex Events + Data processed in real-time without the infrastructure hassle
real-time, auto-Scaling
serverless functions
Model Update
Stats
Update
* See code in the
UI/Playground slide
iguazio © 2016
9
nuclio
Function Spec
Support Kubernetes CRD:
Functions can be created &
deleted using kubectl
tags/labels used for search and
event sources (Label Selectors)
Control Min/Max Replicas
for controlled auto-scale
Pass text or secret
environment variables
(k8s convention)
Flex resource allocation,
GPUs are coming
Pluggable Data Sources
Various src code options*: inline code, path
(local/http/git), or local/remote pre-built image
namespaced
*Advanced build instructions &
dependencies are in the build.yaml file
iguazio © 2016
10
Nuclio common event model
Simplify and generalize
client implementation
Enable zero copy and zero
ser/des when possible
iguazio © 2016
11
Context.logger Interface
One log interface, multiple implementations (screen, file, stream, http, ..), extensible
Support both structured &
unstructured logging
Support nested/hierarchical logs
iguazio © 2016
12
Default Context.DataBinding API (sync & async ver), can be overwritten
Service Major APIs Main Request Params
Object
e.g. S3, Minio, v3io
ListObjects
GetObject
PutObject
DeleteObject
Bucket, Prefix, MaxKeys
Bucket, Key, Range
Bucket, Key ,Metadata, Body
Bucket, Key
NoSQL
e.g. DynamoDB,
Cassandra, v3io
GetItem
GetItems
PutItem
UpdateItem
DeleteItem
Table, Key ,Projection
Table, ConditionExpression, ProjectionExpression, Limit
Table, Key, ProjectionExpression, item
Table, Key, UpdateExpression, ConditionExpression
Table, Key, ConditionExpression
Stream
e.g. Kinesis, Kafka,
v3io
GetRecords
PutRecords
Seek
Stream, ShardId, Location, Limit
Stream, Records
Stream, ShardId, SeekType, SeekTime, StartingSequence, Timestamp
File
Open
Read
Write
Path, Mode, flags
Handle, offset, size
Handle, offset, size, data
iguazio © 2016
13
Nuclio Playground (run as isolated k8s deployment)
iguazio © 2016
14
CLI (run command example)
$ nuctl run --help
Build, deploy and run a function
Usage:
nuctl run function-name [flags]
Flags:
--data string Comma separated list of data bindings (in json)
--data-bindings string JSON encoded data bindings for the function
--desc string Function description
-d, --disabled Start function disabled (don't run yet)
-e, --env string Environment variables (name1=val1,name2=val2..)
--events string Comma separated list of event sources (in json)
-f, --file string Function Spec File
-h, --help help for run
-i, --image string Docker image name, will use function name if not specified
-l, --labels string Additional function labels (lbl1=val1,lbl2=val2..)
--max-replica int32 Maximum number of function replicas
--min-replica int32 Minimum number of function replicas
--no-pull Don't pull base images - use local versions
--nuclio-src-dir string Local directory with nuclio sources (avoid cloning)
--nuclio-src-url string nuclio sources url for git clone (default "https://github.com/nuclio/nuclio.git")
-o, --output string Build output type - docker|binary (default "docker")
-p, --path string Function source code path
--port int32 Public HTTP port (node port)
--publish Publish the function
-r, --registry string URL of container registry (env: NUCTL_REGISTRY)
--run-registry string The registry URL to pull the image from, if differs from -r (env: NUCTL_RUN_REGISTRY)
--runtime string Runtime – golang, python, ..
-s, --scale string Function scaling (auto|number) (default "1")
--version string Docker image version (default "latest")
Global Flags:
-k, --kubeconfig string Path to Kubernetes config (admin.conf) (default ~/.kube/config")
-n, --namespace string Kubernetes namespace (default "default")
-v, --verbose verbose output
See more in: https://github.com/nuclio/nuclio/blob/master/docs/nuctl/nuctl.md
iguazio © 2016
15
Data Bindings
$ nuctl run <name> <source> [options]
Enabling Simplest and Continuous Dev & Ops (CI/ CD)
One Click to test, deploy, upgrade or rollback code
RunsANYWHERE, Self-healing and Auto-Scaling
LOCAL or CLOUD
iguazio © 2016
16
ORCHESTRATION SERVERLESS PROCESSING ML & AI FRAMEWORKS DATA SERVICES APIS
HYBRID DEPLOYMENT
NoSQLAPI Stream API Object API File API
Security Queries & Functions Unified Data Data Lifecycle
On-Premises Hosted Cloud Edge
Event Driven Code
• Used in iguazio platform
• Developed for the real world
• Now completely re-written to:
• Support the broader open
source & CNCF eco-system
• Incorporate learnings from G1
• Future proof architecture
• Address new use cases
 Low latency 100GbETCP or RDMA Data Fabric (V3IO) 
UNIFIED &
AUTOMATED
MANAGEMENT
https://github.com/nuclio/nuclio

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Monitoring with Prometheus
Monitoring with PrometheusMonitoring with Prometheus
Monitoring with Prometheus
 
20180503 kube con eu kubernetes metrics deep dive
20180503 kube con eu   kubernetes metrics deep dive20180503 kube con eu   kubernetes metrics deep dive
20180503 kube con eu kubernetes metrics deep dive
 
Opencensus with prometheus and kubernetes
Opencensus with prometheus and kubernetesOpencensus with prometheus and kubernetes
Opencensus with prometheus and kubernetes
 
Kubernetes Monitoring with InfluxDB 2.0 and Flux by Gianluca Arbezzano, Site ...
Kubernetes Monitoring with InfluxDB 2.0 and Flux by Gianluca Arbezzano, Site ...Kubernetes Monitoring with InfluxDB 2.0 and Flux by Gianluca Arbezzano, Site ...
Kubernetes Monitoring with InfluxDB 2.0 and Flux by Gianluca Arbezzano, Site ...
 
Terraforming the Kubernetes Land
Terraforming the Kubernetes LandTerraforming the Kubernetes Land
Terraforming the Kubernetes Land
 
Norikra: SQL Stream Processing In Ruby
Norikra: SQL Stream Processing In RubyNorikra: SQL Stream Processing In Ruby
Norikra: SQL Stream Processing In Ruby
 
Docker Monitoring Webinar
Docker Monitoring  WebinarDocker Monitoring  Webinar
Docker Monitoring Webinar
 
InfluxDB IOx Tech Talks: Intro to the InfluxDB IOx Read Buffer - A Read-Optim...
InfluxDB IOx Tech Talks: Intro to the InfluxDB IOx Read Buffer - A Read-Optim...InfluxDB IOx Tech Talks: Intro to the InfluxDB IOx Read Buffer - A Read-Optim...
InfluxDB IOx Tech Talks: Intro to the InfluxDB IOx Read Buffer - A Read-Optim...
 
ELK: Moose-ively scaling your log system
ELK: Moose-ively scaling your log systemELK: Moose-ively scaling your log system
ELK: Moose-ively scaling your log system
 
PSUG #52 Dataflow and simplified reactive programming with Akka-streams
PSUG #52 Dataflow and simplified reactive programming with Akka-streamsPSUG #52 Dataflow and simplified reactive programming with Akka-streams
PSUG #52 Dataflow and simplified reactive programming with Akka-streams
 
[OpenInfra Days Korea 2018] (Track 3) - CephFS with OpenStack Manila based on...
[OpenInfra Days Korea 2018] (Track 3) - CephFS with OpenStack Manila based on...[OpenInfra Days Korea 2018] (Track 3) - CephFS with OpenStack Manila based on...
[OpenInfra Days Korea 2018] (Track 3) - CephFS with OpenStack Manila based on...
 
Infrastructure as Code in Google Cloud
Infrastructure as Code in Google CloudInfrastructure as Code in Google Cloud
Infrastructure as Code in Google Cloud
 
NetflixOSS Open House Lightning talks
NetflixOSS Open House Lightning talksNetflixOSS Open House Lightning talks
NetflixOSS Open House Lightning talks
 
Time series denver an introduction to prometheus
Time series denver   an introduction to prometheusTime series denver   an introduction to prometheus
Time series denver an introduction to prometheus
 
Kubernetes Basis: Pods, Deployments, and Services
Kubernetes Basis: Pods, Deployments, and ServicesKubernetes Basis: Pods, Deployments, and Services
Kubernetes Basis: Pods, Deployments, and Services
 
HadoopCon 2016 - 用 Jupyter Notebook Hold 住一個上線 Spark Machine Learning 專案實戰
HadoopCon 2016  - 用 Jupyter Notebook Hold 住一個上線 Spark  Machine Learning 專案實戰HadoopCon 2016  - 用 Jupyter Notebook Hold 住一個上線 Spark  Machine Learning 專案實戰
HadoopCon 2016 - 用 Jupyter Notebook Hold 住一個上線 Spark Machine Learning 專案實戰
 
Kubernetes Walk Through from Technical View
Kubernetes Walk Through from Technical ViewKubernetes Walk Through from Technical View
Kubernetes Walk Through from Technical View
 
RESTful API – How to Consume, Extract, Store and Visualize Data with InfluxDB...
RESTful API – How to Consume, Extract, Store and Visualize Data with InfluxDB...RESTful API – How to Consume, Extract, Store and Visualize Data with InfluxDB...
RESTful API – How to Consume, Extract, Store and Visualize Data with InfluxDB...
 
Norikra: Stream Processing with SQL
Norikra: Stream Processing with SQLNorikra: Stream Processing with SQL
Norikra: Stream Processing with SQL
 
Central LogFile Storage. ELK stack Elasticsearch, Logstash and Kibana.
Central LogFile Storage. ELK stack Elasticsearch, Logstash and Kibana.Central LogFile Storage. ELK stack Elasticsearch, Logstash and Kibana.
Central LogFile Storage. ELK stack Elasticsearch, Logstash and Kibana.
 

Similar a iguazio - nuclio overview to CNCF (Sep 25th 2017)

Designing Event-Driven Applications with Apache NiFi, Apache Flink, Apache Sp...
Designing Event-Driven Applications with Apache NiFi, Apache Flink, Apache Sp...Designing Event-Driven Applications with Apache NiFi, Apache Flink, Apache Sp...
Designing Event-Driven Applications with Apache NiFi, Apache Flink, Apache Sp...
Timothy Spann
 

Similar a iguazio - nuclio overview to CNCF (Sep 25th 2017) (20)

Running High-Speed Serverless with nuclio
Running High-Speed Serverless with nuclioRunning High-Speed Serverless with nuclio
Running High-Speed Serverless with nuclio
 
Automated Application Management with SaltStack
Automated Application Management with SaltStackAutomated Application Management with SaltStack
Automated Application Management with SaltStack
 
Kubernetes for the PHP developer
Kubernetes for the PHP developerKubernetes for the PHP developer
Kubernetes for the PHP developer
 
Exploring the Final Frontier of Data Center Orchestration: Network Elements -...
Exploring the Final Frontier of Data Center Orchestration: Network Elements -...Exploring the Final Frontier of Data Center Orchestration: Network Elements -...
Exploring the Final Frontier of Data Center Orchestration: Network Elements -...
 
Python Streaming Pipelines on Flink - Beam Meetup at Lyft 2019
Python Streaming Pipelines on Flink - Beam Meetup at Lyft 2019Python Streaming Pipelines on Flink - Beam Meetup at Lyft 2019
Python Streaming Pipelines on Flink - Beam Meetup at Lyft 2019
 
StrongLoop Overview
StrongLoop OverviewStrongLoop Overview
StrongLoop Overview
 
FIWARE Wednesday Webinars - Short Term History within Smart Systems
FIWARE Wednesday Webinars - Short Term History within Smart SystemsFIWARE Wednesday Webinars - Short Term History within Smart Systems
FIWARE Wednesday Webinars - Short Term History within Smart Systems
 
Spark (Structured) Streaming vs. Kafka Streams
Spark (Structured) Streaming vs. Kafka StreamsSpark (Structured) Streaming vs. Kafka Streams
Spark (Structured) Streaming vs. Kafka Streams
 
LAMP Stack (Reloaded) - Infrastructure as Code with Terraform & Packer
LAMP Stack (Reloaded) - Infrastructure as Code with Terraform & PackerLAMP Stack (Reloaded) - Infrastructure as Code with Terraform & Packer
LAMP Stack (Reloaded) - Infrastructure as Code with Terraform & Packer
 
Making cloud native platform by kubernetes
Making cloud native platform by kubernetesMaking cloud native platform by kubernetes
Making cloud native platform by kubernetes
 
Saltstack - Orchestration & Application Deployment
Saltstack - Orchestration & Application DeploymentSaltstack - Orchestration & Application Deployment
Saltstack - Orchestration & Application Deployment
 
A DevOps guide to Kubernetes
A DevOps guide to KubernetesA DevOps guide to Kubernetes
A DevOps guide to Kubernetes
 
Apache Samza 1.0 - What's New, What's Next
Apache Samza 1.0 - What's New, What's NextApache Samza 1.0 - What's New, What's Next
Apache Samza 1.0 - What's New, What's Next
 
Spark (Structured) Streaming vs. Kafka Streams - two stream processing platfo...
Spark (Structured) Streaming vs. Kafka Streams - two stream processing platfo...Spark (Structured) Streaming vs. Kafka Streams - two stream processing platfo...
Spark (Structured) Streaming vs. Kafka Streams - two stream processing platfo...
 
Introduction to Apache NiFi 1.11.4
Introduction to Apache NiFi 1.11.4Introduction to Apache NiFi 1.11.4
Introduction to Apache NiFi 1.11.4
 
Scaling Security on 100s of Millions of Mobile Devices Using Apache Kafka® an...
Scaling Security on 100s of Millions of Mobile Devices Using Apache Kafka® an...Scaling Security on 100s of Millions of Mobile Devices Using Apache Kafka® an...
Scaling Security on 100s of Millions of Mobile Devices Using Apache Kafka® an...
 
Erik Skytthe - Monitoring Mesos, Docker, Containers with Zabbix | ZabConf2016
Erik Skytthe - Monitoring Mesos, Docker, Containers with Zabbix | ZabConf2016Erik Skytthe - Monitoring Mesos, Docker, Containers with Zabbix | ZabConf2016
Erik Skytthe - Monitoring Mesos, Docker, Containers with Zabbix | ZabConf2016
 
Pulsar summit asia 2021 apache pulsar with mqtt for edge computing
Pulsar summit asia 2021   apache pulsar with mqtt for edge computingPulsar summit asia 2021   apache pulsar with mqtt for edge computing
Pulsar summit asia 2021 apache pulsar with mqtt for edge computing
 
Vert.x devoxx london 2013
Vert.x devoxx london 2013Vert.x devoxx london 2013
Vert.x devoxx london 2013
 
Designing Event-Driven Applications with Apache NiFi, Apache Flink, Apache Sp...
Designing Event-Driven Applications with Apache NiFi, Apache Flink, Apache Sp...Designing Event-Driven Applications with Apache NiFi, Apache Flink, Apache Sp...
Designing Event-Driven Applications with Apache NiFi, Apache Flink, Apache Sp...
 

Último

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Último (20)

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

iguazio - nuclio overview to CNCF (Sep 25th 2017)

  • 2. iguazio © 2016 2 Event Listeners Function Processors Runtime Function Workers Data Bindings Control, Logging, Monitoring, Security, .. HTTP, stream , msg Q, DB, .. Pluggable Data Services Pluggable Event Sources Dealer BuilderController image repo Platform: Kubernetes, Cloud Provider, Device (IoT) .. Local or remote nuclio - Comprehensive, Open, Portable, & Super Fast “serverless” • Real-time processing, low CPU overhead and maximum parallelism • Simple debugging, regression, and multi-versioned CI/CD pipeline • Pluggable data/event sources with common APIs • Portable across low-power devices, laptops, on-prem and public cloud External Monitoring & Logging Nuctl (CLI) Playground UI https://github.com/nuclio/nuclio
  • 3. iguazio © 2016 3 Function Processor Event Listeners Fetch/Serve events Language Runtime Engine Function Workers Data Bindings Connect & Cache Control Framework: Portal, Logging, Monitoring, Security, … Event Sources (Pluggable): • Sync: HTTP • Async: RabbitMQ, MQTT, NATS • Stream: Kafka, Kinesis, v3io • Polling: DB/file changes Interface to platform resources through pluggable APIs Data Bindings (Pluggable): • File & Obj: volumes, S3, v3io • DB: DynamoDB, v3io • Stream : Kafka, Kinesis, v3io • Message: RabbitMQ Develop, Test, Run ANYWHEREAny source and workload Simple, fast, secure, portable data integration nuclio processor – Fast, Modular & Extensible 400K events/sec per process (100x faster than leading implementations) Super fast, Zero-copy access to events and data Multiple async workers for maximum parallelism with minimum CPU overhead Events and data abstractions enable re-use and portability
  • 4. iguazio © 2016 4 Perf results, single process, using basic function https://github.com/v3io/http_blaster Tested using: Native Prometheus integration
  • 5. iguazio © 2016 5 Nuclio invocation modes Function Instance invoker Message Function Instance invoker Function Instance invoker Exchange Message Queue (e.g. RabbitMQ) HTTP API GW Function Instance invoker Function Instance invoker Function Instance invoker Req Function Instance invoker Function Instance invoker Function Instance invokerPartition 1 Messages Synchronous Req/Rep Message Stream Async Message Queue Kafka, Kinesis, … Function Instance invoker Function Instance invoker Function Instance invoker Job Job (Master/Worker) Priority Queue Master (dealer) Dealer Partition 2 Partition 3 Partition 4
  • 6. iguazio © 2016 6 Dealer Processor Function Workers Partitioned data or Stream shards Job Spec: - functions (selector) - Task num/list - Max tasks per processor - Min/Max processors - .. - Job Metadata Function Workers Job X (w 5 tasks)Job Y (w 4 tasks) POD Up/Down events Deployment scale changes Auto-scale based on CPU load or Q delay Allocate or Re-distribute tasks to processors (1 task per worker) Nuclio controller Nuclio Dealer • Enable real-time stream processing, batch and interactive jobs on auto-scaling Serverless functions • By dynamically allocating tasks to workers and handling task lifecycle, checkpoint and completion Every job or stream is partitioned to N smaller Tasks Processor
  • 7. iguazio © 2016 7 nuclio features & Performance make Serverless broadly applicable • Enrich • Aggregate • Predict INTERACTIVE UI & REAL-TIME DASHBOARDS ACTIONS UNSTRUCTURED EVENTS & DATA EXTERNAL SOURCES CHANGE DATA CAPTURE (CDC) OPERATIONAL DATA CONTAINERIZED ML & ANALYTICS TOOLS Complex event Processing (CEP) POLICY BASED SYNC & BACKUP DATA SERVICES DATA INGESTION, PREP & REAL-TIME DECISIONS Higher-Productivity | Faster insights | No infrastructure hassle | Lower TCO
  • 8. iguazio © 2016 8 Real example: Event Driven Analytics for Connected Cars Geo Data Weather/Road info Vehicles Data State Changed? Identify Violation? Drivers Violations Stream State Changes Geo Aggregate Map Process Alerts Process Violations External Sources import service Enriched Events Parallel Enrichment ML Processing Complex Events + Data processed in real-time without the infrastructure hassle real-time, auto-Scaling serverless functions Model Update Stats Update * See code in the UI/Playground slide
  • 9. iguazio © 2016 9 nuclio Function Spec Support Kubernetes CRD: Functions can be created & deleted using kubectl tags/labels used for search and event sources (Label Selectors) Control Min/Max Replicas for controlled auto-scale Pass text or secret environment variables (k8s convention) Flex resource allocation, GPUs are coming Pluggable Data Sources Various src code options*: inline code, path (local/http/git), or local/remote pre-built image namespaced *Advanced build instructions & dependencies are in the build.yaml file
  • 10. iguazio © 2016 10 Nuclio common event model Simplify and generalize client implementation Enable zero copy and zero ser/des when possible
  • 11. iguazio © 2016 11 Context.logger Interface One log interface, multiple implementations (screen, file, stream, http, ..), extensible Support both structured & unstructured logging Support nested/hierarchical logs
  • 12. iguazio © 2016 12 Default Context.DataBinding API (sync & async ver), can be overwritten Service Major APIs Main Request Params Object e.g. S3, Minio, v3io ListObjects GetObject PutObject DeleteObject Bucket, Prefix, MaxKeys Bucket, Key, Range Bucket, Key ,Metadata, Body Bucket, Key NoSQL e.g. DynamoDB, Cassandra, v3io GetItem GetItems PutItem UpdateItem DeleteItem Table, Key ,Projection Table, ConditionExpression, ProjectionExpression, Limit Table, Key, ProjectionExpression, item Table, Key, UpdateExpression, ConditionExpression Table, Key, ConditionExpression Stream e.g. Kinesis, Kafka, v3io GetRecords PutRecords Seek Stream, ShardId, Location, Limit Stream, Records Stream, ShardId, SeekType, SeekTime, StartingSequence, Timestamp File Open Read Write Path, Mode, flags Handle, offset, size Handle, offset, size, data
  • 13. iguazio © 2016 13 Nuclio Playground (run as isolated k8s deployment)
  • 14. iguazio © 2016 14 CLI (run command example) $ nuctl run --help Build, deploy and run a function Usage: nuctl run function-name [flags] Flags: --data string Comma separated list of data bindings (in json) --data-bindings string JSON encoded data bindings for the function --desc string Function description -d, --disabled Start function disabled (don't run yet) -e, --env string Environment variables (name1=val1,name2=val2..) --events string Comma separated list of event sources (in json) -f, --file string Function Spec File -h, --help help for run -i, --image string Docker image name, will use function name if not specified -l, --labels string Additional function labels (lbl1=val1,lbl2=val2..) --max-replica int32 Maximum number of function replicas --min-replica int32 Minimum number of function replicas --no-pull Don't pull base images - use local versions --nuclio-src-dir string Local directory with nuclio sources (avoid cloning) --nuclio-src-url string nuclio sources url for git clone (default "https://github.com/nuclio/nuclio.git") -o, --output string Build output type - docker|binary (default "docker") -p, --path string Function source code path --port int32 Public HTTP port (node port) --publish Publish the function -r, --registry string URL of container registry (env: NUCTL_REGISTRY) --run-registry string The registry URL to pull the image from, if differs from -r (env: NUCTL_RUN_REGISTRY) --runtime string Runtime – golang, python, .. -s, --scale string Function scaling (auto|number) (default "1") --version string Docker image version (default "latest") Global Flags: -k, --kubeconfig string Path to Kubernetes config (admin.conf) (default ~/.kube/config") -n, --namespace string Kubernetes namespace (default "default") -v, --verbose verbose output See more in: https://github.com/nuclio/nuclio/blob/master/docs/nuctl/nuctl.md
  • 15. iguazio © 2016 15 Data Bindings $ nuctl run <name> <source> [options] Enabling Simplest and Continuous Dev & Ops (CI/ CD) One Click to test, deploy, upgrade or rollback code RunsANYWHERE, Self-healing and Auto-Scaling LOCAL or CLOUD
  • 16. iguazio © 2016 16 ORCHESTRATION SERVERLESS PROCESSING ML & AI FRAMEWORKS DATA SERVICES APIS HYBRID DEPLOYMENT NoSQLAPI Stream API Object API File API Security Queries & Functions Unified Data Data Lifecycle On-Premises Hosted Cloud Edge Event Driven Code • Used in iguazio platform • Developed for the real world • Now completely re-written to: • Support the broader open source & CNCF eco-system • Incorporate learnings from G1 • Future proof architecture • Address new use cases  Low latency 100GbETCP or RDMA Data Fabric (V3IO)  UNIFIED & AUTOMATED MANAGEMENT https://github.com/nuclio/nuclio