SlideShare a Scribd company logo
1 of 158
Download to read offline
1
Keeping Swift Apps Small
Why and how
Bruno Rocha - iOS Engineer @ Spotify
App Size
2
App Size
2
•Why do we care?
•How do we track it?
•How do we improve it?
App Size
2
Should I care about my
app’s size?
3
4
Programming in the 90s
~300 KB
•Storage is extremely expensive
•Slow / weak hardware
•Little to no access to decent internet (if at all)
Focus: High optimization
5
349 MB
Programming today
Focus: Great experiences
•Storage is cheap (Base flagship iPhones have 128GB!)
•Fast / strong hardware
•High-speed internet is widely available
6
So why bother about app
size in 2023?
So why bother about app size in
2023?
7
So why bother about app size in
2023?
7
Developed World
🇩🇪🇺🇸🇸🇪🇫🇷🇬🇧, etc.
So why bother about app size in
2023?
7
Developed World
🇩🇪🇺🇸🇸🇪🇫🇷🇬🇧, etc.
Emerging Markets
🇧🇷🇮🇳🇨🇳🇲🇽🇹🇷, etc.
8
Devices and data usage in emerging markets
🇧🇷🇮🇳🇨🇳🇲🇽🇹🇷, etc.
8
Devices and data usage in emerging markets
🇧🇷🇮🇳🇨🇳🇲🇽🇹🇷, etc.
•Devices are usually older gen ones (16GB)
8
Devices and data usage in emerging markets
🇧🇷🇮🇳🇨🇳🇲🇽🇹🇷, etc.
•Devices are usually older gen ones (16GB)
•Data can be prohibitively expensive and constrained
8
Devices and data usage in emerging markets
🇧🇷🇮🇳🇨🇳🇲🇽🇹🇷, etc.
•Devices are usually older gen ones (16GB)
•Data can be prohibitively expensive and constrained
•Little to no access to decent internet (if at all)
9
9
hmmmmmmm
10
in 2017:
10
70% of people consider the size of
an app before downloading it
in 2017:
(Emerging markets)
10
70% of people consider the size of
an app before downloading it
in 2017:
(85% of the world’s population)
10
70% of people consider the size of
an app before downloading it
in 2017:
For every 6MB increase, install conversion drops by 1%
(Android)
(85% of the world’s population)
…which means
11
Might be even worse for iOS!
11
Might be even worse for iOS!
•Apps larger than 200mb have extra friction
Should I care about my
app’s size?
12
Should I care about my
app’s size?
12
85% of the population says yes!
App Size @ Spotify
13
14
App Size @ Spotify
14
App Size @ Spotify
Team Attribution
CI Checks
Tracking Alerting
Charts
Policies
Linters Team Pages
… …
… …
15
App Size CI Check
15
App Size CI Check
Push PR
15
App Size CI Check
Push PR CI compiles the app
15
App Size CI Check
Push PR CI compiles the app CI checks the binary
15
App Size CI Check
Push PR CI compiles the app CI checks the binary
15
App Size CI Check
Push PR CI compiles the app CI checks the binary
16
App Size CI Check
Push PR CI compiles the app CI checks the binary
16
App Size CI Check
Push PR CI compiles the app CI checks the binary
Difference is too big = PR gets blocked
Important sidenote!
17
Important sidenote!
17
18
Install Size != Download Size
18
Install Size != Download Size
Install Size
18
Install Size != Download Size
Install Size
•Actual downloaded package may be smaller
18
Install Size != Download Size
Install Size
•Actual downloaded package may be smaller
•Both can be predicted by generating an App
Thinning Size Report through Xcode
18
Install Size != Download Size
Install Size
•Actual downloaded package may be smaller
•Both can be predicted by generating an App
Thinning Size Report through Xcode
•Companies usually focus on Install Size
specifically
19
CI Checks
Push PR CI compiles the app CI checks the binary
19
CI Checks
Push PR CI compiles the app CI checks the binary
Install size!
19
CI Checks
Push PR CI compiles the app CI checks the binary
What if you can’t optimize it?
20
App Size Policy
20
App Size Policy
20
App Size Policy
Do the benefits outweighs the impact on app size?
20
App Size Policy
Do the benefits outweighs the impact on app size?
(This is checked recurrently!)
21
App Size @ Spotify
Policies
Alerting
Team Attribution
CI Checks
Tracking
Charts
Linters Team Pages
… …
… …
Team Attribution
CI Checks
Tracking Alerting
Charts
Linters Team Pages
… …
… …
21
App Size @ Spotify
Policies
Alerting
Team Attribution
CI Checks
Tracking
Charts
Linters Team Pages
… …
… …
21
App Size @ Spotify
Policies
Alerting
Team Attribution
CI Checks
Tracking
Charts
Linters Team Pages
… …
… …
CI Checks
Optimizing iOS apps for
size
22
23
Delete everything
Size optimization tip 1:
23
Delete everything
Size optimization tip 1:
no
24
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
Optimizing apps for size
24
Remove overhead from the binary
Optimizing apps for size
25
Optimizing apps for size
25
Optimizing apps for size
Overhead
Overhead
Overhead
Overhead
Overhead
Overhead
Overhead
Overhead
Overhead
Overhead
Overhead
Overhead
Overhead
Overhead
Overhead
26
App Package
Swift
iOS
Hardware
Compiler
The iPhone Stack
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
Optimizing apps for size
26
App Package
Swift
iOS
Hardware
Compiler
The iPhone Stack
Reality: Complex problem, complex solutions
Optimizing apps for size
27
App Package
Swift
iOS
Hardware
Compiler
The iPhone Stack
Group 1
Group 2
Group 3
Optimizing apps for size
27
App Package
Swift
iOS
Hardware
Compiler
The iPhone Stack
Group 1
Group 2
Group 3
Objective: Overview
•What does it mean?
•Examples & Tips
•What else?
Optimizing apps for size
Group 1
Group 2
Group 3
28
App Package
Swift
iOS
Hardware
Compiler
The iPhone Stack
Optimizing apps for size
Group 1
Group 2
Group 3
28
App Package
Swift
iOS
Hardware
Compiler
The iPhone Stack
Swift Overhead
Optimizing apps for size
Group 1
Group 2
Group 3
28
App Package
Swift
iOS
Hardware
Compiler
The iPhone Stack
Swift Overhead
Resources Overhead
Optimizing apps for size
Group 1
Group 2
Group 3
28
App Package
Swift
iOS
Hardware
Compiler
The iPhone Stack
Swift Overhead
Resources Overhead
Project/OS
Overhead
Optimizing apps for size
29
Resources Overhead
29
•R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
Resources Overhead
29
•R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
•U
U
U
U
U
U
U
U
U
U
U
U
U
U
U
U
U
U
U
U
U
U
U
U
•N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N
Resources Overhead
29
Resources Overhead
29
Resources Overhead
Problem: Usingthewrong file formats
30
Usingthewrong file formats
Resources Overhead
30
Usingthewrong file formats
Resources Overhead
•Images: SVG for small icons, HEIC for everything else
30
Usingthewrong file formats
Resources Overhead
•Images: SVG for small icons, HEIC for everything else
•Text content, like JSONs: Sanitize them in order to remove
things you don’t need
30
Usingthewrong file formats
Resources Overhead
•Images: SVG for small icons, HEIC for everything else
•Text content, like JSONs: Sanitize them in order to remove
things you don’t need
•Lottie animation JSONs have many fields that can be safely
stripped away
30
Usingthewrong file formats
Resources Overhead
•Images: SVG for small icons, HEIC for everything else
•Audio: CAF (format) + AAC (codec) for short effects (Lossy)
•Text content, like JSONs: Sanitize them in order to remove
things you don’t need
•Lottie animation JSONs have many fields that can be safely
stripped away
30
Usingthewrong file formats
Resources Overhead
•Images: SVG for small icons, HEIC for everything else
•Audio: CAF (format) + AAC (codec) for short effects (Lossy)
•For regular audio: try MP3 codecs with lower bit-rates
•Text content, like JSONs: Sanitize them in order to remove
things you don’t need
•Lottie animation JSONs have many fields that can be safely
stripped away
30
Usingthewrong file formats
Resources Overhead
•Images: SVG for small icons, HEIC for everything else
•Audio: CAF (format) + AAC (codec) for short effects (Lossy)
•⚠ Warning: Audio is complicated!
•For regular audio: try MP3 codecs with lower bit-rates
•Text content, like JSONs: Sanitize them in order to remove
things you don’t need
•Lottie animation JSONs have many fields that can be safely
stripped away
31
Resources Overhead
31
Resources Overhead
Problem: Placing resources inthe
wrong place
32
Placing resources inthewrong place
Resources Overhead
32
Placing resources inthewrong place
Resources Overhead
•Always use Asset Catalogs
32
Placing resources inthewrong place
Resources Overhead
•Always use Asset Catalogs
•Reduces code signature overhead
32
Placing resources inthewrong place
Resources Overhead
•Always use Asset Catalogs
•Reduces code signature overhead
•Makes your app compress better
32
Placing resources inthewrong place
Resources Overhead
•Always use Asset Catalogs
•Use lossy compression for short-lived images
•Reduces code signature overhead
•Makes your app compress better
33
•Looking for more?
Resources Overhead
33
•Looking for more?
Resources Overhead
33
•Looking for more?
•WWDC sessions about resources
Resources Overhead
34
The iPhone Stack
App Package
Swift
iOS
Hardware
Compiler
Swift Overhead
Project/OS
Overhead
Resources Overhead
Optimizing apps for size
35
The iPhone Stack
Swift Overhead
Resources Overhead
App Package
Swift
iOS
Hardware
Compiler
Project/OS
Overhead
Optimizing apps for size
36
Swift Overhead
36
•Certain Swift patterns can be very expensive for app size
Swift Overhead
36
•Certain Swift patterns can be very expensive for app size
Swift Overhead
•Optimize for Size (-Osize)
•Whole Module Optimization
•Important: Make sure these flags are enabled in Xcode!
36
•Certain Swift patterns can be very expensive for app size
Swift Overhead
•Optimize for Size (-Osize)
•Whole Module Optimization
•Important: Make sure these flags are enabled in Xcode!
•⚠ Be aware that this can affect performance
37
Swift Overhead
37
Swift Overhead
Problem: Improperusage ofstructs
38
Swift Overhead Improperusage ofstructs
•Struct composition is expensive
38
Swift Overhead Improperusage ofstructs
•Struct composition is expensive
38
Swift Overhead Improperusage ofstructs
•Struct composition is expensive
38
Swift Overhead Improperusage ofstructs
•Struct composition is expensive
This can be really bad!
Potential impact: Dozens of megabytes!
39
Swift Overhead Improperusage ofstructs
•Other potentially expensive patterns:
39
Swift Overhead Improperusage ofstructs
•Other potentially expensive patterns:
Reference types in structs Mutability in structs
40
Swift Overhead Improperusage ofstructs
40
Swift Overhead Improperusage ofstructs
This is a compiler issue. You should probably ignore this.
40
Swift Overhead Improperusage ofstructs
This is a compiler issue. You should probably ignore this.
Optimization Tip (1):
Don’t forget about classes!
Still…
40
Swift Overhead Improperusage ofstructs
This is a compiler issue. You should probably ignore this.
Optimization Tip (1):
Don’t forget about classes!
Optimization Tip (2):
Using SwiftUI? Be extra careful.
Still…
41
Swift Overhead
41
Problem: Unused code
Swift Overhead
42
Swift Overhead Unused code
42
Swift Overhead Unused code
43
Swift Overhead Unused code
43
Swift Overhead Unused code
43
Swift Overhead Unused code
•Unnecessary Dynamic Dispatching
44
Swift Overhead Unused code
•Unnecessary Dynamic Dispatching
44
Swift Overhead Unused code
•Unnecessary Dynamic Dispatching
Equatable Hashable Codable
(Protocols with compiler-generated conformances)
45
Swift Overhead Unused code
•Unnecessary Dynamic Dispatching
45
Swift Overhead Unused code
•Unnecessary Dynamic Dispatching
46
Swift Overhead Unused code
•Unnecessary Dynamic Dispatching
46
Swift Overhead Unused code
•Unnecessary Dynamic Dispatching
•Potential impact: Several megabytes
46
Swift Overhead Unused code
•Unnecessary Dynamic Dispatching
Optimization Tip (1):
Only add protocols if you truly need them
•Potential impact: Several megabytes
46
Swift Overhead Unused code
•Unnecessary Dynamic Dispatching
Optimization Tip (1):
Only add protocols if you truly need them
•Potential impact: Several megabytes
46
Swift Overhead Unused code
•Unnecessary Dynamic Dispatching
•Potential impact: Several megabytes
Optimization Tip (2):
Be familiar with Dynamic Dispatching in Swift
47
Swift Overhead
•Looking for more?
47
•Official Swift Forums
Swift Overhead
•Looking for more?
47
•Official Swift Forums
Swift Overhead
•Looking for more?
•WWDC sessions about Swift
48
The iPhone Stack
Swift Overhead
Resources Overhead
App Package
Swift
iOS
Hardware
Compiler
Project/OS
Overhead
Optimizing apps for size
49
The iPhone Stack
Swift Overhead
Resources Overhead
App Package
Swift
iOS
Hardware
Compiler
Project/OS
Overhead
Optimizing apps for size
50
Project/OS Overhead
50
•⚠ Requires dedicated infrastructure teams
Project/OS Overhead
50
•⚠ Requires dedicated infrastructure teams
•⚠ Often requires deep knowledge of Swift and iOS
Project/OS Overhead
50
•⚠ Requires dedicated infrastructure teams
•⚠ Often requires deep knowledge of Swift and iOS
•⚠ Not something you would do for “individual" PRs
Project/OS Overhead
50
•⚠ Requires dedicated infrastructure teams
•⚠ Often requires deep knowledge of Swift and iOS
•⚠ Not something you would do for “individual" PRs
Don’ttrythis at home!
Project/OS Overhead
51
Project/OS Overhead
51
Problem:Xcode’s native localization
is inefficient
Project/OS Overhead
52
Project/OS Overhead Xcode’s native localization is inefficient
52
// Comment for string A
“stringA" = “Button”
// Comment for string B
“stringB" = “Another Button”
// Comment for string C
“stringC" = “Cool Button”
// Comment for string D
“stringD” = “Bad Button"
en.strings
// Comment for string A
“stringA" = “Botão”
// Comment for string B
“stringB" = “Outro Button”
// Comment for string C
“stringC" = “Botão Legal”
// Comment for string D
“stringD” = “Botão Ruim”
pt-BR.strings
Project/OS Overhead Xcode’s native localization is inefficient
53
en.values
[“Botão,"Outro Botão”,“Botão
Legal”,“Botão Ruim”]
pt-BR.values
["Button,"Another Button”,“Cool
Button”,“Bad Button”]
•Improve efficiency by storing them yourself!
keys
[“stringA,"stringB”,“stringC”,
“stringD”]
Project/OS Overhead Xcode’s native localization is inefficient
53
en.values
[“Botão,"Outro Botão”,“Botão
Legal”,“Botão Ruim”]
pt-BR.values
["Button,"Another Button”,“Cool
Button”,“Bad Button”]
•Improve efficiency by storing them yourself!
keys
[“stringA,"stringB”,“stringC”,
“stringD”]
Improvement @ Spotify: -20MB
Project/OS Overhead Xcode’s native localization is inefficient
54
Project/OS Overhead
54
Project/OS Overhead
•Previously, on this talk…
55
Project/OS Overhead
55
Project/OS Overhead
•LLVM has optimization flags not exposed to Xcode
55
Project/OS Overhead
•Machine Outlining
-mllvm —enable-machine-outliner=always -mllvm —machine-outliner-reruns=NO_OF_RERUNS
•LLVM has optimization flags not exposed to Xcode
55
Project/OS Overhead
•Machine Outlining
-mllvm —enable-machine-outliner=always -mllvm —machine-outliner-reruns=NO_OF_RERUNS
•ThinLTO (Cross Module Optimization)
-
fl
to=thin
•LLVM has optimization flags not exposed to Xcode
55
Project/OS Overhead
•Machine Outlining
-mllvm —enable-machine-outliner=always -mllvm —machine-outliner-reruns=NO_OF_RERUNS
•ThinLTO (Cross Module Optimization)
-
fl
to=thin
•LLVM has optimization flags not exposed to Xcode
Don’ttrythis at home!
56
Swift Overhead
•Looking for more?
Project/OS Overhead
56
•Official Swift Forums
Swift Overhead
•Looking for more?
Project/OS Overhead
56
•Official Swift Forums
Swift Overhead
•Looking for more?
•Official LLVM Forums
Project/OS Overhead
56
•Official Swift Forums
Swift Overhead
•Looking for more?
•Official LLVM Forums
Project/OS Overhead
•Large companies’ developer blogs
56
•Official Swift Forums
Swift Overhead
•Looking for more?
•Official LLVM Forums
Project/OS Overhead
•Large companies’ developer blogs
•MobileNativeFoundation
57
57
😫
58
Overwhelmed?
Start simple!
58
Overwhelmed?
Start simple!
•Start by simply being aware of the problem
58
Overwhelmed?
Start simple!
•Start by simply being aware of the problem
•Don’t worry about the tech until you actually need it
59
@rockbruno_
https:/
/swiftrocks.com

