Need for Speed: Removing speed bumps in API Projects

Łukasz Chruściel
Łukasz ChruścielAPI Designer en Commerce Weavers
Need for Speed
Removing speed bumps in API Projects
Introduction
Weavers, Sylius, API Platform
Why do we need to thinks
about performance?
~ Amazon
“100ms Faster
=
1% More Revenue.”
Need for Speed: Removing speed bumps in API Projects
How?
Let’s start!
The most common performance bottlenecks
0
15
30
45
60
Amount of queries to DB Cost of object serialization Latency Framework
5
4
28
56
Votes
Base
Algorithmic complexity
O(M) vs O(MN) vs O(M^2)
Need for Speed: Removing speed bumps in API Projects
That’s why we usually forget
about it :/
Measure!
Understanding of tools
Tools are generally performant
But Your case is different
Project structure
Need for Speed: Removing speed bumps in API Projects
Database turn
N+1
Product list
Let’s start small
{
"@context":"/api/contexts/Product",
"@id":"/api/products",
"@type":"hydra:Collection",
"hydra:totalItems":6,
"hydra:member":[
{
"@id":"/api/products/1",
"@type":"Product",
"id":1,
"name":"T-Shirt",
"price":1000
},
{
"@id":"/api/products/2",
"@type":"Product",
"id":2,
"name":"Trousers",
"price":5000
},
{
"“…“":"“…“"
}
]
}
Amount of products: 6
No associations between objects
Sample query on the left
Need for Speed: Removing speed bumps in API Projects
O(1)
Order list
How many queries are executed here?
{
"@context": "/api/contexts/Order",
"@id": "/api/orders",
"@type": "hydra:Collection",
"hydra:totalItems": 3,
"hydra:member": [
{
"@id": "/api/orders/1",
"@type": "Order",
"id": 1,
"orderItems": [
"/api/order_items/1",
"/api/order_items/2"
]
},
{
“…”: “…“
}
]
}
Amount of orders: 3
Every order associated with 2 items
Sample query on the left
No total
fi
eld
Need for Speed: Removing speed bumps in API Projects
Need for Speed: Removing speed bumps in API Projects
O(M)
Order list with additional
fi
eld
How many queries are executed here?
{
"@context": "/api/contexts/Order",
"@id": "/api/orders",
"@type": "hydra:Collection",
"hydra:totalItems": 3,
"hydra:member": [
{
"@id": "/api/orders/1",
"@type": "Order",
"id": 1,
"orderItems": [
"/api/order_items/1",
"/api/order_items/2"
],
"total": 7000
},
{
“…”: “…“
}
]
}
Amount of orders: 3
Every order associated with 2 items
Sample query on the left
Added “total()” as a function of product
price and quantity of item
Need for Speed: Removing speed bumps in API Projects
O(M*N) or O(M^2) 🚀
Need for Speed: Removing speed bumps in API Projects
How to spot it?
Need for Speed: Removing speed bumps in API Projects
How to
fi
x it?
Solution 1
#[ORMOneToMany(fetch: ‘LAZY')]
#[ORMOneToMany(fetch: ‘EXTRA_LAZY')]
#[ORMOneToMany(fetch: ‘EAGER')]
What is the difference between them?
#[ORMOneToMany(fetch: ‘LAZY')] => 11
#[ORMOneToMany(fetch: ‘EXTRA_LAZY')] => ???
#[ORMOneToMany(fetch: ‘EAGER')] => ???
#[ORMOneToMany(fetch: ‘LAZY')] => 11
#[ORMOneToMany(fetch: ‘EXTRA_LAZY')] => 11
#[ORMOneToMany(fetch: ‘EAGER')] => ???
#[ORMOneToMany(fetch: ‘LAZY')] => 11
#[ORMOneToMany(fetch: ‘EXTRA_LAZY')] => 11
#[ORMOneToMany(fetch: ‘EAGER')] => 9
Need for Speed: Removing speed bumps in API Projects
#[ORMOneToMany(fetch: ‘LAZY')] => 11
#[ORMOneToMany(fetch: ‘EXTRA_LAZY')] => 11
#[ORMOneToMany(fetch: ‘EAGER')] => 9
#[ORMOneToMany(fetch: ‘EAGER')] => 5 (OrderItem and Product)
Need for Speed: Removing speed bumps in API Projects
#[ORMOneToMany(fetch: ‘LAZY')] => 11
#[ORMOneToMany(fetch: ‘EXTRA_LAZY')] => 11
#[ORMOneToMany(fetch: ‘EAGER')] => 5
#[ORMOneToMany(fetch: ‘EAGER')] (OrderItem and Product) + Serialisation groups => 4
Need for Speed: Removing speed bumps in API Projects
Solution 2
final class LoadItemsAndProductsExtension implements QueryCollectionExtensionInterface,
QueryItemExtensionInterface
{
private function apply(QueryBuilder $queryBuilder): void
{
$queryBuilder
->addSelect('oi', 'p')
->join(OrderItem::class, 'oi', Join::WITH, 'oi.originOrder = o')
->join(Product::class, 'p', Join::WITH, 'oi.product = p')
;
}
}
Need for Speed: Removing speed bumps in API Projects
But….
{
"@context": "/api/contexts/Order",
"@id": "/api/orders",
"@type": "hydra:Collection",
"hydra:totalItems": 3,
"hydra:member": [
{
"@id": "/api/orders/1",
"@type": "Order",
"id": 1,
"orderItems": [
"/api/order_items/1",
"/api/order_items/2"
],
"total": 7000
},
{
"@id": "/api/order_items/1",
"@type": "OrderItem",
"id": 1,
"product": "/api/products/1",
"quantity": 2,
"originOrder": "/api/orders/1",
"price": 2000
},
{
"@id": "/api/products/1",
"@type": "Product",
"id": 1,
"name": "T-Shirt",
"price": 1000
},
{
"@id": "/api/order_items/2",
"@type": "OrderItem",
"id": 2,
"product": "/api/products/2",
"quantity": 1,
"originOrder": "/api/orders/1",
"price": 5000
},
{
“…”: “…”
}
]
}
Solution 3
class OrderCollectionProvider implements ProviderInterface
{
public function __construct(private readonly OrderRepository $orderRepository)
{
}
public function provide(
Operation $operation,
array $uriVariables = [],
array $context = []
): object|array|null {
return $this->orderRepository->findWithItemsAndProducts();
}
}
public function findWithItemsAndProducts()
{
return $this->createQueryBuilder('o')
->addSelect('oi', 'p')
->leftJoin('o.orderItems', 'oi')
->leftJoin('oi.product', 'p')
->getQuery()
->getResult();
}
Need for Speed: Removing speed bumps in API Projects
But….
So is single query an ultimate
solution?
⚠ Not so fast ⚠
Joins are expensive 💰
Hydration 🧙
Fetch
[
'id' => 1,
'name' => 'T-Shirt',
'price' => '1000'
]
Hydration 🧙
new Product()
Database Application
More data you fetch
||
/
More you hydrate
Perfect size of micro service?
Perfect amount of queries?
Fetch as much as you have to
But not more
Proper de
fi
nition of
fi
elds
Float vs double
Decimal ->
fi
xed-point precision
Float ->
fl
oating-point precision
How many updates are executed?
Product has a
fl
oat price
fi
eld de
fi
ned as
fl
oat
Order item quantity has been changed by 1
During which we will read data from Product
How many updates are executed?
How many updates are executed?
Product has a
fl
oat price
fi
eld de
fi
ned as decimal
Order item quantity has been changed by 1
During which we will read data from Product
How many updates are executed?
How many updates are executed?
Know your tool!
Custom cars APIs are the
fastest
Serialisation twists
We are reducing network
connections on expanse of object
size/db connections 🤨
Atomic objects (Edge Side API)
{
"@context": "/api/contexts/Order",
"@id": "/api/orders/1",
"@type": "Order",
"id": 1,
"orderItems": [
{
"@id": "/api/order_items/1",
"@type": "OrderItem",
"product": "/api/products/1",
"quantity": 4
},
{
"@id": "/api/order_items/2",
"@type": "OrderItem",
"product": "/api/products/2",
"quantity": 1
}
],
"total": 9000
}
{
"@context": "/api/contexts/Order",
"@id": "/api/orders/1",
"@type": "Order",
"id": 1,
"orderItems": [
{
"@id": "/api/order_items/1",
"@type": "OrderItem",
"product": {
"@id": "/api/products/1",
"@type": "Product",
"name": "test2",
"price": 1000
},
"quantity": 4
},
{
"@id": "/api/order_items/2",
"@type": "OrderItem",
"product": {
"@id": "/api/products/2",
"@type": "Product",
"name": "Trousers",
"price": 5000
},
"quantity": 1
}
],
"total": 9000
}
Atomic objects (Edge Side API)
Partial serialisation
{
"@context": "/api/contexts/Order",
"@id": "/api/orders/1",
"@type": "Order",
"id": 1,
"orderItems": [
{
"@id": "/api/order_items/1",
"@type": "OrderItem",
"product": "/api/products/1",
"quantity": 4
},
{
"@id": "/api/order_items/2",
"@type": "OrderItem",
"product": "/api/products/2",
"quantity": 1
}
],
"total": 9000
}
{
"@context": "/api/contexts/Order",
"@id": "/api/orders/1",
"@type": "Order",
"id": 1,
"orderItems": [
{
"@id": "/api/order_items/1",
"@type": "OrderItem",
"product": {
"@id": "/api/products/1",
"@type": "Product",
"name": "test2",
"price": 1000
},
"quantity": 4
},
{
"@id": "/api/order_items/2",
"@type": "OrderItem",
"product": {
"@id": "/api/products/2",
"@type": "Product",
"name": "Trousers",
"price": 5000
},
"quantity": 1
}
],
"total": 9000
}
Atomic objects (Edge Side API)
Partial serialisation
Spare
fi
elds
Straight of good
design
Huge objects are problem
Different representations
Minimising unnecessary
operations
Read model
shortcut
Saving data to different models
PUT REQUEST
Pre-computing
Need for Speed: Removing speed bumps in API Projects
Need for Speed: Removing speed bumps in API Projects
Sylius order
Sylius order
Need for Speed: Removing speed bumps in API Projects
Saving serialised objects
Read models doesn’t have to
be models 🤯
1. Store read models in key-value storage
2. Restore it by indexed key
Summary
Need for Speed: Removing speed bumps in API Projects
Remember about algorithmic complexity of your queries
Do not hydrate too much data
Think about the box of your “entities”
Thank you!
1 de 104

