SlideShare una empresa de Scribd logo
1 de 36
Descargar para leer sin conexión
Erlang.
Measurements and benefits
Valerii Vasylkov, Timecode LLC.
History
notes
Erlang shots
Erlang benefits
Functional nature
Pattern matching on steroids
Concurrency
Fault Tolerance
Let it crash
Distributed Computation
Debugging and profiling
Hot upgrades
Erlang benefits
Functional nature
Pattern matching on steroids
Concurrency
Fault Tolerance
Let it crash
Distributed Computation
Debugging and profiling
Hot upgrades
Functions are easy
Dynamic types
Pattern matching
No mutable data
structures
Binary tree search
Factorial function
Erlang benefits
Functional nature
Pattern matching on steroids
Concurrency
Fault Tolerance
Let it crash
Distributed Computation
Debugging and profiling
Hot upgrades
Pattern matching and steroids
Structure
s
Binaries
Complex
conditions1 get_vh_registered_users(Server, [{prefix, Prefix}, {limit, Limit}, {offset, Offset}])
2 when is_list(Prefix) and is_integer(Limit) and is_integer(Offset) ->
3 case [{U,S} || {U, S} <- get_vh_registered_users(Server), lists:prefix(Prefix, U)]
of
4 [] ->
5 [];
6 Users ->
7 Set = lists:keysort(1, Users),
8 L = length(Set),
9 Start = if Offset < 1 -> 1;
10 Offset > L -> L;
11 true -> Offset
12 end,
13 lists:sublist(Set, Start, Limit)
14 end.
* Not your familiar Regex string matching
Erlang benefits
Functional nature
Pattern matching on steroids
Concurrency
Fault Tolerance
Let it crash
Distributed Computation
Debugging and profiling
Hot upgrades
Erlang concurrency philosophy
The Actor Model
Thinking Parallel
Thinking Processes
• Behavior
• State
• Parallel
• Asynchronous Messages Mailboxes
• No Shared State
The Actor
Model
Carl Hewitt
1973
• Data + Code + Process
• Self-Contained Machines
• Stronger Encapsulation
• Less Inheritance
• Type Inference
• Hot Code Upgrades
Actor
structure
Behavior way
• Inheritance of Behavior only.
• Usually only one level deep.
• Usually one of the standard OTP behaviors:
• Generic Server
• Event
• State Machine
• Supervisor.
Actor vs. OO workflow
Synchronous Calls
Asynchronous Messages
Actor Model: Benefits
• More true to the real world
• Better suited for parallel hardware
• Better suited for distributed architectures
• Scaling garbage collection (gc/actor)
• Less Magic
Actors example
-module(pingpong).
-export([start/0]).
-export([ping/0, pong/0]).
start()->
PingPid = spawn(?MODULE, ping(), []),
PongPid = spawn(?MODULE, pong(), []),
PingPid ! {ping, PongPid},
erlang:send_after(60000,PingPid, stop),
erlang:send_after(60000,PongPid, stop).
ping()->
receive
{Pid, ping} ->
io:fwrite("Ping received Pong~n",[]),
timer:sleep(3000),
Pid ! {self(), pong},
ping();
stop ->
true
end.
pong() ->
receive
{Pid, pong} ->
io:fwrite("Pong received Ping~n",[]),
timer:sleep(3000),
Pid ! {self(), ping},
pong();
stop ->
true
end.
Erlang benefits
Functional nature
Pattern matching on steroids
Concurrency
Fault Tolerance
Let it crash
Distributed Computation
Debugging and profiling
Hot upgrades
Fault-tolerant
Erlang
Supervisors
Links and Monitors
Erlang benefits
Functional nature
Pattern matching on steroids
Concurrency
Fault Tolerance
Let it crash
Distributed Computation
Debugging and profiling
Hot upgrades
Faulty subsystem are difficult to
correct
P.S. Don’t bother, just
Erlang benefits
Functional nature
Pattern matching on steroids
Concurrency
Fault Tolerance
Distributed Computation
Debugging and profiling
Hot upgrades
Distributio
n
Node 1 Node 2
B ! Msg
A B C
transparent message passing in cluster
Setting up an Erlang cluster
erl -sname ketchup
...
(ketchup@ferdmbp)1>
(ketchup@ferdmbp)1> net_kernel:connect_node(fries@ferdmbp).
true
(ketchup@ferdmbp)2> node().
ketchup@ferdmbp
(ketchup@ferdmbp)3> nodes().
[fries@ferdmbp]
(ketchup@ferdmbp)4> register(shell, self()).
true
(ketchup@ferdmbp)5> {shell, fries@ferdmbp} ! {hello, from, self()}.
{hello,from,<0.52.0>}
(ketchup@ferdmbp)6> flush().
Shell got <<"hey there!">>
ok
erl -sname fries
...
(fries@ferdmbp)1>
(fries@ferdmbp)1> register(shell, self()).
true
(fries@ferdmbp)2> receive
{hello, from, OtherShell} ->
OtherShell ! <<"hey there!">>
end.
http://learnyousomeerlang.com/distribunomico
n
Erlang benefits
Functional nature
Pattern matching on steroids
Concurrency
Fault Tolerance
Distributed Computation
Debugging and profiling
Hot upgrades
Observer
Remote shells
(salad@ferdmbp)1>
User switch command
--> h
c [nn] - connect to job
i [nn] - interrupt job
k [nn] - kill job
j - list all jobs
s [shell] - start local shell
r [node [shell]] - start remote shell
q - quit erlang
? | h - this message
--> r mustard@ferdmbp
--> j
1 {shell,start,[init]}
2* {mustard@ferdmbp,shell,start,[]}
--> c
Eshell V5.8.4 (abort with ^G)
(mustard@ferdmbp)1> node().
mustard@ferdmbp
Debugger and profilers
Tool Results
Size of
Result
Effects on Program
Execution Time
Records
Number of
Calls
Records
Execution
Time
Records
Called by
Records
Garbage
Collection
fprof
Per process to
screen/file
Large Significant slowdown Yes
Total and
own
Yes Yes
eprof
Per process/function
to screen/file
Medium Small slowdown Yes Only total No No
cover
Per module to
screen/file
Small Moderate slowdown Yes, per line No No No
cprof Per module to caller Small Small slowdown Yes No No No
dbg Text based tracer Large Small slowdonw No No Yes No
Communit
y
• recon
• redbug
• lager
• xprof
More
introspection
• etop
• pman
• os_mon
• debugger
Bottleneck detection
Erlang benefits
Functional nature
Pattern matching on steroids
Concurrency
Fault Tolerance
Distributed Computation
Debugging and profiling
Hot upgrades
Hot code upgrades
Erlang applications pie
Measurements
Activity
• millions active users
• fast processes for handling
Stability
• developers and operations sleeps fine
• no emergencies for a couple of years
Performance
• compatible to C,
• VM memory management
• lightweight concurrency
• scalability from a box
Issues
• concurrent bottlenecks
• Net splits
• Networks security
• Hot upgrades
Top 5 lines of code
46292
11703
7328
2784
1479
Questions?

