Slide 1

Slide 1 text

powered by Future proofing your iOS apps

Slide 2

Slide 2 text

Who of you think about the application architecture before you start on a new project or feature?

Slide 3

Slide 3 text

whoami $ whois pimstolk Whois Server Version 2.0 * Software Engineer @ ING * Works on the Mobile Banking App * Like Electronics * Loves Domotica * Has to many motorbikes >>> Last update of whois database: Sun, 01 Nov 2015 16:00:16 GMT <<< For more information on this Whois status codes, please visit https://www.linkedin.com/pimstolk

Slide 4

Slide 4 text

ING and Team

Slide 5

Slide 5 text

Lets go back to 2010 • Start of Mobile Banking • Focusing on the iPhone

Slide 6

Slide 6 text

The iPad • Last minute decision • Focus only on iPhone • Hire extra people to meet the deadline

Slide 7

Slide 7 text

As time went by…. • We added loads of universal new features • IS_PAD()

Slide 8

Slide 8 text

A new programming language • Adopt Swift into our code • Huge Objective-c codebase • SourceKit no taylor swift jokes no taylor swift jokes

Slide 9

Slide 9 text

New Stuff • Apple Watch • Notification Center Widget • AppleTV

Slide 10

Slide 10 text

We were not ready

Slide 11

Slide 11 text

The problem Reuse of code

Slide 12

Slide 12 text

App Stats • Approaching the 1 million lines of code. • More then 40 different developers > more then 40000 hours of coding. • More then 25500 commits • Around since of iOS3 • autorelease retain • Introduction of ARC • Nib/Xibs/Storyboard/Sizeclasses/NSURLConnection/ SplitViewController/ and so much more • More then 2.000.000 active users

Slide 13

Slide 13 text

Multiple solutions Don’t Repeat Yourself

Slide 14

Slide 14 text

Red or the blue pill?

Slide 15

Slide 15 text

Different Targets • Link all the files to different targets • Reusable classes

Slide 16

Slide 16 text

Different Targets • Link all the files to different targets • Reusable classes WRONG!!!

Slide 17

Slide 17 text

Different Targets • Not Scalable • No clear overview of what is going on • Easy to break the build

Slide 18

Slide 18 text

Dynamic framework • Easy to work on in a big team • Support Swift • No need to relink when updates • Final Linked Image INGFoundation INGFoundation.framework BalanceFetcher BalanceFetcher.framework CryptorKit CryptorKit.framework Sub projects ING INGFoundation.framework BalanceFetcher.framework CryptorKit.framework ING Project

Slide 19

Slide 19 text

Dynamic framework • Versioning • Testing • Separate out the UI

Slide 20

Slide 20 text

Challenges • Drop iOS7 • #import problem • Keep delivering features

Slide 21

Slide 21 text

Things still to figure out • Inter-framework communications • Who does the communication? • Who owns the data? • How do you navigate from screen to screen.

Slide 22

Slide 22 text

The future of our app • Replace Incrementally • Modular • Functional

Slide 23

Slide 23 text

Wrap up • ING Mobile Banking Journey • Growing number of devices with different purposes • How to deal with the scalability of your application • Implementation of dynamic frameworks

Slide 24

Slide 24 text

Questions?

Slide 25

Slide 25 text

We Are Hiring!