Recomendados

Crossing the Bridge: Connecting Rails and your Front-end Framework por
Crossing the Bridge: Connecting Rails and your Front-end FrameworkCrossing the Bridge: Connecting Rails and your Front-end Framework
Crossing the Bridge: Connecting Rails and your Front-end FrameworkDaniel Spector
1.3K vistas65 diapositivas
Api's and ember js por
Api's and ember jsApi's and ember js
Api's and ember jsEdwin Cruz
5.7K vistas115 diapositivas
Altitude NY 2018: Leveraging Log Streaming to Build the Best Dashboards, Ever por
Altitude NY 2018: Leveraging Log Streaming to Build the Best Dashboards, EverAltitude NY 2018: Leveraging Log Streaming to Build the Best Dashboards, Ever
Altitude NY 2018: Leveraging Log Streaming to Build the Best Dashboards, EverFastly
152 vistas36 diapositivas
Building Cloud Castles por
Building Cloud CastlesBuilding Cloud Castles
Building Cloud CastlesBen Scofield
851 vistas60 diapositivas
REST API for your WP7 App por
REST API for your WP7 AppREST API for your WP7 App
REST API for your WP7 AppAgnius Paradnikas
1.7K vistas25 diapositivas
Rack Middleware por
Rack MiddlewareRack Middleware
Rack MiddlewareLittleBIGRuby
2.4K vistas175 diapositivas