Más contenido relacionado

La actualidad más candente

Apache Spark RDDs
Apache Spark RDDsApache Spark RDDs
Apache Spark RDDsDean Chen
 
Advanced Apache Cassandra Operations with JMX
Advanced Apache Cassandra Operations with JMXAdvanced Apache Cassandra Operations with JMX
Advanced Apache Cassandra Operations with JMXzznate
 
Frustration-Reduced Spark: DataFrames and the Spark Time-Series Library
Frustration-Reduced Spark: DataFrames and the Spark Time-Series LibraryFrustration-Reduced Spark: DataFrames and the Spark Time-Series Library
Frustration-Reduced Spark: DataFrames and the Spark Time-Series LibraryIlya Ganelin
 
Productionizing your Streaming Jobs
Productionizing your Streaming JobsProductionizing your Streaming Jobs
Productionizing your Streaming JobsDatabricks
 
Large volume data analysis on the Typesafe Reactive Platform - Big Data Scala...
Large volume data analysis on the Typesafe Reactive Platform - Big Data Scala...Large volume data analysis on the Typesafe Reactive Platform - Big Data Scala...
Large volume data analysis on the Typesafe Reactive Platform - Big Data Scala...Martin Zapletal
 
Performance Tuning and Optimization
Performance Tuning and OptimizationPerformance Tuning and Optimization
Performance Tuning and OptimizationMongoDB
 
Apache Spark in Depth: Core Concepts, Architecture & Internals
Apache Spark in Depth: Core Concepts, Architecture & InternalsApache Spark in Depth: Core Concepts, Architecture & Internals
Apache Spark in Depth: Core Concepts, Architecture & InternalsAnton Kirillov
 
Horizontally Scalable Relational Databases with Spark: Spark Summit East talk...
Horizontally Scalable Relational Databases with Spark: Spark Summit East talk...Horizontally Scalable Relational Databases with Spark: Spark Summit East talk...
Horizontally Scalable Relational Databases with Spark: Spark Summit East talk...Spark Summit
 
Processing Large Data with Apache Spark -- HasGeek
Processing Large Data with Apache Spark -- HasGeekProcessing Large Data with Apache Spark -- HasGeek
Processing Large Data with Apache Spark -- HasGeekVenkata Naga Ravi
 
Extending Apache Spark – Beyond Spark Session Extensions
Extending Apache Spark – Beyond Spark Session ExtensionsExtending Apache Spark – Beyond Spark Session Extensions
Extending Apache Spark – Beyond Spark Session ExtensionsDatabricks
 
Spark & Spark Streaming Internals - Nov 15 (1)
Spark & Spark Streaming Internals - Nov 15 (1)Spark & Spark Streaming Internals - Nov 15 (1)
Spark & Spark Streaming Internals - Nov 15 (1)Akhil Das
 
Data analysis scala_spark
Data analysis scala_sparkData analysis scala_spark
Data analysis scala_sparkYiguang Hu
 
Why your Spark job is failing
Why your Spark job is failingWhy your Spark job is failing
Why your Spark job is failingSandy Ryza
 
Everyday I'm Shuffling - Tips for Writing Better Spark Programs, Strata San J...
Everyday I'm Shuffling - Tips for Writing Better Spark Programs, Strata San J...Everyday I'm Shuffling - Tips for Writing Better Spark Programs, Strata San J...
Everyday I'm Shuffling - Tips for Writing Better Spark Programs, Strata San J...Databricks
 
Bucket Your Partitions Wisely (Markus Höfer, codecentric AG) | Cassandra Summ...
Bucket Your Partitions Wisely (Markus Höfer, codecentric AG) | Cassandra Summ...Bucket Your Partitions Wisely (Markus Höfer, codecentric AG) | Cassandra Summ...
Bucket Your Partitions Wisely (Markus Höfer, codecentric AG) | Cassandra Summ...DataStax
 
User Defined Aggregation in Apache Spark: A Love Story
User Defined Aggregation in Apache Spark: A Love StoryUser Defined Aggregation in Apache Spark: A Love Story
User Defined Aggregation in Apache Spark: A Love StoryDatabricks
 