More Related Content

What's hot

이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정Arawn Park
 
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...Simplilearn
 
Ansible presentation
Ansible presentationAnsible presentation
Ansible presentationSuresh Kumar
 
AWS로 게임 런칭 준비하기 ::: 장준성, 채민관, AWS Game Master 온라인 시리즈 #4
AWS로 게임 런칭 준비하기 ::: 장준성, 채민관, AWS Game Master 온라인 시리즈 #4AWS로 게임 런칭 준비하기 ::: 장준성, 채민관, AWS Game Master 온라인 시리즈 #4
AWS로 게임 런칭 준비하기 ::: 장준성, 채민관, AWS Game Master 온라인 시리즈 #4Amazon Web Services Korea
 
Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023
Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023
Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023Steve Pember
 
Terraform features(kr)
Terraform features(kr)Terraform features(kr)
Terraform features(kr)규석 이
 
Jenkins Pipeline Tutorial | Jenkins Build And Delivery Pipeline | Jenkins Tut...
Jenkins Pipeline Tutorial | Jenkins Build And Delivery Pipeline | Jenkins Tut...Jenkins Pipeline Tutorial | Jenkins Build And Delivery Pipeline | Jenkins Tut...
Jenkins Pipeline Tutorial | Jenkins Build And Delivery Pipeline | Jenkins Tut...Simplilearn
 
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016Amazon Web Services Korea
 
