SlideShare a Scribd company logo
Introduction
Who are we, what do we do? You have to learn the rules of the game.
And then you have to play better than
anyone else
--Albert Einstein
Us
► Karen Wilson
► Expert Architect
► BS Computer Science, Christopher Newport University
► Master’s in Information Technology, Virginia Tech
► AWS Certified Solutions Architect – Associate
► AWS Certified Developer - Associate
► Ed Bozovsky (Boz)
► Principle Architect
► BS Computer Science, University of Arkansas at Little Rock
► AWS Certified Solutions Architect – Associate
► AWS Certified Developer - Associate
Acxiom
MEASUREMENT
AND ANALYTICS
INTEGRATION
SERVICES
MANAGED
SERVICES
STRATEGY
SERVICES
Acxiom UDL
Acxiom Around the World
Acxiom & Stitch
OPERATIONAL DATA STORE DATA INGESTION
Why Stitch
Stitch
Proxy Webhooks
Values
Functions
Atlas
Data Streams
Delivery Streams
ODS
INGESTION
Testing & CI
A person who never made
a mistake never tried
anything new
-Albert Einstein
Never stop testing
Testing - CI
Pull Request
Nightly
578 Tests Cases Push Release
Push Release
USERS
VALUES
FUNCTIONS
SERVICES
WEBHOOKS
SERVICE RULES
DATABASE
Users
Exist?
https://stitch.mongodb.com/api/admin/v3.0/groups/${group_id}/apps/${app_id}/users
Create
https://stitch.mongodb.com/api/admin/v3.0/groups/${group_id}/apps/${app_id}/api_keys
YES NO
Values
https://stitch.mongodb.com/api/admin/v3.0/groups/${group_id}/apps/${app_id}/values
VS
GET
https://stitch.mongodb.com/api/admin/v3.0/groups/${group_id}/apps/${app_id}/values
POST
Functions
CONFIG
SOURCE SOURCE SOURCE
CONFIG CONFIG
EXCEPTION: VALIDATE_ & CLIENT_
Services
EXIST
Rules
Webhooks
Rules
Webhooks
GOTCHAS?
GCM
MONGODB
AWS
YES NO
lambdaLocal.execute({
event: testinput,
lambdaPath: path.join(__dirname, '../registration.js'),
timeoutMs: 3000
})
.then((result)=>{
console.log("RESULT: " + JSON.stringify(result));
expect(result[0]).to.equal('person.firstname');
expect(result[1]).to.equal('person.middle');
expect(result[2]).to.equal('person.lastname');
expect(result[3]).to.equal('address.street');
expect(result[4]).to.equal('address.city');
expect(result[5]).to.equal('address.state');
expect(result[6]).to.equal('address.zip');
});
describe('Test loading local values in JSON files with context.values.get', function() {
it('values property should exist', function() {
expect(context).to.have.property('values');
});
}let context = {
functions : {
execute(functionName,...args){
let importedFunction = require(context.srcDirectory + "functions/" + functionName);
return importedFunction(...args);
}
…
};
Testing - Unit
CONTEXT
Logging
When, where, why, how
The search for truth is more precious
than its possession
-- Albert Einstein
Logging – Audit Logging
127.0.0.1
Logging – Debug Logging
10
function LOG( level, message ) {
if ( ( loggingEnabled ) && ( level > systemLevel ) ) {
writeDocumentToCollection(level,message);
}
}
context.functions.execute( “LOG”, <level>, <message> );
values àsystem : {
logLevel : “DEBUG”
}
https://ods.myacxiom.com/v1/feedbacks?clientId=acme-cmdgl&debugLog=DEBUG
Logging – View Debug Logs
AWS Integrations
Back & Forth A little knowledge is dangerous. So is a lot
--Albert Einstein
AWS – Data Streams
????
?
VALUES
function : postProcess,
streamInfo : {
name : postProcessingStream,
region : us-west-2
}
const kinesis = context.services.get('aws').kinesis(awsRegion);
return kinesis.PutRecord({
Data: JSON.stringify(event),
StreamName: streamName,
PartitionKey: id,
})
.then((result) => {
context.functions.execute('do_timinglogs', 'awsKinesis', startTime);
return resolve(result);
})
.catch((error) => {
return reject(error);
});
AWS - Delivery Streams
One-time Setup Created Process
AWS Up Front
Proxy The definition of genius is
taking the complex and
making it simple.
- Albert Einstein
Proxy - Why
https://ods.myacxiom.com
Proxy - URL
Stitch URL
https://webhooks.mongodb-stitch.com/api/client/v2.0/app/acme-cmdgl/service/v1/incoming_webhook/feedbacks
Acxiom ODS Shortened URL
https://ods.myacxiom.com/v1/feedbacks?clientId=acme-cmdgl
And Even Shorter
https://inbound-udl.myacxiom.com/v1/inbound
Proxy – Get Put Post Delete
Proxy – JSON Validation
"path": "/api/v1/inbound/test/515791636893858",
"httpMethod": "POST",
"headers": {
"Authorization": "Bearer asdf-easd-38b3-4892-83d6-26b075bea08f",
"Content-Type": "application/json",
"Host": "ods.myacxiomtest.com",
"X-Forwarded-For": "76.213.42.186, 52.46.47.93",
"X-Forwarded-Port": "443",
"X-Forwarded-Proto": "https",
"X-Request-Id": "12345-3456-123456-2345-123563"
},
"queryStringParameters": {
"client": "acme-mdpgh",
"secret": "yeasureimprintingthis"
},
"body": "[{
"full" : "BOB SMITH”
"address": "234 STREET AVE", "APT 2",
"city" : "NEW YORK",
"state" : "NY",
"postalCode" : "09459",
"countryCode" : "USA"
}]"
Proxy – AJV Error Example
{
"error":
[ {
"keyword": "required",
"dataPath": "",
"schemaPath": "#/required",
"params": { "missingProperty": "activityTypeCode" },
"message": "should have required property 'activityTypeCode'"
},
{
"keyword": "type",
"dataPath": ".appliedTo.consumers[0].emails[0]",
"schemaPath": "#/properties/appliedTo/properties/consumers/items/properties/emails/items/type",
"params": {"type": "object" },
"message": "should be object"
} ],
"source": "proxy"
}
Proxy - API Jumps
LambdaAPI
Gateway
Acxiom Client Stitch Acxiom
login.acxiom.com
ods.acxiom.com
login.acxiom.com
webhooks.mongo-stitch.com
Proxy
Timing
The important thing is not to stop
questioning, curiosity has its own
reason for existing.
--Albert Einstein
It ran how long!?
Timing
API
feedback
API
timing
API
sources
by-pii
API
health
checks
APIsources
Timing – What should we track?
External API Calls
Proxy Operations
Client Logic
Timing – Client Logic (code)
return exitRtn(retval, 'client_exit1')
.then((retval) => { return exitRtn(retval, 'client_exit2'); })
.then((retval) => { return exitRtn(retval, 'client_exit3'); })
.then((retval) => { return exitRtn(retval, 'client_exit4'); })
.then((retval) => { return exitRtn(retval, 'client_exit5'); })
.then((retval) => { return exitRtn(retval, 'client_exit6'); })
.then((retval) => { return exitRtn(retval, 'client_exit7'); })
.then((retval) => { return exitRtn(retval, 'client_exit8'); })
.then((retval) => { return exitRtn(retval, 'client_exit9'); })
.then((retval) => { return exitRtn(retval, 'client_exit10'); })
.then((retval) => { return exitRtn(retval, 'remove_links'); })
.then((retval) => {
context.functions.execute('do_timinglogs', 'clientexits', startTime);
context.functions.execute('LOG_DEBUG', { source: client_exit_main.name, retval });
return retval;
})
.catch((err) => {
context.functions.execute('LOG_ERROR', { source: client_exit_main.name, err });
throw (`1125,Error returned from exit routine ${callRtn}`);
});
Timing - External API Calls
Timing - Proxy
Timing - Findings
What did we discover?
What can we improve?
Timing - Findings
Not everything needs tracking
Timing - Findings
Token authentication was
taking too much time
Timing - Findings
Random latency spikes
Normal calls take 1 second or less,
these were taking much longer
Spikes were caused by incorrect
routing logic the Acxiom Load
Balancers
Timing - Findings
Stitch was loading ODS Stitch code
from the incorrect region
Drew DiPalma’s team quickly isolated
the issue and fixed the Stitch code
Timing - Findings
When Stitch load balancers were overloaded
APIs were sent to incorrect regions
Normally we use:
webhooks.mongodb-stitch.com
Changed to use:
us-east-1.aws.webhooks.mongodb-stitch.com
Reporting
"Everything should be made as simple as
possible, but no simpler”
- Albert Einstein
Just the facts
Reporting
Reporting – Extracting API logs
Stitch Logs
MongoDB
Kibana Grafana
Reporting – Grafana Dashboard
Reporting – Tableau
Reporting - Alerting
MongoDB – Partners in Crime
q Testing and Continuous Integration
q Release automation
q Logging
q Data Streams
q YouTube from MW2018 “Pissing off IT and Delivery: A tale of 2 ODS’s”
q www.acxiom.com
q Proxy Capabilities
q Timing Logs
q Report Generation
Thank You

