From iOS- to Vapor Developer (VaporLondon)

From iOS- to Vapor Developer (VaporLondon)

Diving into server-side Swift can seem straightforward at first if one knows the programming language, but it might be harder than you think since it involves developing on a new platform. I will walk you through my journey coming from iOS into Vapor, what challenges I faced, and which strengths I had coming from the iOS platform. I will talk about how these challenges can be overcome and I will share my experiences after working with Vapor in production for 6 months.

Talk given at a VaporLondon event (https://www.meetup.com/VaporLondon/events/243769172/) on the 30th of October 2017.

9993186221ec65f6f10db0dc9cff7c07?s=128

Steffen D. Sommer

October 30, 2017
Tweet

Transcript

  1. From iOS- to Vapor developer

  2. None
  3. None
  4. None
  5. Swi$ ❤ Linux

  6. None
  7. Kitura Perfect Vapor Zewo

  8. Pros • Swi$

  9. Pros • Swi% • Fast

  10. Pros • Swi% • Fast • Code share

  11. Pros • Swi% • Fast • Code share • More

    fullstack developers
  12. Pros • Swi% • Fast • Code share • More

    fullstack developers • Xcode
  13. Pros • Swi% • Fast • Code share • More

    fullstack developers • Xcode • Big community
  14. Cons • New language

  15. Cons • New language • New package manager

  16. Cons • New language • New package manager • New

    framework
  17. Cons • New language • New package manager • New

    framework • Xcode
  18. Cons • New language • New package manager • New

    framework • Xcode • Hos$ng
  19. Cons • New language • New package manager • New

    framework • Xcode • Hos6ng • Lack of libraries
  20. Programming languages in the making • JavaScript (1995): 22 years

    • Java (1996): 21 years • Ruby (1996): 21 years • Swi$ (2014): 3 years
  21. Web frameworks in the making 1 • Spring MVC (2002):

    15 years • Ruby on Rails (2004): 13 years • NodeJS (2009): 8 years • Kitura/Perfect/Vapor (2016): 1 year 1 Since their version 1.0 release.
  22. The future is bright for server-side Swi/

  23. None
  24. Kitura Perfect Vapor

  25. Kitura Perfect Vapor

  26. Kitura Perfect Vapor

  27. None
  28. Hi, my name is Steffen D. Sommer !

  29. None
  30. None
  31. None
  32. None
  33. Steffen iOS

  34. Steffen ❤ iOS Swi*

  35. Swi$ as a language, not iOS as a pla/orm

  36. None
  37. None
  38. iOS != Vapor

  39. iOS != Vapor Number of users

  40. iOS - 1

  41. Vapor - Lots of users

  42. iOS != Vapor Performance

  43. iOS - Not an issue

  44. Vapor - Users do not want to wait for requests

    to return
  45. Vapor - Users do not want to wait for requests

    to return - More performance = more money
  46. iOS != Vapor Crash handling

  47. iOS - "We'll fix it in the next app update"

  48. Vapor - Fix it now

  49. iOS != Vapor Updates

  50. iOS - 2 week release cycles

  51. Vapor - Whenever we want

  52. iOS != Vapor Pla$orms

  53. iOS - One pla(orm to rule them all

  54. Vapor - macOS + Linux

  55. iOS != Vapor Foundation

  56. iOS - !

  57. Vapor - !

  58. iOS != Vapor Breaking changes in the API

  59. iOS - Good to go

  60. Vapor - Handle different versions depending on the client

  61. iOS != Vapor The Xcode project file

  62. iOS - Merge madness

  63. Vapor - .. what file?

  64. iOS != Vapor Third party frameworks

  65. iOS - Which one to pick?

  66. Vapor - Roll out your own

  67. iOS != Vapor User Interfaces

  68. iOS - Storyboards and auto layout

  69. Vapor - HTML, CSS and JavaScript

  70. iOS != Vapor Persistence

  71. iOS - Used to some extent

  72. Vapor - Used heavily

  73. iOS != Vapor Security

  74. iOS - Mostly handled by the OS

  75. Vapor - Needs to be a first class ci/zen in

    your project
  76. iOS != Vapor Consumers

  77. iOS - None

  78. Vapor - Frontend

  79. iOS != Vapor Releasing

  80. iOS - iTunes Connect

  81. Vapor - Deploying

  82. Tips to overcome these challenges

  83. Tip #1 Start repor)ng

  84. Tip #2 Setup con*nous integra*on

  85. Tip #3 Write tests

  86. Tip #4 Write documenta.on

  87. Tip #5 Learn about databases

  88. Tip #6 Consider when to use Foundation

  89. Tip #7 Use Vapor Cloud

  90. Tip #8 Use security packages

  91. Tip #9 Use a template language

  92. Tip #10 Get involved

  93. My experiences with Vapor in produc4on

  94. My experiences with Vapor in produc4on • Lots of moving

    targets (Swi2, Vapor, Vapor Cloud)
  95. My experiences with Vapor in produc4on • Lots of moving

    targets (Swi3, Vapor, Vapor Cloud) • Overhead in crea,ng and maintaining open source packages
  96. My experiences with Vapor in produc4on • Lots of moving

    targets (Swi3, Vapor, Vapor Cloud) • Overhead in crea?ng and maintaining open source packages • Lack of documenta.on
  97. My experiences with Vapor in produc4on • Lots of moving

    targets (Swi3, Vapor, Vapor Cloud) • Overhead in crea?ng and maintaining open source packages • Lack of documenta?on • Outdated resources
  98. My experiences with Vapor in produc4on • Lots of moving

    targets (Swi3, Vapor, Vapor Cloud) • Overhead in crea?ng and maintaining open source packages • Lack of documenta?on • Outdated resources • Few experts
  99. My experiences with Vapor in produc4on • Lots of moving

    targets (Swi3, Vapor, Vapor Cloud) • Overhead in crea?ng and maintaining open source packages • Lack of documenta?on • Outdated resources • Few experts • Lots of boilerplate
  100. My experiences with Vapor in produc4on • Lots of moving

    targets (Swi3, Vapor, Vapor Cloud) • Overhead in crea?ng and maintaining open source packages • Lack of documenta?on • Outdated resources • Few experts • Lots of boilerplate • Linux quirkiness
  101. How things have improved • Updates are slowing down (Swi2

    and Vapor)
  102. How things have improved • Updates are slowing down (Swi3

    and Vapor) • Vapor Cloud reached 1.0 and is stable
  103. How things have improved • Updates are slowing down (Swi3

    and Vapor) • Vapor Cloud reached 1.0 and is stable • We don't create as many open source packages anymore
  104. How things have improved • Updates are slowing down (Swi3

    and Vapor) • Vapor Cloud reached 1.0 and is stable • We don't create as many open source packages anymore • Documenta*on is improving
  105. How things have improved • Updates are slowing down (Swi3

    and Vapor) • Vapor Cloud reached 1.0 and is stable • We don't create as many open source packages anymore • DocumentaDon is improving • More and more resources
  106. How things have improved • Updates are slowing down (Swi3

    and Vapor) • Vapor Cloud reached 1.0 and is stable • We don't create as many open source packages anymore • DocumentaDon is improving • More and more resources • Bigger community - more experts
  107. How things have improved • Updates are slowing down (Swi3

    and Vapor) • Vapor Cloud reached 1.0 and is stable • We don't create as many open source packages anymore • DocumentaDon is improving • More and more resources • Bigger community - more experts • Less boilerplate
  108. How things have improved ... - Swi$ on Linux is

    more mature
  109. What it means to us • 25+ customer projects running

    in produc3on using Vapor and Vapor Cloud
  110. What it means to us • 25+ customer projects running

    in produc4on using Vapor and Vapor Cloud • 30+ open source packages created
  111. What it means to us • 25+ customer projects running

    in produc4on using Vapor and Vapor Cloud • 30+ open source packages created • Hos$ng fees are going down
  112. What it means to us • 25+ customer projects running

    in produc4on using Vapor and Vapor Cloud • 30+ open source packages created • Hos4ng fees are going down • More and more of our iOS developers starts to catch up
  113. What it means to us • 25+ customer projects running

    in produc4on using Vapor and Vapor Cloud • 30+ open source packages created • Hos4ng fees are going down • More and more of our iOS developers starts to catch up • More rapid development
  114. No major issues since we made the switch