Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
From iOS to
Distributed Systems
Michele Titolo
Lead Software Engineer, Capital One
@micheletitolo
8 Months Ago I
Changed Teams
@micheletitolo
Mobile
BUT 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
‣ Mo...
‣ 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 🎉
Thank You
@micheletitolo
hi@michele.io
@micheletitolo
• https://unsplash.com/photos/
VHO2dTXrOZI
• https://unsplash.com/photos/
jEqyV_rumuU
• https://unsplash.co...
Upcoming SlideShare
Loading in …5
×

From iOS to Distributed Systems

466 views

Published on

When I first started talking to people about wanting to work on backend services, the most common reaction was saying that it’s so different from iOS development. I never thought of it that way. Making iOS apps involves a lot of specialized knowledge applied to seemingly specialized problems. However, when those problems are distilled down to their fundamental form, they look similar to problems encountered in other software disciplines. Together we will discover those problems and learn how to apply them to different situations.

Published in: Software
  • Be the first to comment

From iOS to Distributed Systems

  1. 1. From iOS to Distributed Systems Michele Titolo Lead Software Engineer, Capital One @micheletitolo
  2. 2. 8 Months Ago I Changed Teams @micheletitolo
  3. 3. Mobile BUT YOU’RE A developer
  4. 4. @micheletitolo What Are The Kinds Of Problems I Solve When Writing Mobile Apps?
  5. 5. ‣ State ‣ Concurrency ‣ Instrumentation ‣ Testing ‣ Developer Efficiency @micheletitolo
  6. 6. @micheletitolo Distributed Systems
  7. 7. @micheletitolo Mostly means “microservices”
  8. 8. @micheletitolo Single Responsibility
  9. 9. @micheletitolo Production Ready Microservices ‣ Stability ‣ Reliability ‣ Scalability ‣ Fault Tolerance ‣ Performance ‣ Monitoring ‣ Documentation
  10. 10. ‣ State ‣ Concurrency ‣ Instrumentation ‣ Testing ‣ Developer Efficiency @micheletitolo
  11. 11. @micheletitolo State
  12. 12. @micheletitolo iOS Apps Are Large And Stateful
  13. 13. @micheletitolo MassiveViewController
  14. 14. @micheletitolo How To Fix?
  15. 15. @micheletitolo Break Down Into Functional Parts
  16. 16. @micheletitolo Sounds Like A Microservice
  17. 17. @micheletitolo Inflexible Boundaries
  18. 18. @micheletitolo Language Features
  19. 19. @micheletitolo Dynamic Weakly Typed
  20. 20. @micheletitolo Why?
  21. 21. @micheletitolo The Smaller The Codebase, The Fewer Language Features Are Used
  22. 22. @micheletitolo Focus On Simplicity
  23. 23. @micheletitolo Generics: Great For Modeling State
  24. 24. @micheletitolo What If You Have No State 🤔?
  25. 25. @micheletitolo Protocols Nil Checks
  26. 26. @micheletitolo Shared State
  27. 27. @micheletitolo Singletons
  28. 28. @micheletitolo Dependency Injection To The Rescue
  29. 29. @micheletitolo Translates To Service Discovery
  30. 30. @micheletitolo Register And Route To Dependent Services
  31. 31. @micheletitolo Databases!
  32. 32. @micheletitolo Kind Of Like Singletons
  33. 33. @micheletitolo Easy Reads Restrict Writes
  34. 34. @micheletitolo Read Replicas
  35. 35. @micheletitolo Concurrency
  36. 36. @micheletitolo iOS: 1 million users each using 1 instance
  37. 37. @micheletitolo Distributed Systems: 1 million users using n instances
  38. 38. @micheletitolo 🙀
  39. 39. @micheletitolo Concurrency Matters
  40. 40. @micheletitolo Don’t Block The Main Thread
  41. 41. @micheletitolo Queues, Threads, Callbacks All Matter
  42. 42. @micheletitolo GCD is 💯
  43. 43. @micheletitolo Other Languages Are Not As Sophisticated
  44. 44. @micheletitolo Instrumentation
  45. 45. @micheletitolo ‣ Performance ‣ Usage
  46. 46. @micheletitolo iOS Apps Are Black Boxes
  47. 47. @micheletitolo If It’s Not Tracked, You Can’t Know
  48. 48. @micheletitolo Knowing What To Track Is Key
  49. 49. @micheletitolo Apps Behave Differently In The Wild
  50. 50. @micheletitolo Instrumentation On iOS
  51. 51. @micheletitolo Instruments.App Helps Locally
  52. 52. @micheletitolo AppStore App Analytics
  53. 53. @micheletitolo 3rd Party Analytics
  54. 54. @micheletitolo Microservices
  55. 55. @micheletitolo Microservices Are Also Black Boxes
  56. 56. @micheletitolo Developers Shouldn’t Have Prod SSH Access
  57. 57. @micheletitolo Alerts Need Metrics
  58. 58. @micheletitolo Again, Local Dev Is Different
  59. 59. @micheletitolo Simulate Load In Pre-Production
  60. 60. @micheletitolo Imperfect, Imprecise
  61. 61. @micheletitolo Instrumentation Helps Surface And Diagnose Issues
  62. 62. @micheletitolo Testing
  63. 63. Unit Integration End to End
  64. 64. @micheletitolo Testing Is Universal
  65. 65. @micheletitolo Testing On iOS
  66. 66. @micheletitolo Isolated State
  67. 67. @micheletitolo Dependency Injection
  68. 68. @micheletitolo Run Frequently
  69. 69. @micheletitolo Tests For Everything
  70. 70. @micheletitolo Microservices
  71. 71. @micheletitolo But First One Thing I Glossed Over…
  72. 72. @micheletitolo Microservices Are Infrastructure Heavy
  73. 73. @micheletitolo CICD
  74. 74. @micheletitolo If Code Goes To Prod Basically Immediately…
  75. 75. @micheletitolo Automate All The Things
  76. 76. @micheletitolo Codebase Needs Lots Of Tests
  77. 77. @micheletitolo Tests For Microservices Need…
  78. 78. @micheletitolo Isolated State
  79. 79. @micheletitolo Dependency Injection
  80. 80. @micheletitolo All The Testing Layers Covered
  81. 81. @micheletitolo Just Like On iOS
  82. 82. @micheletitolo Developer Efficiency
  83. 83. @micheletitolo Move Fast And Break Things
  84. 84. @micheletitolo Move Fast And Break Things
  85. 85. @micheletitolo Move Fast With Stable Infra
  86. 86. @micheletitolo Developers Like Shipping
  87. 87. @micheletitolo “It Works On My Machine”
  88. 88. @micheletitolo Codesigning 🙀
  89. 89. @micheletitolo Fastlane 👍
  90. 90. @micheletitolo Easy Releases ➡ Frequent Releases
  91. 91. @micheletitolo Same For Microservices
  92. 92. @micheletitolo …If Not More
  93. 93. @micheletitolo Automation ➡ Scaling
  94. 94. @micheletitolo Software Moves Fast
  95. 95. @micheletitolo To Summarize
  96. 96. @micheletitolo Making iOS Apps Requires Specialized Knowledge
  97. 97. @micheletitolo Rooted In Fundamental Concepts
  98. 98. @micheletitolo Different Tools
  99. 99. @micheletitolo You Know More Than You Think 🎉
  100. 100. Thank You @micheletitolo hi@michele.io
  101. 101. @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

×