Date post: | 22-Jan-2018 |
Category: |
Software |
Upload: | michele-titolo |
View: | 274 times |
Download: | 0 times |
From iOS to Distributed SystemsMichele Titolo
Lead Software Engineer, Capital One
@micheletitolo
8 Months Ago I Changed Teams
@micheletitolo
MobileBUT YOU’RE A
developer
@micheletitolo
What Are The Kinds Of Problems I Solve When Writing Mobile Apps?
‣ State
‣ Concurrency
‣ Instrumentation
‣ Testing
‣ Developer Efficiency
@micheletitolo
@micheletitolo
Distributed Systems
@micheletitolo
Mostly means “microservices”
@micheletitolo
Single Responsibility
@micheletitolo
Production Ready Microservices
‣ Stability
‣ Reliability
‣ Scalability
‣ Fault Tolerance
‣ Performance
‣ Monitoring
‣ Documentation
‣ State
‣ Concurrency
‣ Instrumentation
‣ Testing
‣ Developer Efficiency
@micheletitolo
@micheletitolo
State
@micheletitolo
iOS Apps Are Large And Stateful
@micheletitolo
MassiveViewController
@micheletitolo
How To Fix?
@micheletitolo
Break Down Into Functional Parts
@micheletitolo
Sounds Like A Microservice
@micheletitolo
Inflexible Boundaries
@micheletitolo
Language Features
@micheletitolo
Dynamic Weakly Typed
@micheletitolo
Why?
@micheletitolo
The Smaller The Codebase, The Fewer Language Features Are Used
@micheletitolo
Focus On Simplicity
@micheletitolo
Generics: Great For Modeling State
@micheletitolo
What If You Have No State 🤔?
@micheletitolo
Protocols Nil Checks
@micheletitolo
Shared State
@micheletitolo
Singletons
@micheletitolo
Dependency Injection To The Rescue
@micheletitolo
Translates To Service Discovery
@micheletitolo
Register And Route To Dependent Services
@micheletitolo
Databases!
@micheletitolo
Kind Of Like Singletons
@micheletitolo
Easy Reads Restrict Writes
@micheletitolo
Read Replicas
@micheletitolo
Concurrency
@micheletitolo
iOS: 1 million users each using 1 instance
@micheletitolo
Distributed Systems: 1 million users using n instances
@micheletitolo
🙀
@micheletitolo
Concurrency Matters
@micheletitolo
Don’t Block The Main Thread
@micheletitolo
Queues, Threads, Callbacks All Matter
@micheletitolo
GCD is 💯
@micheletitolo
Other Languages Are Not As Sophisticated
@micheletitolo
Instrumentation
@micheletitolo
‣ Performance ‣ Usage
@micheletitolo
iOS Apps Are Black Boxes
@micheletitolo
If It’s Not Tracked, You Can’t Know
@micheletitolo
Knowing What To Track Is Key
@micheletitolo
Apps Behave Differently In The Wild
@micheletitolo
Instrumentation On iOS
@micheletitolo
Instruments.App Helps Locally
@micheletitolo
AppStore App Analytics
@micheletitolo
3rd Party Analytics
@micheletitolo
Microservices
@micheletitolo
Microservices Are Also Black Boxes
@micheletitolo
Developers Shouldn’t Have Prod SSH Access
@micheletitolo
Alerts Need Metrics
@micheletitolo
Again, Local Dev Is Different
@micheletitolo
Simulate Load In Pre-Production
@micheletitolo
Imperfect, Imprecise
@micheletitolo
Instrumentation Helps Surface And Diagnose Issues
@micheletitolo
Testing
Unit
Integration
End
to End
@micheletitolo
Testing Is Universal
@micheletitolo
Testing On iOS
@micheletitolo
Isolated State
@micheletitolo
Dependency Injection
@micheletitolo
Run Frequently
@micheletitolo
Tests For Everything
@micheletitolo
Microservices
@micheletitolo
But First One Thing I Glossed Over…
@micheletitolo
Microservices Are Infrastructure Heavy
@micheletitolo
CICD
@micheletitolo
If Code Goes To Prod Basically Immediately…
@micheletitolo
Automate All The Things
@micheletitolo
Codebase Needs Lots Of Tests
@micheletitolo
Tests For Microservices Need…
@micheletitolo
Isolated State
@micheletitolo
Dependency Injection
@micheletitolo
All The Testing Layers Covered
@micheletitolo
Just Like On iOS
@micheletitolo
Developer Efficiency
@micheletitolo
Move Fast And Break Things
@micheletitolo
Move Fast And Break Things
@micheletitolo
Move Fast With Stable Infra
@micheletitolo
Developers Like Shipping
@micheletitolo
“It Works On My Machine”
@micheletitolo
Codesigning 🙀
@micheletitolo
Fastlane 👍
@micheletitolo
Easy Releases ➡
Frequent Releases
@micheletitolo
Same For Microservices
@micheletitolo
…If Not More
@micheletitolo
Automation ➡ Scaling
@micheletitolo
Software Moves Fast
@micheletitolo
To Summarize
@micheletitolo
Making iOS Apps Requires Specialized Knowledge
@micheletitolo
Rooted In Fundamental Concepts
@micheletitolo
Different Tools
@micheletitolo
You Know More Than You Think 🎉
@micheletitolo
• https://unsplash.com/photos/VHO2dTXrOZI
• https://unsplash.com/photos/jEqyV_rumuU
• https://unsplash.com/photos/iDkiP2GXlR8
• https://unsplash.com/photos/AFp6M-Cj0Kk
• https://unsplash.com/photos/iMmlx_fCeWc
• https://unsplash.com/photos/frrdcxOf55I
• https://unsplash.com/photos/MihdAxwamXA
Photo Credits