SlideShare uma empresa Scribd logo
1 de 137
Baixar para ler offline
Cloud Economics
Chris Bailey, IBM
@Chris__Bailey
“Cloud economics is a branch of knowledge
concerned with the principles, costs and benefits of
cloud computing.”
— searchcio.techtarget.com
Why Cloud?
Traditional Computing
§ On premise, or hosted bare metal machines
| @Chris__Bailey
Traditional Computing
§ On premise, or hosted bare metal machines
§ Capital Expenditure (CapEX):
- Upfront cost, followed by depreciation
| @Chris__Bailey
Traditional Computing
§ On premise, or hosted bare metal machines
§ Capital Expenditure (CapEX):
- Upfront cost, followed by depreciation
§ Requirement for accurate capacity planning
- Estimate hardware for given load
- Project future load requirements
| @Chris__Bailey
Traditional Computing
§ On premise, or hosted bare metal machines
§ Capital Expenditure (CapEX):
- Upfront cost, followed by depreciation
§ Requirement for accurate capacity planning
- Estimate hardware for given load
- Project future load requirements
§ IT is seen as a cost centre
| @Chris__Bailey
Capacity Planning
§ Find a representative benchmark?
| @Chris__Bailey
SPECjEnterprise 2010 (spec.org)
Capacity Planning
§ Find a representative benchmark?
- SPECjbb2015
- SPECjEnterprise2010
- SPECjms2007
- SPECjvm2008
| @Chris__Bailey
SPECjbb2015 (spec.org)
Capacity Planning
§ Find a representative benchmark?
- SPECjbb2015
- SPECjEnterprise2010
- SPECjms2007
- SPECjvm2008
| @Chris__Bailey
SPECjbb2015 (spec.org)
Capacity Planning
§ Find a representative benchmark?
- SPECjbb2015
- SPECjEnterprise2010
- SPECjms2007
- SPECjvm2008
| @Chris__Bailey
SPECjEnterprise2010 (spec.org)
Capacity Planning
§ Find a representative benchmark?
- SPECjbb2015
- SPECjEnterprise2010
- SPECjms2007
- SPECjvm2008
| @Chris__Bailey
Capacity Planning
§ Find a representative benchmark?
- SPECjbb2015
- SPECjEnterprise2010
- SPECjms2007
- SPECjvm2008
| @Chris__Bailey
§ Find a representative benchmark?
- SPECjEnterprise2010
§ Analyse the results
Capacity Planning
Tested By System Name Result
Java EE Server DB Server
Nodes CPU Nodes CPU
Oracle Corporation
Oracle WebLogic Server Standard Edition Release 12.2.1 on SPARC S7-2
Jun 29, 2016 | HTML | Text
14,121.47 1 16 cores, 2 chips 1 16 cores, 2 chips
Oracle Corporation
Oracle WebLogic Server Standard Edition Release 12.2.1 on SPARC S7-2
Jun 29, 2016 | HTML | Text
14,400.78 1 16 cores, 2 chips 1 16 cores, 2 chip
| @Chris__Bailey
§ Find a representative benchmark?
- SPECjEnterprise2010
§ Analyse the results
Capacity Planning
Tested By System Name Result
Java EE Server DB Server
Nodes CPU Nodes CPU
Oracle Corporation
Oracle WebLogic Server Standard Edition Release 12.2.1 on SPARC S7-2
Jun 29, 2016 | HTML | Text
14,121.47 1 16 cores, 2 chips 1 16 cores, 2 chips
Oracle Corporation
Oracle WebLogic Server Standard Edition Release 12.2.1 on SPARC S7-2
Jun 29, 2016 | HTML | Text
14,400.78 1 16 cores, 2 chips 1 16 cores, 2 chip
| @Chris__Bailey
§ Find a representative benchmark?
- SPECjEnterprise2010
§ Analyse the results
Capacity Planning
Tested By System Name Result
Java EE Server DB Server
Nodes CPU Nodes CPU
Oracle Corporation
Oracle Weblogic Server Standard Edition Release 12.2.1 on Oracle Server X6-2
Mar 31, 2016 | HTML | Text
NC 1 44 cores, 2 chips 1 44 cores, 2 chips
| @Chris__Bailey
§ Find a representative benchmark?
- SPECjEnterprise2010
§ Analyse the results
Capacity Planning
Tested By System Name Result
Java EE Server DB Server
Nodes CPU Nodes CPU
Oracle Corporation
Oracle Weblogic Server Standard Edition Release 12.2.1 on Oracle Server X6-2
Mar 31, 2016 | HTML | Text
NC 1 44 cores, 2 chips 1 44 cores, 2 chips
| @Chris__Bailey
§ Find a representative benchmark?
- SPECjEnterprise2010
§ Analyse the results
Capacity Planning
Tested By System Name Result
Java EE Server DB Server
Nodes CPU Nodes CPU
Oracle Corporation
Oracle WebLogic Server Standard Edition Release 12.1.3 on Oracle Server X5-2
Apr 1, 2015 | HTML | Text
21,504.30 1 36 cores, 2 chips 1 36 cores, 2 chips
| @Chris__Bailey
§ Find a representative benchmark?
- SPECjEnterprise2010
§ Analyse the results
Capacity Planning
Tested By System Name Result
Java EE Server DB Server
Nodes CPU Nodes CPU
Oracle Corporation
Oracle WebLogic Server Standard Edition Release 12.1.3 on Oracle Server X5-2
Apr 1, 2015 | HTML | Text
21,504.30 1 36 cores, 2 chips 1 36 cores, 2 chips
| @Chris__Bailey
§ Find a representative benchmark?
- SPECjEnterprise2010
§ Analyse the results
Capacity Planning
Tested By System Name Result
Java EE Server DB Server
Nodes CPU Nodes CPU
Oracle Corporation
Oracle WebLogic Server Standard Edition Release 12.1.3 on Oracle Server X5-2
Apr 1, 2015 | HTML | Text
21,504.30 1 36 cores, 2 chips 1 36 cores, 2 chips
| @Chris__Bailey
§ Find a representative benchmark?
- SPECjEnterprise2010
§ Analyse the results
Capacity Planning
Tested By System Name Result
Java EE Server DB Server
Nodes CPU Nodes CPU
Oracle Corporation
Oracle WebLogic Server Standard Edition Release 12.1.3 on Oracle Server X5-2
Apr 1, 2015 | HTML | Text
21,504.30 1 36 cores, 2 chips 1 36 cores, 2 chips
| @Chris__Bailey
§ Find a representative benchmark?
- SPECjEnterprise2010
§ Analyse the results
- Intel® Xeon® processor E5- 2600 v3 @3.6GHz
Capacity Planning
Tested By System Name Result
Java EE Server DB Server
Nodes CPU Nodes CPU
Oracle Corporation
Oracle WebLogic Server Standard Edition Release 12.1.3 on Oracle Server X5-2
Apr 1, 2015 | HTML | Text
21,504.30 1 36 cores, 2 chips 1 36 cores, 2 chips
| @Chris__Bailey
§ Find a representative benchmark?
- SPECjEnterprise2010
§ Analyse the results
§ Calculate transactions per core
Capacity Planning
Tested By System Name Result
Java EE Server DB Server
Nodes CPU Nodes CPU
Oracle Corporation
Oracle WebLogic Server Standard Edition Release 12.1.3 on Oracle Server X5-2
Apr 1, 2015 | HTML | Text
21,504.30 1 36 cores, 2 chips 1 36 cores, 2 chips
| @Chris__Bailey
§ Find a representative benchmark?
- SPECjEnterprise2010
§ Analyse the results
§ Calculate transactions per core
- 21,504.30 / 36 = 597.3 EjOPS/core
Capacity Planning
Tested By System Name Result
Java EE Server DB Server
Nodes CPU Nodes CPU
Oracle Corporation
Oracle WebLogic Server Standard Edition Release 12.1.3 on Oracle Server X5-2
Apr 1, 2015 | HTML | Text
21,504.30 1 36 cores, 2 chips 1 36 cores, 2 chips
| @Chris__Bailey
Capacity Planning
| @Chris__Bailey
Time
Capacity
Capacity Planning
| @Chris__Bailey
Time
Capacity
Predicted Load
Capacity Planning
| @Chris__Bailey
Time
Capacity
Predicted Load
Purchasing

Delay
Capacity Planning
| @Chris__Bailey
Time
Capacity
Predicted Load
Purchasing

Delay
Capacity Planning
| @Chris__Bailey
Time
Capacity
Predicted Load
Purchasing

Delay
Capacity Requirement
Capacity Planning
| @Chris__Bailey
Time
Capacity
Predicted Load
Purchasing

Delay
Capacity Requirement
Capacity Planning
| @Chris__Bailey
Time
Capacity
Predicted Load
Purchasing

Delay
Predicted Load + 10%
Capacity Requirement
Capacity Planning
| @Chris__Bailey
Time
Capacity
Predicted Load
Capacity Requirement
Purchasing

Delay
Predicted Load + 10%
Capacity Planning
| @Chris__Bailey
Time
Capacity
Predicted Load
Capacity Requirement
Purchasing

Delay
Predicted Load + 10%
Capacity Planning
| @Chris__Bailey
Time
Capacity
Predicted Load
Capacity Requirement
Purchasing

Delay
Capacity Planning
| @Chris__Bailey
Time
Capacity
Predicted Load
Capacity Requirement
Purchasing

Delay
Excess Capacity
Excess Capacity
Capacity Planning
§ Size for peak demand
- Allow for Black Friday / Cyber Monday
- Or just changes in load throughout each day
| @Chris__Bailey
Capacity Planning
§ Size for peak demand
- Allow for Black Friday / Cyber Monday
- Or just changes in load throughout each day
§ Allow for High Availability (HA) and Disaster Recovery (DR)
- Rule of three for HA - 50% extra capacity
- Full fail-over for DR - 100% extra capacity
| @Chris__Bailey
Capacity Planning
§ Size for peak demand
- Allow for Black Friday / Cyber Monday
- Or just changes in load throughout each day
§ Allow for High Availability (HA) and Disaster Recovery (DR)
- Rule of three for HA - 50% extra capacity
- Full fail-over for DR - 100% extra capacity
§ Oh, and what about capacity for integration, stress and performance test?
| @Chris__Bailey
Most enterprises have hardware utilisation below 20%
Most enterprises have hardware utilisation below 20%
and below 10% for workloads with peaks
Capacity Planning and Agility
§ Time to obtain capacity affects operational agility
§ Market opportunities lost because of lead time for new projects
| @Chris__Bailey
Capacity Planning and Agility
§ Time to obtain capacity affects operational agility
§ Market opportunities lost because of lead time for new projects
§ Case Study: A fashion retailer can show measureable increase in sales if a item
similar to that seen in the media can be placed on their on-line store landing page
within 1 hr of it appearing in public.
§ Each product placement is different so they need a fast, agile, approach that does
not jeopardize their on-line stores availability and quality.
| @Chris__Bailey
Cloud Nirvana
What Cloud Promises
“a virtual, dynamic environment which maximizes use, is infinitely scalable,
always available and needs minimal upfront investment or commitment”
§ Take your code – host it on someone else's machine and pay only for the resource
you use for the time you use it
§ AND be able to do that very quickly and repeatedly in parallel
| @Chris__Bailey
Cloud Values
§ Much shorter “purchasing delay”
§ Return integration, stress and performance test environments after use
§ Cloud guarantees remove need for DR
| @Chris__Bailey
Traditional Capacity Planning
| @Chris__Bailey
Time
Capacity
Predicted Load
Capacity Requirement
Purchasing

Delay
Excess Capacity
Excess Capacity
Cloud Capacity Planning
| @Chris__Bailey
Time
Capacity
Predicted Load
Capacity Requirement
Excess Capacity
Excess Capacity
Cloud Capacity Planning
| @Chris__Bailey
Time
Capacity
Predicted Load
Capacity Requirement
Excess Capacity
Capacity Planning and Agility
§ Case Study: A fashion retailer can show measureable increase in sales if a item
similar to that seen in the media can be placed on their on-line store landing page
within 1 hr of it appearing in public.
§ Each product placement is different so they need a fast, agile, approach that does
not jeopardize their on-line stores availability and quality.
| @Chris__Bailey
Capacity Planning and Agility
§ Case Study: A fashion retailer can show measureable increase in sales if a item
similar to that seen in the media can be placed on their on-line store landing page
within 1 hr of it appearing in public.
§ Each product placement is different so they need a fast, agile, approach that does
not jeopardize their on-line stores availability and quality.
Achievement Unlocked!
| @Chris__Bailey
Other advantages of Cloud
§ Globally distributed data centres and locality
| @Chris__Bailey
https://aws.amazon.com/about-aws/global-infrastructure/
Other advantages of Cloud
§ Globally distributed data centres and locality
| @Chris__Bailey
https://aws.amazon.com/about-aws/global-infrastructure/
Trouble in Paradise?
OpEx vs CapEx…
§ Rent vs Buy
| @Chris__Bailey
OpEx vs CapEx…
§ Rent vs Buy
§ No upfront cost, but no end to cost
| @Chris__Bailey
OpEx vs CapEx…
§ Rent vs Buy
§ No upfront cost, but no end to cost
§ Drive for operational efficiency
| @Chris__Bailey
OpEx vs CapEx…
§ Rent vs Buy
§ No upfront cost, but no end to cost
§ Drive for operational efficiency
§ Focus on ROI for individual apps and app features
| @Chris__Bailey
How is Cloud cost calculated?
| @Chris__Bailey
Provider Type Memory CPUs Cost/month
Amazon EC2 Linux t2.nano 512MB 1 vCPU $4.68
Linux t2.micro 1GB 1 vCPU $9.36
Linux t2.small 2GB 1 vCPU $18.72
Linux t2.medium 4GB 2 vCPUs $37.44
Digital Ocean Standard 512MB 1 Core Processor $5.00
Standard 1GB 1 Core Processor $10.00
Standard 2GB 2 Core Processors $20.00
Pivotal Cloud Foundry App Instance 512MB 4 vCPUs $10.80
App Instance 1GB 4 vCPUs $21.60
App Instance 2GB 4 vCPUs $43.20
Heroku Standard 1x 512MB 1 Share $25.00
Standard 2x 1GB 2 Shares $50.00
IBM Bluemix Instant Runtimes 512MB 4 vCPUs $24.15
Instant Runtimes 1GB 4 vCPUs $49.35
Containers 512MB 4 vCPUs $10.22
Containers 1GB 4 vCPUs $20.59
$£€¥ = GB/Hr
Movement from CPU to Memory based costs is a
fundamental shift for Application Architectures
§ Find a representative benchmark?
- SPECjEnterprise2010
§ Analyse the results
- Intel® Xeon® processor E5- 2600 v3 @3.6GHz
Capacity Planning
Tested By System Name Result
Java EE Server DB Server
Nodes CPU Nodes CPU
Oracle Corporation
Oracle WebLogic Server Standard Edition Release 12.1.3 on Oracle Server X5-2
Apr 1, 2015 | HTML | Text
21,504.30 1 36 cores, 2 chips 1 36 cores, 2 chips
| @Chris__Bailey
Reading the fine print…
Hardware Vendor: Oracle Corporation
Model Name: Oracle Server X5-2
Processor: Intel Xeon processor E5-2699 v3 (Intel Turbo Boost Technology up to 3.6 GHz)
MHz: 2300
# of CPUs: 36 cores, 2 chips, 18 cores/chip, 2 threads/core (Hyper-Threading)
Memory (MB): 262144
Disks: 2x 600GB SAS-2 HDD and 2x 400GB SSD
Network Interface: 4x 10Gbit onboard and 3x 10GBit Dual-port NICs
JVM Options:
-server -Xms18g -Xmx18g -Xmn16g -Xss256k -XX:MetaspaceSize=200M -XX:+AggressiveOpts -XX:+UseParallelOldGC -XX:ParallelGCThreads=9 -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps
-XX:InitialCodeCacheSize=200m -XX:ReservedCodeCacheSize=200m -XX:+UseCompressedOops -XX:-UseBiasedLocking -XX:+AlwaysPreTouch -XX:InitialSurvivorRatio=24 -XX:SurvivorRatio=24 -XX:TargetSurvivorRatio=90
-XX:-UseAdaptiveSizePolicy -XX:+UseLargePages -Djava.net.preferIPv4Stack=true -Djaxws.transport.streaming=true -XX:-TieredCompilation -Dweblogic.ProductionModeEnabled=true
-Dweblogic.management.discover=false -Dweblogic.diagnostics.debug.DebugLogger.DISABLED=true -Doracle.jdbc.defaultRowPrefetch=200
-Djavax.xml.parsers.DocumentBuilderFactory=weblogic.xml.jaxp.RegistryDocumentBuilderFactory -Dweblogic.threadpool.MinPoolSize=30 -Dsun.net.inetaddr.ttl=0 -Dnetworkaddress.cache.ttl=0
-Dcom.sun.xml.ws.spi.db.BindingContextFactory=com.sun.xml.ws.db.glassfish.JAXBRIContextFactory -Djavax.xml.bind.JAXBContext=com.sun.xml.bind.v2.ContextFactory
-Dweblogic.MuxerClass=weblogic.socket.NIOSocketMuxer -Dweblogic.SocketReaders=2
Server instances were started using numactl binding 1 instance per 9 cores.
| @Chris__Bailey
Reading the fine print…
Hardware Vendor: Oracle Corporation
Model Name: Oracle Server X5-2
Processor: Intel Xeon processor E5-2699 v3 (Intel Turbo Boost Technology up to 3.6 GHz)
MHz: 2300
# of CPUs: 36 cores, 2 chips, 18 cores/chip, 2 threads/core (Hyper-Threading)
Memory (MB): 262144
Disks: 2x 600GB SAS-2 HDD and 2x 400GB SSD
Network Interface: 4x 10Gbit onboard and 3x 10GBit Dual-port NICs
JVM Options:
-server -Xms18g -Xmx18g -Xmn16g -Xss256k -XX:MetaspaceSize=200M -XX:+AggressiveOpts -XX:+UseParallelOldGC -XX:ParallelGCThreads=9 -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps
-XX:InitialCodeCacheSize=200m -XX:ReservedCodeCacheSize=200m -XX:+UseCompressedOops -XX:-UseBiasedLocking -XX:+AlwaysPreTouch -XX:InitialSurvivorRatio=24 -XX:SurvivorRatio=24 -XX:TargetSurvivorRatio=90
-XX:-UseAdaptiveSizePolicy -XX:+UseLargePages -Djava.net.preferIPv4Stack=true -Djaxws.transport.streaming=true -XX:-TieredCompilation -Dweblogic.ProductionModeEnabled=true
-Dweblogic.management.discover=false -Dweblogic.diagnostics.debug.DebugLogger.DISABLED=true -Doracle.jdbc.defaultRowPrefetch=200
-Djavax.xml.parsers.DocumentBuilderFactory=weblogic.xml.jaxp.RegistryDocumentBuilderFactory -Dweblogic.threadpool.MinPoolSize=30 -Dsun.net.inetaddr.ttl=0 -Dnetworkaddress.cache.ttl=0
-Dcom.sun.xml.ws.spi.db.BindingContextFactory=com.sun.xml.ws.db.glassfish.JAXBRIContextFactory -Djavax.xml.bind.JAXBContext=com.sun.xml.bind.v2.ContextFactory
-Dweblogic.MuxerClass=weblogic.socket.NIOSocketMuxer -Dweblogic.SocketReaders=2
Server instances were started using numactl binding 1 instance per 9 cores.
| @Chris__Bailey
Reading the fine print…
Hardware Vendor: Oracle Corporation
Model Name: Oracle Server X5-2
Processor: Intel Xeon processor E5-2699 v3 (Intel Turbo Boost Technology up to 3.6 GHz)
MHz: 2300
# of CPUs: 36 cores, 2 chips, 18 cores/chip, 2 threads/core (Hyper-Threading)
Memory (MB): 262144
Disks: 2x 600GB SAS-2 HDD and 2x 400GB SSD
Network Interface: 4x 10Gbit onboard and 3x 10GBit Dual-port NICs
7.1GB / core
JVM Options:
-server -Xms18g -Xmx18g -Xmn16g -Xss256k -XX:MetaspaceSize=200M -XX:+AggressiveOpts -XX:+UseParallelOldGC -XX:ParallelGCThreads=9 -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps
-XX:InitialCodeCacheSize=200m -XX:ReservedCodeCacheSize=200m -XX:+UseCompressedOops -XX:-UseBiasedLocking -XX:+AlwaysPreTouch -XX:InitialSurvivorRatio=24 -XX:SurvivorRatio=24 -XX:TargetSurvivorRatio=90
-XX:-UseAdaptiveSizePolicy -XX:+UseLargePages -Djava.net.preferIPv4Stack=true -Djaxws.transport.streaming=true -XX:-TieredCompilation -Dweblogic.ProductionModeEnabled=true
-Dweblogic.management.discover=false -Dweblogic.diagnostics.debug.DebugLogger.DISABLED=true -Doracle.jdbc.defaultRowPrefetch=200
-Djavax.xml.parsers.DocumentBuilderFactory=weblogic.xml.jaxp.RegistryDocumentBuilderFactory -Dweblogic.threadpool.MinPoolSize=30 -Dsun.net.inetaddr.ttl=0 -Dnetworkaddress.cache.ttl=0
-Dcom.sun.xml.ws.spi.db.BindingContextFactory=com.sun.xml.ws.db.glassfish.JAXBRIContextFactory -Djavax.xml.bind.JAXBContext=com.sun.xml.bind.v2.ContextFactory
-Dweblogic.MuxerClass=weblogic.socket.NIOSocketMuxer -Dweblogic.SocketReaders=2
Server instances were started using numactl binding 1 instance per 9 cores.
| @Chris__Bailey
§ Project Management Triangle
§ Fast
§ Good
§ Cheap
§ Pick any two…
Performance Optimisation
Euler Diagram
Cheap
Fast Good
| @Chris__Bailey
§ Performance Triangle
§ Throughput
§ Latency
§ Memory footprint
§ Enterprise software has traditionally chosen