Más contenido relacionado

Similar a Need for Speed: Removing speed bumps in API Projects

(MBL312) NEW! AWS IoT: Programming a Physical World w/ Shadows & Rules por
(MBL312) NEW! AWS IoT: Programming a Physical World w/ Shadows & Rules(MBL312) NEW! AWS IoT: Programming a Physical World w/ Shadows & Rules
(MBL312) NEW! AWS IoT: Programming a Physical World w/ Shadows & RulesAmazon Web Services
10.4K vistas38 diapositivas
SymfonyCon Berlin 2016 - Symfony Plugin for PhpStorm - 3 years later por
SymfonyCon Berlin 2016 - Symfony Plugin for PhpStorm - 3 years laterSymfonyCon Berlin 2016 - Symfony Plugin for PhpStorm - 3 years later
SymfonyCon Berlin 2016 - Symfony Plugin for PhpStorm - 3 years laterHaehnchen
1.7K vistas56 diapositivas
Using Task Queues and D3.js to build an analytics product on App Engine por
Using Task Queues and D3.js to build an analytics product on App EngineUsing Task Queues and D3.js to build an analytics product on App Engine
Using Task Queues and D3.js to build an analytics product on App EngineRiver of Talent
3.1K vistas28 diapositivas
JAX-RS 2.0 New Features por
JAX-RS 2.0 New FeaturesJAX-RS 2.0 New Features
JAX-RS 2.0 New FeaturesJan Algermissen
4.8K vistas181 diapositivas
Intro to-rails-webperf por
Intro to-rails-webperfIntro to-rails-webperf
Intro to-rails-webperfNew Relic
459 vistas39 diapositivas
Socket applications por
Socket applicationsSocket applications
Socket applicationsJoão Moura
601 vistas121 diapositivas

