거의 10년 전 오픈소스로 공개된 Swift는 이제 안정성과 성능을 갖춘 서버용 언어로 자리 잡았습니다. 이 글에서는 실제 프로덕션 성공 사례, 언어와 도구의 발전, 활기찬 프레임워크·라이브러리 생태계, 성장하는 커뮤니티와 전용 컨퍼런스까지 Swift 서버 생태계의 현재를 살펴봅니다.
거의 10년 전, Swift가 오픈 소스로 공개되고 Linux용 공식 런타임이 출시되었습니다. 저는 거의 초창기부터 서버에서의 Swift에 관여해 왔고, 원래는 제가 정말 좋아하던 언어를 백엔드 개발에 쓰고 싶어서 시작했습니다. 그동안 Swift는 플랫폼 전반의 안정성, 커지는 생태계, 수많은 성공 사례와 함께 정말 많은 발전을 이뤘습니다. 이제는 대규모 확장이 가능한 서버 애플리케이션, 웹사이트, 람다 함수에 훌륭한 선택지로 성숙했습니다. 이 글에서는 Swift가 다음과 같은 점에서 어떻게 발전했는지 다룹니다.
지난 몇 년 사이 정말 멋진 성공 사례들이 등장하며 서버에서의 Swift의 강점을 더욱 공고히 했습니다. 수상 경력의 Things 앱은 백엔드를 Python에서 Swift로 마이그레이션한 경험을 공유했는데, 성능이 4배 향상되었고 비용은 기존의 3분의 1만 들었다고 합니다!
Apple의 Password Monitoring Service 역시 유사한 전환을 거쳐 Java에서 Swift로 마이그레이션했습니다. Swift의 뛰어난 사용성 덕분에 코드베이스가 개선되었을 뿐 아니라, 처리량 40% 증가, 하드웨어 사용량 50% 감소, 그리고 메모리 사용량은 무려 90% 감소하여 다른 워크로드를 위한 서버 용량을 확보할 수 있었습니다.
제가 Vapor를 작업하며 지켜본 바로는 서버에서 Swift를 도입하는 회사가 점점 더 많아지고 있습니다. 이제는 더 이상 Swift가 “프로덕션에 쓸 준비가 되었나요?”라는 질문을 받지 않습니다. 대신 “무엇을 할 수 있나요?”, “내 사용 사례에 Swift를 어떻게 적용하죠?”와 같은 질문만 받습니다. 정말 반가운 변화죠. 올해 열리는 서버 컨퍼런스에도 서버에서 Swift를 성공적으로 운영한 사례 발표가 다수 예정되어 있습니다.
Swift 3 이후로 Swift는 크게 성장했습니다! 언어는 서버 세계에 의해 적극 채택되었고, 어떤 경우에는 서버 세계가 변화를 주도하기도 했습니다. 네이티브 UTF-8 문자열, Codable, 키패스, 프로퍼티 래퍼는 서버 패키지에서 빠르게 채택되었습니다. Swift 동시성은 게임 체인저로, 비동기 코드 작성을 훨씬 쉽게 만들어 줬고, 거의 모든 것이 비동기인 서버 환경에서 특히 큰 도움이 됩니다! 태스크 로컬 값은 여기저기 컨텍스트를 전달하지 않고도 애플리케이션에 분산 트레이싱을 간단히 도입할 수 있게 합니다. 더 최근에는 패키지 트레이트, 빌드 플러그인, 매크로 같은 기능들이 이미 서버 라이브러리에서 채택되기 시작했고, 사용자에게 더 높은 성능과 효율의 코드를 제공하고 있습니다.
최근 몇 년 사이의 큰 변화 중 하나는 Sendable의 도입으로, 데이터 레이스 문제의 많은 경우를 제거했다는 점입니다. 이를 잘 보여주는 사례가 Vapor입니다. 과거에는 매달 한두 건씩 재현이 불가능하고 해결도 매우 어려운 데이터 레이스 크래시 이슈가 보고되곤 했습니다. Vapor가 Sendable을 도입한 이후로 데이터 레이스 크래시에 대한 보고가 단 한 건도 없습니다! 이는 Swift를 사용하면 안전한 서버 애플리케이션을 더 쉽게 작성할 수 있음을 보여줍니다.
Foundation도 큰 여정을 거쳤습니다. Linux에 완전히 별도의 구현이 존재하던 시절은 지났습니다. Swift 6부터는 Apple 플랫폼과 동일한 Foundation 코드가 Linux에서도 동작합니다. 이는 다양한 플랫폼에서 개발하기 훨씬 쉬워졌다는 뜻이죠. 덧붙여, 최근의 교차 컴파일 SDK 덕분에 macOS에서 Linux 바이너리를 아주 간단히 빌드할 수 있게 되었습니다.
Swift는 처음부터 뛰어난 C 상호 운용성을 가지고 도입되었고, 이후 C++와 Java까지 확장되어 해당 언어로 작성된 라이브러리를 통합하는 데 새로운 가능성을 열어 주었습니다. Swift Kafka 같은 패키지가 빠르게 출시될 수 있었던 것도 C나 C++의 실전 검증된 라이브러리를 적은 노력으로 활용할 수 있었기 때문입니다.
새로운 Swift–Java 상호 운용성은 Swift 프로젝트에서 기존 Java 라이브러리를 사용할 수 있게 해 주며, 대규모의 기존 Java 코드베이스를 위험한 대규모 재작성 없이 Swift로 점진적으로 이전하는 것을 가능하게 합니다. 이는 ServerSide.swift 2024에서 해당 패키지가 소개될 때도 다뤄졌습니다.
전반적으로, Swift는 서버 개발에 훌륭한 언어로 진화했습니다. 시작 튜토리얼, 언어의 장점, 서버 생태계에 대한 더 많은 정보를 확인하려면 swift.org의 Cloud Services 페이지를 살펴보세요.
서버에서의 Swift는 생태계가 없으면 성립할 수 없습니다. 지난 10년 동안 Vapor는 계속 진화하고 성장해 왔고, Hummingbird 같은 최신 프레임워크는 현대 Swift 기능을 적극 활용하고 있습니다. 그리고 각종 API, 라이브러리, 데이터베이스를 지원하는 다양한 패키지들이 쏟아져 나왔습니다. 저는 사람들이 서버 환경에서 Swift를 기상천외하면서도 멋진 방식으로 활용하는 모습과, 커뮤니티가 생태계의 많은 부분을 주도해 온 점에 늘 감탄합니다.
areweserveryet.org 웹사이트에는 다양한 패키지 목록이 잘 정리되어 있고, Swift Package Index는 제출된 모든 패키지에 대한 빌드 결과를 제공하여 누구나 패키지의 플랫폼 지원 여부를 빠르게 확인할 수 있게 해 주며, Linux에서의 패키지 생태계를 견인하는 데 핵심적인 역할을 해 왔습니다. 서버 세계에서 Swift의 수용이 확대되는 가운데, 최근 발표된 Swift용 Valkey 소식은 서버에서 Swift를 일급 시민으로 만들기 위한 커뮤니티의 노력에 대한 증거라 할 수 있습니다.
재미있는 추가 사실 — Swift Package Index 자체도 서버에서 Swift로 구축되었고, 가장 큰 오픈 소스 Vapor 애플리케이션 중 하나입니다!
Swift는 관측성 생태계도 멋지게 구축하고 있습니다. 로깅, 메트릭, 트레이싱이라는 관측성의 세 기둥 각각에 대한 API 패키지를 제공하여, 원하는 어떤 백엔드든 꽂아 쓸 수 있고 의존 트리의 모든 패키지가 함께 동작합니다. 그리고 성장하는 백엔드 목록에는 Prometheus, Statsd, Open Telemetry 같은 인기 오픈 소스 프로젝트에 대한 옵션도 포함되어 있습니다. 서버 생태계 전반이 이러한 코어 패키지를 모두 채택하도록 힘써 왔기 때문에, 어떤 패키지를 선택하든 애플리케이션의 관측성 구현에서 호환성 문제를 걱정하지 않아도 됩니다.
생태계는 Swift 기술의 얼리 어답터 역할을 계속하고 있습니다. 올해 초 소개된 gRPC Swift 2는 1급 동시성 지원을 도입했으며, 구조적 동시성을 최대한 활용하는 차세대 서버 패키지들의 중요한 하이라이트였습니다. 이는 Swift Server Workgroup의 큰 주도로 이뤄졌으며, 워킹그룹은 생태계가 상호 잘 맞물려 동작하도록 보장하는 한편, 언어와 도구의 개선도 추진하고 있습니다. 예를 들어 최근 채택된 Swiftly CLI 도구는 원래 워킹그룹에서 개발한 것입니다.
지난 10년 동안 커뮤니티는 점점 더 빠른 속도로 성장해 왔고, 앞으로의 10년은 더 흥미진진해지며 더 큰 커뮤니티를 보게 되리라는 확신이 듭니다.
전용 컨퍼런스도 있습니다! 제가 주최하는 ServerSide.swift 컨퍼런스는 올해 런던에서 5회째를 맞습니다. 최근 공개된 프로그램은 gRPC, 컨테이너, 동시성, 그리고 성공 사례 등 놀라운 발표들로 가득합니다. 지난 행사들에서도 Things의 제작사인 Cultured Code가 발표한 서버에서 Swift를 활용한 성공 사례처럼 정말 훌륭한 발표들이 있었습니다. 그 밖의 눈에 띄는 세션으로는 OpenAPI 제너레이터, 새로운 Swift Foundation 발표, 구조적 동시성에 대한 언어 기술 발표 등이 있습니다.
올해 컨퍼런스 티켓은 웹사이트에서 여전히 구매할 수 있습니다. 서버에서 Swift를 시작하는 방법을 알려 주는 전문가 워크숍 등 워크숍 데이도 준비되어 있어, 더 배우고 싶은 분들께 큰 기회가 될 것입니다.
서버에서의 Swift 채택은 안전하고 고성능 백엔드라는 장점을 언어가 스스로 증명하면서 계속 늘고 있습니다. 생태계도 확장 중이며, 더 많은 프레임워크, 라이브러리, 도구가 개발되어 점점 넓어지는 서버 애플리케이션 범위를 지원하고 있습니다. 시작한 지 고작 10년밖에 안 되었다는 것이 믿기지 않고, 앞으로의 10년 동안 서버에서의 Swift가 어떻게 성장할지 무척 기대됩니다!
2025년 9월 15일
Swift 6.2를 발표하게 되어 기쁩니다. 이번 릴리스는 모든 Swift 개발자를 대상으로..