More Related Content

What's hot

What's hot (20)

Azure SQL Database - Connectivity Best Practices
Azure SQL Database - Connectivity Best PracticesAzure SQL Database - Connectivity Best Practices
Azure SQL Database - Connectivity Best Practices
 
ES6, 잘 쓰고 계시죠?
ES6, 잘 쓰고 계시죠?ES6, 잘 쓰고 계시죠?
ES6, 잘 쓰고 계시죠?
 
Avoiding callback hell in Node js using promises
Avoiding callback hell in Node js using promisesAvoiding callback hell in Node js using promises
Avoiding callback hell in Node js using promises
 
The Ring programming language version 1.6 book - Part 70 of 189
The Ring programming language version 1.6 book - Part 70 of 189The Ring programming language version 1.6 book - Part 70 of 189
The Ring programming language version 1.6 book - Part 70 of 189
 
Angular mix chrisnoring
Angular mix chrisnoringAngular mix chrisnoring
Angular mix chrisnoring
 
The Ring programming language version 1.5.1 book - Part 64 of 180
The Ring programming language version 1.5.1 book - Part 64 of 180The Ring programming language version 1.5.1 book - Part 64 of 180
The Ring programming language version 1.5.1 book - Part 64 of 180
 
Asynchronous programming done right - Node.js
Asynchronous programming done right - Node.jsAsynchronous programming done right - Node.js
Asynchronous programming done right - Node.js
 
