What’s New in Server-Side Swift?

A look at the talks and presentations at ServerSide.swift 2019
Andrea Scuderi - 11/6/19

The panel discussion @ ServerSide.swift 2019 — Photo Andrea Scuderi

Last week, I had the privilege to be at the two-days ServerSide.swift conference 2019, held in the beautiful Danish capital, Copenhagen.

The conference worked as a fantastic space to gather people from all over the world with a passion for Swift, to share ideas, practices, innovations, and tools around SwiftLang on server-side.

The event was organized in the inspiring building of Blox, the Danish Architecture Centre and the conference was surrounded by the exhibition of the Danish Architect Bjarke Ingels.

Although it might seem unusual for some of you to celebrate a technical conference in an architecture center, I actually found it fascinating as it was a reminder that we are architects too, in a different way, as our art is writing software, but architects nonetheless.

Bjarke Ingels exhibition at DAC — Photo Andrea ScuderiCopenhagen sight from BLOX DAC — Photo Andrea Scuderi

The objective of the conference was to learn and share a number of different related topics with those who, like me, have a true passion for server-side Swift.

It has also shown the incredible opportunity available for Swift developers in the back-end panorama. The new swiftNIO 2 and the async-http-client have opened plenty of possibilities for Swift in the back end.

In this article, you will find a short and sweet summary of the most relevant talks and key takeaways I brought home from each of them.

My objective is to give you a taste of what the conference was, and if you are curious like me, it might even work as a starting point to get involved in the fascinating server-side Swift world.

For those new to the topic, server-side Swift means the use of the Swift language, open-sourced by Apple in 2015, to develop server applications based not only on macOS but also on Linux.


SSWG — Swift Server Work Group

Talk by Logan Wright, co-founder at Vapor.

The Swift Server Work Group is an independent steering group with the goal to eventually recommend libraries and tools for server application development with Swift.

Logan Wright at Vapor — Photo Andrea Scuderi

The incubation process was explained at the conference, revealing the below tools, available for the community.

Swift NIO: Event-driven network application framework for high-performance protocol servers and clients, non-blocking.

  • Logging API: A logging API for Swift.
  • Metrics API: A metrics API for Swift.
  • PostgresNIO: Non-blocking, event-driven Swift client for PostgreSQL.
  • Redis Client: Non-blocking, event-driven Swift client for Redis.
  • HTTP client: HTTP client library built on SwiftNIO.
  • APNS Client: An HTTP/2 APNS library built on swift-nio.
  • Statsd Client: Metrics back end for swift-metrics that uses the statsd protocol.
  • SwiftPrometheus: Client-side Prometheus library in Swift.

In particular, the Swift NIO 2.0 framework has reached the graduated status, meaning that it:

  • Adopts all SSWG-graduation requirements.
  • Has committers from at least two organizations.
  • Receives a supermajority vote from the SSWG to move to graduation stage.

The work of Swift NIO development is sustained by Apple and opened plenty of opportunity for server-side SDKs.

Cory Benfield at Apple — Photo Andrea ScuderiJohannes Weiss at Apple — Photo Andrea Scuderi

Very interesting insight into Building State Machines in Swift by Cory Benfield from Apple, used to implement the SwiftNIO and Testing SwiftNIO Systems by Johannes Weiss from Apple.

It’s strongly recommended to study the implementation of SwiftNIO.


Static Site Generation in Swift

By John Sundell.

Next on my list is John Sundell’s talk on how he has developed his blog in Swift without using JavaScript.

He used his provocative disclaimer “Generated using Swift. 100% JavaScript-free”, explaining that removing JavaScript helped his blog with SEO. He presented very elegant code with a hot-reloading live demo and he anticipated that the tool will be available open-source by the end of the year.

The tool is composed of three packages called: Ink, Plot, Publish.

John Sundell — Photo Andrea Scuderi

Kitura

By Ian Partrige from IBM.

Moving onto frameworks, there was a talk about Kitura, a web framework and web server that is created for web services written in Swift.

The evolution of the project was presented, explaining that the tool fully supports SwiftNIO 2.0 since version 2.7. A big improvement comes with version 2.9 with OpenAPI support.