throughput and latency over memory
§ Data caching
§ Garbage Collection
§ Function Inlining
Low
Memory
High
Throughput
Low
Latency
Performance Optimisation
Euler Diagram
| @Chris__Bailey
Garbage Collection Tradeoff
| @Chris__Bailey
Memory
Heap Size
Garbage Collection Tradeoff
| @Chris__Bailey
Memory
Live in-use data
(Retained Set)
Heap Size
Garbage Collection Tradeoff
| @Chris__Bailey
Memory
Live in-use data
(Retained Set)
Heap Size
Temporary Data
(Garbage)
Temporary Data
(Garbage)
Garbage Collection Tradeoff
| @Chris__Bailey
Memory
Live in-use data
(Retained Set)
Heap Size
Temporary Data
(Garbage)
Temporary Data
(Garbage)
Garbage Collection Tradeoff
| @Chris__Bailey
Memory
Live in-use data
(Retained Set)
Heap Size
Temporary Data
(Garbage)
Temporary Data
(Garbage)
Garbage Collection Tradeoff
| @Chris__Bailey
Memory
Live in-use data
(Retained Set)
Heap Size
Temporary Data
(Garbage)
Temporary Data
(Garbage)
40 to 70%
Garbage Collection Tradeoff
| @Chris__Bailey
Memory
Live in-use data
(Retained Set)
Heap Size
Temporary Data
(Garbage)
Temporary Data
(Garbage)
40 to 70%
30 to 60% additional memory for additional performance
Optimising for the Cloud

Optimising for the Cloud

#1: Choose The Right Language
Memory Usage by Language
| @Chris__Bailey
0
17.5
35
52.5
70
C++
	
	
	
	
	
	
	
	
	
	
	
	
Mem	usage	(MB)
C
Memory Usage by Language
| @Chris__Bailey
0
17.5
35
52.5
70
C++
Go
Sw
i:
Rust
	
	
	
	
	
	
	
	
	
Mem	usage	(MB)
Modern	NativeC
Memory Usage by Language
| @Chris__Bailey
0
17.5
35
52.5
70
C++
Go
Sw
i:
Rust
Ruby
PHP
Python
JavaScript
Erlang
Dart
	
	
	
Mem	usage	(MB)
Modern	Native ScriptingC
Memory Usage by Language
| @Chris__Bailey
0
17.5
35
52.5
70
C++
Go
Sw
i:
Rust
Ruby
PHP
Python
JavaScript
Erlang
Dart
Java
Scala
Clojure
Mem	usage	(MB)
Modern	Native Scripting JVM	C
Throughput by Language
| @Chris__Bailey
C
0
25
50
75
100
C++
	
	
		
	
	
	
	
	
	
	
	
	
DuraOon
Throughput by Language
| @Chris__Bailey
Modern	NativeC
0
25
50
75
100
C++
Go
Sw
i:
Rust
	
	
	
	
	
	
	
	
	
DuraOon
Throughput by Language
| @Chris__Bailey
Modern	Native ScriptingC
0
25
50
75
100
C++
Go
Sw
i:
Rust
Ruby
PHP
Python
JavaScript
Erlang
Dart
	
	
	
DuraOon
Throughput by Language
| @Chris__Bailey
Modern	Native Scripting JVM	C
0
25
50
75
100
C++
Go
Sw
i:
Rust
Ruby
PHP
Python
JavaScript
Erlang
Dart
Java
Scala
Clojure
DuraOon
Normalised Throughput/Memory Language
| @Chris__Bailey
C
0
20
40
60
80
C++
	
		
	
	
	
	
	
	
	
	
	
	
DuraOon
Normalised Throughput/Memory Language
| @Chris__Bailey
Modern	NativeC
0
20
40
60
80
C++
Go
Sw
i:
Rust
	
	
		
	
	
	
	
	
	
DuraOon
Normalised Throughput/Memory Language
| @Chris__Bailey
Modern	Native ScriptingC
0
20
40
60
80
C++
Go
Sw
i:
Rust
Ruby
PHP
Python
JavaScript
Erlang
Dart
	
	
	
DuraOon
Normalised Throughput/Memory Language
| @Chris__Bailey
Modern	Native Scripting JVM	C
0
20
40
60
80
C++
Go
Sw
i:
Rust
Ruby
PHP
Python
JavaScript
Erlang
Dart
Java
Scala
Clojure
DuraOon
Selecting the Language
§ Ruby on Rails app, 100 instances at 500MB / instance
- 50GB of memory required at $24.15 GB/month
- = $14,490/year
| @Chris__Bailey
Selecting the Language
§ Ruby on Rails app, 100 instances at 500MB / instance
- 50GB of memory required at $24.15 GB/month
- = $14,490/year
§ Switching to Java provides a 7x saving:
- = $2,070/year
| @Chris__Bailey
Selecting the Language
§ Ruby on Rails app, 100 instances at 500MB / instance
- 50GB of memory required at $24.15 GB/month
- = $14,490/year
§ Switching to Java provides a 7x saving:
- = $2,070/year
§ Switching to Swift provides 42x saving:
- = $345/year
| @Chris__Bailey
Selecting the Language
| @Chris__Bailey
C++ Go Swift Rust Ruby PHP Python JScript Erlang Dart Java Scala Clojure
C++ 4.02 10.96 14.65 461.69 251.83 689.22 40.25 359.13 75.16 65.18 79.88 169.17
Go 0.25 2.73 3.64 114.79 62.61 171.37 10.01 89.29 18.69 16.21 19.86 42.06
Swift 0.09 0.37 1.34 42.11 22.97 62.86 3.67 32.75 6.86 5.95 7.29 15.43
Rust 0.07 0.27 0.75 31.52 17.19 47.06 2.75 24.52 5.13 4.45 5.45 11.55
Ruby 0.00 0.01 0.02 0.03 0.55 1.49 0.09 0.78 0.16 0.14 0.17 0.37
PHP 0.00 0.02 0.04 0.06 1.83 2.74 0.16 1.43 0.30 0.26 0.32 0.67
Python 0.00 0.01 0.02 0.02 0.67 0.37 0.06 0.52 0.11 0.09 0.12 0.25
JScript 0.02 0.10 0.27 0.36 11.47 6.26 17.13 8.92 1.87 1.62 1.98 4.20
Erlang 0.00 0.01 0.03 0.04 1.29 0.70 1.92 0.11 0.21 0.18 0.22 0.47
Dart 0.01 0.05 0.15 0.19 6.14 3.35 9.17 0.54 4.78 0.87 1.06 2.25
Java 0.02 0.06 0.17 0.22 7.08 3.86 10.57 0.62 5.51 1.15 1.23 2.60
Scala 0.01 0.05 0.14 0.18 5.78 3.15 8.63 0.50 4.50 0.94 0.82 2.12
Clojure 0.01 0.02 0.06 0.09 2.73 1.49 4.07 0.24 2.12 0.44 0.39 0.47
From
To
Selecting the Language
| @Chris__Bailey
C++ Go Swift Rust Ruby PHP Python JScript Erlang Dart Java Scala Clojure
C++ 4.02 10.96 14.65 461.69 251.83 689.22 40.25 359.13 75.16 65.18 79.88 169.17
Go 0.25 2.73 3.64 114.79 62.61 171.37 10.01 89.29 18.69 16.21 19.86 42.06
Swift 0.09 0.37 1.34 42.11 22.97 62.86 3.67 32.75 6.86 5.95 7.29 15.43
Rust 0.07 0.27 0.75 31.52 17.19 47.06 2.75 24.52 5.13 4.45 5.45 11.55
Ruby 0.00 0.01 0.02 0.03 0.55 1.49 0.09 0.78 0.16 0.14 0.17 0.37
PHP 0.00 0.02 0.04 0.06 1.83 2.74 0.16 1.43 0.30 0.26 0.32 0.67
Python 0.00 0.01 0.02 0.02 0.67 0.37 0.06 0.52 0.11 0.09 0.12 0.25
JScript 0.02 0.10 0.27 0.36 11.47 6.26 17.13 8.92 1.87 1.62 1.98 4.20
Erlang 0.00 0.01 0.03 0.04 1.29 0.70 1.92 0.11 0.21 0.18 0.22 0.47
Dart 0.01 0.05 0.15 0.19 6.14 3.35 9.17 0.54 4.78 0.87 1.06 2.25
Java 0.02 0.06 0.17 0.22 7.08 3.86 10.57 0.62 5.51 1.15 1.23 2.60
Scala 0.01 0.05 0.14 0.18 5.78 3.15 8.63 0.50 4.50 0.94 0.82 2.12
Clojure 0.01 0.02 0.06 0.09 2.73 1.49 4.07 0.24 2.12 0.44 0.39 0.47
From
To
C
Selecting the Language
| @Chris__Bailey
C++ Go Swift Rust Ruby PHP Python JScript Erlang Dart Java Scala Clojure
C++ 4.02 10.96 14.65 461.69 251.83 689.22 40.25 359.13 75.16 65.18 79.88 169.17
Go 0.25 2.73 3.64 114.79 62.61 171.37 10.01 89.29 18.69 16.21 19.86 42.06
Swift 0.09 0.37 1.34 42.11 22.97 62.86 3.67 32.75 6.86 5.95 7.29 15.43
Rust 0.07 0.27 0.75 31.52 17.19 47.06 2.75 24.52 5.13 4.45 5.45 11.55
Ruby 0.00 0.01 0.02 0.03 0.55 1.49 0.09 0.78 0.16 0.14 0.17 0.37
PHP 0.00 0.02 0.04 0.06 1.83 2.74 0.16 1.43 0.30 0.26 0.32 0.67
Python 0.00 0.01 0.02 0.02 0.67 0.37 0.06 0.52 0.11 0.09 0.12 0.25
JScript 0.02 0.10 0.27 0.36 11.47 6.26 17.13 8.92 1.87 1.62 1.98 4.20
Erlang 0.00 0.01 0.03 0.04 1.29 0.70 1.92 0.11 0.21 0.18 0.22 0.47
Dart 0.01 0.05 0.15 0.19 6.14 3.35 9.17 0.54 4.78 0.87 1.06 2.25
Java 0.02 0.06 0.17 0.22 7.08 3.86 10.57 0.62 5.51 1.15 1.23 2.60
Scala 0.01 0.05 0.14 0.18 5.78 3.15 8.63 0.50 4.50 0.94 0.82 2.12
Clojure 0.01 0.02 0.06 0.09 2.73 1.49 4.07 0.24 2.12 0.44 0.39 0.47
From
To
C
Modern

Native
Selecting the Language
| @Chris__Bailey
C++ Go Swift Rust Ruby PHP Python JScript Erlang Dart Java Scala Clojure
C++ 4.02 10.96 14.65 461.69 251.83 689.22 40.25 359.13 75.16 65.18 79.88 169.17
Go 0.25 2.73 3.64 114.79 62.61 171.37 10.01 89.29 18.69 16.21 19.86 42.06
Swift 0.09 0.37 1.34 42.11 22.97 62.86 3.67 32.75 6.86 5.95 7.29 15.43
Rust 0.07 0.27 0.75 31.52 17.19 47.06 2.75 24.52 5.13 4.45 5.45 11.55
Ruby 0.00 0.01 0.02 0.03 0.55 1.49 0.09 0.78 0.16 0.14 0.17 0.37
PHP 0.00 0.02 0.04 0.06 1.83 2.74 0.16 1.43 0.30 0.26 0.32 0.67
Python 0.00 0.01 0.02 0.02 0.67 0.37 0.06 0.52 0.11 0.09 0.12 0.25
JScript 0.02 0.10 0.27 0.36 11.47 6.26 17.13 8.92 1.87 1.62 1.98 4.20
Erlang 0.00 0.01 0.03 0.04 1.29 0.70 1.92 0.11 0.21 0.18 0.22 0.47
Dart 0.01 0.05 0.15 0.19 6.14 3.35 9.17 0.54 4.78 0.87 1.06 2.25
Java 0.02 0.06 0.17 0.22 7.08 3.86 10.57 0.62 5.51 1.15 1.23 2.60
Scala 0.01 0.05 0.14 0.18 5.78 3.15 8.63 0.50 4.50 0.94 0.82 2.12
Clojure 0.01 0.02 0.06 0.09 2.73 1.49 4.07 0.24 2.12 0.44 0.39 0.47
From
To
C
Modern

