Bruno Rocha: Preparing for Growth: Architecting Giant Apps for Scalability and Build Speed

  Переглядів 14,136

Swift Heroes

Swift Heroes

День тому

Presented at Swift Heroes 2021
PREPARING FOR GROWTH: ARCHITECTING GIANT APPS FOR SCALABILITY AND BUILD SPEED
Bruno Rocha, Software Engineer, Spotify
The architecture of an app gets really complicated when your app gets too big or amasses too many requirements. Even if you're already separating your features in different modules you may start having issues with things like classes that have tons of parameters, unclear dependencies, how not-dynamic everything is and the terrible, terrible build times. In general, a very hard time evolving your app.
In this talk, we'll show how Spotify's current module architecture practices can be used to prepare your fast-growing app for its future. We'll take a deep dive on Spotify's own feature / dependency injection framework, demonstrating how you can be able to dynamically create and push any feature from anywhere on the app without needing to import or inject anything, giving your app the flexibility, testability and build speed of a small app regardless of its size.
#SwiftHeroes #SwiftConnected
swiftheroes.com/
/ swiftheroes_it
/ swift-heroes

КОМЕНТАРІ: 11
@FelipeBorges-ys1pl
@FelipeBorges-ys1pl Місяць тому
Excellent content, Bruno. About the end, I'm gonna quote someone whose name I forgot: "The good software architect is a master at deferring big decisions and leaving options open". So while we shouldn't be doing rocket science within a newborn app, we should definitely be careful with how we're designing our small app now as to not make everyone's lives extra hard when we finally need some restructuring. ;)
@microeditionbiz
@microeditionbiz Рік тому
This is the first time after working several years in iOS that someone explains in a very clear way the different issues that you can face if you want to escalate/evolve an app. This talk in pure gold. Thank you for sharing this Bruno.
@ronanociosoig9487
@ronanociosoig9487 2 роки тому
This is very well explained. Thanks for taking the time to make it. Excellent work.
@omgawdhax
@omgawdhax 2 роки тому
Great talk! I sent this video to our team right away, accompanied with a few screenshots :) Thank you Bruno and Swift Heroes Italy!
@S0ny87
@S0ny87 10 місяців тому
Top content! Thanks!
@nabeel12310
@nabeel12310 2 роки тому
Any sample repository? Thanks for the video, learned a lot 👍
@paccini1
@paccini1 2 роки тому
Thanks a lot Bruno
@MauricioChavesDias
@MauricioChavesDias 2 роки тому
I'm at level 1 app in my career and most of this information did not make sense to me yet. Although it is important to understand how big companies like Spotify works behind the scenes. Thank you for sharing your knowledge Bruno.
@scs408
@scs408 9 місяців тому
Are you aware of any open source libraries that are similar to the SPTServiceSystem
@Carlos.Damiao
@Carlos.Damiao 25 днів тому
I agree with most of the concepts you’ve talked about, and I’m definitely grateful to you for bringing value to the community. However, correct me if I’m wrong but it seems like you guys are using an anti-pattern called Service Locator, which basically is global shared state to implicitly inject dependencies. This talk has 2 years, so maybe this was already addressed, but I would feel very uncomfortable in using a Service Locator in all of my services. Service Locator has many problems, one of the biggest in my opinion is the lack of errors at compilation time. I much prefer using dependency injection through the initializer. I would say that a true level 4 app done correctly doesn’t need this sort of global shared state to achieve its needs. I was also not convinced by your approach to navigation. But I would have to look at concrete cases to be able to see how you approach for example injecting data that is only available at run time. Being able to control navigation from BE is cool though.
@SwiftHeroes
@SwiftHeroes 24 дні тому
Thanks for sharing your view, it's interesting 🧐
Katsumi Kishikawa: Build Swift Web Playground for Fun
29:51
Swift Heroes
Переглядів 525
[UA] Team Spirit vs FaZe Clan | Copenhagen Major
8:29:21
CS2 Maincast
Переглядів 101 тис.
Президент відвідав наших військових на Сумщині
00:20
Кто выше поднимет ногу?
00:32
Аришнев
Переглядів 648 тис.
How to Build Scalable Websites and Apps
9:14
Mehul - Codedamn
Переглядів 16 тис.
Steam Friends List App - iOS System Design Interview
28:45
Andrey Tech
Переглядів 10 тис.
Don't Do These Fatal Mistakes With a Multi-Module Architecture
10:19
Philipp Lackner
Переглядів 36 тис.
Keeping Things Modular With Swift Package Manager - iOS Conf SG 2022
25:36
Google system design interview: Design Spotify (with ex-Google EM)
42:13
IGotAnOffer: Engineering
Переглядів 881 тис.
Elevated Swift - Soroush Khanlou | Swift Heroes 2023 Talk
26:24
Swift Heroes
Переглядів 1,8 тис.
1$ Handmade Filter for Camera 😱 #photography
1:00
Jean Black
Переглядів 16 млн
I Need a Home Theater PC... NOW! - NVIDIA RTX HDR
22:09
Linus Tech Tips
Переглядів 610 тис.
Чёрный экран при включении. Что делать?
0:25
Ультра 2 с интернетом?
0:29
Listen_pods
Переглядів 1,5 млн
Technicians are testing this LED module. #leddisplay #ledwall #ledmodule #ledscreen #eagerled
0:18