SlideShare a Scribd company logo
1 of 45
Download to read offline
系统软件事业部:打造具备全球竞争力、效率最优的系统软件
Optimizing JVM at Alibaba
for e-commerce applications running on 100,000+ servers
Sanhong Li
JVM Lead at Alibaba
系统软件事业部:打造具备全球竞争力、效率最优的系统软件
Agenda
 How Java is used at Alibaba
 Optimizing JVM for our needs
 Diagnostics and Troubleshooting
 Recap
 Q&A
系统软件事业部:打造具备全球竞争力、效率最优的系统软件
Java at Alibaba
Single VS multiple instance deployment
AliOS(xa64, Linux)
AJDK
CaiNiao
Middleware
C2C, B2C,
B2B
Alipay OthersAliYun
Alibaba/Alipay JDK, based on OpenJDK
 All the Java applications developed in Alibaba and
affiliated companies, such like Alipay, CaiNiao are running
on AJDK
• Service oriented architecture
• Services communicate with each other via RPC
• Typically, many JVMs as one cluster per service
• Heterogeneous
• communicate between the native libraries written
in C/C++ and Java via JNI
 Running Java at massive scale
• Million instances of JVMs, serving a very large
number of requests every second
系统软件事业部:打造具备全球竞争力、效率最优的系统软件
China's Singles' Day
the world's biggest online shopping day
3200
14,000
42,000
80,000
140,000
175,000
1200 3,850
15,000
38,000
86,000
120,000
0
20000
40000
60000
80000
100000
120000
140000
160000
180000
200000
2011 2012 2013 2014 2015 2016
Transantions per Second(at peek)
Alibaba cloud platform Alibaba payment service
• On Singles Day in 2016, peak transactions/sec reached 175k, and peak payment orders processed/sec
reached 120k
• In contrast, Visa only processed a peak volume of 56K messages per second(source:
www.digitaltransactions.net)
Containers inside JVM
run multiple apps in same instance safely#1
系统软件事业部:打造具备全球竞争力、效率最优的系统软件
Single vs multiple instance deployment
Single VS multiple instance deployment
• JavaEE containers such as Apache Tomcat support deploying multiple web
applications into the same container
• We don’t do this in real production environment , one of major reasons is the absence of
resource consumption control
JavaEE container
App App1
App2
Java VM
JavaEE container
Java VM
Appx…
系统软件事业部:打造具备全球竞争力、效率最优的系统软件
Building containers inside JVM
 Create “tenant” resource container per
application unit, referred as “tenant”.
 The application unit may be mapped
as a single thread, a thread group, a
war or even an OSGi bundle.
 The resources consumed by an
application unit are accounted for per
tenant
AJDK
Java module Java module Java module
Memory CPU I/O
Tenant Tenant Tenant
OS
系统软件事业部:打造具备全球竞争力、效率最优的系统软件
Tenant Container API
• TenantConfiguration: maintains resource configuration information for
tenant
• TenantContainer: represents resource container, thread switches to the
context of tenant by calling TenantContainer.run()
CPU Usage Quota
Heap Usage Quota
All relevant resource allocations(CPU/Heap) in this tenant
context are accounted for by the tenant.
系统软件事业部:打造具备全球竞争力、效率最优的系统软件
Thread and tenant
 Attach/detach
• Attached to tenant automatically after entering into TenantContainer.run()
• Detached after leaving from run block
 Inheritance
• Threads forked in TenantContainer.run() will be attached to parent thread’s
tenant automatically
 Limit
• Provide option to limit the maximum number of threads a tenant is allowed to
use
1|TenantContainer tenant = getTenant();
2|tenant.run(()->{
3| …… //switches to new tenant context
4|});
系统软件事业部:打造具备全球竞争力、效率最优的系统软件
CPU Throttling per Tenant
 Control Group directly provided by Linux kernel
 Allocate resources for aggregated
processes(threads)
 Partition all processes and children into
groups
 Organize groups in hierarchies
 Associate groups with particular resources
 Manage resource among groups
 Delegate CPU management to Control
Group(cgroup)
 So far, we only implement it on X64 platform.
