
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.


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.

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.


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.

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.

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.

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

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.

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.

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.

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.

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.

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.

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

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

Breaking into tech by Heidi Hermann from NodesAgency.

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!