Native
Scripting
Selecting the Language
| @Chris__Bailey
C++ Go Swift Rust Ruby PHP Python JScript Erlang Dart Java Scala Clojure
C++ 4.02 10.96 14.65 461.69 251.83 689.22 40.25 359.13 75.16 65.18 79.88 169.17
Go 0.25 2.73 3.64 114.79 62.61 171.37 10.01 89.29 18.69 16.21 19.86 42.06
Swift 0.09 0.37 1.34 42.11 22.97 62.86 3.67 32.75 6.86 5.95 7.29 15.43
Rust 0.07 0.27 0.75 31.52 17.19 47.06 2.75 24.52 5.13 4.45 5.45 11.55
Ruby 0.00 0.01 0.02 0.03 0.55 1.49 0.09 0.78 0.16 0.14 0.17 0.37
PHP 0.00 0.02 0.04 0.06 1.83 2.74 0.16 1.43 0.30 0.26 0.32 0.67
Python 0.00 0.01 0.02 0.02 0.67 0.37 0.06 0.52 0.11 0.09 0.12 0.25
JScript 0.02 0.10 0.27 0.36 11.47 6.26 17.13 8.92 1.87 1.62 1.98 4.20
Erlang 0.00 0.01 0.03 0.04 1.29 0.70 1.92 0.11 0.21 0.18 0.22 0.47
Dart 0.01 0.05 0.15 0.19 6.14 3.35 9.17 0.54 4.78 0.87 1.06 2.25
Java 0.02 0.06 0.17 0.22 7.08 3.86 10.57 0.62 5.51 1.15 1.23 2.60
Scala 0.01 0.05 0.14 0.18 5.78 3.15 8.63 0.50 4.50 0.94 0.82 2.12
Clojure 0.01 0.02 0.06 0.09 2.73 1.49 4.07 0.24 2.12 0.44 0.39 0.47
From
To
C
Modern

Native
Scripting
Selecting the Language
| @Chris__Bailey
C++ Go Swift Rust Ruby PHP Python JScript Erlang Dart Java Scala Clojure
C++ 4.02 10.96 14.65 461.69 251.83 689.22 40.25 359.13 75.16 65.18 79.88 169.17
Go 0.25 2.73 3.64 114.79 62.61 171.37 10.01 89.29 18.69 16.21 19.86 42.06
Swift 0.09 0.37 1.34 42.11 22.97 62.86 3.67 32.75 6.86 5.95 7.29 15.43
Rust 0.07 0.27 0.75 31.52 17.19 47.06 2.75 24.52 5.13 4.45 5.45 11.55
Ruby 0.00 0.01 0.02 0.03 0.55 1.49 0.09 0.78 0.16 0.14 0.17 0.37
PHP 0.00 0.02 0.04 0.06 1.83 2.74 0.16 1.43 0.30 0.26 0.32 0.67
Python 0.00 0.01 0.02 0.02 0.67 0.37 0.06 0.52 0.11 0.09 0.12 0.25
JScript 0.02 0.10 0.27 0.36 11.47 6.26 17.13 8.92 1.87 1.62 1.98 4.20
Erlang 0.00 0.01 0.03 0.04 1.29 0.70 1.92 0.11 0.21 0.18 0.22 0.47
Dart 0.01 0.05 0.15 0.19 6.14 3.35 9.17 0.54 4.78 0.87 1.06 2.25
Java 0.02 0.06 0.17 0.22 7.08 3.86 10.57 0.62 5.51 1.15 1.23 2.60
Scala 0.01 0.05 0.14 0.18 5.78 3.15 8.63 0.50 4.50 0.94 0.82 2.12
Clojure 0.01 0.02 0.06 0.09 2.73 1.49 4.07 0.24 2.12 0.44 0.39 0.47
From
To
C
Modern

Native
Scripting
Selecting the Language
| @Chris__Bailey
C++ Go Swift Rust Ruby PHP Python JScript Erlang Dart Java Scala Clojure
C++ 4.02 10.96 14.65 461.69 251.83 689.22 40.25 359.13 75.16 65.18 79.88 169.17
Go 0.25 2.73 3.64 114.79 62.61 171.37 10.01 89.29 18.69 16.21 19.86 42.06
Swift 0.09 0.37 1.34 42.11 22.97 62.86 3.67 32.75 6.86 5.95 7.29 15.43
Rust 0.07 0.27 0.75 31.52 17.19 47.06 2.75 24.52 5.13 4.45 5.45 11.55
Ruby 0.00 0.01 0.02 0.03 0.55 1.49 0.09 0.78 0.16 0.14 0.17 0.37
PHP 0.00 0.02 0.04 0.06 1.83 2.74 0.16 1.43 0.30 0.26 0.32 0.67
Python 0.00 0.01 0.02 0.02 0.67 0.37 0.06 0.52 0.11 0.09 0.12 0.25
JScript 0.02 0.10 0.27 0.36 11.47 6.26 17.13 8.92 1.87 1.62 1.98 4.20
Erlang 0.00 0.01 0.03 0.04 1.29 0.70 1.92 0.11 0.21 0.18 0.22 0.47
Dart 0.01 0.05 0.15 0.19 6.14 3.35 9.17 0.54 4.78 0.87 1.06 2.25
Java 0.02 0.06 0.17 0.22 7.08 3.86 10.57 0.62 5.51 1.15 1.23 2.60
Scala 0.01 0.05 0.14 0.18 5.78 3.15 8.63 0.50 4.50 0.94 0.82 2.12
Clojure 0.01 0.02 0.06 0.09 2.73 1.49 4.07 0.24 2.12 0.44 0.39 0.47
From
To
C
Modern

Native
Scripting
JVM
Selecting the Language
| @Chris__Bailey
C++ Go Swift Rust Ruby PHP Python JScript Erlang Dart Java Scala Clojure
C++ 4.02 10.96 14.65 461.69 251.83 689.22 40.25 359.13 75.16 65.18 79.88 169.17
Go 0.25 2.73 3.64 114.79 62.61 171.37 10.01 89.29 18.69 16.21 19.86 42.06
Swift 0.09 0.37 1.34 42.11 22.97 62.86 3.67 32.75 6.86 5.95 7.29 15.43
Rust 0.07 0.27 0.75 31.52 17.19 47.06 2.75 24.52 5.13 4.45 5.45 11.55
Ruby 0.00 0.01 0.02 0.03 0.55 1.49 0.09 0.78 0.16 0.14 0.17 0.37
PHP 0.00 0.02 0.04 0.06 1.83 2.74 0.16 1.43 0.30 0.26 0.32 0.67
Python 0.00 0.01 0.02 0.02 0.67 0.37 0.06 0.52 0.11 0.09 0.12 0.25
JScript 0.02 0.10 0.27 0.36 11.47 6.26 17.13 8.92 1.87 1.62 1.98 4.20
Erlang 0.00 0.01 0.03 0.04 1.29 0.70 1.92 0.11 0.21 0.18 0.22 0.47
Dart 0.01 0.05 0.15 0.19 6.14 3.35 9.17 0.54 4.78 0.87 1.06 2.25
Java 0.02 0.06 0.17 0.22 7.08 3.86 10.57 0.62 5.51 1.15 1.23 2.60
Scala 0.01 0.05 0.14 0.18 5.78 3.15 8.63 0.50 4.50 0.94 0.82 2.12
Clojure 0.01 0.02 0.06 0.09 2.73 1.49 4.07 0.24 2.12 0.44 0.39 0.47
From
To
C
Modern

Native
Scripting
JVM
Optimising for the Cloud

Optimising for the Cloud

#2: Use Intelligent Scaling
Intelligent Scaling for Capacity
| @Chris__Bailey
Time
Capacity
Predicted Load
Capacity Requirement
Excess Capacity
Intelligent Scaling for Capacity
| @Chris__Bailey
Time
Capacity
Predicted Load
Capacity Requirement
Excess Capacity
Intelligent Scaling for Capacity
| @Chris__Bailey
Time
Capacity
Actual Load
Capacity Requirement
Excess Capacity
Intelligent Scaling for Capacity
| @Chris__Bailey
Time
Capacity
Actual Load
Capacity Requirement
Excess Capacity
Intelligent Scaling for Capacity
| @Chris__Bailey
Time
Capacity
Actual Load
Capacity Requirement
Excess Capacity
Dynamic Scaling to Load
| @Chris__Bailey
00:00
Capacity
Actual Load
Excess Capacity
12:00 18:0006:0000:00
Capacity
Dynamic Scaling to Load
| @Chris__Bailey
00:00
Capacity
Actual Load
Capacity
Excess Capacity
12:00 18:0006:0000:00
Dynamic Scaling to Load
§ Daily load cycles are common for user facing applications
- Particularly if your using localised availability zones
| @Chris__Bailey
“Most enterprises have hardware utilisation below 20%
and below 10% for workloads with peaks”
Dynamic Scaling to Load
§ Daily load cycles are common for user facing applications
- Particularly if your using localised availability zones
§ Intelligent Scaling can provide a 2x saving:
| @Chris__Bailey
“Most enterprises have hardware utilisation below 20%
and below 10% for workloads with peaks”
Dynamic Scaling to Load
§ Daily load cycles are common for user facing applications
- Particularly if your using localised availability zones
§ Intelligent Scaling can provide a 2x saving:
- Ruby on Rails app: $14,490/year
- Move to Java: $ 2,070/year
| @Chris__Bailey
“Most enterprises have hardware utilisation below 20%
and below 10% for workloads with peaks”
Dynamic Scaling to Load
§ Daily load cycles are common for user facing applications
- Particularly if your using localised availability zones
§ Intelligent Scaling can provide a 2x saving:
- Ruby on Rails app: $14,490/year
- Move to Java: $ 2,070/year
- Add scaling: $ 1,035/year
| @Chris__Bailey
“Most enterprises have hardware utilisation below 20%
and below 10% for workloads with peaks”
Optimising for the Cloud

Optimising for the Cloud

#3: Identify and Fix Memory Leaks
Look for and Fix memory leaks
§ A small leak means a very large

amount of memory over time
| @Chris__Bailey
American	Society	of	Civil	Engineers
Look for and Fix memory leaks
§ A small leak means a very large

amount of memory over time
§ Memory leaks act a little like
interest on a debt
| @Chris__Bailey
Live in-use data
(Principle)
Look for and Fix memory leaks
§ A small leak means a very large

amount of memory over time
§ Memory leaks act a little like
interest on a debt
| @Chris__Bailey
Live in-use data
(Principle)
Memory Leak
(Interest)
Look for and Fix memory leaks
§ A small leak means a very large

amount of memory over time
§ Memory leaks act a little like
interest on a debt

§ Made worse if you have to size the
container ahead of time to allow for
the leak
| @Chris__Bailey
Live in-use data
(Principle)
Memory Leak
(Interest)
Optimising for the Cloud

Optimising for the Cloud

#4: Memory Analysis is the New Performance Tuning
Memory Analysis
§ Most applications are memory in-efficient
- Duplication of data
- Oversized collections
- Empty collections
§ Initial analysis and optimisation usual has a large return on investment
| @Chris__Bailey
Memory Analysis
§ Java case study: PlantsByWebSphere sample in WebSphere AppServer 7
- 5 user test load, 206MB of “live data”:
| @Chris__Bailey
Memory Analysis
§ Java case study: PlantsByWebSphere sample in WebSphere AppServer 7
- 5 user test load, 206MB of “live data”:
| @Chris__Bailey
Collection Count Collection Size (MB)
Hashtable 262,234 26.5
WeakHashMap 19,562 12.6
HashMap 10,600 2.3
ArrayList 9,530 0.3
HashSet 1,551 1.0
Vector 1,271 0.04
LinkedList 1,148 0.1
TreeMap 299 0.03
TOTAL 306,195 42.9
Memory Analysis
§ Java case study: PlantsByWebSphere sample in WebSphere AppServer 7
- 5 user test load, 206MB of “live data”:
§ 42.9MB (16% of memory) are collection objects
- Just the collections themselves - excluding any data they store
| @Chris__Bailey
Collection Count Collection Size (MB)
Hashtable 262,234 26.5
WeakHashMap 19,562 12.6
HashMap 10,600 2.3
ArrayList 9,530 0.3
HashSet 1,551 1.0
Vector 1,271 0.04
LinkedList 1,148 0.1
TreeMap 299 0.03
TOTAL 306,195 42.9
Memory Analysis
§ Analysis of just the Hashtable instances showed:
| @Chris__Bailey
Memory Analysis
§ Analysis of just the Hashtable instances showed:
§ 127,016 of the Hashtables were completely empty
| @Chris__Bailey
Memory Analysis
§ Looking at empty collections across all collection types:
§ 52.6% of collections are empty (22.6MB)
§ Could save 11% of heap utilisation by removing empty collections
| @Chris__Bailey
Collection Count Empty % Empty
Hashtable 262,234 127,016 48.8
WeakHashMap 19,562 19,456 99.5
HashMap 10,600 7,599 71.7
ArrayList 9,530 4,588 48.1
HashSet 1,551 866 55.8
Vector 1,271 622 48.9
TOTAL 304,748 160,156 52.6
Memory Analysis
§ Looking at empty collections across all collection types:
§ 52.6% of collections are empty (22.6MB)
| @Chris__Bailey
Collection Count Empty % Empty
Hashtable 262,234 127,016 48.8
WeakHashMap 19,562 19,456 99.5
HashMap 10,600 7,599 71.7
ArrayList 9,530 4,588 48.1
HashSet 1,551 866 55.8
Vector 1,271 622 48.9
TOTAL 304,748 160,156 52.6
Optimising for the Cloud

Optimising for the Cloud

#5: Design for Memory Usage
Design for Memory
§ Practice lazy allocation of collections
| @Chris__Bailey
Design for Memory
§ Practice lazy allocation of collections
§ Don’t use default collection sizes
| @Chris__Bailey
Design for Memory
§ Practice lazy allocation of collections
§ Don’t use default collection sizes
§ Reallocate collections to shrink them if needed
| @Chris__Bailey
Design for Memory
§ Practice lazy allocation of collections
§ Don’t use default collection sizes
§ Reallocate collections to shrink them if needed
§ Use cache miss based strategies for cache sizes
| @Chris__Bailey
Summary
Cloud Economics

Mais conteúdo relacionado

Mais procurados

InterConnect2016: WebApp Architectures with Java and Node.js
InterConnect2016: WebApp Architectures with Java and Node.jsInterConnect2016: WebApp Architectures with Java and Node.js
InterConnect2016: WebApp Architectures with Java and Node.jsChris Bailey
 
Impact2014: Introduction to the IBM Java Tools
Impact2014: Introduction to the IBM Java ToolsImpact2014: Introduction to the IBM Java Tools
Impact2014: Introduction to the IBM Java ToolsChris Bailey
 
IBM Monitoring and Diagnostics Tools - Health Center 3.0.2
IBM Monitoring and Diagnostics Tools - Health Center 3.0.2IBM Monitoring and Diagnostics Tools - Health Center 3.0.2
IBM Monitoring and Diagnostics Tools - Health Center 3.0.2Chris Bailey
 
Adopting Java for the Serverless world at Serverless Meetup New York and Boston
Adopting Java for the Serverless world at Serverless Meetup New York and BostonAdopting Java for the Serverless world at Serverless Meetup New York and Boston
Adopting Java for the Serverless world at Serverless Meetup New York and BostonVadym Kazulkin
 
Writing less code with Serverless on AWS at FrOSCon 2021
Writing less code with Serverless on AWS at FrOSCon 2021Writing less code with Serverless on AWS at FrOSCon 2021
Writing less code with Serverless on AWS at FrOSCon 2021Vadym Kazulkin
 
Writing less code with Serverless on AWS at AWS User Group Nairobi
Writing less code with Serverless on AWS at AWS User Group NairobiWriting less code with Serverless on AWS at AWS User Group Nairobi
Writing less code with Serverless on AWS at AWS User Group NairobiVadym Kazulkin
 
Use GitLab with Chaos Engineering to Harden your Applications + OpenEBS 1.3 ...
 Use GitLab with Chaos Engineering to Harden your Applications + OpenEBS 1.3 ... Use GitLab with Chaos Engineering to Harden your Applications + OpenEBS 1.3 ...