1:1
系统软件事业部:打造具备全球竞争力、效率最优的系统软件
CPU Throttling per Tenant(2)
• The directory tree mirrors the control group
Process ID
Tenant ID
Threads run in tenant
CPU Usage Quota
系统软件事业部:打造具备全球竞争力、效率最优的系统软件
Tenant Heap Management
• G1GC divides the entire heap into
equally-sized regions, well suited for
tenant management
• TAC(tenant allocation context) manages
the regions for tenant
• Code running in a tenant allocates
objects in a region it owns
• New regions can be requested up to
tenant maximum reservation
S O O E E S S O O E S E E O O
TAC1 TAC2 TAC3
Tenant1 Tenant2 Tenant3
T1 T2 T3
T6T4 T5
HeapRegion
TAC
系统软件事业部:打造具备全球竞争力、效率最优的系统软件
Tenant Heap Management(2)
Eden Survivor FreeEden
Free
Free
Free
Tenant-2
OldSurvivor
Survivor
Survivor Free
Tenant-2
Tenant-1
Tenant-1
Before GC
After GC
• Mark and Copy: copy object from “from space” to “to space”
• Be sure to copy object into correct tenant region
系统软件事业部:打造具备全球竞争力、效率最优的系统软件
Other Changes for Tenant Isolation
o TLAB(Thread Local Allocation Buffer)
 Option 1: Retire TLAB when thread switches into different tenant
• Easy to implement, but waste space on TLAB, might cause
frequent YGC
 Option 2: Tenant aware TLAB, maps TLAB into correct heap region
of tenant
o IHOP(Initiating Heap Occupancy Percent)
 Calculate IHOP per tenant
• Otherwise, may suffer FULL GC when only some tenant reaches
to limit
 Do we need real “GC per tenant” ??
系统软件事业部:打造具备全球竞争力、效率最优的系统软件
Resource Usage Monitoring
o Monitor CPU/Heap usage for each of tenants in
runtime via JMX API
• CPU: cpuacct subsystem generates automatic
reports on CPU resources.
• HEAP: TAC helps us to track how many heap
regions are used for the tenant.
系统软件事业部:打造具备全球竞争力、效率最优的系统软件
Where we use this?
 AliTomcat, use it to manage shared resource when multiple WAR applications are
deployed in same instance.
 CloudEngine, built on OSGi technology, widely used in Alipay, use this for resource
management for OSGi bundle.
 Some ecommerce/information management applications, build resource management
capacity upon this technology.
• E.g. limit the CPU/HEAP usage of groovy script, which is mostly used as
externalized script for business rule definition.
 Haven’t yet implemented IO(network/disk) throttling for tenant, may consider it
in future plan.
Coroutine in Java
simplicity of synchronous, performance of asynchronous#2
系统软件事业部:打造具备全球竞争力、效率最优的系统软件
Thread Context Switch Cost
• 4 IO threads, and 200
business logic threads
• Much more of CPU
time(sy) are consumed by
thread context switch,
~100k / s (on 4 core
machine)
系统软件事业部:打造具备全球竞争力、效率最优的系统软件
Proactor Pattern in Java
 Asynchronous I/O API(.aka. NIO.2), introduced by JSR203
 Proactor pattern allows event-driven applications to efficiently demultiplex and dispatch
requests triggered by the completion of asynchronous IO
• Scales really well
• maximize throughput by avoiding unnecessary context switching
Completion Handler:
process completion events
processing of
requests proactively,
together with
completion
handlers
系统软件事业部:打造具备全球竞争力、效率最优的系统软件
Drawbacks in asynchronous programming
o Complexity of programming
• Hard to program applications using asynchrony mechanisms due to the separation
between operation invocation and completion
• Poor coding readability, hard to understand
o Complexity of debugging and testing
• 'single stepping‘ within a debugger doesn’t work for callbacks on application-
specific handlers
o A lot of existing applications don’t work in this way
• RPC framework
• Third party libraries
系统软件事业部:打造具备全球竞争力、效率最优的系统软件
Demo for Our ApproachDemo for Our Approach
Thread Dump
 Transparent to java developer.
 Coroutine used as likes Thread.
 Simplicity of synchronous, performance of
asynchronous
• Control transferring between coroutines,
transparently made by underlying implementation.
1
2
3
Connect Write
Accept Read
yieldexecution suspended
系统软件事业部:打造具备全球竞争力、效率最优的系统软件
JVM Coroutines(MLVM implementation)
 Implemented as part of the
MLVM project
 Highlights:
 Separate stack is allocated
per coroutine
 Support symmetric coroutine
 yieldTo API is used to
transfer control to the next
coroutine
系统软件事业部:打造具备全球竞争力、效率最优的系统软件
Java NIO Selector
 Selector: allows only single thread to be used for managing
multiple channels
• Monitoring events for multiple socket channels
• Recognizing when one or more become available for data
transfer
 Key idea : use Selector mechanism for coroutine scheduling for
