View
1.302
Download
0
Category
Preview:
Citation preview
@Chris__Bailey | Swift@IBM #swiftsummit
Swift @ IBM Engineering TeamChris Bailey(@Chris__Bailey)
November 7th, 2016
Pushing Swift to the Server
@Chris__Bailey | Swift@IBM #swiftsummit
Why Swift on the Server?
@Chris__Bailey | Swift@IBM #swiftsummit
Performant Applications
4.0 4.315.8
134.2
0.0
20.0
40.0
60.0
80.0
100.0
120.0
Dur
atio
n (s
) (lo
wer
is b
ette
r)
http://benchmarksgame.alioth.debian.org/u64q/performance.php?test=spectralnorm
@Chris__Bailey | Swift@IBM #swiftsummit
15.0
32.2
25.3
54.6
0.0
10.0
20.0
30.0
40.0
50.0
60.0
Low MemoryM
emor
y U
sage
(MB)
(lo
wer
is b
ette
r)
http://benchmarksgame.alioth.debian.org/u64q/performance.php?test=spectralnorm
@Chris__Bailey | Swift@IBM #swiftsummit
Swift is ideal for Cloud
@Chris__Bailey | Swift@IBM #swiftsummit@Chris__Bailey | Swift@IBM #swiftsummit
@Chris__Bailey | Swift@IBM #swiftsummit
MARS
@Chris__Bailey | Swift@IBM #swiftsummit
@Chris__Bailey | Swift@IBM #swiftsummit
1998 Mars Climate ORbiteR
@Chris__Bailey | Swift@IBM #swiftsummit
@Chris__Bailey | Swift@IBM #swiftsummit
DeC 11: Launch from Cape Canaveral1998 Mars Climate ORbiteR
@Chris__Bailey | Swift@IBM #swiftsummit
@Chris__Bailey | Swift@IBM #swiftsummit
1998 Mars Climate ORbiteR DeC 11: Launch from Cape Canaveral
@Chris__Bailey | Swift@IBM #swiftsummit
@Chris__Bailey | Swift@IBM #swiftsummit
1999 Mars Climate ORbiteR Sept 23rd: Lost Radio Contact
@Chris__Bailey | Swift@IBM #swiftsummit
@Chris__Bailey | Swift@IBM #swiftsummit
1999 Mars Climate ORbiteR Sept 25th: Mission Declared a LOSS
@Chris__Bailey | Swift@IBM #swiftsummit
@Chris__Bailey | Swift@IBM #swiftsummit
@Chris__Bailey | Swift@IBM #swiftsummit
PLANNED TRAJECTORY
@Chris__Bailey | Swift@IBM #swiftsummit
PLANNED TRAJECTORY
TCM-4
@Chris__Bailey | Swift@IBM #swiftsummit
PLANNED TRAJECTORY
TCM-4
@Chris__Bailey | Swift@IBM #swiftsummit
PLANNED TRAJECTORY
TCM-4
226 KM
@Chris__Bailey | Swift@IBM #swiftsummit
PLANNED TRAJECTORY
TCM-4
ACTUAL TRAJECTORY
226 KM
@Chris__Bailey | Swift@IBM #swiftsummit
PLANNED TRAJECTORY
TCM-4
ACTUAL TRAJECTORY
226 KM
TCM-4
@Chris__Bailey | Swift@IBM #swiftsummit
PLANNED TRAJECTORY
TCM-4
TCM-4 ACTUAL TRAJECTORY
226 KM
@Chris__Bailey | Swift@IBM #swiftsummit
PLANNED TRAJECTORY
TCM-4
ACTUAL TRAJECTORY
226 KM
57 KM
TCM-4
@Chris__Bailey | Swift@IBM #swiftsummit@Chris__Bailey | Swift@IBM #swiftsummit
@Chris__Bailey | Swift@IBM #swiftsummit
Lockheed MartinGround SoftwareNasa Jet Propulsion Laboratory
Trajectory Calculation Software
@Chris__Bailey | Swift@IBM #swiftsummit
Lockheed MartinGround Software
Nasa Jet Propulsion Laboratory Trajectory Calculation Software
SIS(Software Interface Specification)
Total Impulse
pounds-seconds (United States Customary Unit)
newton-seconds (International System of Units)
14.45
@Chris__Bailey | Swift@IBM #swiftsummit
“Software interop is hard”
@Chris__Bailey | Swift@IBM #swiftsummit
@Chris__Bailey | Swift@IBM #swiftsummit
“Software interop is hard” —Rocket Scientists
@Chris__Bailey | Swift@IBM #swiftsummit
@Chris__Bailey | Swift@IBM #swiftsummit
Siloed Development
APISpecification
Collaborate on API
Collaborate on API
Create
Deploy
Create
Deploy
@Chris__Bailey | Swift@IBM #swiftsummit
Collaborate on Project
Collaborate on Project
Collaborative Development
Deploy DeployGenerate
APISpecification
@Chris__Bailey | Swift@IBM #swiftsummit
Swift DevelopmentCollaborate on Swift Project
Deploy DeployGenerate
Swagger APISpecification
Collaborate on Swift Project
@Chris__Bailey | Swift@IBM #swiftsummit
Collaboratively Building Applications
@Chris__Bailey | Swift@IBM #swiftsummit
December 3rd, 2015
Apache 2.0 Software Licence
Swift Everywhere
@Chris__Bailey | Swift@IBM #swiftsummit
Kitura: A Swift Web Framework and HTTP Server
http://kitura.io
@Chris__Bailey | Swift@IBM #swiftsummit
Server / Cloud Deployment Server / Cloud Deployment Apple Client Deployment
Client Facing App Client-Specific
Libraries
Kitura Web Framework
Swift
StandardLibrary Foundation Dispatch
Swift
StandardLibrary Foundation Dispatch
Net
wor
king
Sec
urity
HTT
P P
arsi
ng
Application Libraries
Application Specific Cloud Services
Server-Specific LibrariesApplication Libraries
Consistent Runtime across Clients/Servers
Kitura-based Server !Built with Dispatch & Foundation
Swift
“Server” APIs
Application Libraries
@Chris__Bailey | Swift@IBM #swiftsummit
Swift on the Server is Real
Swift 3.0 + Kitura 1.0
@Chris__Bailey | Swift@IBM #swiftsummit
Let’s take a tour…
@Chris__Bailey | Swift@IBM #swiftsummit
Create an ApplicationFirst, create a new project directory:$ mkdir myFirstProject
Next, create a new Swift project using the Swift Package Manager.$ cd myFirstProject$ swift package init —-type executable
In Package.swift, add Kitura as a dependency for your project.import PackageDescription
let package = Package( name: "myFirstProject", dependencies: [ .Package(url: "https://github.com/IBM-Swift/Kitura.git", majorVersion: 1, minor: 0) ])
@Chris__Bailey | Swift@IBM #swiftsummit
Create an ApplicationIn Sources/main.swift, add the following code.import Kitura
// Create a new router let router = Router()
// Handle HTTP GET requests to / router.get("/") { request, response, next in response.send("Hello, World!") next() }
// Add an HTTP server and connect it to the router Kitura.addHTTPServer(onPort: 8090, with: router)
// Start the Kitura runloop (this call never returns) Kitura.run()
@Chris__Bailey | Swift@IBM #swiftsummit
Deploy an Application
Open your browser at http://localhost:8090
Compile and run your application:$ swift build$ .build/debug/myFirstProject
@Chris__Bailey | Swift@IBM #swiftsummit
Demo
@Chris__Bailey | Swift@IBM #swiftsummit
Use Services
@Chris__Bailey | Swift@IBM #swiftsummit
Deploy to Cloud
$ docker pull ibmcom/kitura-ubuntu:latest $ git clone https://github.com/IBM-Swift/Kitura-Starter-Bluemix
@Chris__Bailey | Swift@IBM #swiftsummit
Using Cloud Tools
http://cloudtools.bluemix.net
• Deployment made easy
• Clone, code, push
• Demo projects to try
@Chris__Bailey | Swift@IBM #swiftsummit
http://www.kitura.io/en/resources/tutorials.html
Tutorials• Creating a Todo-List Backend• Adding Authentication with Kitura-Credentials• Adding Sessions with Kitura-Session• Using Templating Engines with Kitura• Enabling SSL/TLS on Kitura• Using FastCGI with Kitura• Special Types of Response Handlers• Parsing Requests
@Chris__Bailey | Swift@IBM #swiftsummit
Examples
Blitter Social Networkhttps://github.com/ibm-swift/blitter
BluePic Applicationhttps://github.com/ibm-swift/bluepic
@Chris__Bailey | Swift@IBM #swiftsummit
Discover Try
Build
IBM Cloud Tools
Package Catalog Swift Sandbox
Kitura + Packages
DeploySwift @ IBMhttps://developer.ibm.com/swift/
@Chris__Bailey | Swift@IBM #swiftsummit
Swift
@Chris__Bailey | Swift@IBM #swiftsummit
Swift For safer missions to Mars
@Chris__Bailey | Swift@IBM #swiftsummit
Recommended