+ All Categories
Home > Software > From iOS to Distributed Systems

From iOS to Distributed Systems

Date post: 22-Jan-2018
Category:
Upload: michele-titolo
View: 274 times
Download: 0 times
Share this document with a friend
101
From iOS to Distributed Systems Michele Titolo Lead Software Engineer, Capital One @micheletitolo
Transcript
Page 1: From iOS to Distributed Systems

From iOS to Distributed SystemsMichele Titolo

Lead Software Engineer, Capital One

@micheletitolo

Page 2: From iOS to Distributed Systems

8 Months Ago I Changed Teams

@micheletitolo

Page 3: From iOS to Distributed Systems

MobileBUT YOU’RE A

developer

Page 4: From iOS to Distributed Systems

@micheletitolo

What Are The Kinds Of Problems I Solve When Writing Mobile Apps?

Page 5: From iOS to Distributed Systems

‣ State

‣ Concurrency

‣ Instrumentation

‣ Testing

‣ Developer Efficiency

@micheletitolo

Page 6: From iOS to Distributed Systems

@micheletitolo

Distributed Systems

Page 7: From iOS to Distributed Systems

@micheletitolo

Mostly means “microservices”

Page 8: From iOS to Distributed Systems

@micheletitolo

Single Responsibility

Page 9: From iOS to Distributed Systems

@micheletitolo

Production Ready Microservices

‣ Stability

‣ Reliability

‣ Scalability

‣ Fault Tolerance

‣ Performance

‣ Monitoring

‣ Documentation

Page 10: From iOS to Distributed Systems

‣ State

‣ Concurrency

‣ Instrumentation

‣ Testing

‣ Developer Efficiency

@micheletitolo

Page 11: From iOS to Distributed Systems

@micheletitolo

State

Page 12: From iOS to Distributed Systems

@micheletitolo

iOS Apps Are Large And Stateful

Page 13: From iOS to Distributed Systems

@micheletitolo

MassiveViewController

Page 14: From iOS to Distributed Systems

@micheletitolo

How To Fix?

Page 15: From iOS to Distributed Systems

@micheletitolo

Break Down Into Functional Parts

Page 16: From iOS to Distributed Systems

@micheletitolo

Sounds Like A Microservice

Page 17: From iOS to Distributed Systems

@micheletitolo

Inflexible Boundaries

Page 18: From iOS to Distributed Systems

@micheletitolo

Language Features

Page 19: From iOS to Distributed Systems

@micheletitolo

Dynamic Weakly Typed

Page 20: From iOS to Distributed Systems

@micheletitolo

Why?

Page 21: From iOS to Distributed Systems

@micheletitolo

The Smaller The Codebase, The Fewer Language Features Are Used

Page 22: From iOS to Distributed Systems

@micheletitolo

Focus On Simplicity

Page 23: From iOS to Distributed Systems

@micheletitolo

Generics: Great For Modeling State

Page 24: From iOS to Distributed Systems

@micheletitolo

What If You Have No State 🤔?

Page 25: From iOS to Distributed Systems

@micheletitolo

Protocols Nil Checks

Page 26: From iOS to Distributed Systems

@micheletitolo

Shared State

Page 27: From iOS to Distributed Systems

@micheletitolo

Singletons

Page 28: From iOS to Distributed Systems

@micheletitolo

Dependency Injection To The Rescue

Page 29: From iOS to Distributed Systems

@micheletitolo

Translates To Service Discovery

Page 30: From iOS to Distributed Systems

@micheletitolo

Register And Route To Dependent Services

Page 31: From iOS to Distributed Systems

@micheletitolo

Databases!

Page 32: From iOS to Distributed Systems

@micheletitolo

Kind Of Like Singletons

Page 33: From iOS to Distributed Systems

@micheletitolo

Easy Reads Restrict Writes

Page 34: From iOS to Distributed Systems

@micheletitolo

Read Replicas

Page 35: From iOS to Distributed Systems

@micheletitolo

Concurrency

Page 36: From iOS to Distributed Systems

@micheletitolo

iOS: 1 million users each using 1 instance

Page 37: From iOS to Distributed Systems

@micheletitolo

Distributed Systems: 1 million users using n instances

Page 38: From iOS to Distributed Systems

@micheletitolo

🙀

Page 39: From iOS to Distributed Systems

@micheletitolo

Concurrency Matters

Page 40: From iOS to Distributed Systems

@micheletitolo

Don’t Block The Main Thread

Page 41: From iOS to Distributed Systems

@micheletitolo

Queues, Threads, Callbacks All Matter

Page 42: From iOS to Distributed Systems

@micheletitolo

GCD is 💯

Page 43: From iOS to Distributed Systems

@micheletitolo

Other Languages Are Not As Sophisticated

Page 44: From iOS to Distributed Systems

@micheletitolo

Instrumentation

Page 45: From iOS to Distributed Systems

@micheletitolo

‣ Performance ‣ Usage

Page 46: From iOS to Distributed Systems

@micheletitolo

iOS Apps Are Black Boxes

Page 47: From iOS to Distributed Systems