Similar a Need for Speed: Removing speed bumps in API Projects(20)

(MBL312) NEW! AWS IoT: Programming a Physical World w/ Shadows & Rules por Amazon Web Services
(MBL312) NEW! AWS IoT: Programming a Physical World w/ Shadows & Rules(MBL312) NEW! AWS IoT: Programming a Physical World w/ Shadows & Rules
(MBL312) NEW! AWS IoT: Programming a Physical World w/ Shadows & Rules
Amazon Web Services10.4K vistas
SymfonyCon Berlin 2016 - Symfony Plugin for PhpStorm - 3 years later por Haehnchen
SymfonyCon Berlin 2016 - Symfony Plugin for PhpStorm - 3 years laterSymfonyCon Berlin 2016 - Symfony Plugin for PhpStorm - 3 years later
SymfonyCon Berlin 2016 - Symfony Plugin for PhpStorm - 3 years later
Haehnchen1.7K vistas
Using Task Queues and D3.js to build an analytics product on App Engine por River of Talent
Using Task Queues and D3.js to build an analytics product on App EngineUsing Task Queues and D3.js to build an analytics product on App Engine
Using Task Queues and D3.js to build an analytics product on App Engine
River of Talent3.1K vistas
Intro to-rails-webperf por New Relic
Intro to-rails-webperfIntro to-rails-webperf
Intro to-rails-webperf
New Relic459 vistas
Socket applications por João Moura
Socket applicationsSocket applications
Socket applications
João Moura601 vistas
Serverless in production, an experience report (London DevOps) por Yan Cui
Serverless in production, an experience report (London DevOps)Serverless in production, an experience report (London DevOps)
Serverless in production, an experience report (London DevOps)
Yan Cui293 vistas
WebNet Conference 2012 - Designing complex applications using html5 and knock... por Fabio Franzini
WebNet Conference 2012 - Designing complex applications using html5 and knock...WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...
Fabio Franzini1.6K vistas
Angularjs por Ynon Perek
AngularjsAngularjs
Angularjs
Ynon Perek3.2K vistas
Using the Tooling API to Generate Apex SOAP Web Service Clients por Salesforce Developers
Using the Tooling API to Generate Apex SOAP Web Service ClientsUsing the Tooling API to Generate Apex SOAP Web Service Clients
Using the Tooling API to Generate Apex SOAP Web Service Clients
Salesforce Developers7.1K vistas
6 tips for improving ruby performance por Engine Yard
6 tips for improving ruby performance6 tips for improving ruby performance
6 tips for improving ruby performance
Engine Yard6.6K vistas
Amazon Web Services for PHP Developers por Jeremy Lindblom
Amazon Web Services for PHP DevelopersAmazon Web Services for PHP Developers
Amazon Web Services for PHP Developers
Jeremy Lindblom3K vistas
Crafting Quality PHP Applications (PHP Benelux 2018) por James Titcumb
Crafting Quality PHP Applications (PHP Benelux 2018)Crafting Quality PHP Applications (PHP Benelux 2018)
Crafting Quality PHP Applications (PHP Benelux 2018)
James Titcumb707 vistas
Rhebok, High Performance Rack Handler / Rubykaigi 2015 por Masahiro Nagano
Rhebok, High Performance Rack Handler / Rubykaigi 2015Rhebok, High Performance Rack Handler / Rubykaigi 2015
Rhebok, High Performance Rack Handler / Rubykaigi 2015
Masahiro Nagano76.1K vistas
Petr Dvořák: Mobilní webové služby pohledem iPhone developera por WebExpo
Petr Dvořák: Mobilní webové služby pohledem iPhone developeraPetr Dvořák: Mobilní webové služby pohledem iPhone developera
Petr Dvořák: Mobilní webové služby pohledem iPhone developera
WebExpo398 vistas
12 core technologies you should learn, love, and hate to be a 'real' technocrat por Jonathan Linowes
12 core technologies you should learn, love, and hate to be a 'real' technocrat12 core technologies you should learn, love, and hate to be a 'real' technocrat
12 core technologies you should learn, love, and hate to be a 'real' technocrat
Jonathan Linowes911 vistas
Maciej Treder "Server-side rendering with Angular—be faster and more SEO, CDN... por Fwdays
Maciej Treder "Server-side rendering with Angular—be faster and more SEO, CDN...Maciej Treder "Server-side rendering with Angular—be faster and more SEO, CDN...
Maciej Treder "Server-side rendering with Angular—be faster and more SEO, CDN...
Fwdays946 vistas