blocked IO.
系统软件事业部:打造具备全球竞争力、效率最优的系统软件
How Does It Work: IO Read Demystified
read(ByteBuffer bb) {
if ((n = ch.read(bb)) != 0)
return n;
do {
engine.registerEvent( ch,OP_READ);
engine.scheduleNext();
} while ((n = ch.read(bb)) == 0);
return n;
}
Register ‘read’ event with
scheduler(using selector)
Block current and yield to
another available co-routine.
Thread Scheduler1:1 1:N
Coroutine 1
Coroutine 2
Coroutine 3
…
Selector
• get notified when IO readable
or writable
IO
IO
IO
IO
系统软件事业部:打造具备全球竞争力、效率最优的系统软件
How Does the Scheduler Work
o Wisp engine(Scheduler) is used to schedule next available coroutine, which is allocated per
thread.
o Interested event will be registered with Wisp engine when thread gets blocked
 IO(network r/w)
 Thread parking(e.g. Thread.sleep)
o Schedule next coroutine when:
 Interested events happen:
• IO completed(via Selector)
• Timeout(e.g. Thread.sleep)
• Thread unparking(e.g. Object.notify)
 New request arrives (newly submitted Runnable)
 Coroutine/thread exit
WISP: is the light phenomenon traditionally ascribed to ghosts
系统软件事业部:打造具备全球竞争力、效率最优的系统软件
WispEngine API
o WispEngine public APIs
o dispatch, run a task in a coroutine in same thread
o execute, allows you to execute a task in a coroutine in different
thread.
o WispThreadExecutor, which extends AbstractExecutorService,
which allows user to submit tasks into executor, which run in
coroutine
系统软件事业部:打造具备全球竞争力、效率最优的系统软件
Coroutine and Synchronization
coroutine A
coroutine B
1) Schedule and run test::foo in coroutine A
2) Current thread get blocked by wait();
3) No chance to schedule next coroutine B due to
the block in 2)
Thread Dump
1)
2)
系统软件事业部:打造具备全球竞争力、效率最优的系统软件
Approach for synchronization
Modify synchronization in HotSpot, support
coroutine scheduling at all ‘blocked’ places.
 Fast Lock
 Determining lock ownership by address on
stack, natural support due to the fact: stack is
allocated per coroutine.
 Biased lock
 Use –XX:- UseBiasedLocking to work around
 Inflated Lock(Very complex case)
 Create “WispThread” instance per coroutine,
which extends from JavaThread
 Use “WispThread” instance as current
thread(Self) for monitor manipulation.
coroutine A
monitor_enter
yeildTo
Object.wait
waiter list
monitor_enter
Object.notify
unpark
coroutine B
monitor_exit
monitor_exit
yeildTo
2
5
6
Main Thread
1
dispatch
3
dispatch4
Main Thread
yeildTo
7
系统软件事业部:打造具备全球竞争力、效率最优的系统软件
Performance Results
• Used in real world Alibaba
application, Carts, which is an e-
commerce application for shopping
carts.
• Coroutine is used to handle all
network IO requests, running each
thread on each logical processor.
• Reduced CPU usage from 60% to
54% (~10% saving)while serving
the same number of requests.
系统软件事业部:打造具备全球竞争力、效率最优的系统软件
Revisit Wisp Implementation
o We add coroutine scheduling logic to almost all blocked places in JDK
 J.U.C stuff (Future, J.U.C lock, etc.)
 Java network IO(java.net, java.nio)
 Java primitive lock
• Synchronized(monitor enter/exit)
• Object.wait
• Object.notify/Object.notifyAll
o Java disk io(java.io) is not supported yet
o Native code in JNI is not supported so far
JWarmup
priming online application for speed#3
系统软件事业部:打造具备全球竞争力、效率最优的系统软件
Java Warmup Issue
CPU
Time
o High CPU consumption caused by
intensive methods compilation during
application warmup
• TieredCompilation can alleviate it, but
can not completely resolve it.
o Problems occurred when lots of user
requests come in after application online
• Much longer response time , hence
lots of ‘timeout’ errors.
Warmup
100%
系统软件事业部:打造具备全球竞争力、效率最优的系统软件
JWarmUp: eliminate JVM warm-up
Server
user requests
class
profiling data
loading
record
Server
compile
beta production
classes
 Before JWarmup, our application owners
usually use ‘mock’ data to warm-up JVM to
let JIT optimize before actual requests come
in.
 ‘JWarmup’ used to obviate the need for
"warming-up" by:
• Record the profiling data (in beta
testing)
• Let JIT compile code based on
recorded profiling data before requests
come in (in online run)
user requests
系统软件事业部:打造具备全球竞争力、效率最优的系统软件
‘Under the hook view 'of JWarmup
o In recording phase
 Record class initialization info
 Record method compilation info
 Flush them onto disk as record file after enough time
o In compiling phase
 Eagerly load classes recorded in previous run
 Eagerly initialize loaded classes
