Swift server side header

Swift 서버 사이드 프레임워크 비교 분석

Swift 서버 사이드 프레임워크라는 주제로 지난 Swift Korea Meetup에서 발표된 내용입니다.


소개

Swift의 서버 사이드 프레임워크 종류와 프레임워크 벤치마킹 결과를 소개하고 어떤 프레임워크를 골라야 할지 설명하겠습니다.

서버 사이드 프레임워크

여러 언어에 서버 사이드 프레임워크가 존재합니다. django에는 python이 있고, JavaScript에는 Node.js가 있고 Ruby에는 Rails가 있고 Java에는 Spring이 있는데요. Swift에는 어떤 프레임워크가 있을까요?

Swift에는 11,248개의 GitHub 스타를 받은 Perfect, 9,287개의 Vapor, 5,604개의 Kitura, 1,629개의 Zewo 등의 서버 사이드 프레임워크가 있습니다. 이 중 Perfect와 Vapor, Kitura를 비교해보면 다음 그림과 같습니다.

이런 개발 뉴스를 더 만나보세요

시작은 Perfect가 가장 빨랐고, 스타도 가장 많습니다. 하지만 커밋 수는 Vapor가 가장 많습니다.

Perfect는 가장 많은 11개의 DBMS를 지원하며 모델 모양을 같은 형태로 유지할 수 있도록 하므로 서버와 클라이언트가 일관성을 유지할 수 있습니다.

Kitura는 IBM에서 만든 프레임워크로 5개의 DBMS를 공식으로 지원하기 때문에 지원 범위가 상대적으로 적으며, ORM이 아닌 추상화 레이어를 제공해서 데이터베이스를 연결할 수 있습니다. 또한, BlueMix 클라우드에 원클릭으로 배포할 수 있습니다.

Vapor도 5개의 DBMS를 지원하며 Fluent라는 ORM을 제공합니다. 패키지는 가장 많은 11개를 지원하고 있습니다.

벤치마킹

과거 벤치마킹 사례

과거 벤치마킹 사례를 찾아보니 Ryan Collins의 Benchmarks for the Top Server-Side Swift frameworks vs. Node.js가 있었습니다. Node.js와 Swift 서버 사이드 프레임워크 간의 성능 비교를 한 2016년 Medium 포스트입니다.

사진이나 텍스트가 있는 페이지를 기준으로 벤치마킹한 결과 요청 개수는 Perfect가 지연율은 Vapor가 우세했습니다.

JSON 벤치마크 역시 요청 개수에서 Perfect가 압도적이었고 지연율은 Vapor가 우세했습니다.

결과적으로 Perfect > Vapor > Kitura 순서의 효율성을 가지는 것으로 나타났습니다.

직접 벤치마킹한 결과

기존 벤치마킹 코드를 현재 상황에 맞게 수정해서 직접 벤치마킹해봤습니다.

블로그를 기준으로 새로 벤치마킹한 결과 여전히 요청 개수는 Perfect가 우세했습니다. 그리고 이전 벤치마크에서 가장 지연율이 낮았던 Vapor가 가장 지연율이 높아졌습니다. 다만 Kitura의 성능이 이전 벤치마킹에 비해 크게 개선된 것을 볼 수 있었습니다.

JSON 벤치마킹 결과도 아까와 크게 다르지 않습니다.

전체 순위에서 Vapor와 Kitura의 순위가 좀 바뀐 것을 눈치채셨나요? Kitura가 열심히 따라잡고 있지만, 아직 Perfect가 압도적인 것은 여전합니다.

다른 측면도 비교해봤습니다. 먼저 빌드 타임은 Perfect가 정말 빠른 속도이고, Kitura도 괜찮은 속도지만 Vapor는 상당히 느립니다.

메모리 사용량도 Perfect가 단 3.4MB로 적은 사용량을, Vapor도 4MB 대의 사용량을 보이는데, Kitura가 몇 배 이상 많은 메모리를 사용하는 것을 확인했습니다.

위 세 가지 벤치마킹 결과도 정리해보면 역시 Perfect가 모든 측면에서 비교 우위에 있고, 빌드 타임과 메모리 사용량에서 Vapor와 Kitura가 앞서거니 뒤서거니 하고 있습니다.

프레임워크 장단점

프레임워크를 선택하려면 사용 목적, 필요, 요구조건을 따져보고 결정해야 합니다.

각 프레임워크의 장단점을 따져보면, Perfect는 서버/클라이언트 겸용 라이브러리를 지원하고 메모리도 적게 사용하며 다양한 DBMS를 지원한다는 점에서 큰 장점을 가진다고 할 수 있습니다. 또한, 문서와 예제도 굉장히 잘 정리돼 있습니다. 나머지 프레임워크의 장단점도 표에 정리했으니 비교해보시면 좋겠습니다.

실제로 개인 프로젝트나 샘플 프로젝트에 Swift 서버 프레임워크를 사용하고 싶은 분들께 도움이 됐길 바랍니다.

QnA

  • Q: Swift가 메이저 서버 프레임워크로 사용할 가능성을 어떻게 생각하시나요?
  • A: Swift 컴파일러의 최적화가 아직 미비하고, 아직 Swift의 언어 발전 방향을 더 봐야할 것 같으므로 좀 더 지켜봐야 할 것으로 생각합니다. 태생적으로 컴파일 언어라는 한계를 갖고 있지만 서버에서 중요한 안정성을 잘 지원하는 언어이기도 하므로 앞으로 고려할 가치가 있다고 생각합니다.

본 영상과 글은 Swift Korea Meetup의 비디오 스폰서인 Realm에서 제공합니다. 모바일 개발자가 더 나은 앱을 더 빠르게 만들도록 돕는 Realm 모바일 데이터베이스Realm 모바일 플랫폼을 통해 핵심 로직에 집중하고 개발 효율을 높여 보세요! 공식 문서에서 단 몇 분 만에 시작할 수 있습니다. 또한 Realm 홈페이지에서는 모바일 개발자를 위한 다양한 최신 기술 뉴스와 튜토리얼을 제공하고 있으니 즐겨찾기하고 자주 들러 주세요!

다음: Realm Mobile Platform으로 실시간 협업 기능과 확장이 가능한 리액티브 앱을 만들어 보세요.

General link arrow white

컨텐츠에 대하여

이 컨텐츠는 저자의 허가 하에 이곳에서 공유합니다.

조성규

iOS 개발자이자 교육자로 활동하고 있습니다. Swift와 iOS 그리고 컴퓨터과학에 관심이 많습니다.

4 design patterns for a RESTless mobile integration »

close