(Declarative) Jenkins Pipelines
(Declarative) Jenkins Pipelines(Declarative) Jenkins Pipelines
(Declarative) Jenkins PipelinesSteffen Gebert
 
Preparing for Growth - Architecting Giant Apps for Scalability and Build Speed
Preparing for Growth - Architecting Giant Apps for Scalability and Build SpeedPreparing for Growth - Architecting Giant Apps for Scalability and Build Speed
Preparing for Growth - Architecting Giant Apps for Scalability and Build SpeedBruno Rocha
 
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안SANG WON PARK
 
Airbnb's Journey from Self-Managed Redis to ElastiCache for Redis (DAT319) - ...
Airbnb's Journey from Self-Managed Redis to ElastiCache for Redis (DAT319) - ...Airbnb's Journey from Self-Managed Redis to ElastiCache for Redis (DAT319) - ...
Airbnb's Journey from Self-Managed Redis to ElastiCache for Redis (DAT319) - ...Amazon Web Services
 
An Introduction To Jenkins
An Introduction To JenkinsAn Introduction To Jenkins
An Introduction To JenkinsKnoldus Inc.
 
Massive service basic
Massive service basicMassive service basic
Massive service basicDaeMyung Kang
 

What's hot (20)

이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정
 
Jenkins
JenkinsJenkins
Jenkins
 
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
 