Más de Łukasz Chruściel

SyliusCon - Typical pitfalls of Sylius development.pdf por
SyliusCon - Typical pitfalls of Sylius development.pdfSyliusCon - Typical pitfalls of Sylius development.pdf
SyliusCon - Typical pitfalls of Sylius development.pdfŁukasz Chruściel
47 vistas80 diapositivas
SymfonyLive Online 2023 - Is SOLID dead? .pdf por
SymfonyLive Online 2023 - Is SOLID dead? .pdfSymfonyLive Online 2023 - Is SOLID dead? .pdf
SymfonyLive Online 2023 - Is SOLID dead? .pdfŁukasz Chruściel
177 vistas74 diapositivas
Worldwide Software Architecture Summit'23 - BDD and why most of us do it wron... por
Worldwide Software Architecture Summit'23 - BDD and why most of us do it wron...Worldwide Software Architecture Summit'23 - BDD and why most of us do it wron...
Worldwide Software Architecture Summit'23 - BDD and why most of us do it wron...Łukasz Chruściel
27 vistas69 diapositivas
4Developers - Rozterki i decyzje.pdf por
4Developers - Rozterki i decyzje.pdf4Developers - Rozterki i decyzje.pdf
4Developers - Rozterki i decyzje.pdfŁukasz Chruściel
17 vistas88 diapositivas
4Developers - Sylius CRUD generation revisited.pdf por
4Developers - Sylius CRUD generation revisited.pdf4Developers - Sylius CRUD generation revisited.pdf
4Developers - Sylius CRUD generation revisited.pdfŁukasz Chruściel
34 vistas99 diapositivas
BoilingFrogs - Rozterki i decyzje. Czego się nauczyliśmy projektując API Syliusa por
BoilingFrogs - Rozterki i decyzje. Czego się nauczyliśmy projektując API SyliusaBoilingFrogs - Rozterki i decyzje. Czego się nauczyliśmy projektując API Syliusa
BoilingFrogs - Rozterki i decyzje. Czego się nauczyliśmy projektując API SyliusaŁukasz Chruściel
142 vistas99 diapositivas

Más de Łukasz Chruściel(18)