Coolblue - Behind the Scenes Continuous Integration & Deployment
Coolblue - Behind the Scenes Continuous Integration & DeploymentCoolblue - Behind the Scenes Continuous Integration & Deployment
Coolblue - Behind the Scenes Continuous Integration & Deployment
 
Universal JavaScript
Universal JavaScriptUniversal JavaScript
Universal JavaScript
 
Implicit and Explicit waits in Selenium WebDriwer, how to.
Implicit and Explicit waits in Selenium WebDriwer, how to.Implicit and Explicit waits in Selenium WebDriwer, how to.
Implicit and Explicit waits in Selenium WebDriwer, how to.
 
WebDriver Waits
WebDriver WaitsWebDriver Waits
WebDriver Waits
 
Yaroslav Pernerovsky - You are doing it wrong all the time
Yaroslav Pernerovsky - You are doing it wrong all the timeYaroslav Pernerovsky - You are doing it wrong all the time
Yaroslav Pernerovsky - You are doing it wrong all the time
 
The Ring programming language version 1.6 book - Part 69 of 189
The Ring programming language version 1.6 book - Part 69 of 189The Ring programming language version 1.6 book - Part 69 of 189
The Ring programming language version 1.6 book - Part 69 of 189
 
Automation puzzlers
Automation puzzlersAutomation puzzlers
Automation puzzlers
 
JavaScript Promise
JavaScript PromiseJavaScript Promise
JavaScript Promise
 
Practical RxJava for Android
Practical RxJava for AndroidPractical RxJava for Android
Practical RxJava for Android
 