Use GitLab with Chaos Engineering to Harden your Applications + OpenEBS 1.3 ...MayaData Inc
 
Measure and Increase Developer Productivity with Help of Serverless at AWS Co...
Measure and Increase Developer Productivity with Help of Serverless at AWS Co...Measure and Increase Developer Productivity with Help of Serverless at AWS Co...
Measure and Increase Developer Productivity with Help of Serverless at AWS Co...Vadym Kazulkin
 
How to secure your web applications with NGINX
How to secure your web applications with NGINXHow to secure your web applications with NGINX
How to secure your web applications with NGINXWallarm
 
Developers Are Users, Too
Developers Are Users, TooDevelopers Are Users, Too
Developers Are Users, TooVMware Tanzu
 
JPA Performance Myths -- JavaOne 2013
JPA Performance Myths -- JavaOne 2013JPA Performance Myths -- JavaOne 2013
JPA Performance Myths -- JavaOne 2013richardgcurtis
 
Writing less code with Serverless on AWS at AWS Community Day DACH 2021
Writing less code with Serverless on AWS at AWS Community Day DACH 2021Writing less code with Serverless on AWS at AWS Community Day DACH 2021
Writing less code with Serverless on AWS at AWS Community Day DACH 2021Vadym Kazulkin
 
Performance Testing Cloud-Based Systems
Performance Testing Cloud-Based SystemsPerformance Testing Cloud-Based Systems
Performance Testing Cloud-Based SystemsTechWell
 
Puppet devops wdec
Puppet devops wdecPuppet devops wdec
Puppet devops wdecWojciech Dec
 
What's New in IBM Java 8 SE?
What's New in IBM Java 8 SE?What's New in IBM Java 8 SE?
What's New in IBM Java 8 SE?Tim Ellison
 
Microservices and functional programming
Microservices and functional programmingMicroservices and functional programming
Microservices and functional programmingMichael Neale
 
Adopting Java for the Serverless world at Serverless Meetup Singapore
Adopting Java for the Serverless world at Serverless Meetup SingaporeAdopting Java for the Serverless world at Serverless Meetup Singapore
Adopting Java for the Serverless world at Serverless Meetup SingaporeVadym Kazulkin
 
CFSummit ColdFusion 2015 Load Balancing, Failover and Scalability
CFSummit ColdFusion 2015 Load Balancing, Failover and ScalabilityCFSummit ColdFusion 2015 Load Balancing, Failover and Scalability
CFSummit ColdFusion 2015 Load Balancing, Failover and ScalabilitymcollinsCF
 
Java EE 7: Boosting Productivity and Embracing HTML5
Java EE 7: Boosting Productivity and Embracing HTML5Java EE 7: Boosting Productivity and Embracing HTML5
Java EE 7: Boosting Productivity and Embracing HTML5Arun Gupta
 
Cloud-based performance testing
Cloud-based performance testingCloud-based performance testing
Cloud-based performance testingabhinavm
 

Mais procurados (20)

InterConnect2016: WebApp Architectures with Java and Node.js
InterConnect2016: WebApp Architectures with Java and Node.jsInterConnect2016: WebApp Architectures with Java and Node.js
InterConnect2016: WebApp Architectures with Java and Node.js
 
Impact2014: Introduction to the IBM Java Tools
Impact2014: Introduction to the IBM Java ToolsImpact2014: Introduction to the IBM Java Tools
Impact2014: Introduction to the IBM Java Tools
 
IBM Monitoring and Diagnostics Tools - Health Center 3.0.2
IBM Monitoring and Diagnostics Tools - Health Center 3.0.2IBM Monitoring and Diagnostics Tools - Health Center 3.0.2
IBM Monitoring and Diagnostics Tools - Health Center 3.0.2
 
Adopting Java for the Serverless world at Serverless Meetup New York and Boston
Adopting Java for the Serverless world at Serverless Meetup New York and BostonAdopting Java for the Serverless world at Serverless Meetup New York and Boston
Adopting Java for the Serverless world at Serverless Meetup New York and Boston
 
Writing less code with Serverless on AWS at FrOSCon 2021
Writing less code with Serverless on AWS at FrOSCon 2021Writing less code with Serverless on AWS at FrOSCon 2021
Writing less code with Serverless on AWS at FrOSCon 2021
 
Writing less code with Serverless on AWS at AWS User Group Nairobi
Writing less code with Serverless on AWS at AWS User Group NairobiWriting less code with Serverless on AWS at AWS User Group Nairobi
Writing less code with Serverless on AWS at AWS User Group Nairobi
 
Use GitLab with Chaos Engineering to Harden your Applications + OpenEBS 1.3 ...
 Use GitLab with Chaos Engineering to Harden your Applications + OpenEBS 1.3 ... Use GitLab with Chaos Engineering to Harden your Applications + OpenEBS 1.3 ...
Use GitLab with Chaos Engineering to Harden your Applications + OpenEBS 1.3 ...
 
Measure and Increase Developer Productivity with Help of Serverless at AWS Co...
Measure and Increase Developer Productivity with Help of Serverless at AWS Co...Measure and Increase Developer Productivity with Help of Serverless at AWS Co...
Measure and Increase Developer Productivity with Help of Serverless at AWS Co...
 
How to secure your web applications with NGINX
How to secure your web applications with NGINXHow to secure your web applications with NGINX
How to secure your web applications with NGINX
 
Developers Are Users, Too
Developers Are Users, TooDevelopers Are Users, Too
Developers Are Users, Too
 
JPA Performance Myths -- JavaOne 2013
JPA Performance Myths -- JavaOne 2013JPA Performance Myths -- JavaOne 2013
JPA Performance Myths -- JavaOne 2013
 
Writing less code with Serverless on AWS at AWS Community Day DACH 2021
Writing less code with Serverless on AWS at AWS Community Day DACH 2021Writing less code with Serverless on AWS at AWS Community Day DACH 2021
Writing less code with Serverless on AWS at AWS Community Day DACH 2021
 
Performance Testing Cloud-Based Systems
Performance Testing Cloud-Based SystemsPerformance Testing Cloud-Based Systems
Performance Testing Cloud-Based Systems
 
Puppet devops wdec
Puppet devops wdecPuppet devops wdec
Puppet devops wdec
 
What's New in IBM Java 8 SE?
What's New in IBM Java 8 SE?What's New in IBM Java 8 SE?
What's New in IBM Java 8 SE?
 
Microservices and functional programming
Microservices and functional programmingMicroservices and functional programming
Microservices and functional programming
 
Adopting Java for the Serverless world at Serverless Meetup Singapore
Adopting Java for the Serverless world at Serverless Meetup SingaporeAdopting Java for the Serverless world at Serverless Meetup Singapore
Adopting Java for the Serverless world at Serverless Meetup Singapore
 
CFSummit ColdFusion 2015 Load Balancing, Failover and Scalability
CFSummit ColdFusion 2015 Load Balancing, Failover and ScalabilityCFSummit ColdFusion 2015 Load Balancing, Failover and Scalability
CFSummit ColdFusion 2015 Load Balancing, Failover and Scalability
 
Java EE 7: Boosting Productivity and Embracing HTML5
Java EE 7: Boosting Productivity and Embracing HTML5Java EE 7: Boosting Productivity and Embracing HTML5
Java EE 7: Boosting Productivity and Embracing HTML5
 
Cloud-based performance testing
Cloud-based performance testingCloud-based performance testing
Cloud-based performance testing
 

Destaque

Playgrounds: Mobile + Swift = BFF
Playgrounds: Mobile + Swift = BFFPlaygrounds: Mobile + Swift = BFF
Playgrounds: Mobile + Swift = BFFChris Bailey
 
All change! How the new Economics of Cloud will make you think differently ab...
All change! How the new Economics of Cloud will make you think differently ab...All change! How the new Economics of Cloud will make you think differently ab...
All change! How the new Economics of Cloud will make you think differently ab...JAXLondon_Conference
 
Practical Performance: Understand and improve the performance of your applica...
Practical Performance: Understand and improve the performance of your applica...Practical Performance: Understand and improve the performance of your applica...
Practical Performance: Understand and improve the performance of your applica...Chris Bailey
 
Software Archaeology
Software ArchaeologySoftware Archaeology
Software ArchaeologyChris Bailey
 
Best Romantic Getaways for Adventures Couples
Best Romantic Getaways for Adventures Couples Best Romantic Getaways for Adventures Couples
Best Romantic Getaways for Adventures Couples Pushpitha Wijesinghe
 
Once upon a time: Why operations mythology matters
Once upon a time: Why operations mythology mattersOnce upon a time: Why operations mythology matters
Once upon a time: Why operations mythology mattersJames Turnbull
 
Monitoring As A Service - Modernity and Self-Service CraftConf 2016
Monitoring As A Service - Modernity and Self-Service CraftConf 2016Monitoring As A Service - Modernity and Self-Service CraftConf 2016
Monitoring As A Service - Modernity and Self-Service CraftConf 2016James Turnbull
 
Developing Good Operations Tools
Developing Good Operations ToolsDeveloping Good Operations Tools
Developing Good Operations ToolsJames Turnbull
 
Web Sphere Problem Determination Ext
Web Sphere Problem Determination ExtWeb Sphere Problem Determination Ext
Web Sphere Problem Determination ExtRohit Kelapure
 
Caching technology comparison
Caching technology comparisonCaching technology comparison
Caching technology comparisonRohit Kelapure
 
Scalable, Available and Reliable Cloud Applications with PaaS and Microservices
Scalable, Available and Reliable Cloud Applications with PaaS and MicroservicesScalable, Available and Reliable Cloud Applications with PaaS and Microservices
Scalable, Available and Reliable Cloud Applications with PaaS and MicroservicesDavid Currie
 
2012 04-09-v2-tdp-1167-cdi-bestpractices-final
2012 04-09-v2-tdp-1167-cdi-bestpractices-final2012 04-09-v2-tdp-1167-cdi-bestpractices-final
2012 04-09-v2-tdp-1167-cdi-bestpractices-finalRohit Kelapure
 
EUDAT Research Data Management | www.eudat.eu |
EUDAT Research Data Management | www.eudat.eu | EUDAT Research Data Management | www.eudat.eu |
EUDAT Research Data Management | www.eudat.eu | EUDAT
 
Web sphere application server performance tuning workshop
Web sphere application server performance tuning workshopWeb sphere application server performance tuning workshop
Web sphere application server performance tuning workshopRohit Kelapure
 
Taking the Application Server to Web Scale with Netflix Open Source Software
Taking the Application Server to Web Scale with Netflix Open Source SoftwareTaking the Application Server to Web Scale with Netflix Open Source Software
Taking the Application Server to Web Scale with Netflix Open Source SoftwareDavid Currie
 
Caching technology comparison
Caching technology comparisonCaching technology comparison
Caching technology comparisonRohit Kelapure
 
Concierge: Bringing OSGi (Back) to Embedded Devices
Concierge: Bringing OSGi (Back) to Embedded DevicesConcierge: Bringing OSGi (Back) to Embedded Devices
Concierge: Bringing OSGi (Back) to Embedded DevicesJan S. Rellermeyer
 

Destaque (20)

Playgrounds: Mobile + Swift = BFF
Playgrounds: Mobile + Swift = BFFPlaygrounds: Mobile + Swift = BFF
Playgrounds: Mobile + Swift = BFF
 
All change! How the new Economics of Cloud will make you think differently ab...
All change! How the new Economics of Cloud will make you think differently ab...All change! How the new Economics of Cloud will make you think differently ab...
All change! How the new Economics of Cloud will make you think differently ab...
 
Practical Performance: Understand and improve the performance of your applica...
Practical Performance: Understand and improve the performance of your applica...Practical Performance: Understand and improve the performance of your applica...
Practical Performance: Understand and improve the performance of your applica...
 
Software Archaeology
Software ArchaeologySoftware Archaeology
Software Archaeology
 
Best Romantic Getaways for Adventures Couples
Best Romantic Getaways for Adventures Couples Best Romantic Getaways for Adventures Couples
Best Romantic Getaways for Adventures Couples
 
Once upon a time: Why operations mythology matters
Once upon a time: Why operations mythology mattersOnce upon a time: Why operations mythology matters
Once upon a time: Why operations mythology matters
 
Monitoring As A Service - Modernity and Self-Service CraftConf 2016
Monitoring As A Service - Modernity and Self-Service CraftConf 2016Monitoring As A Service - Modernity and Self-Service CraftConf 2016
Monitoring As A Service - Modernity and Self-Service CraftConf 2016
 
Developing Good Operations Tools
Developing Good Operations ToolsDeveloping Good Operations Tools
Developing Good Operations Tools
 
D Y N A C A C H E Wxs
D Y N A C A C H E WxsD Y N A C A C H E Wxs
D Y N A C A C H E Wxs
 
D Y N A C A C H E Wxs
D Y N A C A C H E WxsD Y N A C A C H E Wxs
D Y N A C A C H E Wxs
 
Web Sphere Problem Determination Ext
Web Sphere Problem Determination ExtWeb Sphere Problem Determination Ext
Web Sphere Problem Determination Ext
 
Caching technology comparison
Caching technology comparisonCaching technology comparison
Caching technology comparison
 
Scalable, Available and Reliable Cloud Applications with PaaS and Microservices
Scalable, Available and Reliable Cloud Applications with PaaS and MicroservicesScalable, Available and Reliable Cloud Applications with PaaS and Microservices
Scalable, Available and Reliable Cloud Applications with PaaS and Microservices
 
2012 04-09-v2-tdp-1167-cdi-bestpractices-final
2012 04-09-v2-tdp-1167-cdi-bestpractices-final2012 04-09-v2-tdp-1167-cdi-bestpractices-final
2012 04-09-v2-tdp-1167-cdi-bestpractices-final
 
EUDAT Research Data Management | www.eudat.eu |
EUDAT Research Data Management | www.eudat.eu | EUDAT Research Data Management | www.eudat.eu |
EUDAT Research Data Management | www.eudat.eu |
 
Web sphere application server performance tuning workshop
Web sphere application server performance tuning workshopWeb sphere application server performance tuning workshop
Web sphere application server performance tuning workshop
 
Taking the Application Server to Web Scale with Netflix Open Source Software
Taking the Application Server to Web Scale with Netflix Open Source SoftwareTaking the Application Server to Web Scale with Netflix Open Source Software
Taking the Application Server to Web Scale with Netflix Open Source Software
 
1812 icap-v1.3 0430
1812 icap-v1.3 04301812 icap-v1.3 0430
1812 icap-v1.3 0430
 
Caching technology comparison
Caching technology comparisonCaching technology comparison
Caching technology comparison
 
Concierge: Bringing OSGi (Back) to Embedded Devices
Concierge: Bringing OSGi (Back) to Embedded DevicesConcierge: Bringing OSGi (Back) to Embedded Devices
Concierge: Bringing OSGi (Back) to Embedded Devices
 

Semelhante a O'Reilly Software Architecture Conf: Cloud Economics

Meetup Oracle Database: 3 Analizar, Aconsejar, Automatizar… las nuevas funcio...
Meetup Oracle Database: 3 Analizar, Aconsejar, Automatizar… las nuevas funcio...Meetup Oracle Database: 3 Analizar, Aconsejar, Automatizar… las nuevas funcio...
Meetup Oracle Database: 3 Analizar, Aconsejar, Automatizar… las nuevas funcio...avanttic Consultoría Tecnológica
 
Webinar: Dyn + DataStax - helping companies deliver exceptional end-user expe...
Webinar: Dyn + DataStax - helping companies deliver exceptional end-user expe...Webinar: Dyn + DataStax - helping companies deliver exceptional end-user expe...
Webinar: Dyn + DataStax - helping companies deliver exceptional end-user expe...DataStax
 
Estimating the Total Costs of Your Cloud Analytics Platform
Estimating the Total Costs of Your Cloud Analytics PlatformEstimating the Total Costs of Your Cloud Analytics Platform
Estimating the Total Costs of Your Cloud Analytics PlatformDATAVERSITY
 
Cost Effectively Run Multiple Oracle Database Copies at Scale
Cost Effectively Run Multiple Oracle Database Copies at Scale Cost Effectively Run Multiple Oracle Database Copies at Scale
Cost Effectively Run Multiple Oracle Database Copies at Scale NetApp
 
VMworld 2013: Virtualizing Databases: Doing IT Right
VMworld 2013: Virtualizing Databases: Doing IT Right VMworld 2013: Virtualizing Databases: Doing IT Right
VMworld 2013: Virtualizing Databases: Doing IT Right VMworld
 
OpenStack Silicon Valley - Enterprise Storage Trends Driving OpenStack Features
OpenStack Silicon Valley - Enterprise Storage Trends Driving OpenStack FeaturesOpenStack Silicon Valley - Enterprise Storage Trends Driving OpenStack Features
OpenStack Silicon Valley - Enterprise Storage Trends Driving OpenStack FeaturesEd Balduf
 