Ansible presentation
Ansible presentationAnsible presentation
Ansible presentation
 
AWS로 게임 런칭 준비하기 ::: 장준성, 채민관, AWS Game Master 온라인 시리즈 #4
AWS로 게임 런칭 준비하기 ::: 장준성, 채민관, AWS Game Master 온라인 시리즈 #4AWS로 게임 런칭 준비하기 ::: 장준성, 채민관, AWS Game Master 온라인 시리즈 #4
AWS로 게임 런칭 준비하기 ::: 장준성, 채민관, AWS Game Master 온라인 시리즈 #4
 
Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023
Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023
Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023
 
Git and Github
Git and GithubGit and Github
Git and Github
 
Terraform features(kr)
Terraform features(kr)Terraform features(kr)
Terraform features(kr)
 
Jenkins Pipeline Tutorial | Jenkins Build And Delivery Pipeline | Jenkins Tut...
Jenkins Pipeline Tutorial | Jenkins Build And Delivery Pipeline | Jenkins Tut...Jenkins Pipeline Tutorial | Jenkins Build And Delivery Pipeline | Jenkins Tut...
Jenkins Pipeline Tutorial | Jenkins Build And Delivery Pipeline | Jenkins Tut...
 
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
 
(Declarative) Jenkins Pipelines
(Declarative) Jenkins Pipelines(Declarative) Jenkins Pipelines
(Declarative) Jenkins Pipelines
 