SyliusCon - Typical pitfalls of Sylius development.pdf por Łukasz Chruściel
SyliusCon - Typical pitfalls of Sylius development.pdfSyliusCon - Typical pitfalls of Sylius development.pdf
SyliusCon - Typical pitfalls of Sylius development.pdf
Łukasz Chruściel47 vistas
SymfonyLive Online 2023 - Is SOLID dead? .pdf por Łukasz Chruściel
SymfonyLive Online 2023 - Is SOLID dead? .pdfSymfonyLive Online 2023 - Is SOLID dead? .pdf
SymfonyLive Online 2023 - Is SOLID dead? .pdf
Łukasz Chruściel177 vistas
Worldwide Software Architecture Summit'23 - BDD and why most of us do it wron... por Łukasz Chruściel
Worldwide Software Architecture Summit'23 - BDD and why most of us do it wron...Worldwide Software Architecture Summit'23 - BDD and why most of us do it wron...
Worldwide Software Architecture Summit'23 - BDD and why most of us do it wron...
Łukasz Chruściel27 vistas
4Developers - Sylius CRUD generation revisited.pdf por Łukasz Chruściel
4Developers - Sylius CRUD generation revisited.pdf4Developers - Sylius CRUD generation revisited.pdf
4Developers - Sylius CRUD generation revisited.pdf
Łukasz Chruściel34 vistas
BoilingFrogs - Rozterki i decyzje. Czego się nauczyliśmy projektując API Syliusa por Łukasz Chruściel
BoilingFrogs - Rozterki i decyzje. Czego się nauczyliśmy projektując API SyliusaBoilingFrogs - Rozterki i decyzje. Czego się nauczyliśmy projektując API Syliusa
BoilingFrogs - Rozterki i decyzje. Czego się nauczyliśmy projektując API Syliusa
Łukasz Chruściel142 vistas
What we've learned designing new Sylius API por Łukasz Chruściel
What we've learned designing new Sylius APIWhat we've learned designing new Sylius API
What we've learned designing new Sylius API
Łukasz Chruściel105 vistas
How to optimize background processes - when Sylius meets Blackfire por Łukasz Chruściel
How to optimize background processes - when Sylius meets BlackfireHow to optimize background processes - when Sylius meets Blackfire
How to optimize background processes - when Sylius meets Blackfire
Łukasz Chruściel136 vistas
Symfony World - Symfony components and design patterns por Łukasz Chruściel
Symfony World - Symfony components and design patternsSymfony World - Symfony components and design patterns
Symfony World - Symfony components and design patterns
Łukasz Chruściel281 vistas
Sylius and Api Platform The story of integration por Łukasz Chruściel
Sylius and Api Platform The story of integrationSylius and Api Platform The story of integration
Sylius and Api Platform The story of integration
Łukasz Chruściel1.4K vistas
BDD in practice based on an open source project por Łukasz Chruściel
BDD in practice based on an open source projectBDD in practice based on an open source project
BDD in practice based on an open source project
Łukasz Chruściel729 vistas
Diversified application testing based on a Sylius project por Łukasz Chruściel
Diversified application testing based on a Sylius projectDiversified application testing based on a Sylius project
Diversified application testing based on a Sylius project
Łukasz Chruściel828 vistas

Último

AIM102-S_Cognizant_CognizantCognitive por
AIM102-S_Cognizant_CognizantCognitiveAIM102-S_Cognizant_CognizantCognitive
AIM102-S_Cognizant_CognizantCognitivePhilipBasford
21 vistas36 diapositivas
Enabling DPU Hardware Accelerators in XCP-ng Cloud Platform Environment - And... por
Enabling DPU Hardware Accelerators in XCP-ng Cloud Platform Environment - And...Enabling DPU Hardware Accelerators in XCP-ng Cloud Platform Environment - And...
Enabling DPU Hardware Accelerators in XCP-ng Cloud Platform Environment - And...ShapeBlue
108 vistas12 diapositivas
Measuring User on the web with the core web vitals - by @theafolayan.pptx por
Measuring User on the web with the core web vitals - by @theafolayan.pptxMeasuring User on the web with the core web vitals - by @theafolayan.pptx
Measuring User on the web with the core web vitals - by @theafolayan.pptxOluwaseun Raphael Afolayan
14 vistas13 diapositivas
Bronack Skills - Risk Management and SRE v1.0 12-3-2023.pdf por
Bronack Skills - Risk Management and SRE v1.0 12-3-2023.pdfBronack Skills - Risk Management and SRE v1.0 12-3-2023.pdf
Bronack Skills - Risk Management and SRE v1.0 12-3-2023.pdfThomasBronack
31 vistas31 diapositivas
Optimizing Communication to Optimize Human Behavior - LCBM por
Optimizing Communication to Optimize Human Behavior - LCBMOptimizing Communication to Optimize Human Behavior - LCBM
Optimizing Communication to Optimize Human Behavior - LCBMYaman Kumar
38 vistas49 diapositivas
Business Analyst Series 2023 - Week 4 Session 8 por
Business Analyst Series 2023 -  Week 4 Session 8Business Analyst Series 2023 -  Week 4 Session 8
Business Analyst Series 2023 - Week 4 Session 8DianaGray10
145 vistas13 diapositivas

Último(20)