Couchbase Singapore Meetup #2: Why Developing with Couchbase is easy !!
Couchbase Singapore Meetup #2:  Why Developing with Couchbase is easy !! Couchbase Singapore Meetup #2:  Why Developing with Couchbase is easy !!
Couchbase Singapore Meetup #2: Why Developing with Couchbase is easy !! Karthik Babu Sekar
 
Data Warehouse Modernization - Big Data in the Cloud Success with Qubole on O...
Data Warehouse Modernization - Big Data in the Cloud Success with Qubole on O...Data Warehouse Modernization - Big Data in the Cloud Success with Qubole on O...
Data Warehouse Modernization - Big Data in the Cloud Success with Qubole on O...Qubole
 
Optimizing MySQL for Cascade Server
Optimizing MySQL for Cascade ServerOptimizing MySQL for Cascade Server
Optimizing MySQL for Cascade Serverhannonhill
 
Couchbase Chennai Meetup: Developing with Couchbase- made easy
Couchbase Chennai Meetup:  Developing with Couchbase- made easyCouchbase Chennai Meetup:  Developing with Couchbase- made easy
Couchbase Chennai Meetup: Developing with Couchbase- made easyKarthik Babu Sekar
 
MySQL Cluster - Latest Developments (up to and including MySQL Cluster 7.4)
MySQL Cluster - Latest Developments (up to and including MySQL Cluster 7.4)MySQL Cluster - Latest Developments (up to and including MySQL Cluster 7.4)
MySQL Cluster - Latest Developments (up to and including MySQL Cluster 7.4)Andrew Morgan
 
MISYS-KL - Cintra Optimized Oracle Archiecture Solution and Services 1.1.pdf
MISYS-KL - Cintra Optimized Oracle Archiecture Solution and Services 1.1.pdfMISYS-KL - Cintra Optimized Oracle Archiecture Solution and Services 1.1.pdf
MISYS-KL - Cintra Optimized Oracle Archiecture Solution and Services 1.1.pdfssuserd5e338
 
Implementing SharePoint on Azure, Lessons Learnt from a Real World Project
Implementing SharePoint on Azure, Lessons Learnt from a Real World ProjectImplementing SharePoint on Azure, Lessons Learnt from a Real World Project
Implementing SharePoint on Azure, Lessons Learnt from a Real World ProjectK.Mohamed Faizal
 
Java ee7 with apache spark for the world's largest credit card core systems, ...
Java ee7 with apache spark for the world's largest credit card core systems, ...Java ee7 with apache spark for the world's largest credit card core systems, ...
Java ee7 with apache spark for the world's largest credit card core systems, ...Rakuten Group, Inc.
 
Oracle RAC - Customer Proven Scalability
Oracle RAC - Customer Proven ScalabilityOracle RAC - Customer Proven Scalability
Oracle RAC - Customer Proven ScalabilityMarkus Michalewicz
 
Private Cloud: Database-as-a-Service with Enterprise Manager : OOW 16
Private Cloud: Database-as-a-Service with Enterprise Manager : OOW 16Private Cloud: Database-as-a-Service with Enterprise Manager : OOW 16
Private Cloud: Database-as-a-Service with Enterprise Manager : OOW 16Bala Kuchibhotla
 
FlexPod Datacenter for Oracle’s JD Edwards EnterpriseOne
FlexPod Datacenter for Oracle’s JD Edwards EnterpriseOneFlexPod Datacenter for Oracle’s JD Edwards EnterpriseOne
FlexPod Datacenter for Oracle’s JD Edwards EnterpriseOneNetApp
 
Pivotal Greenplum: Postgres-Based. Multi-Cloud. Built for Analytics & AI - Gr...
Pivotal Greenplum: Postgres-Based. Multi-Cloud. Built for Analytics & AI - Gr...Pivotal Greenplum: Postgres-Based. Multi-Cloud. Built for Analytics & AI - Gr...
Pivotal Greenplum: Postgres-Based. Multi-Cloud. Built for Analytics & AI - Gr...VMware Tanzu
 

Semelhante a O'Reilly Software Architecture Conf: Cloud Economics (20)

Novinky v Oracle Database 18c
Novinky v Oracle Database 18cNovinky v Oracle Database 18c
Novinky v Oracle Database 18c
 
Meetup Oracle Database: 3 Analizar, Aconsejar, Automatizar… las nuevas funcio...
Meetup Oracle Database: 3 Analizar, Aconsejar, Automatizar… las nuevas funcio...Meetup Oracle Database: 3 Analizar, Aconsejar, Automatizar… las nuevas funcio...
Meetup Oracle Database: 3 Analizar, Aconsejar, Automatizar… las nuevas funcio...
 
Webinar: Dyn + DataStax - helping companies deliver exceptional end-user expe...
Webinar: Dyn + DataStax - helping companies deliver exceptional end-user expe...Webinar: Dyn + DataStax - helping companies deliver exceptional end-user expe...
Webinar: Dyn + DataStax - helping companies deliver exceptional end-user expe...
 
Estimating the Total Costs of Your Cloud Analytics Platform
Estimating the Total Costs of Your Cloud Analytics PlatformEstimating the Total Costs of Your Cloud Analytics Platform
Estimating the Total Costs of Your Cloud Analytics Platform
 
Cost Effectively Run Multiple Oracle Database Copies at Scale
Cost Effectively Run Multiple Oracle Database Copies at Scale Cost Effectively Run Multiple Oracle Database Copies at Scale
Cost Effectively Run Multiple Oracle Database Copies at Scale
 
Elastic-Engineering
Elastic-EngineeringElastic-Engineering
Elastic-Engineering
 
VMworld 2013: Virtualizing Databases: Doing IT Right
VMworld 2013: Virtualizing Databases: Doing IT Right VMworld 2013: Virtualizing Databases: Doing IT Right
VMworld 2013: Virtualizing Databases: Doing IT Right
 
OpenStack Silicon Valley - Enterprise Storage Trends Driving OpenStack Features
OpenStack Silicon Valley - Enterprise Storage Trends Driving OpenStack FeaturesOpenStack Silicon Valley - Enterprise Storage Trends Driving OpenStack Features
OpenStack Silicon Valley - Enterprise Storage Trends Driving OpenStack Features
 
Couchbase Singapore Meetup #2: Why Developing with Couchbase is easy !!
Couchbase Singapore Meetup #2:  Why Developing with Couchbase is easy !! Couchbase Singapore Meetup #2:  Why Developing with Couchbase is easy !!
Couchbase Singapore Meetup #2: Why Developing with Couchbase is easy !!
 
Data Warehouse Modernization - Big Data in the Cloud Success with Qubole on O...
Data Warehouse Modernization - Big Data in the Cloud Success with Qubole on O...Data Warehouse Modernization - Big Data in the Cloud Success with Qubole on O...
Data Warehouse Modernization - Big Data in the Cloud Success with Qubole on O...
 
Optimizing MySQL for Cascade Server
Optimizing MySQL for Cascade ServerOptimizing MySQL for Cascade Server
Optimizing MySQL for Cascade Server
 
Couchbase Chennai Meetup: Developing with Couchbase- made easy
Couchbase Chennai Meetup:  Developing with Couchbase- made easyCouchbase Chennai Meetup:  Developing with Couchbase- made easy
Couchbase Chennai Meetup: Developing with Couchbase- made easy
 
MySQL Cluster - Latest Developments (up to and including MySQL Cluster 7.4)
MySQL Cluster - Latest Developments (up to and including MySQL Cluster 7.4)MySQL Cluster - Latest Developments (up to and including MySQL Cluster 7.4)
MySQL Cluster - Latest Developments (up to and including MySQL Cluster 7.4)
 
MISYS-KL - Cintra Optimized Oracle Archiecture Solution and Services 1.1.pdf
MISYS-KL - Cintra Optimized Oracle Archiecture Solution and Services 1.1.pdfMISYS-KL - Cintra Optimized Oracle Archiecture Solution and Services 1.1.pdf
MISYS-KL - Cintra Optimized Oracle Archiecture Solution and Services 1.1.pdf
 
Implementing SharePoint on Azure, Lessons Learnt from a Real World Project
Implementing SharePoint on Azure, Lessons Learnt from a Real World ProjectImplementing SharePoint on Azure, Lessons Learnt from a Real World Project
Implementing SharePoint on Azure, Lessons Learnt from a Real World Project
 
Java ee7 with apache spark for the world's largest credit card core systems, ...
Java ee7 with apache spark for the world's largest credit card core systems, ...Java ee7 with apache spark for the world's largest credit card core systems, ...
Java ee7 with apache spark for the world's largest credit card core systems, ...
 
Oracle RAC - Customer Proven Scalability
Oracle RAC - Customer Proven ScalabilityOracle RAC - Customer Proven Scalability
Oracle RAC - Customer Proven Scalability
 
Private Cloud: Database-as-a-Service with Enterprise Manager : OOW 16
Private Cloud: Database-as-a-Service with Enterprise Manager : OOW 16Private Cloud: Database-as-a-Service with Enterprise Manager : OOW 16
Private Cloud: Database-as-a-Service with Enterprise Manager : OOW 16
 
FlexPod Datacenter for Oracle’s JD Edwards EnterpriseOne
FlexPod Datacenter for Oracle’s JD Edwards EnterpriseOneFlexPod Datacenter for Oracle’s JD Edwards EnterpriseOne
FlexPod Datacenter for Oracle’s JD Edwards EnterpriseOne
 
Pivotal Greenplum: Postgres-Based. Multi-Cloud. Built for Analytics & AI - Gr...
Pivotal Greenplum: Postgres-Based. Multi-Cloud. Built for Analytics & AI - Gr...Pivotal Greenplum: Postgres-Based. Multi-Cloud. Built for Analytics & AI - Gr...
Pivotal Greenplum: Postgres-Based. Multi-Cloud. Built for Analytics & AI - Gr...
 

Mais de Chris Bailey

NodeJS Interactive 2019: FaaS meets Frameworks
NodeJS Interactive 2019:  FaaS meets FrameworksNodeJS Interactive 2019:  FaaS meets Frameworks
NodeJS Interactive 2019: FaaS meets FrameworksChris Bailey
 
Voxxed Micro-services: Serverless JakartaEE - JAX-RS comes to FaaS
Voxxed Micro-services: Serverless JakartaEE - JAX-RS comes to FaaSVoxxed Micro-services: Serverless JakartaEE - JAX-RS comes to FaaS
Voxxed Micro-services: Serverless JakartaEE - JAX-RS comes to FaaSChris Bailey
 
Silicon Valley Code Camp 2019 - Reaching the Cloud Native World
Silicon Valley Code Camp 2019 - Reaching the Cloud Native WorldSilicon Valley Code Camp 2019 - Reaching the Cloud Native World
Silicon Valley Code Camp 2019 - Reaching the Cloud Native WorldChris Bailey
 
FaaS Meets Java EE: Developing Cloud Native Applications at Speed
FaaS Meets Java EE: Developing Cloud Native Applications at SpeedFaaS Meets Java EE: Developing Cloud Native Applications at Speed
FaaS Meets Java EE: Developing Cloud Native Applications at SpeedChris Bailey
 
AltConf 2019: Server-Side Swift State of the Union
AltConf 2019:  Server-Side Swift State of the UnionAltConf 2019:  Server-Side Swift State of the Union
AltConf 2019: Server-Side Swift State of the UnionChris Bailey
 
Server-side Swift with Swagger
Server-side Swift with SwaggerServer-side Swift with Swagger
Server-side Swift with SwaggerChris Bailey
 
Node Summit 2018: Cloud Native Node.js
Node Summit 2018: Cloud Native Node.jsNode Summit 2018: Cloud Native Node.js
Node Summit 2018: Cloud Native Node.jsChris Bailey
 
Index - BFFs vs GraphQL
Index - BFFs vs GraphQLIndex - BFFs vs GraphQL
Index - BFFs vs GraphQLChris Bailey
 
Swift Cloud Workshop - Swift Microservices
Swift Cloud Workshop - Swift MicroservicesSwift Cloud Workshop - Swift Microservices
Swift Cloud Workshop - Swift MicroservicesChris Bailey
 
Swift Cloud Workshop - Codable, the key to Fullstack Swift
Swift Cloud Workshop - Codable, the key to Fullstack SwiftSwift Cloud Workshop - Codable, the key to Fullstack Swift
Swift Cloud Workshop - Codable, the key to Fullstack SwiftChris Bailey
 
Try!Swift India 2017: All you need is Swift
Try!Swift India 2017: All you need is SwiftTry!Swift India 2017: All you need is Swift
Try!Swift India 2017: All you need is SwiftChris Bailey
 
Swift Summit 2017: Server Swift State of the Union
Swift Summit 2017: Server Swift State of the UnionSwift Summit 2017: Server Swift State of the Union
Swift Summit 2017: Server Swift State of the UnionChris Bailey
 
IBM Cloud University: Build, Deploy and Scale Node.js Microservices
IBM Cloud University: Build, Deploy and Scale Node.js MicroservicesIBM Cloud University: Build, Deploy and Scale Node.js Microservices
IBM Cloud University: Build, Deploy and Scale Node.js MicroservicesChris Bailey
 
IBM Cloud University: Java, Node.js and Swift
IBM Cloud University: Java, Node.js and SwiftIBM Cloud University: Java, Node.js and Swift
IBM Cloud University: Java, Node.js and SwiftChris Bailey
 
Node Interactive: Node.js Performance and Highly Scalable Micro-Services
Node Interactive: Node.js Performance and Highly Scalable Micro-ServicesNode Interactive: Node.js Performance and Highly Scalable Micro-Services
Node Interactive: Node.js Performance and Highly Scalable Micro-ServicesChris Bailey
 
FrenchKit 2017: Server(less) Swift
FrenchKit 2017: Server(less) SwiftFrenchKit 2017: Server(less) Swift
FrenchKit 2017: Server(less) SwiftChris Bailey
 
AltConf 2017: Full Stack Swift in 30 Minutes
AltConf 2017: Full Stack Swift in 30 MinutesAltConf 2017: Full Stack Swift in 30 Minutes
AltConf 2017: Full Stack Swift in 30 MinutesChris Bailey
 
InterConnect: Server Side Swift for Java Developers
InterConnect:  Server Side Swift for Java DevelopersInterConnect:  Server Side Swift for Java Developers
InterConnect: Server Side Swift for Java DevelopersChris Bailey
 
InterConnect: Java, Node.js and Swift - Which, Why and When
InterConnect: Java, Node.js and Swift - Which, Why and WhenInterConnect: Java, Node.js and Swift - Which, Why and When
InterConnect: Java, Node.js and Swift - Which, Why and WhenChris Bailey
 
JavaOne 2015: From Java Code to Machine Code
JavaOne 2015: From Java Code to Machine CodeJavaOne 2015: From Java Code to Machine Code
JavaOne 2015: From Java Code to Machine CodeChris Bailey
 

Mais de Chris Bailey (20)

NodeJS Interactive 2019: FaaS meets Frameworks
NodeJS Interactive 2019:  FaaS meets FrameworksNodeJS Interactive 2019:  FaaS meets Frameworks
NodeJS Interactive 2019: FaaS meets Frameworks
 
Voxxed Micro-services: Serverless JakartaEE - JAX-RS comes to FaaS
Voxxed Micro-services: Serverless JakartaEE - JAX-RS comes to FaaSVoxxed Micro-services: Serverless JakartaEE - JAX-RS comes to FaaS
Voxxed Micro-services: Serverless JakartaEE - JAX-RS comes to FaaS
 
Silicon Valley Code Camp 2019 - Reaching the Cloud Native World
Silicon Valley Code Camp 2019 - Reaching the Cloud Native WorldSilicon Valley Code Camp 2019 - Reaching the Cloud Native World
Silicon Valley Code Camp 2019 - Reaching the Cloud Native World
 
FaaS Meets Java EE: Developing Cloud Native Applications at Speed
FaaS Meets Java EE: Developing Cloud Native Applications at SpeedFaaS Meets Java EE: Developing Cloud Native Applications at Speed
FaaS Meets Java EE: Developing Cloud Native Applications at Speed
 
AltConf 2019: Server-Side Swift State of the Union
AltConf 2019:  Server-Side Swift State of the UnionAltConf 2019:  Server-Side Swift State of the Union
AltConf 2019: Server-Side Swift State of the Union
 
Server-side Swift with Swagger
Server-side Swift with SwaggerServer-side Swift with Swagger
Server-side Swift with Swagger
 
Node Summit 2018: Cloud Native Node.js
Node Summit 2018: Cloud Native Node.jsNode Summit 2018: Cloud Native Node.js
Node Summit 2018: Cloud Native Node.js
 
Index - BFFs vs GraphQL
Index - BFFs vs GraphQLIndex - BFFs vs GraphQL
Index - BFFs vs GraphQL
 