@micheletitolo

If It’s Not Tracked, You Can’t Know

Page 48: From iOS to Distributed Systems

@micheletitolo

Knowing What To Track Is Key

Page 49: From iOS to Distributed Systems

@micheletitolo

Apps Behave Differently In The Wild

Page 50: From iOS to Distributed Systems

@micheletitolo

Instrumentation On iOS

Page 51: From iOS to Distributed Systems

@micheletitolo

Instruments.App Helps Locally

Page 52: From iOS to Distributed Systems

@micheletitolo

AppStore App Analytics

Page 53: From iOS to Distributed Systems

@micheletitolo

3rd Party Analytics

Page 54: From iOS to Distributed Systems

@micheletitolo

Microservices

Page 55: From iOS to Distributed Systems

@micheletitolo

Microservices Are Also Black Boxes

Page 56: From iOS to Distributed Systems

@micheletitolo

Developers Shouldn’t Have Prod SSH Access

Page 57: From iOS to Distributed Systems

@micheletitolo

Alerts Need Metrics

Page 58: From iOS to Distributed Systems

@micheletitolo

Again, Local Dev Is Different

Page 59: From iOS to Distributed Systems

@micheletitolo

Simulate Load In Pre-Production

Page 60: From iOS to Distributed Systems

@micheletitolo

Imperfect, Imprecise

Page 61: From iOS to Distributed Systems

@micheletitolo

Instrumentation Helps Surface And Diagnose Issues

Page 62: From iOS to Distributed Systems

@micheletitolo

Testing

Page 63: From iOS to Distributed Systems

Unit

Integration

End

to End

Page 64: From iOS to Distributed Systems

@micheletitolo

Testing Is Universal

Page 65: From iOS to Distributed Systems

@micheletitolo

Testing On iOS

Page 66: From iOS to Distributed Systems

@micheletitolo

Isolated State

Page 67: From iOS to Distributed Systems

@micheletitolo

Dependency Injection

Page 68: From iOS to Distributed Systems

@micheletitolo

Run Frequently

Page 69: From iOS to Distributed Systems

@micheletitolo

Tests For Everything

Page 70: From iOS to Distributed Systems

@micheletitolo

Microservices

Page 71: From iOS to Distributed Systems

@micheletitolo

But First One Thing I Glossed Over…

Page 72: From iOS to Distributed Systems

@micheletitolo

Microservices Are Infrastructure Heavy

Page 73: From iOS to Distributed Systems

@micheletitolo

CICD

Page 74: From iOS to Distributed Systems

@micheletitolo

If Code Goes To Prod Basically Immediately…

Page 75: From iOS to Distributed Systems

@micheletitolo

Automate All The Things

Page 76: From iOS to Distributed Systems

@micheletitolo

Codebase Needs Lots Of Tests

Page 77: From iOS to Distributed Systems

@micheletitolo

Tests For Microservices Need…

Page 78: From iOS to Distributed Systems

@micheletitolo

Isolated State

Page 79: From iOS to Distributed Systems

@micheletitolo

Dependency Injection

Page 80: From iOS to Distributed Systems

@micheletitolo

All The Testing Layers Covered

Page 81: From iOS to Distributed Systems

@micheletitolo

Just Like On iOS

Page 82: From iOS to Distributed Systems

@micheletitolo

Developer Efficiency

Page 83: From iOS to Distributed Systems

@micheletitolo

Move Fast And Break Things

Page 84: From iOS to Distributed Systems

@micheletitolo

Move Fast And Break Things

Page 85: From iOS to Distributed Systems

@micheletitolo

Move Fast With Stable Infra

Page 86: From iOS to Distributed Systems

@micheletitolo

Developers Like Shipping

Page 87: From iOS to Distributed Systems

@micheletitolo

“It Works On My Machine”

Page 88: From iOS to Distributed Systems

@micheletitolo

Codesigning 🙀

Page 89: From iOS to Distributed Systems

@micheletitolo

Fastlane 👍

Page 90: From iOS to Distributed Systems

@micheletitolo

Easy Releases ➡

Frequent Releases

Page 91: From iOS to Distributed Systems

@micheletitolo

Same For Microservices

Page 92: From iOS to Distributed Systems

@micheletitolo

…If Not More

Page 93: From iOS to Distributed Systems

@micheletitolo

Automation ➡ Scaling

Page 94: From iOS to Distributed Systems

@micheletitolo

Software Moves Fast

Page 95: From iOS to Distributed Systems

@micheletitolo

To Summarize

Page 96: From iOS to Distributed Systems

@micheletitolo

Making iOS Apps Requires Specialized Knowledge

Page 97: From iOS to Distributed Systems

@micheletitolo

Rooted In Fundamental Concepts

Page 98: From iOS to Distributed Systems

@micheletitolo

Different Tools

Page 99: From iOS to Distributed Systems

@micheletitolo

You Know More Than You Think 🎉

Page 100: From iOS to Distributed Systems

Thank You@micheletitolo

[email protected]

Page 101: From iOS to Distributed Systems

@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


Recommended