Slide 1

Slide 1 text

Scaing iOS Development Vidu Pirathaparajah Piet Brauer XING AG

Slide 2

Slide 2 text

What does scaling mean?

Slide 3

Slide 3 text

Adding more people?

Slide 4

Slide 4 text

Scaling Architecture

Slide 5

Slide 5 text

Architecture should be about enabling small teams to work on small components » Mike Hadlow

Slide 6

Slide 6 text

Many Feature Teams

Slide 7

Slide 7 text

4 + 1 iOS Engineers » Matthias » Marc » Piet » Vidu » Stefan (Sabbatical)

Slide 8

Slide 8 text

Code base ~90.000 LOC

Slide 9

Slide 9 text

Feature Development Work flow

Slide 10

Slide 10 text

Work flow of building a new Feature

Slide 11

Slide 11 text

Bottleneck

Slide 12

Slide 12 text

Our Vision

Slide 13

Slide 13 text

Baby steps

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

1.

Slide 16

Slide 16 text

2.

Slide 17

Slide 17 text

3.

Slide 18

Slide 18 text

How Infrastructure, Cococapods and pain

Slide 19

Slide 19 text

CocoaPods » own specs repo » 20 Pods » own pod-template

Slide 20

Slide 20 text

Rake tasks rake bootstrap # Installs dependencies rake ci # Runs everything needed for the ci server rake deploy # Deploy Beta rake release # Release a new version of the Pod rake spec # Runs the specs rake test:listen # Listens to file events and runs the tests rake test:setup_xing # Reset and setup simulator settings

Slide 21

Slide 21 text

Jenkins » running unit tests » running KIF tests » Deploying Alpha/Beta

Slide 22

Slide 22 text

Sandboxes

Slide 23

Slide 23 text

XING internal App Store

Slide 24

Slide 24 text

Pod template Creating `CocoaHeadsBerlin` Pod Configuring template To learn more about the template see: `https://github.com/xing/pod-template.git` To learn more about creating a new pod, see: `http://guides.cocoapods.org/making/making-a-cocoapod`

Slide 25

Slide 25 text

Pain

Slide 26

Slide 26 text

Versioning » Semantic versioning » updating minor versions and all dependent pods » Releasing a new version of a pod can break all others

Slide 27

Slide 27 text

Data Model » one Core Data file » pods highly depend on it » Updating it is a mess » Updating all pods that depend on it much more

Slide 28

Slide 28 text

Jenkins » setup Jenkins builds is time consuming » build forks on Jenkins is not possible yet

Slide 29

Slide 29 text

Whats with a solution?

Slide 30

Slide 30 text

See you at UIKonf 2014 and discover our solutions

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

Get in touch with us: @vimacs && @pietbrauer xing.to/vidu && xing.to/PietBrauer