AIM102-S_Cognizant_CognizantCognitive por PhilipBasford
AIM102-S_Cognizant_CognizantCognitiveAIM102-S_Cognizant_CognizantCognitive
AIM102-S_Cognizant_CognizantCognitive
PhilipBasford21 vistas
Enabling DPU Hardware Accelerators in XCP-ng Cloud Platform Environment - And... por ShapeBlue
Enabling DPU Hardware Accelerators in XCP-ng Cloud Platform Environment - And...Enabling DPU Hardware Accelerators in XCP-ng Cloud Platform Environment - And...
Enabling DPU Hardware Accelerators in XCP-ng Cloud Platform Environment - And...
ShapeBlue108 vistas
Bronack Skills - Risk Management and SRE v1.0 12-3-2023.pdf por ThomasBronack
Bronack Skills - Risk Management and SRE v1.0 12-3-2023.pdfBronack Skills - Risk Management and SRE v1.0 12-3-2023.pdf
Bronack Skills - Risk Management and SRE v1.0 12-3-2023.pdf
ThomasBronack31 vistas
Optimizing Communication to Optimize Human Behavior - LCBM por Yaman Kumar
Optimizing Communication to Optimize Human Behavior - LCBMOptimizing Communication to Optimize Human Behavior - LCBM
Optimizing Communication to Optimize Human Behavior - LCBM
Yaman Kumar38 vistas
Business Analyst Series 2023 - Week 4 Session 8 por DianaGray10
Business Analyst Series 2023 -  Week 4 Session 8Business Analyst Series 2023 -  Week 4 Session 8
Business Analyst Series 2023 - Week 4 Session 8
DianaGray10145 vistas
Discover Aura Workshop (12.5.23).pdf por Neo4j
Discover Aura Workshop (12.5.23).pdfDiscover Aura Workshop (12.5.23).pdf
Discover Aura Workshop (12.5.23).pdf
Neo4j15 vistas
The Coming AI Tsunami.pptx por johnhandby
The Coming AI Tsunami.pptxThe Coming AI Tsunami.pptx
The Coming AI Tsunami.pptx
johnhandby13 vistas
Redefining the book supply chain: A glimpse into the future - Tech Forum 2023 por BookNet Canada
Redefining the book supply chain: A glimpse into the future - Tech Forum 2023Redefining the book supply chain: A glimpse into the future - Tech Forum 2023
Redefining the book supply chain: A glimpse into the future - Tech Forum 2023
BookNet Canada44 vistas
"Node.js Development in 2024: trends and tools", Nikita Galkin por Fwdays
"Node.js Development in 2024: trends and tools", Nikita Galkin "Node.js Development in 2024: trends and tools", Nikita Galkin
"Node.js Development in 2024: trends and tools", Nikita Galkin
Fwdays33 vistas
PCCC23:日本AMD株式会社 テーマ2「AMD EPYC™ プロセッサーを用いたAIソリューション」 por PC Cluster Consortium
PCCC23:日本AMD株式会社 テーマ2「AMD EPYC™ プロセッサーを用いたAIソリューション」PCCC23:日本AMD株式会社 テーマ2「AMD EPYC™ プロセッサーを用いたAIソリューション」
PCCC23:日本AMD株式会社 テーマ2「AMD EPYC™ プロセッサーを用いたAIソリューション」
Don’t Make A Human Do A Robot’s Job! : 6 Reasons Why AI Will Save Us & Not De... por Moses Kemibaro
Don’t Make A Human Do A Robot’s Job! : 6 Reasons Why AI Will Save Us & Not De...Don’t Make A Human Do A Robot’s Job! : 6 Reasons Why AI Will Save Us & Not De...
Don’t Make A Human Do A Robot’s Job! : 6 Reasons Why AI Will Save Us & Not De...
Moses Kemibaro35 vistas
"Running students' code in isolation. The hard way", Yurii Holiuk por Fwdays
"Running students' code in isolation. The hard way", Yurii Holiuk "Running students' code in isolation. The hard way", Yurii Holiuk
"Running students' code in isolation. The hard way", Yurii Holiuk
Fwdays36 vistas
The Role of Patterns in the Era of Large Language Models por Yunyao Li
The Role of Patterns in the Era of Large Language ModelsThe Role of Patterns in the Era of Large Language Models
The Role of Patterns in the Era of Large Language Models
Yunyao Li91 vistas

Need for Speed: Removing speed bumps in API Projects