Swift & Bluepic Oct 25Th, 2017

Swift & Bluepic Oct 25Th, 2017

Swift & BluePic Oct 25th, 2017 Ricardo Olivieri 1 Agenda • Swift introduction • Benefits • Modern language constructs • Platforms • Why Swift on the server? • Provisioning Swift applications to the IBM Cloud • The IBM Cloud Buildpack for Swift • How to use the IBM Cloud Buildpack for Swift? • What is Kitura? • What is BluePic? • Architecture 2 • IBM Cloud Capabilities • Demo! • Resources Swift introduction • Before Swift, Objective-C was the programming language for developing iOS and macOS apps. • Swift provides a much simpler syntax than Objective-C. • As soon as Swift was released, developers started sharing their preference of Swift over Objective-C, given its support of many modern programming conventions (e.g. tuples, generics, closures, type inference, and optionals). 3 Swift introduction Objective-C: Person *person = ...; NSMutableString *description = [[NSMutableString alloc] init]; [description appendFormat:@"%@ is %i years old.", person.name, person.age]; if (person.employer) { [description appendFormat:@" They work for %@.", person.employer]; } else { [description appendString:@" They are unemployed."]; } Swift: var person = … var description = "" description += "\(person.name) is \(person.age) years old." if let employer = person.employer { description += " They work for \(employer)." } else { description += " They are unemployed." } 4 Swift introduction • Type inference • Optionals • Generics • Tuples • Extensions • … 5 The Case for Swift, a Powerful, Intuitive and Uncompromising Programming Language 600% One of the most loved Increase in request for 36K languages Swift Skills Stars in Github (source: Stack Overflow) (source: Toptal) • Modern programming language constructs • A vibrant developer base • Error detection at compile, not run time • No performance compromises for productivity • Easier code re-engineering 6 It’s more than hype! http://www.timqian.com/star-history/ #apple/swift&ruby/ruby&scala/scala&aspnet/Home&golang/go&nodejs/node&rust-lang/rust 7 Platforms where you can run Swift today! 8 Why Swift on the Server? 9 Full stack developer & professional growth NodeJS Attracted Web-based Developers to the Cloud Hybrid / Web App Development >13 Million Apple Swift on the Server can attract Developers Swift-based Developers ~100 Apple/IBM Enterprise Solutions and Assets Swift App Development 10 > y o l p e D > l d i u B > t s e T > p o l e v e D Backend Services 11 Big Data and Cognitive Application mid-tier Services Logical Extension of AppWeb Framework Host Background App Logic, Filter/StageWeb DataMiddleware (Sessions, Credentials) Standup Web APIs for App Host Web version of App (static file serving) • • Persistence: Databases • Integration: MQ, On-prem APIs Connect to other Services for: Notifications: Push, SMS, Email • Cognitive: Watson • Caching: Redis • • • D D Application mid-tier layer e e v v D e e e l l v o Frontend Applications o e p p l o p > > > > > > T T e e s s T t t e s t > > > > > > B B u u i i B l l u d d i l d > > > > > > D D e e p p D l l e o o p y y l o > > y > > > > Provisioning Swift Applications On The IBM Cloud 12 What is the IBM Cloud Buildpack for Swift? • Cloud Foundry buildpacks provide the runtime required to execute your applications on the Bluemix cloud. • There are many Cloud Foundry buildpacks available (e.g. java_buildpack, ruby_buildpack, nodejs_buildpack) on the IBM Cloud. • The IBM Cloud buildpack for Swift is a new addition to the family of buildpacks on the IBM Cloud. • Swift applications that follow the structure and conventions required by the Swift Package Manager can now be provisioned on the IBM Cloud. • Implementing back-end components and micro services in the Swift language that execute on the IBM Cloud is entirely feasible today. 13 What are the main execution phases for a buildpack? • When an application is pushed to the IBM Cloud, buildpacks are responsible for the execution of three main phases: • Detection – The buildpack lets the Cloud Foundry platform whether it can provision the application. • Compilation – The buildpack compiles/builds the application; determines what tools should be used for linking and building the app; environment variables are updated as well as needed. • Release – The buildpack provides metadata on how to execute the application (though this is more useful for containerized environments such as JEE). • Once the application is provisioned on the IBM Cloud, the buildpack is completely out of the picture! 14 How to use the IBM Cloud Buildpack for Swift • Swift 4 applications that follow the conventions and structure required by the Swift Package Manager can be pushed to Bluemix. • Use the IBM Cloud command line to get list of installed buildpacks • bx cf buildpacks • Use bx app push to provision your app on Bluemix • Use the bx app logs command to get a dump of the Cloud Foundry logs: • bx app logs Kitura-Starter –recent • Enable debugging to obtain more info during the provisioning phase of the Swift application: • bx cf set-env <app_name> BP_DEBUG true 15 • Access your application using the Bluemix web console Kitura 16 Build Fast, Modern Microservices in Swift Introducing Kitura Write Server Applications in Swift • Empower native mobile developers to extend their development skills to the Cloud. • Deliver micro-services faster with Kitura’s easy-to-learn, lightweight, modular architecture. Integrate Apps with Backend Services • Leverage a collection of pre-built enterprise connectors including Cloudant, Redis, and Object Storage. A fast, simple to use web • Build with greater confidence through Swift’s technical framework for Server-Side underpinnings, including concurrency, type-safety, and low Swift memory profile. http://github.com/ibm-swift/kitura 17 BluePic 18 What is BluePic? • A sample application that allows you to take photos and share them with other BluePic users. • A cognitive engine enhances images uploaded by users: • Adds weather information (based on the location where the image was uploaded from). • Tags images based on their content. • Push notifications are sent to users once images have been augmented. • BluePic uses Swift for the implementation of all its components: • iOS application • Web server • Cloud functions 19 Architecture 20 IBM Cloud Capabilities App ID Push Watson Visual Notifications Recognition Cloud Functions 21 BluePic Demo! 22 Resources • Swift.org – https://swift.org/ • Swift@IBM Development Center – https://developer.ibm.com/swift/ • Buildpack for Swift – https://github.com/IBM-Swift/swift-buildpack/ • Docker images – https://github.com/IBM-Swift/swift-ubuntu-docker • Kitura Starter – https://github.com/IBM-Bluemix/Kitura-Starter • Cloud Foundry – https:// docs.cloudfoundry.org/devguide/deploy-apps/manifest.html#minimal-manifest • Introducing BluePic - https://developer.ibm.com/code/2016/12/15/introducing-bluepic/ • Transition to Server-Side Swift with BluePic - https ://developer.ibm.com/swift/2016/11/15/transition-to-server-side-swift-with-bluepic/ • BluePic journey - https://developer.ibm.com/code/journey/apply-cognitive-to-mobile-images-on- the-go/ • Get answers on our Slack organization: swift-at-ibm.slack.com 23 Questions? 24 25 Backup 26 Using Docker for Development & Testing • The ibmcom/swift-ubuntu image contains the Swift 3.0.2 RELEASE toolchain as well as the dependencies for running Kitura-based applications. • Our development team uses the ibmcom/swift-ubuntu image for development and testing of Swift 3 applications on the Linux Ubuntu (v14.04) operating system: • docker pull ibmcom/swift-ubuntu:latest • You can mount a folder on your host to your Docker container using the following command: • docker run -i -t -v <absolute path to the swift package>:/root/<swift package name> ibmcom/swift-ubuntu:latest • Exposing your server's port running in a Docker container to the host system (e.g. macOS) is quite easy using the latest version of Docker: 27 • docker run -p <host port>:<container port> [additional options] <image name>.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    27 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us