Preparing for Growth - Architecting Giant Apps for Scalability and Build Speed
Preparing for Growth - Architecting Giant Apps for Scalability and Build SpeedPreparing for Growth - Architecting Giant Apps for Scalability and Build Speed
Preparing for Growth - Architecting Giant Apps for Scalability and Build Speed
 
Jenkins tutorial
Jenkins tutorialJenkins tutorial
Jenkins tutorial
 
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
 
Git training v10
Git training v10Git training v10
Git training v10
 
Airbnb's Journey from Self-Managed Redis to ElastiCache for Redis (DAT319) - ...
Airbnb's Journey from Self-Managed Redis to ElastiCache for Redis (DAT319) - ...Airbnb's Journey from Self-Managed Redis to ElastiCache for Redis (DAT319) - ...
Airbnb's Journey from Self-Managed Redis to ElastiCache for Redis (DAT319) - ...
 
An Introduction To Jenkins
An Introduction To JenkinsAn Introduction To Jenkins
An Introduction To Jenkins
 
Jenkins CI presentation
Jenkins CI presentationJenkins CI presentation
Jenkins CI presentation
 
devops
devops devops
devops
 
Massive service basic
Massive service basicMassive service basic
Massive service basic
 

Similar to Keeping Swift Apps Small

Fast Delivery DevOps Israel
Fast Delivery DevOps IsraelFast Delivery DevOps Israel
Fast Delivery DevOps IsraelAdrian Cockcroft
 
