Belajar Swift - Cross-platform & Server-side Swift
Episode 19 of 23

Belajar Swift - Cross-platform & Server-side Swift

Episode ini membawa Swift keluar dari ekosistem Apple: pengenalan server-side Swift dengan Vapor, Kitura, dan SwiftNIO, perbandingan use case dengan platform lain, package Swift yang lintas platform, serta menjalankan Swift di Linux dan Docker untuk produksi.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

Sejak Swift menjadi open source pada 2015, bahasanya tidak lagi milik Apple semata. Episode 19 membahas cross-platform dan server-side Swift: memakai Swift untuk backend dengan framework seperti Vapor dan SwiftNIO, menjalankannya di Linux dan Docker, serta menempatkannya pada use case yang tepat.

Satu bahasa untuk client dan server membawa keuntungan nyata: model data dan logika bisnis bisa dibagikan, dan developer tidak perlu pindah mental antar bahasa. Bagi kalian yang sudah menguasai Swift, ini adalah superpower tambahan.

Framework Server-side Swift

Vapor

Vapor adalah framework web paling populer untuk Swift, menawarkan routing, middleware, template, dan integrasi database dalam satu ekosistem. Konsepnya mirip Express di Node.js atau Gin di Go:

Route sederhana di Vapor
import Vapor
 
func routes(_ app: Application) throws {
    app.get("health") { req in
        return "OK"
    }
 
    app.get("halo", ":nama") { req -> String in
        let nama = req.parameters.get("nama") ?? "dunia"
        return "Halo, \(nama)!"
    }
}

app.get("halo", ":nama"){ ... } mendaftarkan handler untuk route dengan parameter dinamis. Vapor ditulis di atas SwiftNIO, sehingga mendukung concurrency tinggi dengan resource yang rendah.

SwiftNIO dan Kitura

SwiftNIO adalah framework low-level untuk networking asynchronous dan event-driven — fondasi Vapor. Ia memberikan kontrol penuh atas protokol, cocok untuk server custom dan proxy. Kitura, framework dari IBM, kini dalam mode pemeliharaan dengan migrasi yang disarankan ke Vapor atau SwiftNIO — bukti bahwa ekosistem server-side Swift terus konsolidasi.

Kapan Memilih Server-side Swift

Server-side Swift paling kuat pada use case berikut:

  • Backend untuk aplikasi iOS yang ingin berbagi model dan logika.
  • Layanan yang butuh performa tinggi dan memori rendah.
  • Tim yang seluruhnya sudah fasih Swift dan ingin satu bahasa.

Sebaliknya, jika ekosistem library dan kecepatan membangun adalah prioritas utama, bahasa dengan kematangan backend yang lebih panjang seperti Go atau Node bisa lebih cepat. Pilih berdasarkan kebutuhan tim dan project, bukan tren.

Package yang Lintas Platform

Kekuatan utama satu bahasa adalah package lintas platform: library yang sama dipakai di aplikasi iOS dan di server. Kuncinya adalah bergantung pada API lintas platform — Foundation, SwiftNIO, dan library Vapor murni:

Package lintas platform
// swift-tools-version: 6.0
import PackageDescription
 
let package = Package(
    name: "IntiBisnis",
    platforms: [.macOS(.v13), .iOS(.v16)],
    products: [
        .library(name: "IntiBisnis", targets: ["IntiBisnis"])
    ],
    targets: [
        .target(name: "IntiBisnis")
    ]
)

platforms: [.macOS(.v13), .iOS(.v16)] mendeklarasikan platform yang didukung package. Kode di IntiBisnis memakai Foundation saja sehingga bisa berjalan di iOS dan server Linux — model domain dan validasi menjadi satu sumber kebenaran.

Menghindari Ketergantungan Khusus Apple

Agar benar-benar lintas platform, jauhi API yang hanya ada di platform Apple seperti UIKit dan Core Data di package inti. Pisahkan ke target terpisah: library inti tetap murni lintas platform, sementara integrasi spesifik platform hidup di target aplikasi.

Swift di Linux dan Docker

Toolchain di Linux

Swift berjalan penuh di Linux dengan toolchain resmi dari swift.org. Pemasangannya beragam per distribusi; setelah terinstall, semua perintah yang sudah kalian kenal bekerja sama:

Verifikasi Swift di Linux
swift --version
swift build
swift test

swift build di Linux membangun package dengan cara yang identik dengan macOS — tidak ada konfigurasi tambahan untuk portability. Ini yang membuat Swift cocok sebagai bahasa server di mesin Linux apa pun.

Container dengan Docker

Untuk deployment yang reproducible, bungkus server Swift dalam Docker image:

Dockerfile untuk Swift
FROM swift:6.0 AS builder
WORKDIR /app
COPY Package.swift Package.resolved ./
COPY Sources ./Sources
RUN swift build -c release
 
FROM swift:6.0-slim
WORKDIR /app
COPY --from=builder /app/.build/release/App /app/
EXPOSE 8080
CMD ["./App"]

FROM swift:6.0 AS builder memakai image builder resmi, dan FROM swift:6.0-slim image runtime yang lebih ramping. Build dijalankan dengan swift build -c release dan hasilnya disalin ke image runtime.

Build dan jalankan container:

Build dan jalankan container
docker build -t app-swift .
docker run -p 8080:8080 app-swift

docker build -t app-swift . membangun image dari Dockerfile, dan docker run -p 8080:8080 app-swift menjalankan server di port 8080. Container ini berjalan sama di laptop, staging, dan production — deployment yang konsisten untuk episode 20.

Info

Saat membangun image Swift, cache layer dependency dengan menyalin Package.swift dan Package.resolved sebelum source code — perubahan kode tidak akan memicu re-resolve dependency, mempercepat iterasi build.

Penutup

Inti yang harus dibawa pulang:

  • Vapor adalah framework web utama untuk server-side Swift, dibangun di atas SwiftNIO.
  • SwiftNIO memberi kontrol low-level untuk networking asynchronous.
  • Server-side Swift unggul saat tim ingin satu bahasa untuk client dan server.
  • Package lintas platform hidup dari Foundation dan API non-Apple.
  • Toolchain Swift berjalan identik di macOS dan Linux.
  • Docker dengan multi-stage build membuat deployment Swift reproducible.

Di episode 20 selanjutnya kita akan membahas deployment dan app distribution — distribusi aplikasi iOS melalui App Store, beta testing dengan TestFlight, deployment untuk macOS, watchOS, dan tvOS, serta code signing, notarization, dan release management. Karya kalian akan sampai ke pengguna!

Belajar Swift - Cross-platform & Server-side Swift | Belajar Swift