Automated Machine Learning Using Spark Mllib to Improve Customer Experience-(...
Automated Machine Learning Using Spark Mllib to Improve Customer Experience-(...Automated Machine Learning Using Spark Mllib to Improve Customer Experience-(...
Automated Machine Learning Using Spark Mllib to Improve Customer Experience-(...Spark Summit
 
Top 5 mistakes when writing Spark applications
Top 5 mistakes when writing Spark applicationsTop 5 mistakes when writing Spark applications
Top 5 mistakes when writing Spark applicationshadooparchbook
 

La actualidad más candente (20)

Apache Spark RDDs
Apache Spark RDDsApache Spark RDDs
Apache Spark RDDs
 
Advanced Apache Cassandra Operations with JMX
Advanced Apache Cassandra Operations with JMXAdvanced Apache Cassandra Operations with JMX
Advanced Apache Cassandra Operations with JMX
 
Frustration-Reduced Spark: DataFrames and the Spark Time-Series Library
Frustration-Reduced Spark: DataFrames and the Spark Time-Series LibraryFrustration-Reduced Spark: DataFrames and the Spark Time-Series Library
Frustration-Reduced Spark: DataFrames and the Spark Time-Series Library
 
Productionizing your Streaming Jobs
Productionizing your Streaming JobsProductionizing your Streaming Jobs
Productionizing your Streaming Jobs
 
Apache spark Intro
Apache spark IntroApache spark Intro
Apache spark Intro
 
Large volume data analysis on the Typesafe Reactive Platform - Big Data Scala...
Large volume data analysis on the Typesafe Reactive Platform - Big Data Scala...Large volume data analysis on the Typesafe Reactive Platform - Big Data Scala...
Large volume data analysis on the Typesafe Reactive Platform - Big Data Scala...
 
Performance Tuning and Optimization
Performance Tuning and OptimizationPerformance Tuning and Optimization
Performance Tuning and Optimization
 
Apache Spark in Depth: Core Concepts, Architecture & Internals
Apache Spark in Depth: Core Concepts, Architecture & InternalsApache Spark in Depth: Core Concepts, Architecture & Internals
Apache Spark in Depth: Core Concepts, Architecture & Internals
 
Horizontally Scalable Relational Databases with Spark: Spark Summit East talk...
Horizontally Scalable Relational Databases with Spark: Spark Summit East talk...Horizontally Scalable Relational Databases with Spark: Spark Summit East talk...
Horizontally Scalable Relational Databases with Spark: Spark Summit East talk...
 
Processing Large Data with Apache Spark -- HasGeek
Processing Large Data with Apache Spark -- HasGeekProcessing Large Data with Apache Spark -- HasGeek
Processing Large Data with Apache Spark -- HasGeek
 
Extending Apache Spark – Beyond Spark Session Extensions
Extending Apache Spark – Beyond Spark Session ExtensionsExtending Apache Spark – Beyond Spark Session Extensions
Extending Apache Spark – Beyond Spark Session Extensions
 
Apache Spark RDD 101
Apache Spark RDD 101Apache Spark RDD 101
Apache Spark RDD 101
 
Spark & Spark Streaming Internals - Nov 15 (1)
Spark & Spark Streaming Internals - Nov 15 (1)Spark & Spark Streaming Internals - Nov 15 (1)
Spark & Spark Streaming Internals - Nov 15 (1)
 
Data analysis scala_spark
Data analysis scala_sparkData analysis scala_spark
Data analysis scala_spark
 
Why your Spark job is failing
Why your Spark job is failingWhy your Spark job is failing
Why your Spark job is failing
 
Everyday I'm Shuffling - Tips for Writing Better Spark Programs, Strata San J...
Everyday I'm Shuffling - Tips for Writing Better Spark Programs, Strata San J...Everyday I'm Shuffling - Tips for Writing Better Spark Programs, Strata San J...
Everyday I'm Shuffling - Tips for Writing Better Spark Programs, Strata San J...
 
Bucket Your Partitions Wisely (Markus Höfer, codecentric AG) | Cassandra Summ...
Bucket Your Partitions Wisely (Markus Höfer, codecentric AG) | Cassandra Summ...Bucket Your Partitions Wisely (Markus Höfer, codecentric AG) | Cassandra Summ...
Bucket Your Partitions Wisely (Markus Höfer, codecentric AG) | Cassandra Summ...
 
User Defined Aggregation in Apache Spark: A Love Story
User Defined Aggregation in Apache Spark: A Love StoryUser Defined Aggregation in Apache Spark: A Love Story
User Defined Aggregation in Apache Spark: A Love Story
 
Automated Machine Learning Using Spark Mllib to Improve Customer Experience-(...
Automated Machine Learning Using Spark Mllib to Improve Customer Experience-(...Automated Machine Learning Using Spark Mllib to Improve Customer Experience-(...
Automated Machine Learning Using Spark Mllib to Improve Customer Experience-(...
 
Top 5 mistakes when writing Spark applications
Top 5 mistakes when writing Spark applicationsTop 5 mistakes when writing Spark applications
Top 5 mistakes when writing Spark applications
 

Destacado

Newsletter May 2016
Newsletter May 2016Newsletter May 2016
Newsletter May 2016Slim Haddad
 
Arellano Bernardo III Geog 292 Ang Pagpangayaw sa Dutang Ginsaad
Arellano Bernardo III Geog 292 Ang Pagpangayaw sa Dutang GinsaadArellano Bernardo III Geog 292 Ang Pagpangayaw sa Dutang Ginsaad
Arellano Bernardo III Geog 292 Ang Pagpangayaw sa Dutang GinsaadBernardo Arellano III
 
SE2016 BigData Denis Reznik "Data driven future"
SE2016 BigData Denis Reznik "Data driven future"SE2016 BigData Denis Reznik "Data driven future"
SE2016 BigData Denis Reznik "Data driven future"Inhacking
 
νομισματικό μουσείο
νομισματικό μουσείονομισματικό μουσείο
νομισματικό μουσείο70athinon
 

Destacado (12)

Hardware: Vera y Lara
Hardware: Vera y LaraHardware: Vera y Lara
Hardware: Vera y Lara
 
Bases Beca Luis Bravo Tornel
Bases Beca Luis Bravo TornelBases Beca Luis Bravo Tornel
Bases Beca Luis Bravo Tornel
 
Newsletter May 2016
Newsletter May 2016Newsletter May 2016
Newsletter May 2016
 
Swiss gold
Swiss goldSwiss gold
Swiss gold
 
Arellano Bernardo III Geog 292 Ang Pagpangayaw sa Dutang Ginsaad
Arellano Bernardo III Geog 292 Ang Pagpangayaw sa Dutang GinsaadArellano Bernardo III Geog 292 Ang Pagpangayaw sa Dutang Ginsaad
Arellano Bernardo III Geog 292 Ang Pagpangayaw sa Dutang Ginsaad
 
Jvmjava
JvmjavaJvmjava
Jvmjava
 
Applet
AppletApplet
Applet
 
Java c (1)
Java c  (1)Java c  (1)
Java c (1)
 
SE2016 BigData Denis Reznik "Data driven future"
SE2016 BigData Denis Reznik "Data driven future"SE2016 BigData Denis Reznik "Data driven future"
SE2016 BigData Denis Reznik "Data driven future"
 
Javafeature
JavafeatureJavafeature
Javafeature
 
Accessmodifier
AccessmodifierAccessmodifier
Accessmodifier
 
νομισματικό μουσείο
νομισματικό μουσείονομισματικό μουσείο
νομισματικό μουσείο
 

Similar a SE2016 Exotic Valerii Vasylkov "Erlang. Measurements and benefits"

Monitoring Complex Systems: Keeping Your Head on Straight in a Hard World
Monitoring Complex Systems: Keeping Your Head on Straight in a Hard WorldMonitoring Complex Systems: Keeping Your Head on Straight in a Hard World
Monitoring Complex Systems: Keeping Your Head on Straight in a Hard WorldBrian Troutwine
 
Re-Design with Elixir/OTP
Re-Design with Elixir/OTPRe-Design with Elixir/OTP
Re-Design with Elixir/OTPMustafa TURAN
 
Building an ML Platform with Ray and MLflow
Building an ML Platform with Ray and MLflowBuilding an ML Platform with Ray and MLflow
Building an ML Platform with Ray and MLflowDatabricks
 
Replication MongoDB Days 2013
Replication MongoDB Days 2013Replication MongoDB Days 2013
Replication MongoDB Days 2013Randall Hunt
 
Actor Concurrency
Actor ConcurrencyActor Concurrency
Actor ConcurrencyAlex Miller
 
Workshop "Can my .NET application use less CPU / RAM?", Yevhen Tatarynov
Workshop "Can my .NET application use less CPU / RAM?", Yevhen TatarynovWorkshop "Can my .NET application use less CPU / RAM?", Yevhen Tatarynov
Workshop "Can my .NET application use less CPU / RAM?", Yevhen TatarynovFwdays
 
Dynamic Tracing of your AMP web site
Dynamic Tracing of your AMP web siteDynamic Tracing of your AMP web site
Dynamic Tracing of your AMP web siteSriram Natarajan
 
PostgreSQL 8.4 TriLUG 2009-11-12
PostgreSQL 8.4 TriLUG 2009-11-12PostgreSQL 8.4 TriLUG 2009-11-12
PostgreSQL 8.4 TriLUG 2009-11-12Andrew Dunstan
 
Presto anatomy
Presto anatomyPresto anatomy
Presto anatomyDongmin Yu
 
Worst-Case Scheduling of Software Tasks
Worst-Case Scheduling of Software TasksWorst-Case Scheduling of Software Tasks
Worst-Case Scheduling of Software TasksLionel Briand
 
Profiling your Applications using the Linux Perf Tools
Profiling your Applications using the Linux Perf ToolsProfiling your Applications using the Linux Perf Tools
Profiling your Applications using the Linux Perf ToolsemBO_Conference
 
PHP applications/environments monitoring: APM & Pinba
PHP applications/environments monitoring: APM & PinbaPHP applications/environments monitoring: APM & Pinba
PHP applications/environments monitoring: APM & PinbaPatrick Allaert
 
Improving the performance of Odoo deployments
Improving the performance of Odoo deploymentsImproving the performance of Odoo deployments
Improving the performance of Odoo deploymentsOdoo
 
Big Data Day LA 2016/ Hadoop/ Spark/ Kafka track - Data Provenance Support in...
Big Data Day LA 2016/ Hadoop/ Spark/ Kafka track - Data Provenance Support in...Big Data Day LA 2016/ Hadoop/ Spark/ Kafka track - Data Provenance Support in...
Big Data Day LA 2016/ Hadoop/ Spark/ Kafka track - Data Provenance Support in...Data Con LA
 
Scaling python webapps from 0 to 50 million users - A top-down approach
Scaling python webapps from 0 to 50 million users - A top-down approachScaling python webapps from 0 to 50 million users - A top-down approach
Scaling python webapps from 0 to 50 million users - A top-down approachJinal Jhaveri
 
Postgres Vision 2018: Making Postgres Even Faster
Postgres Vision 2018: Making Postgres Even FasterPostgres Vision 2018: Making Postgres Even Faster
Postgres Vision 2018: Making Postgres Even FasterEDB
 
Beyond Breakpoints: A Tour of Dynamic Analysis
Beyond Breakpoints: A Tour of Dynamic AnalysisBeyond Breakpoints: A Tour of Dynamic Analysis
Beyond Breakpoints: A Tour of Dynamic AnalysisFastly
 
[245] presto 내부구조 파헤치기
[245] presto 내부구조 파헤치기[245] presto 내부구조 파헤치기
[245] presto 내부구조 파헤치기NAVER D2
 
Naked Performance With Clojure
Naked Performance With ClojureNaked Performance With Clojure
Naked Performance With ClojureMetosin Oy
 

Similar a SE2016 Exotic Valerii Vasylkov "Erlang. Measurements and benefits" (20)

Monitoring Complex Systems: Keeping Your Head on Straight in a Hard World
Monitoring Complex Systems: Keeping Your Head on Straight in a Hard WorldMonitoring Complex Systems: Keeping Your Head on Straight in a Hard World
Monitoring Complex Systems: Keeping Your Head on Straight in a Hard World
 
Re-Design with Elixir/OTP
Re-Design with Elixir/OTPRe-Design with Elixir/OTP
Re-Design with Elixir/OTP
 
Building an ML Platform with Ray and MLflow
Building an ML Platform with Ray and MLflowBuilding an ML Platform with Ray and MLflow
Building an ML Platform with Ray and MLflow
 
Replication MongoDB Days 2013
Replication MongoDB Days 2013Replication MongoDB Days 2013
Replication MongoDB Days 2013
 
Actor Concurrency
Actor ConcurrencyActor Concurrency
Actor Concurrency
 
Workshop "Can my .NET application use less CPU / RAM?", Yevhen Tatarynov
Workshop "Can my .NET application use less CPU / RAM?", Yevhen TatarynovWorkshop "Can my .NET application use less CPU / RAM?", Yevhen Tatarynov
Workshop "Can my .NET application use less CPU / RAM?", Yevhen Tatarynov
 
Dynamic Tracing of your AMP web site
Dynamic Tracing of your AMP web siteDynamic Tracing of your AMP web site
Dynamic Tracing of your AMP web site
 
PostgreSQL 8.4 TriLUG 2009-11-12
PostgreSQL 8.4 TriLUG 2009-11-12PostgreSQL 8.4 TriLUG 2009-11-12
PostgreSQL 8.4 TriLUG 2009-11-12
 
Presto anatomy
Presto anatomyPresto anatomy
Presto anatomy
 
Worst-Case Scheduling of Software Tasks
Worst-Case Scheduling of Software TasksWorst-Case Scheduling of Software Tasks
Worst-Case Scheduling of Software Tasks
 
Profiling your Applications using the Linux Perf Tools
Profiling your Applications using the Linux Perf ToolsProfiling your Applications using the Linux Perf Tools
Profiling your Applications using the Linux Perf Tools
 
PHP applications/environments monitoring: APM & Pinba
PHP applications/environments monitoring: APM & PinbaPHP applications/environments monitoring: APM & Pinba
PHP applications/environments monitoring: APM & Pinba
 
Improving the performance of Odoo deployments
Improving the performance of Odoo deploymentsImproving the performance of Odoo deployments
Improving the performance of Odoo deployments
 
Big Data Day LA 2016/ Hadoop/ Spark/ Kafka track - Data Provenance Support in...
Big Data Day LA 2016/ Hadoop/ Spark/ Kafka track - Data Provenance Support in...Big Data Day LA 2016/ Hadoop/ Spark/ Kafka track - Data Provenance Support in...
Big Data Day LA 2016/ Hadoop/ Spark/ Kafka track - Data Provenance Support in...
 
Scaling python webapps from 0 to 50 million users - A top-down approach
Scaling python webapps from 0 to 50 million users - A top-down approachScaling python webapps from 0 to 50 million users - A top-down approach
Scaling python webapps from 0 to 50 million users - A top-down approach
 
Postgres Vision 2018: Making Postgres Even Faster
Postgres Vision 2018: Making Postgres Even FasterPostgres Vision 2018: Making Postgres Even Faster
Postgres Vision 2018: Making Postgres Even Faster
 
Beyond Breakpoints: A Tour of Dynamic Analysis
Beyond Breakpoints: A Tour of Dynamic AnalysisBeyond Breakpoints: A Tour of Dynamic Analysis
Beyond Breakpoints: A Tour of Dynamic Analysis
 
bluespec talk
bluespec talkbluespec talk
bluespec talk
 
[245] presto 내부구조 파헤치기
[245] presto 내부구조 파헤치기[245] presto 내부구조 파헤치기
[245] presto 내부구조 파헤치기
 
Naked Performance With Clojure
Naked Performance With ClojureNaked Performance With Clojure
Naked Performance With Clojure
 

Más de Inhacking

SE2016 Fundraising Roman Kravchenko "Investment in Ukrainian IoT-Startups"
SE2016 Fundraising Roman Kravchenko "Investment in Ukrainian IoT-Startups"SE2016 Fundraising Roman Kravchenko "Investment in Ukrainian IoT-Startups"
SE2016 Fundraising Roman Kravchenko "Investment in Ukrainian IoT-Startups"Inhacking
 
SE2016 Fundraising Wlodek Laskowski "Insider guide to successful fundraising ...
SE2016 Fundraising Wlodek Laskowski "Insider guide to successful fundraising ...SE2016 Fundraising Wlodek Laskowski "Insider guide to successful fundraising ...
SE2016 Fundraising Wlodek Laskowski "Insider guide to successful fundraising ...Inhacking
 
SE2016 Fundraising Andrey Sobol "Blockchain Crowdfunding or "Mommy, look, I l...
SE2016 Fundraising Andrey Sobol "Blockchain Crowdfunding or "Mommy, look, I l...SE2016 Fundraising Andrey Sobol "Blockchain Crowdfunding or "Mommy, look, I l...
SE2016 Fundraising Andrey Sobol "Blockchain Crowdfunding or "Mommy, look, I l...Inhacking
 
SE2016 Company Development Valentin Dombrovsky "Travel startups challenges an...
SE2016 Company Development Valentin Dombrovsky "Travel startups challenges an...SE2016 Company Development Valentin Dombrovsky "Travel startups challenges an...
SE2016 Company Development Valentin Dombrovsky "Travel startups challenges an...Inhacking
 
SE2016 Company Development Vadym Gorenko "How to pass the death valley"
SE2016 Company Development Vadym Gorenko  "How to pass the death valley"SE2016 Company Development Vadym Gorenko  "How to pass the death valley"
SE2016 Company Development Vadym Gorenko "How to pass the death valley"Inhacking
 
SE2016 Marketing&PR Jan Keil "Do the right thing marketing for startups"
SE2016 Marketing&PR Jan Keil "Do the right thing marketing for startups"SE2016 Marketing&PR Jan Keil "Do the right thing marketing for startups"
SE2016 Marketing&PR Jan Keil "Do the right thing marketing for startups"Inhacking
 
SE2016 PR&Marketing Mikhail Patalakha "ASO how to start and how to finish"
SE2016 PR&Marketing Mikhail Patalakha "ASO how to start and how to finish"SE2016 PR&Marketing Mikhail Patalakha "ASO how to start and how to finish"
SE2016 PR&Marketing Mikhail Patalakha "ASO how to start and how to finish"Inhacking
 
SE2016 UI/UX Alina Kononenko "Designing for Apple Watch and Apple TV"
SE2016 UI/UX Alina Kononenko "Designing for Apple Watch and Apple TV"SE2016 UI/UX Alina Kononenko "Designing for Apple Watch and Apple TV"
SE2016 UI/UX Alina Kononenko "Designing for Apple Watch and Apple TV"Inhacking
 
SE2016 Management Mikhail Lebedinkiy "iAIST the first pure ukrainian corporat...
SE2016 Management Mikhail Lebedinkiy "iAIST the first pure ukrainian corporat...SE2016 Management Mikhail Lebedinkiy "iAIST the first pure ukrainian corporat...
SE2016 Management Mikhail Lebedinkiy "iAIST the first pure ukrainian corporat...Inhacking
 
SE2016 Management Anna Lavrova "Gladiator in the suit crisis is our brand!"
SE2016 Management Anna Lavrova "Gladiator in the suit  crisis is our brand!"SE2016 Management Anna Lavrova "Gladiator in the suit  crisis is our brand!"
SE2016 Management Anna Lavrova "Gladiator in the suit crisis is our brand!"Inhacking
 
SE2016 Management Aleksey Solntsev "Management of the projects in the conditi...
SE2016 Management Aleksey Solntsev "Management of the projects in the conditi...SE2016 Management Aleksey Solntsev "Management of the projects in the conditi...
SE2016 Management Aleksey Solntsev "Management of the projects in the conditi...Inhacking
 
SE2016 Management Vitalii Laptenok "Processes and planning for a product comp...
SE2016 Management Vitalii Laptenok "Processes and planning for a product comp...SE2016 Management Vitalii Laptenok "Processes and planning for a product comp...
SE2016 Management Vitalii Laptenok "Processes and planning for a product comp...Inhacking
 
SE2016 Management Yana Prolis "Please don't burn down!"
SE2016 Management Yana Prolis "Please don't burn down!"SE2016 Management Yana Prolis "Please don't burn down!"
SE2016 Management Yana Prolis "Please don't burn down!"Inhacking
 
SE2016 Management Marina Bril "Management at marketing teams and performance"
SE2016 Management Marina Bril "Management at marketing teams and performance"SE2016 Management Marina Bril "Management at marketing teams and performance"
SE2016 Management Marina Bril "Management at marketing teams and performance"Inhacking
 
SE2016 iOS Anton Fedorchenko "Swift for Server-side Development"
SE2016 iOS Anton Fedorchenko "Swift for Server-side Development"SE2016 iOS Anton Fedorchenko "Swift for Server-side Development"
SE2016 iOS Anton Fedorchenko "Swift for Server-side Development"Inhacking
 
SE2016 iOS Alexander Voronov "Test driven development in real world"
SE2016 iOS Alexander Voronov "Test driven development in real world"SE2016 iOS Alexander Voronov "Test driven development in real world"
SE2016 iOS Alexander Voronov "Test driven development in real world"Inhacking
 
SE2016 JS Gregory Shehet "Undefined on prod, or how to test a react application"
SE2016 JS Gregory Shehet "Undefined on prod, or how to test a react application"SE2016 JS Gregory Shehet "Undefined on prod, or how to test a react application"
SE2016 JS Gregory Shehet "Undefined on prod, or how to test a react application"Inhacking
 
SE2016 JS Alexey Osipenko "Basics of functional reactive programming"
SE2016 JS Alexey Osipenko "Basics of functional reactive programming"SE2016 JS Alexey Osipenko "Basics of functional reactive programming"
SE2016 JS Alexey Osipenko "Basics of functional reactive programming"Inhacking
 
SE2016 Java Vladimir Mikhel "Scrapping the web"
SE2016 Java Vladimir Mikhel "Scrapping the web"SE2016 Java Vladimir Mikhel "Scrapping the web"
SE2016 Java Vladimir Mikhel "Scrapping the web"Inhacking
 
SE2016 Java Valerii Moisieienko "Apache HBase Workshop"
SE2016 Java Valerii Moisieienko "Apache HBase Workshop"SE2016 Java Valerii Moisieienko "Apache HBase Workshop"
SE2016 Java Valerii Moisieienko "Apache HBase Workshop"Inhacking
 

Más de Inhacking (20)

SE2016 Fundraising Roman Kravchenko "Investment in Ukrainian IoT-Startups"
SE2016 Fundraising Roman Kravchenko "Investment in Ukrainian IoT-Startups"SE2016 Fundraising Roman Kravchenko "Investment in Ukrainian IoT-Startups"
SE2016 Fundraising Roman Kravchenko "Investment in Ukrainian IoT-Startups"
 
SE2016 Fundraising Wlodek Laskowski "Insider guide to successful fundraising ...
SE2016 Fundraising Wlodek Laskowski "Insider guide to successful fundraising ...SE2016 Fundraising Wlodek Laskowski "Insider guide to successful fundraising ...
SE2016 Fundraising Wlodek Laskowski "Insider guide to successful fundraising ...
 
SE2016 Fundraising Andrey Sobol "Blockchain Crowdfunding or "Mommy, look, I l...
SE2016 Fundraising Andrey Sobol "Blockchain Crowdfunding or "Mommy, look, I l...SE2016 Fundraising Andrey Sobol "Blockchain Crowdfunding or "Mommy, look, I l...
SE2016 Fundraising Andrey Sobol "Blockchain Crowdfunding or "Mommy, look, I l...
 
SE2016 Company Development Valentin Dombrovsky "Travel startups challenges an...
SE2016 Company Development Valentin Dombrovsky "Travel startups challenges an...SE2016 Company Development Valentin Dombrovsky "Travel startups challenges an...
SE2016 Company Development Valentin Dombrovsky "Travel startups challenges an...
 
SE2016 Company Development Vadym Gorenko "How to pass the death valley"
SE2016 Company Development Vadym Gorenko  "How to pass the death valley"SE2016 Company Development Vadym Gorenko  "How to pass the death valley"
SE2016 Company Development Vadym Gorenko "How to pass the death valley"
 
SE2016 Marketing&PR Jan Keil "Do the right thing marketing for startups"
SE2016 Marketing&PR Jan Keil "Do the right thing marketing for startups"SE2016 Marketing&PR Jan Keil "Do the right thing marketing for startups"
SE2016 Marketing&PR Jan Keil "Do the right thing marketing for startups"
 
SE2016 PR&Marketing Mikhail Patalakha "ASO how to start and how to finish"
SE2016 PR&Marketing Mikhail Patalakha "ASO how to start and how to finish"SE2016 PR&Marketing Mikhail Patalakha "ASO how to start and how to finish"
SE2016 PR&Marketing Mikhail Patalakha "ASO how to start and how to finish"
 
SE2016 UI/UX Alina Kononenko "Designing for Apple Watch and Apple TV"
SE2016 UI/UX Alina Kononenko "Designing for Apple Watch and Apple TV"SE2016 UI/UX Alina Kononenko "Designing for Apple Watch and Apple TV"
SE2016 UI/UX Alina Kononenko "Designing for Apple Watch and Apple TV"
 
SE2016 Management Mikhail Lebedinkiy "iAIST the first pure ukrainian corporat...
SE2016 Management Mikhail Lebedinkiy "iAIST the first pure ukrainian corporat...SE2016 Management Mikhail Lebedinkiy "iAIST the first pure ukrainian corporat...
SE2016 Management Mikhail Lebedinkiy "iAIST the first pure ukrainian corporat...
 
SE2016 Management Anna Lavrova "Gladiator in the suit crisis is our brand!"
SE2016 Management Anna Lavrova "Gladiator in the suit  crisis is our brand!"SE2016 Management Anna Lavrova "Gladiator in the suit  crisis is our brand!"
SE2016 Management Anna Lavrova "Gladiator in the suit crisis is our brand!"
 
SE2016 Management Aleksey Solntsev "Management of the projects in the conditi...
SE2016 Management Aleksey Solntsev "Management of the projects in the conditi...SE2016 Management Aleksey Solntsev "Management of the projects in the conditi...
SE2016 Management Aleksey Solntsev "Management of the projects in the conditi...
 
SE2016 Management Vitalii Laptenok "Processes and planning for a product comp...
SE2016 Management Vitalii Laptenok "Processes and planning for a product comp...SE2016 Management Vitalii Laptenok "Processes and planning for a product comp...
SE2016 Management Vitalii Laptenok "Processes and planning for a product comp...
 
SE2016 Management Yana Prolis "Please don't burn down!"
SE2016 Management Yana Prolis "Please don't burn down!"SE2016 Management Yana Prolis "Please don't burn down!"
SE2016 Management Yana Prolis "Please don't burn down!"
 
SE2016 Management Marina Bril "Management at marketing teams and performance"
SE2016 Management Marina Bril "Management at marketing teams and performance"SE2016 Management Marina Bril "Management at marketing teams and performance"
SE2016 Management Marina Bril "Management at marketing teams and performance"
 
SE2016 iOS Anton Fedorchenko "Swift for Server-side Development"
SE2016 iOS Anton Fedorchenko "Swift for Server-side Development"SE2016 iOS Anton Fedorchenko "Swift for Server-side Development"
SE2016 iOS Anton Fedorchenko "Swift for Server-side Development"
 
SE2016 iOS Alexander Voronov "Test driven development in real world"
SE2016 iOS Alexander Voronov "Test driven development in real world"SE2016 iOS Alexander Voronov "Test driven development in real world"
SE2016 iOS Alexander Voronov "Test driven development in real world"
 
SE2016 JS Gregory Shehet "Undefined on prod, or how to test a react application"
SE2016 JS Gregory Shehet "Undefined on prod, or how to test a react application"SE2016 JS Gregory Shehet "Undefined on prod, or how to test a react application"
SE2016 JS Gregory Shehet "Undefined on prod, or how to test a react application"
 
SE2016 JS Alexey Osipenko "Basics of functional reactive programming"
SE2016 JS Alexey Osipenko "Basics of functional reactive programming"SE2016 JS Alexey Osipenko "Basics of functional reactive programming"
SE2016 JS Alexey Osipenko "Basics of functional reactive programming"
 
SE2016 Java Vladimir Mikhel "Scrapping the web"
SE2016 Java Vladimir Mikhel "Scrapping the web"SE2016 Java Vladimir Mikhel "Scrapping the web"
SE2016 Java Vladimir Mikhel "Scrapping the web"
 
SE2016 Java Valerii Moisieienko "Apache HBase Workshop"
SE2016 Java Valerii Moisieienko "Apache HBase Workshop"SE2016 Java Valerii Moisieienko "Apache HBase Workshop"
SE2016 Java Valerii Moisieienko "Apache HBase Workshop"
 

Último

Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 

Último (20)

Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 

SE2016 Exotic Valerii Vasylkov "Erlang. Measurements and benefits"

  • 4. Erlang benefits Functional nature Pattern matching on steroids Concurrency Fault Tolerance Let it crash Distributed Computation Debugging and profiling Hot upgrades
  • 5. Erlang benefits Functional nature Pattern matching on steroids Concurrency Fault Tolerance Let it crash Distributed Computation Debugging and profiling Hot upgrades
  • 6. Functions are easy Dynamic types Pattern matching No mutable data structures Binary tree search Factorial function
  • 7. Erlang benefits Functional nature Pattern matching on steroids Concurrency Fault Tolerance Let it crash Distributed Computation Debugging and profiling Hot upgrades
  • 8. Pattern matching and steroids Structure s Binaries Complex conditions1 get_vh_registered_users(Server, [{prefix, Prefix}, {limit, Limit}, {offset, Offset}]) 2 when is_list(Prefix) and is_integer(Limit) and is_integer(Offset) -> 3 case [{U,S} || {U, S} <- get_vh_registered_users(Server), lists:prefix(Prefix, U)] of 4 [] -> 5 []; 6 Users -> 7 Set = lists:keysort(1, Users), 8 L = length(Set), 9 Start = if Offset < 1 -> 1; 10 Offset > L -> L; 11 true -> Offset 12 end, 13 lists:sublist(Set, Start, Limit) 14 end. * Not your familiar Regex string matching
  • 9. Erlang benefits Functional nature Pattern matching on steroids Concurrency Fault Tolerance Let it crash Distributed Computation Debugging and profiling Hot upgrades
  • 10. Erlang concurrency philosophy The Actor Model Thinking Parallel Thinking Processes
  • 11. • Behavior • State • Parallel • Asynchronous Messages Mailboxes • No Shared State The Actor Model Carl Hewitt 1973
  • 12. • Data + Code + Process • Self-Contained Machines • Stronger Encapsulation • Less Inheritance • Type Inference • Hot Code Upgrades Actor structure Behavior way • Inheritance of Behavior only. • Usually only one level deep. • Usually one of the standard OTP behaviors: • Generic Server • Event • State Machine • Supervisor.
  • 13. Actor vs. OO workflow Synchronous Calls Asynchronous Messages
  • 14.
  • 15. Actor Model: Benefits • More true to the real world • Better suited for parallel hardware • Better suited for distributed architectures • Scaling garbage collection (gc/actor) • Less Magic
  • 16. Actors example -module(pingpong). -export([start/0]). -export([ping/0, pong/0]). start()-> PingPid = spawn(?MODULE, ping(), []), PongPid = spawn(?MODULE, pong(), []), PingPid ! {ping, PongPid}, erlang:send_after(60000,PingPid, stop), erlang:send_after(60000,PongPid, stop). ping()-> receive {Pid, ping} -> io:fwrite("Ping received Pong~n",[]), timer:sleep(3000), Pid ! {self(), pong}, ping(); stop -> true end. pong() -> receive {Pid, pong} -> io:fwrite("Pong received Ping~n",[]), timer:sleep(3000), Pid ! {self(), ping}, pong(); stop -> true end.
  • 17. Erlang benefits Functional nature Pattern matching on steroids Concurrency Fault Tolerance Let it crash Distributed Computation Debugging and profiling Hot upgrades
  • 21. Erlang benefits Functional nature Pattern matching on steroids Concurrency Fault Tolerance Let it crash Distributed Computation Debugging and profiling Hot upgrades
  • 22. Faulty subsystem are difficult to correct P.S. Don’t bother, just
  • 23. Erlang benefits Functional nature Pattern matching on steroids Concurrency Fault Tolerance Distributed Computation Debugging and profiling Hot upgrades
  • 24. Distributio n Node 1 Node 2 B ! Msg A B C transparent message passing in cluster
  • 25. Setting up an Erlang cluster erl -sname ketchup ... (ketchup@ferdmbp)1> (ketchup@ferdmbp)1> net_kernel:connect_node(fries@ferdmbp). true (ketchup@ferdmbp)2> node(). ketchup@ferdmbp (ketchup@ferdmbp)3> nodes(). [fries@ferdmbp] (ketchup@ferdmbp)4> register(shell, self()). true (ketchup@ferdmbp)5> {shell, fries@ferdmbp} ! {hello, from, self()}. {hello,from,<0.52.0>} (ketchup@ferdmbp)6> flush(). Shell got <<"hey there!">> ok erl -sname fries ... (fries@ferdmbp)1> (fries@ferdmbp)1> register(shell, self()). true (fries@ferdmbp)2> receive {hello, from, OtherShell} -> OtherShell ! <<"hey there!">> end. http://learnyousomeerlang.com/distribunomico n
  • 26. Erlang benefits Functional nature Pattern matching on steroids Concurrency Fault Tolerance Distributed Computation Debugging and profiling Hot upgrades
  • 28. Remote shells (salad@ferdmbp)1> User switch command --> h c [nn] - connect to job i [nn] - interrupt job k [nn] - kill job j - list all jobs s [shell] - start local shell r [node [shell]] - start remote shell q - quit erlang ? | h - this message --> r mustard@ferdmbp --> j 1 {shell,start,[init]} 2* {mustard@ferdmbp,shell,start,[]} --> c Eshell V5.8.4 (abort with ^G) (mustard@ferdmbp)1> node(). mustard@ferdmbp
  • 29. Debugger and profilers Tool Results Size of Result Effects on Program Execution Time Records Number of Calls Records Execution Time Records Called by Records Garbage Collection fprof Per process to screen/file Large Significant slowdown Yes Total and own Yes Yes eprof Per process/function to screen/file Medium Small slowdown Yes Only total No No cover Per module to screen/file Small Moderate slowdown Yes, per line No No No cprof Per module to caller Small Small slowdown Yes No No No dbg Text based tracer Large Small slowdonw No No Yes No Communit y • recon • redbug • lager • xprof More introspection • etop • pman • os_mon • debugger
  • 31. Erlang benefits Functional nature Pattern matching on steroids Concurrency Fault Tolerance Distributed Computation Debugging and profiling Hot upgrades
  • 34. Measurements Activity • millions active users • fast processes for handling Stability • developers and operations sleeps fine • no emergencies for a couple of years Performance • compatible to C, • VM memory management • lightweight concurrency • scalability from a box Issues • concurrent bottlenecks • Net splits • Networks security • Hot upgrades
  • 35. Top 5 lines of code 46292 11703 7328 2784 1479