Developing web-apps like it's 2013
Developing web-apps like it's 2013Developing web-apps like it's 2013
Developing web-apps like it's 2013
 
Behind modern concurrency primitives
Behind modern concurrency primitivesBehind modern concurrency primitives
Behind modern concurrency primitives
 
Matteo Collina | Take your HTTP server to Ludicrous Speed | Codmeotion Madrid...
Matteo Collina | Take your HTTP server to Ludicrous Speed | Codmeotion Madrid...Matteo Collina | Take your HTTP server to Ludicrous Speed | Codmeotion Madrid...
Matteo Collina | Take your HTTP server to Ludicrous Speed | Codmeotion Madrid...
 
Akka.NET streams and reactive streams
Akka.NET streams and reactive streamsAkka.NET streams and reactive streams
Akka.NET streams and reactive streams
 

Similar to MongoDB World 2019: Life In Stitch-es

Intravert Server side processing for Cassandra
Intravert Server side processing for CassandraIntravert Server side processing for Cassandra
Intravert Server side processing for Cassandra
Edward Capriolo
 
QA Fest 2019. Антон Молдован. Load testing which you always wanted
QA Fest 2019. Антон Молдован. Load testing which you always wantedQA Fest 2019. Антон Молдован. Load testing which you always wanted
QA Fest 2019. Антон Молдован. Load testing which you always wanted
QAFest
 
Writing robust Node.js applications
Writing robust Node.js applicationsWriting robust Node.js applications
Writing robust Node.js applications
Tom Croucher
 
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)
Wesley Beary
 
Anton Moldovan "Load testing which you always wanted"
Anton Moldovan "Load testing which you always wanted"Anton Moldovan "Load testing which you always wanted"
Anton Moldovan "Load testing which you always wanted"
Fwdays
 

Similar to MongoDB World 2019: Life In Stitch-es (20)

Node.js: Continuation-Local-Storage and the Magic of AsyncListener
Node.js: Continuation-Local-Storage and the Magic of AsyncListenerNode.js: Continuation-Local-Storage and the Magic of AsyncListener
Node.js: Continuation-Local-Storage and the Magic of AsyncListener
 
Future Decoded - Node.js per sviluppatori .NET
Future Decoded - Node.js per sviluppatori .NETFuture Decoded - Node.js per sviluppatori .NET
Future Decoded - Node.js per sviluppatori .NET
 
JS Fest 2019 Node.js Antipatterns
JS Fest 2019 Node.js AntipatternsJS Fest 2019 Node.js Antipatterns
JS Fest 2019 Node.js Antipatterns
 
Avoiding Callback Hell with Async.js
Avoiding Callback Hell with Async.jsAvoiding Callback Hell with Async.js
Avoiding Callback Hell with Async.js
 
DEF CON 23 - amit ashbel and maty siman - game of hacks
DEF CON 23 - amit ashbel and maty siman - game of hacks DEF CON 23 - amit ashbel and maty siman - game of hacks
DEF CON 23 - amit ashbel and maty siman - game of hacks
 
NYC* 2013 - "Advanced Data Processing: Beyond Queries and Slices"
NYC* 2013 - "Advanced Data Processing: Beyond Queries and Slices"NYC* 2013 - "Advanced Data Processing: Beyond Queries and Slices"
NYC* 2013 - "Advanced Data Processing: Beyond Queries and Slices"
 
Intravert Server side processing for Cassandra
Intravert Server side processing for CassandraIntravert Server side processing for Cassandra
Intravert Server side processing for Cassandra
 
Bonnes pratiques de développement avec Node js
Bonnes pratiques de développement avec Node jsBonnes pratiques de développement avec Node js
Bonnes pratiques de développement avec Node js
 
QA Fest 2019. Антон Молдован. Load testing which you always wanted
QA Fest 2019. Антон Молдован. Load testing which you always wantedQA Fest 2019. Антон Молдован. Load testing which you always wanted
QA Fest 2019. Антон Молдован. Load testing which you always wanted
 
Reduxing like a pro
Reduxing like a proReduxing like a pro
Reduxing like a pro
 
Introduction to AWS Step Functions:
Introduction to AWS Step Functions: Introduction to AWS Step Functions:
Introduction to AWS Step Functions:
 