A new tool called Appsody allows for the deployment of Kitura solutions with Kubernetes using Prometheus and Grafana for the metrics.

A very good tutorial has been released.

Ian Partridge at IBM— Photo Andrea Scuderi

Vapor

Vapor, the well-known server-side Swift web framework, has introduced, in the 4.0 version, support for SwiftNIO 2.0 and the HTTP/2 protocol. A lot of presentations around Vapor and how it has been used in production:

Building Microservices by Ralph Küpper from Skelpo and Resilient Micro-Services with Vapor by Caleb Kleveter from Skelpo on how to design microservices with Vapor.

Ralph Küpper @ Skelpo — Photo Andrea Scuderi

Let’s Go Serverless with Swift using Vapor by Timirah James from Cloudinary. A tutorial is available.

Timirah James @ Cloudinary — Photo Andrea Scuderi

Getting Started with Vapor by the Vapor co-founder, Tanner Nelson.

Swift development on Linux by Jonas Schwartz.

A very passionate talk on using Linux as development platform.

Jonas Schwartz — Photo Andrea Scuderi

gRPC

Talk by Daniel Alm from TimingApp.

This talk on Supercharging your Web APIs with gRPC introduced the open-source gRPC, a messaging system based on Google’s internal API architecture.

Daniel Alm from TimingApp — Photo Andrea Scuderi

MongoDB

Talk by Kaitlin Mahar from MongoDB.

Very interesting insight into the commitment of MongoDB in creating and supporting the Swift-MongoDB Client: Maintaining a Library in a Swiftly Moving Ecosystem.

Kaitlin Mahar from MongoDB — Photo Andrea Scuderi

AWSSDKSwift

Talk by Joe Smith from Slack.

This talk about Fluently NoSQL: Creating FluentDynamoDB revealed the AWSSDKSwift, an open-source, community-maintained framework for interacting with Amazon Web Services and the implementation of FluentDynamoDB.

AWSSDKSwift allows you to consume AWS services from Swift.

Joe Smith from Slack — Photo Andrea Scuderi

SmokeFramework

Talk by Simon Pilkington from Amazon Web Services.

A light-weight server-side service framework written in the Swift programming language.

In Building the next version of the Smoke Framework, it was explained how the tool can generate the code from a Swagger/OpenAPI definition and the evolution of the framework, now supporting SwiftNIO 2.

Simon Pilkington from Amazon Web Services — Photo Andrea Scuderi

Server-Side Swift in Production

Plenty of use cases in production were described while talking with all the participants. I found the following presentations very relevant:

How we Vapor-ized our Mac app by Matias Piipari from ManuscriptsApp.

Matias Piipari @ ManuscriptsApp — Photo Andrea Scuderi

Full stack Swift development: how and why by Ivan Andriollo from EqualExpertsGermany.

Ivan Andriollo from EqualExperts Germany — Photo Andrea Scuderi

Building high-tech robots with Swift — a story from the front lines by Gerwin de Haan and Mathieu Barnachon from StyleShoots.

Gerwin de Haan & Mathieu Barnachon @ StyleShoots — Photo Andrea Scuderi

Breaking into tech by Heidi Hermann from NodesAgency.

Heidi Hermann fromNodesAgency — Photo Andrea Scuderi

My tool to run AWS Lambda in Swift, Swift-Sprinter was mentioned at the panel discussion. The tool, by using other libraries such as AWSSDKSwift, SwiftNIO 2, and HTTPClient, allows you to use serverless architecture on AWS.

I’ll not reveal the full content of the panel discussion as the recording will be available soon.


Conclusion

The Swift ecosystem on server-side is growing very fast and it starts to be appealing to innovators and new production projects.

The enthusiasm and the competence of the people involved in developing the tools are very high and given the references of the Swift community in open-source, we can bet it will grow more and more in the immediate future.

A big thanks to all the organizers, Martin J. Lasek, Tim Condon, Steffen D. Sommer and Olivia Lippmanm who have excelled in the event organization. See you next year!

Tagged with: Swift Server-Side Vapor