Liferay and Big Data
Liferay and Big DataLiferay and Big Data
Liferay and Big DataMiguel Pastor
 
Software Carpentry for the Geophysical Sciences
Software Carpentry for the Geophysical SciencesSoftware Carpentry for the Geophysical Sciences
Software Carpentry for the Geophysical SciencesAron Ahmadia
 
Real-Time Metrics and Distributed Monitoring - Jeff Pierce, Change.org - Dev...
Real-Time Metrics and Distributed Monitoring - Jeff Pierce, Change.org -  Dev...Real-Time Metrics and Distributed Monitoring - Jeff Pierce, Change.org -  Dev...
Real-Time Metrics and Distributed Monitoring - Jeff Pierce, Change.org - Dev...DevOpsDays Tel Aviv
 
Monktoberfest Fast Delivery
Monktoberfest Fast DeliveryMonktoberfest Fast Delivery
Monktoberfest Fast DeliveryAdrian Cockcroft
 
How Appboy’s Marketing Automation for Apps Platform Grew 40x on the ObjectRoc...
How Appboy’s Marketing Automation for Apps Platform Grew 40x on the ObjectRoc...How Appboy’s Marketing Automation for Apps Platform Grew 40x on the ObjectRoc...
How Appboy’s Marketing Automation for Apps Platform Grew 40x on the ObjectRoc...MongoDB
 