Swift Cloud Workshop - Swift Microservices
Swift Cloud Workshop - Swift MicroservicesSwift Cloud Workshop - Swift Microservices
Swift Cloud Workshop - Swift Microservices
 
Swift Cloud Workshop - Codable, the key to Fullstack Swift
Swift Cloud Workshop - Codable, the key to Fullstack SwiftSwift Cloud Workshop - Codable, the key to Fullstack Swift
Swift Cloud Workshop - Codable, the key to Fullstack Swift
 
Try!Swift India 2017: All you need is Swift
Try!Swift India 2017: All you need is SwiftTry!Swift India 2017: All you need is Swift
Try!Swift India 2017: All you need is Swift
 
Swift Summit 2017: Server Swift State of the Union
Swift Summit 2017: Server Swift State of the UnionSwift Summit 2017: Server Swift State of the Union
Swift Summit 2017: Server Swift State of the Union
 
IBM Cloud University: Build, Deploy and Scale Node.js Microservices
IBM Cloud University: Build, Deploy and Scale Node.js MicroservicesIBM Cloud University: Build, Deploy and Scale Node.js Microservices
IBM Cloud University: Build, Deploy and Scale Node.js Microservices
 
IBM Cloud University: Java, Node.js and Swift
IBM Cloud University: Java, Node.js and SwiftIBM Cloud University: Java, Node.js and Swift
IBM Cloud University: Java, Node.js and Swift
 
Node Interactive: Node.js Performance and Highly Scalable Micro-Services
Node Interactive: Node.js Performance and Highly Scalable Micro-ServicesNode Interactive: Node.js Performance and Highly Scalable Micro-Services
Node Interactive: Node.js Performance and Highly Scalable Micro-Services
 
FrenchKit 2017: Server(less) Swift
FrenchKit 2017: Server(less) SwiftFrenchKit 2017: Server(less) Swift
FrenchKit 2017: Server(less) Swift
 
AltConf 2017: Full Stack Swift in 30 Minutes
AltConf 2017: Full Stack Swift in 30 MinutesAltConf 2017: Full Stack Swift in 30 Minutes
AltConf 2017: Full Stack Swift in 30 Minutes
 
InterConnect: Server Side Swift for Java Developers
InterConnect:  Server Side Swift for Java DevelopersInterConnect:  Server Side Swift for Java Developers
InterConnect: Server Side Swift for Java Developers
 
InterConnect: Java, Node.js and Swift - Which, Why and When
InterConnect: Java, Node.js and Swift - Which, Why and WhenInterConnect: Java, Node.js and Swift - Which, Why and When
InterConnect: Java, Node.js and Swift - Which, Why and When
 
JavaOne 2015: From Java Code to Machine Code
JavaOne 2015: From Java Code to Machine CodeJavaOne 2015: From Java Code to Machine Code
JavaOne 2015: From Java Code to Machine Code
 

Último

W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrandmasabamasaba
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdfPearlKirahMaeRagusta1
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...masabamasaba
 
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...masabamasaba
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrainmasabamasaba
 
Generic or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisionsGeneric or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisionsBert Jan Schrijver
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...SelfMade bd
 
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburgmasabamasaba
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfonteinmasabamasaba
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024Mind IT Systems
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfproinshot.com
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension AidPhilip Schwarz
 
%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durbanmasabamasaba
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesVictorSzoltysek
 

Último (20)

W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
Generic or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisionsGeneric or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisions
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 