fog or: How I Learned to Stop Worrying and Love the Cloud
fog or: How I Learned to Stop Worrying and Love the Cloudfog or: How I Learned to Stop Worrying and Love the Cloud
fog or: How I Learned to Stop Worrying and Love the Cloud
 
Writing robust Node.js applications
Writing robust Node.js applicationsWriting robust Node.js applications
Writing robust Node.js applications
 
Javascript Everywhere From Nose To Tail
Javascript Everywhere From Nose To TailJavascript Everywhere From Nose To Tail
Javascript Everywhere From Nose To Tail
 
apidays LIVE Australia 2020 - Building distributed systems on the shoulders o...
apidays LIVE Australia 2020 - Building distributed systems on the shoulders o...apidays LIVE Australia 2020 - Building distributed systems on the shoulders o...
apidays LIVE Australia 2020 - Building distributed systems on the shoulders o...
 
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)
fog or: How I Learned to Stop Worrying and Love the Cloud (OpenStack Edition)
 
Nyc big datagenomics-pizarroa-sept2017
Nyc big datagenomics-pizarroa-sept2017Nyc big datagenomics-pizarroa-sept2017
Nyc big datagenomics-pizarroa-sept2017
 
GDG DevFest 2015 - Reactive approach for slowpokes
GDG DevFest 2015 - Reactive approach for slowpokesGDG DevFest 2015 - Reactive approach for slowpokes
GDG DevFest 2015 - Reactive approach for slowpokes
 
Anton Moldovan "Load testing which you always wanted"
Anton Moldovan "Load testing which you always wanted"Anton Moldovan "Load testing which you always wanted"
Anton Moldovan "Load testing which you always wanted"
 
JS Fest 2019. Anjana Vakil. Serverless Bebop
JS Fest 2019. Anjana Vakil. Serverless BebopJS Fest 2019. Anjana Vakil. Serverless Bebop
JS Fest 2019. Anjana Vakil. Serverless Bebop
 

More from MongoDB

More from MongoDB (20)

MongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
MongoDB SoCal 2020: Migrate Anything* to MongoDB AtlasMongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
MongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
 
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!
 
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...
 
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDBMongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
 
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...
 
MongoDB SoCal 2020: Best Practices for Working with IoT and Time-series Data
MongoDB SoCal 2020: Best Practices for Working with IoT and Time-series DataMongoDB SoCal 2020: Best Practices for Working with IoT and Time-series Data
MongoDB SoCal 2020: Best Practices for Working with IoT and Time-series Data
 
MongoDB SoCal 2020: MongoDB Atlas Jump Start
 MongoDB SoCal 2020: MongoDB Atlas Jump Start MongoDB SoCal 2020: MongoDB Atlas Jump Start
MongoDB SoCal 2020: MongoDB Atlas Jump Start
 
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]
 
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2
 
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...
 
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!
 
MongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your Mindset
MongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your MindsetMongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your Mindset
MongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your Mindset
 
MongoDB .local San Francisco 2020: MongoDB Atlas Jumpstart
MongoDB .local San Francisco 2020: MongoDB Atlas JumpstartMongoDB .local San Francisco 2020: MongoDB Atlas Jumpstart
MongoDB .local San Francisco 2020: MongoDB Atlas Jumpstart
 
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...
 
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
 
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...
 
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep Dive
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep DiveMongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep Dive
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep Dive
 
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & Golang
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & GolangMongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & Golang
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & Golang
 
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...
 
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
 

Recently uploaded

Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
Bhaskar Mitra
 

Recently uploaded (20)

Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutes
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
Quantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsQuantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIs
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2
 
НАДІЯ ФЕДЮШКО БАЦ «Професійне зростання QA спеціаліста»
НАДІЯ ФЕДЮШКО БАЦ  «Професійне зростання QA спеціаліста»НАДІЯ ФЕДЮШКО БАЦ  «Професійне зростання QA спеціаліста»
НАДІЯ ФЕДЮШКО БАЦ «Професійне зростання QA спеціаліста»
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 

MongoDB World 2019: Life In Stitch-es