Keys to Continuous Delivery Success - Mark Warren, Product Director, Perforc...
Keys to Continuous  Delivery Success - Mark Warren, Product Director, Perforc...Keys to Continuous  Delivery Success - Mark Warren, Product Director, Perforc...
Keys to Continuous Delivery Success - Mark Warren, Product Director, Perforc...Perforce
 
ONE-SIZE DOESN'T FIT ALL - EFFECTIVELY (RE)EVALUATE A DATA SOLUTION FOR YOUR ...
ONE-SIZE DOESN'T FIT ALL - EFFECTIVELY (RE)EVALUATE A DATA SOLUTION FOR YOUR ...ONE-SIZE DOESN'T FIT ALL - EFFECTIVELY (RE)EVALUATE A DATA SOLUTION FOR YOUR ...
ONE-SIZE DOESN'T FIT ALL - EFFECTIVELY (RE)EVALUATE A DATA SOLUTION FOR YOUR ...DevOpsDays Tel Aviv
 
AppSec Pipelines and Event based Security
AppSec Pipelines and Event based SecurityAppSec Pipelines and Event based Security
AppSec Pipelines and Event based SecurityMatt Tesauro
 
Deep linking at App Promotion Summit
Deep linking at App Promotion SummitDeep linking at App Promotion Summit
Deep linking at App Promotion SummitAlexandre Jubien
 
TIBCO Advanced Analytics Meetup (TAAM) - June 2015
TIBCO Advanced Analytics Meetup (TAAM) - June 2015TIBCO Advanced Analytics Meetup (TAAM) - June 2015
TIBCO Advanced Analytics Meetup (TAAM) - June 2015Bipin Singh
 
Reark : a Reference Architecture for Android using RxJava
Reark : a Reference Architecture for Android using RxJavaReark : a Reference Architecture for Android using RxJava
Reark : a Reference Architecture for Android using RxJavaFuturice
 
Don't fear our new robot overlords – A new way to test on mobile
Don't fear our new robot overlords – A new way to test on mobileDon't fear our new robot overlords – A new way to test on mobile
Don't fear our new robot overlords – A new way to test on mobilePhilip Brechler
 
Subverting the monolith!
Subverting the monolith!Subverting the monolith!
Subverting the monolith!Sophia Russell
 
Application Development with Pharo
Application Development with PharoApplication Development with Pharo
Application Development with PharoESUG
 

Similar to Keeping Swift Apps Small (20)

DevOps Culture at Amazon
DevOps Culture at AmazonDevOps Culture at Amazon
DevOps Culture at Amazon
 
Fast Delivery DevOps Israel
Fast Delivery DevOps IsraelFast Delivery DevOps Israel
Fast Delivery DevOps Israel
 
Liferay and Big Data
Liferay and Big DataLiferay and Big Data
Liferay and Big Data
 
Software Carpentry for the Geophysical Sciences
Software Carpentry for the Geophysical SciencesSoftware Carpentry for the Geophysical Sciences
Software Carpentry for the Geophysical Sciences
 
Real-Time Metrics and Distributed Monitoring - Jeff Pierce, Change.org - Dev...
Real-Time Metrics and Distributed Monitoring - Jeff Pierce, Change.org -  Dev...Real-Time Metrics and Distributed Monitoring - Jeff Pierce, Change.org -  Dev...
Real-Time Metrics and Distributed Monitoring - Jeff Pierce, Change.org - Dev...
 