O'Reilly Software Architecture Conf: Cloud Economics

  • 1. Cloud Economics Chris Bailey, IBM @Chris__Bailey
  • 2. “Cloud economics is a branch of knowledge concerned with the principles, costs and benefits of cloud computing.” — searchcio.techtarget.com
  • 3.
  • 4.
  • 6. Traditional Computing § On premise, or hosted bare metal machines | @Chris__Bailey
  • 7. Traditional Computing § On premise, or hosted bare metal machines § Capital Expenditure (CapEX): - Upfront cost, followed by depreciation | @Chris__Bailey
  • 8. Traditional Computing § On premise, or hosted bare metal machines § Capital Expenditure (CapEX): - Upfront cost, followed by depreciation § Requirement for accurate capacity planning - Estimate hardware for given load - Project future load requirements | @Chris__Bailey
  • 9. Traditional Computing § On premise, or hosted bare metal machines § Capital Expenditure (CapEX): - Upfront cost, followed by depreciation § Requirement for accurate capacity planning - Estimate hardware for given load - Project future load requirements § IT is seen as a cost centre | @Chris__Bailey
  • 10. Capacity Planning § Find a representative benchmark? | @Chris__Bailey SPECjEnterprise 2010 (spec.org)
  • 11. Capacity Planning § Find a representative benchmark? - SPECjbb2015 - SPECjEnterprise2010 - SPECjms2007 - SPECjvm2008 | @Chris__Bailey SPECjbb2015 (spec.org)
  • 12. Capacity Planning § Find a representative benchmark? - SPECjbb2015 - SPECjEnterprise2010 - SPECjms2007 - SPECjvm2008 | @Chris__Bailey SPECjbb2015 (spec.org)
  • 13. Capacity Planning § Find a representative benchmark? - SPECjbb2015 - SPECjEnterprise2010 - SPECjms2007 - SPECjvm2008 | @Chris__Bailey SPECjEnterprise2010 (spec.org)
  • 14. Capacity Planning § Find a representative benchmark? - SPECjbb2015 - SPECjEnterprise2010 - SPECjms2007 - SPECjvm2008 | @Chris__Bailey
  • 15. Capacity Planning § Find a representative benchmark? - SPECjbb2015 - SPECjEnterprise2010 - SPECjms2007 - SPECjvm2008 | @Chris__Bailey
  • 16. § Find a representative benchmark? - SPECjEnterprise2010 § Analyse the results Capacity Planning Tested By System Name Result Java EE Server DB Server Nodes CPU Nodes CPU Oracle Corporation Oracle WebLogic Server Standard Edition Release 12.2.1 on SPARC S7-2 Jun 29, 2016 | HTML | Text 14,121.47 1 16 cores, 2 chips 1 16 cores, 2 chips Oracle Corporation Oracle WebLogic Server Standard Edition Release 12.2.1 on SPARC S7-2 Jun 29, 2016 | HTML | Text 14,400.78 1 16 cores, 2 chips 1 16 cores, 2 chip | @Chris__Bailey
  • 17. § Find a representative benchmark? - SPECjEnterprise2010 § Analyse the results Capacity Planning Tested By System Name Result Java EE Server DB Server Nodes CPU Nodes CPU Oracle Corporation Oracle WebLogic Server Standard Edition Release 12.2.1 on SPARC S7-2 Jun 29, 2016 | HTML | Text 14,121.47 1 16 cores, 2 chips 1 16 cores, 2 chips Oracle Corporation Oracle WebLogic Server Standard Edition Release 12.2.1 on SPARC S7-2 Jun 29, 2016 | HTML | Text 14,400.78 1 16 cores, 2 chips 1 16 cores, 2 chip | @Chris__Bailey
  • 18. § Find a representative benchmark? - SPECjEnterprise2010 § Analyse the results Capacity Planning Tested By System Name Result Java EE Server DB Server Nodes CPU Nodes CPU Oracle Corporation Oracle Weblogic Server Standard Edition Release 12.2.1 on Oracle Server X6-2 Mar 31, 2016 | HTML | Text NC 1 44 cores, 2 chips 1 44 cores, 2 chips | @Chris__Bailey
  • 19. § Find a representative benchmark? - SPECjEnterprise2010 § Analyse the results Capacity Planning Tested By System Name Result Java EE Server DB Server Nodes CPU Nodes CPU Oracle Corporation Oracle Weblogic Server Standard Edition Release 12.2.1 on Oracle Server X6-2 Mar 31, 2016 | HTML | Text NC 1 44 cores, 2 chips 1 44 cores, 2 chips | @Chris__Bailey
  • 20. § Find a representative benchmark? - SPECjEnterprise2010 § Analyse the results Capacity Planning Tested By System Name Result Java EE Server DB Server Nodes CPU Nodes CPU Oracle Corporation Oracle WebLogic Server Standard Edition Release 12.1.3 on Oracle Server X5-2 Apr 1, 2015 | HTML | Text 21,504.30 1 36 cores, 2 chips 1 36 cores, 2 chips | @Chris__Bailey
  • 21. § Find a representative benchmark? - SPECjEnterprise2010 § Analyse the results Capacity Planning Tested By System Name Result Java EE Server DB Server Nodes CPU Nodes CPU Oracle Corporation Oracle WebLogic Server Standard Edition Release 12.1.3 on Oracle Server X5-2 Apr 1, 2015 | HTML | Text 21,504.30 1 36 cores, 2 chips 1 36 cores, 2 chips | @Chris__Bailey
  • 22. § Find a representative benchmark? - SPECjEnterprise2010 § Analyse the results Capacity Planning Tested By System Name Result Java EE Server DB Server Nodes CPU Nodes CPU Oracle Corporation Oracle WebLogic Server Standard Edition Release 12.1.3 on Oracle Server X5-2 Apr 1, 2015 | HTML | Text 21,504.30 1 36 cores, 2 chips 1 36 cores, 2 chips | @Chris__Bailey
  • 23. § Find a representative benchmark? - SPECjEnterprise2010 § Analyse the results Capacity Planning Tested By System Name Result Java EE Server DB Server Nodes CPU Nodes CPU Oracle Corporation Oracle WebLogic Server Standard Edition Release 12.1.3 on Oracle Server X5-2 Apr 1, 2015 | HTML | Text 21,504.30 1 36 cores, 2 chips 1 36 cores, 2 chips | @Chris__Bailey
  • 24. § Find a representative benchmark? - SPECjEnterprise2010 § Analyse the results - Intel® Xeon® processor E5- 2600 v3 @3.6GHz Capacity Planning Tested By System Name Result Java EE Server DB Server Nodes CPU Nodes CPU Oracle Corporation Oracle WebLogic Server Standard Edition Release 12.1.3 on Oracle Server X5-2 Apr 1, 2015 | HTML | Text 21,504.30 1 36 cores, 2 chips 1 36 cores, 2 chips | @Chris__Bailey
  • 25. § Find a representative benchmark? - SPECjEnterprise2010 § Analyse the results § Calculate transactions per core Capacity Planning Tested By System Name Result Java EE Server DB Server Nodes CPU Nodes CPU Oracle Corporation Oracle WebLogic Server Standard Edition Release 12.1.3 on Oracle Server X5-2 Apr 1, 2015 | HTML | Text 21,504.30 1 36 cores, 2 chips 1 36 cores, 2 chips | @Chris__Bailey
  • 26. § Find a representative benchmark? - SPECjEnterprise2010 § Analyse the results § Calculate transactions per core - 21,504.30 / 36 = 597.3 EjOPS/core Capacity Planning Tested By System Name Result Java EE Server DB Server Nodes CPU Nodes CPU Oracle Corporation Oracle WebLogic Server Standard Edition Release 12.1.3 on Oracle Server X5-2 Apr 1, 2015 | HTML | Text 21,504.30 1 36 cores, 2 chips 1 36 cores, 2 chips | @Chris__Bailey
  • 31. Capacity Planning | @Chris__Bailey Time Capacity Predicted Load Purchasing
 Delay Capacity Requirement
  • 32. Capacity Planning | @Chris__Bailey Time Capacity Predicted Load Purchasing
 Delay Capacity Requirement
  • 33. Capacity Planning | @Chris__Bailey Time Capacity Predicted Load Purchasing
 Delay Predicted Load + 10% Capacity Requirement
  • 34. Capacity Planning | @Chris__Bailey Time Capacity Predicted Load Capacity Requirement Purchasing
 Delay Predicted Load + 10%
  • 35. Capacity Planning | @Chris__Bailey Time Capacity Predicted Load Capacity Requirement Purchasing
 Delay Predicted Load + 10%
  • 36. Capacity Planning | @Chris__Bailey Time Capacity Predicted Load Capacity Requirement Purchasing
 Delay
  • 37. Capacity Planning | @Chris__Bailey Time Capacity Predicted Load Capacity Requirement Purchasing
 Delay Excess Capacity Excess Capacity
  • 38. Capacity Planning § Size for peak demand - Allow for Black Friday / Cyber Monday - Or just changes in load throughout each day | @Chris__Bailey
  • 39. Capacity Planning § Size for peak demand - Allow for Black Friday / Cyber Monday - Or just changes in load throughout each day § Allow for High Availability (HA) and Disaster Recovery (DR) - Rule of three for HA - 50% extra capacity - Full fail-over for DR - 100% extra capacity | @Chris__Bailey
  • 40. Capacity Planning § Size for peak demand - Allow for Black Friday / Cyber Monday - Or just changes in load throughout each day § Allow for High Availability (HA) and Disaster Recovery (DR) - Rule of three for HA - 50% extra capacity - Full fail-over for DR - 100% extra capacity § Oh, and what about capacity for integration, stress and performance test? | @Chris__Bailey
  • 41. Most enterprises have hardware utilisation below 20%
  • 42. Most enterprises have hardware utilisation below 20% and below 10% for workloads with peaks
  • 43. Capacity Planning and Agility § Time to obtain capacity affects operational agility § Market opportunities lost because of lead time for new projects | @Chris__Bailey
  • 44. Capacity Planning and Agility § Time to obtain capacity affects operational agility § Market opportunities lost because of lead time for new projects § Case Study: A fashion retailer can show measureable increase in sales if a item similar to that seen in the media can be placed on their on-line store landing page within 1 hr of it appearing in public. § Each product placement is different so they need a fast, agile, approach that does not jeopardize their on-line stores availability and quality. | @Chris__Bailey
  • 46. What Cloud Promises “a virtual, dynamic environment which maximizes use, is infinitely scalable, always available and needs minimal upfront investment or commitment” § Take your code – host it on someone else's machine and pay only for the resource you use for the time you use it § AND be able to do that very quickly and repeatedly in parallel | @Chris__Bailey
  • 47. Cloud Values § Much shorter “purchasing delay” § Return integration, stress and performance test environments after use § Cloud guarantees remove need for DR | @Chris__Bailey
  • 48. Traditional Capacity Planning | @Chris__Bailey Time Capacity Predicted Load Capacity Requirement Purchasing
 Delay Excess Capacity Excess Capacity
  • 49. Cloud Capacity Planning | @Chris__Bailey Time Capacity Predicted Load Capacity Requirement Excess Capacity Excess Capacity
  • 50. Cloud Capacity Planning | @Chris__Bailey Time Capacity Predicted Load Capacity Requirement Excess Capacity
  • 51. Capacity Planning and Agility § Case Study: A fashion retailer can show measureable increase in sales if a item similar to that seen in the media can be placed on their on-line store landing page within 1 hr of it appearing in public. § Each product placement is different so they need a fast, agile, approach that does not jeopardize their on-line stores availability and quality. | @Chris__Bailey
  • 52. Capacity Planning and Agility § Case Study: A fashion retailer can show measureable increase in sales if a item similar to that seen in the media can be placed on their on-line store landing page within 1 hr of it appearing in public. § Each product placement is different so they need a fast, agile, approach that does not jeopardize their on-line stores availability and quality. Achievement Unlocked! | @Chris__Bailey
  • 53. Other advantages of Cloud § Globally distributed data centres and locality | @Chris__Bailey https://aws.amazon.com/about-aws/global-infrastructure/
  • 54. Other advantages of Cloud § Globally distributed data centres and locality | @Chris__Bailey https://aws.amazon.com/about-aws/global-infrastructure/
  • 56. OpEx vs CapEx… § Rent vs Buy | @Chris__Bailey
  • 57. OpEx vs CapEx… § Rent vs Buy § No upfront cost, but no end to cost | @Chris__Bailey
  • 58. OpEx vs CapEx… § Rent vs Buy § No upfront cost, but no end to cost § Drive for operational efficiency | @Chris__Bailey
  • 59. OpEx vs CapEx… § Rent vs Buy § No upfront cost, but no end to cost § Drive for operational efficiency § Focus on ROI for individual apps and app features | @Chris__Bailey
  • 60. How is Cloud cost calculated? | @Chris__Bailey Provider Type Memory CPUs Cost/month Amazon EC2 Linux t2.nano 512MB 1 vCPU $4.68 Linux t2.micro 1GB 1 vCPU $9.36 Linux t2.small 2GB 1 vCPU $18.72 Linux t2.medium 4GB 2 vCPUs $37.44 Digital Ocean Standard 512MB 1 Core Processor $5.00 Standard 1GB 1 Core Processor $10.00 Standard 2GB 2 Core Processors $20.00 Pivotal Cloud Foundry App Instance 512MB 4 vCPUs $10.80 App Instance 1GB 4 vCPUs $21.60 App Instance 2GB 4 vCPUs $43.20 Heroku Standard 1x 512MB 1 Share $25.00 Standard 2x 1GB 2 Shares $50.00 IBM Bluemix Instant Runtimes 512MB 4 vCPUs $24.15 Instant Runtimes 1GB 4 vCPUs $49.35 Containers 512MB 4 vCPUs $10.22 Containers 1GB 4 vCPUs $20.59
  • 62. Movement from CPU to Memory based costs is a fundamental shift for Application Architectures
  • 63. § Find a representative benchmark? - SPECjEnterprise2010 § Analyse the results - Intel® Xeon® processor E5- 2600 v3 @3.6GHz Capacity Planning Tested By System Name Result Java EE Server DB Server Nodes CPU Nodes CPU Oracle Corporation Oracle WebLogic Server Standard Edition Release 12.1.3 on Oracle Server X5-2 Apr 1, 2015 | HTML | Text 21,504.30 1 36 cores, 2 chips 1 36 cores, 2 chips | @Chris__Bailey
  • 64. Reading the fine print… Hardware Vendor: Oracle Corporation Model Name: Oracle Server X5-2 Processor: Intel Xeon processor E5-2699 v3 (Intel Turbo Boost Technology up to 3.6 GHz) MHz: 2300 # of CPUs: 36 cores, 2 chips, 18 cores/chip, 2 threads/core (Hyper-Threading) Memory (MB): 262144 Disks: 2x 600GB SAS-2 HDD and 2x 400GB SSD Network Interface: 4x 10Gbit onboard and 3x 10GBit Dual-port NICs JVM Options: -server -Xms18g -Xmx18g -Xmn16g -Xss256k -XX:MetaspaceSize=200M -XX:+AggressiveOpts -XX:+UseParallelOldGC -XX:ParallelGCThreads=9 -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:InitialCodeCacheSize=200m -XX:ReservedCodeCacheSize=200m -XX:+UseCompressedOops -XX:-UseBiasedLocking -XX:+AlwaysPreTouch -XX:InitialSurvivorRatio=24 -XX:SurvivorRatio=24 -XX:TargetSurvivorRatio=90 -XX:-UseAdaptiveSizePolicy -XX:+UseLargePages -Djava.net.preferIPv4Stack=true -Djaxws.transport.streaming=true -XX:-TieredCompilation -Dweblogic.ProductionModeEnabled=true -Dweblogic.management.discover=false -Dweblogic.diagnostics.debug.DebugLogger.DISABLED=true -Doracle.jdbc.defaultRowPrefetch=200 -Djavax.xml.parsers.DocumentBuilderFactory=weblogic.xml.jaxp.RegistryDocumentBuilderFactory -Dweblogic.threadpool.MinPoolSize=30 -Dsun.net.inetaddr.ttl=0 -Dnetworkaddress.cache.ttl=0 -Dcom.sun.xml.ws.spi.db.BindingContextFactory=com.sun.xml.ws.db.glassfish.JAXBRIContextFactory -Djavax.xml.bind.JAXBContext=com.sun.xml.bind.v2.ContextFactory -Dweblogic.MuxerClass=weblogic.socket.NIOSocketMuxer -Dweblogic.SocketReaders=2 Server instances were started using numactl binding 1 instance per 9 cores. | @Chris__Bailey
  • 65. Reading the fine print… Hardware Vendor: Oracle Corporation Model Name: Oracle Server X5-2 Processor: Intel Xeon processor E5-2699 v3 (Intel Turbo Boost Technology up to 3.6 GHz) MHz: 2300 # of CPUs: 36 cores, 2 chips, 18 cores/chip, 2 threads/core (Hyper-Threading) Memory (MB): 262144 Disks: 2x 600GB SAS-2 HDD and 2x 400GB SSD Network Interface: 4x 10Gbit onboard and 3x 10GBit Dual-port NICs JVM Options: -server -Xms18g -Xmx18g -Xmn16g -Xss256k -XX:MetaspaceSize=200M -XX:+AggressiveOpts -XX:+UseParallelOldGC -XX:ParallelGCThreads=9 -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:InitialCodeCacheSize=200m -XX:ReservedCodeCacheSize=200m -XX:+UseCompressedOops -XX:-UseBiasedLocking -XX:+AlwaysPreTouch -XX:InitialSurvivorRatio=24 -XX:SurvivorRatio=24 -XX:TargetSurvivorRatio=90 -XX:-UseAdaptiveSizePolicy -XX:+UseLargePages -Djava.net.preferIPv4Stack=true -Djaxws.transport.streaming=true -XX:-TieredCompilation -Dweblogic.ProductionModeEnabled=true -Dweblogic.management.discover=false -Dweblogic.diagnostics.debug.DebugLogger.DISABLED=true -Doracle.jdbc.defaultRowPrefetch=200 -Djavax.xml.parsers.DocumentBuilderFactory=weblogic.xml.jaxp.RegistryDocumentBuilderFactory -Dweblogic.threadpool.MinPoolSize=30 -Dsun.net.inetaddr.ttl=0 -Dnetworkaddress.cache.ttl=0 -Dcom.sun.xml.ws.spi.db.BindingContextFactory=com.sun.xml.ws.db.glassfish.JAXBRIContextFactory -Djavax.xml.bind.JAXBContext=com.sun.xml.bind.v2.ContextFactory -Dweblogic.MuxerClass=weblogic.socket.NIOSocketMuxer -Dweblogic.SocketReaders=2 Server instances were started using numactl binding 1 instance per 9 cores. | @Chris__Bailey
  • 66. Reading the fine print… Hardware Vendor: Oracle Corporation Model Name: Oracle Server X5-2 Processor: Intel Xeon processor E5-2699 v3 (Intel Turbo Boost Technology up to 3.6 GHz) MHz: 2300 # of CPUs: 36 cores, 2 chips, 18 cores/chip, 2 threads/core (Hyper-Threading) Memory (MB): 262144 Disks: 2x 600GB SAS-2 HDD and 2x 400GB SSD Network Interface: 4x 10Gbit onboard and 3x 10GBit Dual-port NICs 7.1GB / core JVM Options: -server -Xms18g -Xmx18g -Xmn16g -Xss256k -XX:MetaspaceSize=200M -XX:+AggressiveOpts -XX:+UseParallelOldGC -XX:ParallelGCThreads=9 -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:InitialCodeCacheSize=200m -XX:ReservedCodeCacheSize=200m -XX:+UseCompressedOops -XX:-UseBiasedLocking -XX:+AlwaysPreTouch -XX:InitialSurvivorRatio=24 -XX:SurvivorRatio=24 -XX:TargetSurvivorRatio=90 -XX:-UseAdaptiveSizePolicy -XX:+UseLargePages -Djava.net.preferIPv4Stack=true -Djaxws.transport.streaming=true -XX:-TieredCompilation -Dweblogic.ProductionModeEnabled=true -Dweblogic.management.discover=false -Dweblogic.diagnostics.debug.DebugLogger.DISABLED=true -Doracle.jdbc.defaultRowPrefetch=200 -Djavax.xml.parsers.DocumentBuilderFactory=weblogic.xml.jaxp.RegistryDocumentBuilderFactory -Dweblogic.threadpool.MinPoolSize=30 -Dsun.net.inetaddr.ttl=0 -Dnetworkaddress.cache.ttl=0 -Dcom.sun.xml.ws.spi.db.BindingContextFactory=com.sun.xml.ws.db.glassfish.JAXBRIContextFactory -Djavax.xml.bind.JAXBContext=com.sun.xml.bind.v2.ContextFactory -Dweblogic.MuxerClass=weblogic.socket.NIOSocketMuxer -Dweblogic.SocketReaders=2 Server instances were started using numactl binding 1 instance per 9 cores. | @Chris__Bailey
  • 67. § Project Management Triangle § Fast § Good § Cheap § Pick any two… Performance Optimisation Euler Diagram Cheap Fast Good | @Chris__Bailey
  • 68. § Performance Triangle § Throughput § Latency § Memory footprint § Enterprise software has traditionally chosen
 throughput and latency over memory § Data caching § Garbage Collection § Function Inlining Low Memory High Throughput Low Latency Performance Optimisation Euler Diagram | @Chris__Bailey
  • 69. Garbage Collection Tradeoff | @Chris__Bailey Memory Heap Size
  • 70. Garbage Collection Tradeoff | @Chris__Bailey Memory Live in-use data (Retained Set) Heap Size
  • 71. Garbage Collection Tradeoff | @Chris__Bailey Memory Live in-use data (Retained Set) Heap Size Temporary Data (Garbage) Temporary Data (Garbage)
  • 72. Garbage Collection Tradeoff | @Chris__Bailey Memory Live in-use data (Retained Set) Heap Size Temporary Data (Garbage) Temporary Data (Garbage)
  • 73. Garbage Collection Tradeoff | @Chris__Bailey Memory Live in-use data (Retained Set) Heap Size Temporary Data (Garbage) Temporary Data (Garbage)
  • 74. Garbage Collection Tradeoff | @Chris__Bailey Memory Live in-use data (Retained Set) Heap Size Temporary Data (Garbage) Temporary Data (Garbage) 40 to 70%
  • 75. Garbage Collection Tradeoff | @Chris__Bailey Memory Live in-use data (Retained Set) Heap Size Temporary Data (Garbage) Temporary Data (Garbage) 40 to 70% 30 to 60% additional memory for additional performance
  • 76. Optimising for the Cloud

  • 77. Optimising for the Cloud
 #1: Choose The Right Language
  • 78. Memory Usage by Language | @Chris__Bailey 0 17.5 35 52.5 70 C++ Mem usage (MB) C
  • 79. Memory Usage by Language | @Chris__Bailey 0 17.5 35 52.5 70 C++ Go Sw i: Rust Mem usage (MB) Modern NativeC
  • 80. Memory Usage by Language | @Chris__Bailey 0 17.5 35 52.5 70 C++ Go Sw i: Rust Ruby PHP Python JavaScript Erlang Dart Mem usage (MB) Modern Native ScriptingC
  • 81. Memory Usage by Language | @Chris__Bailey 0 17.5 35 52.5 70 C++ Go Sw i: Rust Ruby PHP Python JavaScript Erlang Dart Java Scala Clojure Mem usage (MB) Modern Native Scripting JVM C
  • 82. Throughput by Language | @Chris__Bailey C 0 25 50 75 100 C++ DuraOon
  • 83. Throughput by Language | @Chris__Bailey Modern NativeC 0 25 50 75 100 C++ Go Sw i: Rust DuraOon
  • 84. Throughput by Language | @Chris__Bailey Modern Native ScriptingC 0 25 50 75 100 C++ Go Sw i: Rust Ruby PHP Python JavaScript Erlang Dart DuraOon
  • 85. Throughput by Language | @Chris__Bailey Modern Native Scripting JVM C 0 25 50 75 100 C++ Go Sw i: Rust Ruby PHP Python JavaScript Erlang Dart Java Scala Clojure DuraOon
  • 86. Normalised Throughput/Memory Language | @Chris__Bailey C 0 20 40 60 80 C++ DuraOon
  • 87. Normalised Throughput/Memory Language | @Chris__Bailey Modern NativeC 0 20 40 60 80 C++ Go Sw i: Rust DuraOon
  • 88. Normalised Throughput/Memory Language | @Chris__Bailey Modern Native ScriptingC 0 20 40 60 80 C++ Go Sw i: Rust Ruby PHP Python JavaScript Erlang Dart DuraOon
  • 89. Normalised Throughput/Memory Language | @Chris__Bailey Modern Native Scripting JVM C 0 20 40 60 80 C++ Go Sw i: Rust Ruby PHP Python JavaScript Erlang Dart Java Scala Clojure DuraOon
  • 90. Selecting the Language § Ruby on Rails app, 100 instances at 500MB / instance - 50GB of memory required at $24.15 GB/month - = $14,490/year | @Chris__Bailey
  • 91. Selecting the Language § Ruby on Rails app, 100 instances at 500MB / instance - 50GB of memory required at $24.15 GB/month - = $14,490/year § Switching to Java provides a 7x saving: - = $2,070/year | @Chris__Bailey
  • 92. Selecting the Language § Ruby on Rails app, 100 instances at 500MB / instance - 50GB of memory required at $24.15 GB/month - = $14,490/year § Switching to Java provides a 7x saving: - = $2,070/year § Switching to Swift provides 42x saving: - = $345/year | @Chris__Bailey
  • 93. Selecting the Language | @Chris__Bailey C++ Go Swift Rust Ruby PHP Python JScript Erlang Dart Java Scala Clojure C++ 4.02 10.96 14.65 461.69 251.83 689.22 40.25 359.13 75.16 65.18 79.88 169.17 Go 0.25 2.73 3.64 114.79 62.61 171.37 10.01 89.29 18.69 16.21 19.86 42.06 Swift 0.09 0.37 1.34 42.11 22.97 62.86 3.67 32.75 6.86 5.95 7.29 15.43 Rust 0.07 0.27 0.75 31.52 17.19 47.06 2.75 24.52 5.13 4.45 5.45 11.55 Ruby 0.00 0.01 0.02 0.03 0.55 1.49 0.09 0.78 0.16 0.14 0.17 0.37 PHP 0.00 0.02 0.04 0.06 1.83 2.74 0.16 1.43 0.30 0.26 0.32 0.67 Python 0.00 0.01 0.02 0.02 0.67 0.37 0.06 0.52 0.11 0.09 0.12 0.25 JScript 0.02 0.10 0.27 0.36 11.47 6.26 17.13 8.92 1.87 1.62 1.98 4.20 Erlang 0.00 0.01 0.03 0.04 1.29 0.70 1.92 0.11 0.21 0.18 0.22 0.47 Dart 0.01 0.05 0.15 0.19 6.14 3.35 9.17 0.54 4.78 0.87 1.06 2.25 Java 0.02 0.06 0.17 0.22 7.08 3.86 10.57 0.62 5.51 1.15 1.23 2.60 Scala 0.01 0.05 0.14 0.18 5.78 3.15 8.63 0.50 4.50 0.94 0.82 2.12 Clojure 0.01 0.02 0.06 0.09 2.73 1.49 4.07 0.24 2.12 0.44 0.39 0.47 From To
  • 94. Selecting the Language | @Chris__Bailey C++ Go Swift Rust Ruby PHP Python JScript Erlang Dart Java Scala Clojure C++ 4.02 10.96 14.65 461.69 251.83 689.22 40.25 359.13 75.16 65.18 79.88 169.17 Go 0.25 2.73 3.64 114.79 62.61 171.37 10.01 89.29 18.69 16.21 19.86 42.06 Swift 0.09 0.37 1.34 42.11 22.97 62.86 3.67 32.75 6.86 5.95 7.29 15.43 Rust 0.07 0.27 0.75 31.52 17.19 47.06 2.75 24.52 5.13 4.45 5.45 11.55 Ruby 0.00 0.01 0.02 0.03 0.55 1.49 0.09 0.78 0.16 0.14 0.17 0.37 PHP 0.00 0.02 0.04 0.06 1.83 2.74 0.16 1.43 0.30 0.26 0.32 0.67 Python 0.00 0.01 0.02 0.02 0.67 0.37 0.06 0.52 0.11 0.09 0.12 0.25 JScript 0.02 0.10 0.27 0.36 11.47 6.26 17.13 8.92 1.87 1.62 1.98 4.20 Erlang 0.00 0.01 0.03 0.04 1.29 0.70 1.92 0.11 0.21 0.18 0.22 0.47 Dart 0.01 0.05 0.15 0.19 6.14 3.35 9.17 0.54 4.78 0.87 1.06 2.25 Java 0.02 0.06 0.17 0.22 7.08 3.86 10.57 0.62 5.51 1.15 1.23 2.60 Scala 0.01 0.05 0.14 0.18 5.78 3.15 8.63 0.50 4.50 0.94 0.82 2.12 Clojure 0.01 0.02 0.06 0.09 2.73 1.49 4.07 0.24 2.12 0.44 0.39 0.47 From To C
  • 95. Selecting the Language | @Chris__Bailey C++ Go Swift Rust Ruby PHP Python JScript Erlang Dart Java Scala Clojure C++ 4.02 10.96 14.65 461.69 251.83 689.22 40.25 359.13 75.16 65.18 79.88 169.17 Go 0.25 2.73 3.64 114.79 62.61 171.37 10.01 89.29 18.69 16.21 19.86 42.06 Swift 0.09 0.37 1.34 42.11 22.97 62.86 3.67 32.75 6.86 5.95 7.29 15.43 Rust 0.07 0.27 0.75 31.52 17.19 47.06 2.75 24.52 5.13 4.45 5.45 11.55 Ruby 0.00 0.01 0.02 0.03 0.55 1.49 0.09 0.78 0.16 0.14 0.17 0.37 PHP 0.00 0.02 0.04 0.06 1.83 2.74 0.16 1.43 0.30 0.26 0.32 0.67 Python 0.00 0.01 0.02 0.02 0.67 0.37 0.06 0.52 0.11 0.09 0.12 0.25 JScript 0.02 0.10 0.27 0.36 11.47 6.26 17.13 8.92 1.87 1.62 1.98 4.20 Erlang 0.00 0.01 0.03 0.04 1.29 0.70 1.92 0.11 0.21 0.18 0.22 0.47 Dart 0.01 0.05 0.15 0.19 6.14 3.35 9.17 0.54 4.78 0.87 1.06 2.25 Java 0.02 0.06 0.17 0.22 7.08 3.86 10.57 0.62 5.51 1.15 1.23 2.60 Scala 0.01 0.05 0.14 0.18 5.78 3.15 8.63 0.50 4.50 0.94 0.82 2.12 Clojure 0.01 0.02 0.06 0.09 2.73 1.49 4.07 0.24 2.12 0.44 0.39 0.47 From To C Modern
 Native
  • 96. Selecting the Language | @Chris__Bailey C++ Go Swift Rust Ruby PHP Python JScript Erlang Dart Java Scala Clojure C++ 4.02 10.96 14.65 461.69 251.83 689.22 40.25 359.13 75.16 65.18 79.88 169.17 Go 0.25 2.73 3.64 114.79 62.61 171.37 10.01 89.29 18.69 16.21 19.86 42.06 Swift 0.09 0.37 1.34 42.11 22.97 62.86 3.67 32.75 6.86 5.95 7.29 15.43 Rust 0.07 0.27 0.75 31.52 17.19 47.06 2.75 24.52 5.13 4.45 5.45 11.55 Ruby 0.00 0.01 0.02 0.03 0.55 1.49 0.09 0.78 0.16 0.14 0.17 0.37 PHP 0.00 0.02 0.04 0.06 1.83 2.74 0.16 1.43 0.30 0.26 0.32 0.67 Python 0.00 0.01 0.02 0.02 0.67 0.37 0.06 0.52 0.11 0.09 0.12 0.25 JScript 0.02 0.10 0.27 0.36 11.47 6.26 17.13 8.92 1.87 1.62 1.98 4.20 Erlang 0.00 0.01 0.03 0.04 1.29 0.70 1.92 0.11 0.21 0.18 0.22 0.47 Dart 0.01 0.05 0.15 0.19 6.14 3.35 9.17 0.54 4.78 0.87 1.06 2.25 Java 0.02 0.06 0.17 0.22 7.08 3.86 10.57 0.62 5.51 1.15 1.23 2.60 Scala 0.01 0.05 0.14 0.18 5.78 3.15 8.63 0.50 4.50 0.94 0.82 2.12 Clojure 0.01 0.02 0.06 0.09 2.73 1.49 4.07 0.24 2.12 0.44 0.39 0.47 From To C Modern
 Native Scripting
  • 97. Selecting the Language | @Chris__Bailey C++ Go Swift Rust Ruby PHP Python JScript Erlang Dart Java Scala Clojure C++ 4.02 10.96 14.65 461.69 251.83 689.22 40.25 359.13 75.16 65.18 79.88 169.17 Go 0.25 2.73 3.64 114.79 62.61 171.37 10.01 89.29 18.69 16.21 19.86 42.06 Swift 0.09 0.37 1.34 42.11 22.97 62.86 3.67 32.75 6.86 5.95 7.29 15.43 Rust 0.07 0.27 0.75 31.52 17.19 47.06 2.75 24.52 5.13 4.45 5.45 11.55 Ruby 0.00 0.01 0.02 0.03 0.55 1.49 0.09 0.78 0.16 0.14 0.17 0.37 PHP 0.00 0.02 0.04 0.06 1.83 2.74 0.16 1.43 0.30 0.26 0.32 0.67 Python 0.00 0.01 0.02 0.02 0.67 0.37 0.06 0.52 0.11 0.09 0.12 0.25 JScript 0.02 0.10 0.27 0.36 11.47 6.26 17.13 8.92 1.87 1.62 1.98 4.20 Erlang 0.00 0.01 0.03 0.04 1.29 0.70 1.92 0.11 0.21 0.18 0.22 0.47 Dart 0.01 0.05 0.15 0.19 6.14 3.35 9.17 0.54 4.78 0.87 1.06 2.25 Java 0.02 0.06 0.17 0.22 7.08 3.86 10.57 0.62 5.51 1.15 1.23 2.60 Scala 0.01 0.05 0.14 0.18 5.78 3.15 8.63 0.50 4.50 0.94 0.82 2.12 Clojure 0.01 0.02 0.06 0.09 2.73 1.49 4.07 0.24 2.12 0.44 0.39 0.47 From To C Modern
 Native Scripting
  • 98. Selecting the Language | @Chris__Bailey C++ Go Swift Rust Ruby PHP Python JScript Erlang Dart Java Scala Clojure C++ 4.02 10.96 14.65 461.69 251.83 689.22 40.25 359.13 75.16 65.18 79.88 169.17 Go 0.25 2.73 3.64 114.79 62.61 171.37 10.01 89.29 18.69 16.21 19.86 42.06 Swift 0.09 0.37 1.34 42.11 22.97 62.86 3.67 32.75 6.86 5.95 7.29 15.43 Rust 0.07 0.27 0.75 31.52 17.19 47.06 2.75 24.52 5.13 4.45 5.45 11.55 Ruby 0.00 0.01 0.02 0.03 0.55 1.49 0.09 0.78 0.16 0.14 0.17 0.37 PHP 0.00 0.02 0.04 0.06 1.83 2.74 0.16 1.43 0.30 0.26 0.32 0.67 Python 0.00 0.01 0.02 0.02 0.67 0.37 0.06 0.52 0.11 0.09 0.12 0.25 JScript 0.02 0.10 0.27 0.36 11.47 6.26 17.13 8.92 1.87 1.62 1.98 4.20 Erlang 0.00 0.01 0.03 0.04 1.29 0.70 1.92 0.11 0.21 0.18 0.22 0.47 Dart 0.01 0.05 0.15 0.19 6.14 3.35 9.17 0.54 4.78 0.87 1.06 2.25 Java 0.02 0.06 0.17 0.22 7.08 3.86 10.57 0.62 5.51 1.15 1.23 2.60 Scala 0.01 0.05 0.14 0.18 5.78 3.15 8.63 0.50 4.50 0.94 0.82 2.12 Clojure 0.01 0.02 0.06 0.09 2.73 1.49 4.07 0.24 2.12 0.44 0.39 0.47 From To C Modern
 Native Scripting
  • 99. Selecting the Language | @Chris__Bailey C++ Go Swift Rust Ruby PHP Python JScript Erlang Dart Java Scala Clojure C++ 4.02 10.96 14.65 461.69 251.83 689.22 40.25 359.13 75.16 65.18 79.88 169.17 Go 0.25 2.73 3.64 114.79 62.61 171.37 10.01 89.29 18.69 16.21 19.86 42.06 Swift 0.09 0.37 1.34 42.11 22.97 62.86 3.67 32.75 6.86 5.95 7.29 15.43 Rust 0.07 0.27 0.75 31.52 17.19 47.06 2.75 24.52 5.13 4.45 5.45 11.55 Ruby 0.00 0.01 0.02 0.03 0.55 1.49 0.09 0.78 0.16 0.14 0.17 0.37 PHP 0.00 0.02 0.04 0.06 1.83 2.74 0.16 1.43 0.30 0.26 0.32 0.67 Python 0.00 0.01 0.02 0.02 0.67 0.37 0.06 0.52 0.11 0.09 0.12 0.25 JScript 0.02 0.10 0.27 0.36 11.47 6.26 17.13 8.92 1.87 1.62 1.98 4.20 Erlang 0.00 0.01 0.03 0.04 1.29 0.70 1.92 0.11 0.21 0.18 0.22 0.47 Dart 0.01 0.05 0.15 0.19 6.14 3.35 9.17 0.54 4.78 0.87 1.06 2.25 Java 0.02 0.06 0.17 0.22 7.08 3.86 10.57 0.62 5.51 1.15 1.23 2.60 Scala 0.01 0.05 0.14 0.18 5.78 3.15 8.63 0.50 4.50 0.94 0.82 2.12 Clojure 0.01 0.02 0.06 0.09 2.73 1.49 4.07 0.24 2.12 0.44 0.39 0.47 From To C Modern
 Native Scripting JVM
  • 100. Selecting the Language | @Chris__Bailey C++ Go Swift Rust Ruby PHP Python JScript Erlang Dart Java Scala Clojure C++ 4.02 10.96 14.65 461.69 251.83 689.22 40.25 359.13 75.16 65.18 79.88 169.17 Go 0.25 2.73 3.64 114.79 62.61 171.37 10.01 89.29 18.69 16.21 19.86 42.06 Swift 0.09 0.37 1.34 42.11 22.97 62.86 3.67 32.75 6.86 5.95 7.29 15.43 Rust 0.07 0.27 0.75 31.52 17.19 47.06 2.75 24.52 5.13 4.45 5.45 11.55 Ruby 0.00 0.01 0.02 0.03 0.55 1.49 0.09 0.78 0.16 0.14 0.17 0.37 PHP 0.00 0.02 0.04 0.06 1.83 2.74 0.16 1.43 0.30 0.26 0.32 0.67 Python 0.00 0.01 0.02 0.02 0.67 0.37 0.06 0.52 0.11 0.09 0.12 0.25 JScript 0.02 0.10 0.27 0.36 11.47 6.26 17.13 8.92 1.87 1.62 1.98 4.20 Erlang 0.00 0.01 0.03 0.04 1.29 0.70 1.92 0.11 0.21 0.18 0.22 0.47 Dart 0.01 0.05 0.15 0.19 6.14 3.35 9.17 0.54 4.78 0.87 1.06 2.25 Java 0.02 0.06 0.17 0.22 7.08 3.86 10.57 0.62 5.51 1.15 1.23 2.60 Scala 0.01 0.05 0.14 0.18 5.78 3.15 8.63 0.50 4.50 0.94 0.82 2.12 Clojure 0.01 0.02 0.06 0.09 2.73 1.49 4.07 0.24 2.12 0.44 0.39 0.47 From To C Modern
 Native Scripting JVM
  • 101. Optimising for the Cloud

  • 102. Optimising for the Cloud
 #2: Use Intelligent Scaling
  • 103. Intelligent Scaling for Capacity | @Chris__Bailey Time Capacity Predicted Load Capacity Requirement Excess Capacity
  • 104. Intelligent Scaling for Capacity | @Chris__Bailey Time Capacity Predicted Load Capacity Requirement Excess Capacity
  • 105. Intelligent Scaling for Capacity | @Chris__Bailey Time Capacity Actual Load Capacity Requirement Excess Capacity
  • 106. Intelligent Scaling for Capacity | @Chris__Bailey Time Capacity Actual Load Capacity Requirement Excess Capacity
  • 107. Intelligent Scaling for Capacity | @Chris__Bailey Time Capacity Actual Load Capacity Requirement Excess Capacity
  • 108. Dynamic Scaling to Load | @Chris__Bailey 00:00 Capacity Actual Load Excess Capacity 12:00 18:0006:0000:00 Capacity
  • 109. Dynamic Scaling to Load | @Chris__Bailey 00:00 Capacity Actual Load Capacity Excess Capacity 12:00 18:0006:0000:00
  • 110. Dynamic Scaling to Load § Daily load cycles are common for user facing applications - Particularly if your using localised availability zones | @Chris__Bailey “Most enterprises have hardware utilisation below 20% and below 10% for workloads with peaks”
  • 111. Dynamic Scaling to Load § Daily load cycles are common for user facing applications - Particularly if your using localised availability zones § Intelligent Scaling can provide a 2x saving: | @Chris__Bailey “Most enterprises have hardware utilisation below 20% and below 10% for workloads with peaks”
  • 112. Dynamic Scaling to Load § Daily load cycles are common for user facing applications - Particularly if your using localised availability zones § Intelligent Scaling can provide a 2x saving: - Ruby on Rails app: $14,490/year - Move to Java: $ 2,070/year | @Chris__Bailey “Most enterprises have hardware utilisation below 20% and below 10% for workloads with peaks”
  • 113. Dynamic Scaling to Load § Daily load cycles are common for user facing applications - Particularly if your using localised availability zones § Intelligent Scaling can provide a 2x saving: - Ruby on Rails app: $14,490/year - Move to Java: $ 2,070/year - Add scaling: $ 1,035/year | @Chris__Bailey “Most enterprises have hardware utilisation below 20% and below 10% for workloads with peaks”
  • 114. Optimising for the Cloud

  • 115. Optimising for the Cloud
 #3: Identify and Fix Memory Leaks
  • 116. Look for and Fix memory leaks § A small leak means a very large
 amount of memory over time | @Chris__Bailey American Society of Civil Engineers
  • 117. Look for and Fix memory leaks § A small leak means a very large
 amount of memory over time § Memory leaks act a little like interest on a debt | @Chris__Bailey Live in-use data (Principle)
  • 118. Look for and Fix memory leaks § A small leak means a very large
 amount of memory over time § Memory leaks act a little like interest on a debt | @Chris__Bailey Live in-use data (Principle) Memory Leak (Interest)
  • 119. Look for and Fix memory leaks § A small leak means a very large
 amount of memory over time § Memory leaks act a little like interest on a debt
 § Made worse if you have to size the container ahead of time to allow for the leak | @Chris__Bailey Live in-use data (Principle) Memory Leak (Interest)
  • 120. Optimising for the Cloud

  • 121. Optimising for the Cloud
 #4: Memory Analysis is the New Performance Tuning
  • 122. Memory Analysis § Most applications are memory in-efficient - Duplication of data - Oversized collections - Empty collections § Initial analysis and optimisation usual has a large return on investment | @Chris__Bailey
  • 123. Memory Analysis § Java case study: PlantsByWebSphere sample in WebSphere AppServer 7 - 5 user test load, 206MB of “live data”: | @Chris__Bailey
  • 124. Memory Analysis § Java case study: PlantsByWebSphere sample in WebSphere AppServer 7 - 5 user test load, 206MB of “live data”: | @Chris__Bailey Collection Count Collection Size (MB) Hashtable 262,234 26.5 WeakHashMap 19,562 12.6 HashMap 10,600 2.3 ArrayList 9,530 0.3 HashSet 1,551 1.0 Vector 1,271 0.04 LinkedList 1,148 0.1 TreeMap 299 0.03 TOTAL 306,195 42.9
  • 125. Memory Analysis § Java case study: PlantsByWebSphere sample in WebSphere AppServer 7 - 5 user test load, 206MB of “live data”: § 42.9MB (16% of memory) are collection objects - Just the collections themselves - excluding any data they store | @Chris__Bailey Collection Count Collection Size (MB) Hashtable 262,234 26.5 WeakHashMap 19,562 12.6 HashMap 10,600 2.3 ArrayList 9,530 0.3 HashSet 1,551 1.0 Vector 1,271 0.04 LinkedList 1,148 0.1 TreeMap 299 0.03 TOTAL 306,195 42.9
  • 126. Memory Analysis § Analysis of just the Hashtable instances showed: | @Chris__Bailey
  • 127. Memory Analysis § Analysis of just the Hashtable instances showed: § 127,016 of the Hashtables were completely empty | @Chris__Bailey
  • 128. Memory Analysis § Looking at empty collections across all collection types: § 52.6% of collections are empty (22.6MB) § Could save 11% of heap utilisation by removing empty collections | @Chris__Bailey Collection Count Empty % Empty Hashtable 262,234 127,016 48.8 WeakHashMap 19,562 19,456 99.5 HashMap 10,600 7,599 71.7 ArrayList 9,530 4,588 48.1 HashSet 1,551 866 55.8 Vector 1,271 622 48.9 TOTAL 304,748 160,156 52.6
  • 129. Memory Analysis § Looking at empty collections across all collection types: § 52.6% of collections are empty (22.6MB) | @Chris__Bailey Collection Count Empty % Empty Hashtable 262,234 127,016 48.8 WeakHashMap 19,562 19,456 99.5 HashMap 10,600 7,599 71.7 ArrayList 9,530 4,588 48.1 HashSet 1,551 866 55.8 Vector 1,271 622 48.9 TOTAL 304,748 160,156 52.6
  • 130. Optimising for the Cloud

  • 131. Optimising for the Cloud
 #5: Design for Memory Usage
  • 132. Design for Memory § Practice lazy allocation of collections | @Chris__Bailey
  • 133. Design for Memory § Practice lazy allocation of collections § Don’t use default collection sizes | @Chris__Bailey
  • 134. Design for Memory § Practice lazy allocation of collections § Don’t use default collection sizes § Reallocate collections to shrink them if needed | @Chris__Bailey
  • 135. Design for Memory § Practice lazy allocation of collections § Don’t use default collection sizes § Reallocate collections to shrink them if needed § Use cache miss based strategies for cache sizes | @Chris__Bailey