• Tricky case: <clinit> MUST be executed in determined order
• Initializing them only through constant pool might be problem
 Submit for compilation
Bar.<clinit> is dependent on the
execution of Foo.test();
系统软件事业部:打造具备全球竞争力、效率最优的系统软件
Results from Alibaba Online Application(UMP)
(1) Warmup compiles code in advance before requests come in
(2) At the point when real user requests come in.
(3) Most of hot methods are completely compiled by TieredCompilation
(1)
(2)
(3)
UMP: ecommerce application for complex discounting calculation
系统软件事业部:打造具备全球竞争力、效率最优的系统软件
Other considerations
• Don’t record dynamically generated classes
• Generated by groovy, classes themselves might be changed between runs due to
the change of rules.
• Generated by Java Reflection/Proxy because class names get changed in next run.
• JWarmup compiles methods without ‘MethodData ’ information, because we see
unexpected de-optimization when real requests come in.
• Disable ‘Null check elimination’ optimization for avoiding unexpected de-optimization.
• Not compatible with –XX:+ TieredCompilation, consider it in next step.
Diagnostics and Troubleshooting
technical support for java developers#4
系统软件事业部:打造具备全球竞争力、效率最优的系统软件
Support for Diagnostics and Troubleshooting
o Modify OpenJDK for better profiling and debugging
 Method tracing
 Heap profiling
 Debug on late attach
• …
o Built upon that, we have our own internal tools:
 ZProfiler: problem and performance diagnostic tool
• GC log analyzing
• Low-overhead hot method profiling
• Method tracing
 ZDebugger: browser-based debugging tool
• Designed for debugging Alibaba cloud application
系统软件事业部:打造具备全球竞争力、效率最优的系统软件
On demand debugging
The current implementation of HotSpot doesn’t
support the late attach for jdwp agent:
https://bugs.openjdk.java.net/browse/JDK-4841257
Why we need DOLA(Debug-on-Late-Attach)?
• In our production environment, for performance consideration, we don’t start
JVM with -agentlib:jdwp option
• It is hard to reproduce the problem if restarting the JVM after the problem
occurred
系统软件事业部:打造具备全球竞争力、效率最优的系统软件
How to use it
• java -XX:+DebugOnLateAttach HelloWorld
• jcmd [pid] AgentLib.load agent.name=jdwp
agent.options=transport=dt_socket,server=y,suspend=n,address=2012
DOLA is implemented in Alibaba JDK as an experimental feature, only supports
breakpoint set and variable inspections, but they are sufficient for our use!
系统软件事业部:打造具备全球竞争力、效率最优的系统软件
Implementation of DOLA
• Modify the interpreter of HotSpot to support breakpoint post in bytecode patch path
• Modify management capacities of JVMTi to add:
• can_access_local_variables
• can_generate_breakpoint_events
• Add the Agent_OnAttach functionality to jdwp agent
• Extend the jcmd to support agent loading (usability improvements)
The last
We are still working hard on…#5
系统软件事业部:打造具备全球竞争力、效率最优的系统软件
GC & Further Performance Optimization
o Garbage Collector
 Real time processing for big data, requires minimal STW
 ‘Generation hypothesis” doesn’t fit for LRU, widely used in Alibaba applications
o Performance Optimization
 Object serialization/de-serialization
• Hessian, Kryo are better, but still not enough.
系统软件事业部:打造具备全球竞争力、效率最优的系统软件
Recap
• What we have mainly covered in this talk:
• Container-based resource management technology built for high density
deployments
• Wisp coroutine wins the same performance benefits as async, while
keeping a simple programming(sync) for developers.
• JWarump is used to obviate the need for "warming-up"
系统软件事业部:打造具备全球竞争力、效率最优的系统软件
谢谢观看
thanks
Mail: sanhong.lsh@alibaba-inc.com
Twttier: @sanhong_li

More Related Content

Recently uploaded

Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Karmanjay Verma
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Mark Simos
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxAna-Maria Mihalceanu
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Jeffrey Haguewood
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...Karmanjay Verma
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFMichael Gough
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 

Recently uploaded (20)

Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance Toolbox
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDF
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 

Featured

How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Applitools
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at WorkGetSmarter
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...DevGAMM Conference
 
Barbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationErica Santiago
 
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellGood Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellSaba Software
 
Introduction to C Programming Language
Introduction to C Programming LanguageIntroduction to C Programming Language
Introduction to C Programming LanguageSimplilearn
 

Featured (20)

How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
 
Barbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy Presentation
 
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellGood Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
 
Introduction to C Programming Language
Introduction to C Programming LanguageIntroduction to C Programming Language
Introduction to C Programming Language
 

Optimizing JVM at Alibaba for e-commerce apps running on 100,000+ servers