Monktoberfest Fast Delivery
Monktoberfest Fast DeliveryMonktoberfest Fast Delivery
Monktoberfest Fast Delivery
 
Webinar-DevOps.pdf
Webinar-DevOps.pdfWebinar-DevOps.pdf
Webinar-DevOps.pdf
 
App store optimization
App store optimizationApp store optimization
App store optimization
 
How Appboy’s Marketing Automation for Apps Platform Grew 40x on the ObjectRoc...
How Appboy’s Marketing Automation for Apps Platform Grew 40x on the ObjectRoc...How Appboy’s Marketing Automation for Apps Platform Grew 40x on the ObjectRoc...
How Appboy’s Marketing Automation for Apps Platform Grew 40x on the ObjectRoc...
 
Keys to Continuous Delivery Success - Mark Warren, Product Director, Perforc...
Keys to Continuous  Delivery Success - Mark Warren, Product Director, Perforc...Keys to Continuous  Delivery Success - Mark Warren, Product Director, Perforc...
Keys to Continuous Delivery Success - Mark Warren, Product Director, Perforc...
 
Alex jubien-think mobile
Alex jubien-think mobileAlex jubien-think mobile
Alex jubien-think mobile
 
Engineering Apps
Engineering AppsEngineering Apps
Engineering Apps
 
ONE-SIZE DOESN'T FIT ALL - EFFECTIVELY (RE)EVALUATE A DATA SOLUTION FOR YOUR ...
ONE-SIZE DOESN'T FIT ALL - EFFECTIVELY (RE)EVALUATE A DATA SOLUTION FOR YOUR ...ONE-SIZE DOESN'T FIT ALL - EFFECTIVELY (RE)EVALUATE A DATA SOLUTION FOR YOUR ...
ONE-SIZE DOESN'T FIT ALL - EFFECTIVELY (RE)EVALUATE A DATA SOLUTION FOR YOUR ...
 
AppSec Pipelines and Event based Security
AppSec Pipelines and Event based SecurityAppSec Pipelines and Event based Security
AppSec Pipelines and Event based Security
 
Deep linking at App Promotion Summit
Deep linking at App Promotion SummitDeep linking at App Promotion Summit
Deep linking at App Promotion Summit
 
TIBCO Advanced Analytics Meetup (TAAM) - June 2015
TIBCO Advanced Analytics Meetup (TAAM) - June 2015TIBCO Advanced Analytics Meetup (TAAM) - June 2015
TIBCO Advanced Analytics Meetup (TAAM) - June 2015
 
Reark : a Reference Architecture for Android using RxJava
Reark : a Reference Architecture for Android using RxJavaReark : a Reference Architecture for Android using RxJava
Reark : a Reference Architecture for Android using RxJava
 
Don't fear our new robot overlords – A new way to test on mobile
Don't fear our new robot overlords – A new way to test on mobileDon't fear our new robot overlords – A new way to test on mobile
Don't fear our new robot overlords – A new way to test on mobile
 
Subverting the monolith!
Subverting the monolith!Subverting the monolith!
Subverting the monolith!
 
Application Development with Pharo
Application Development with PharoApplication Development with Pharo
Application Development with Pharo
 

Recently uploaded

Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Exploring ChatGPT Prompt Hacks To Maximally Optimise Your Queries
Exploring ChatGPT Prompt Hacks To Maximally Optimise Your QueriesExploring ChatGPT Prompt Hacks To Maximally Optimise Your Queries
Exploring ChatGPT Prompt Hacks To Maximally Optimise Your QueriesSanjay Willie
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 

Recently uploaded (20)

Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Exploring ChatGPT Prompt Hacks To Maximally Optimise Your Queries
Exploring ChatGPT Prompt Hacks To Maximally Optimise Your QueriesExploring ChatGPT Prompt Hacks To Maximally Optimise Your Queries
Exploring ChatGPT Prompt Hacks To Maximally Optimise Your Queries
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 

Keeping Swift Apps Small