Swift 서버사이드 프레임워크 Perfect 소개

Apple이 Swift를 오픈소스로 공개한 것이 올해 12월 초 입니다. 그 이전에 Swift 커뮤니티를 떠들썩 하게 만들었던 오픈소스가 있었는데요, Swift 기반 서버개발 프레임워크인 Perfect 입니다. Perfect 는 웹개발과 REST API서버를 개발할 수 있는 Swift 기반의 서버 프레임워크 입니다. 하나의 언어(Swift)만 배워서 프런트엔드(앱)과 백엔드(서버) 모두 개발할 수 있도록 하기위해 만들어졌다고 합니다.

aw201-android studio case02

좋은 타이밍

모든 일에서 타이밍은 중요합니다. 가장 먼저나온 프레임워크가 무조건 가장 널리쓰이는 프레임워크가 되는 것은 아니지만, 지금과 같이 Swift 가 iOS/OS X 외에도 다양한 곳에서 쓰일 것이라고 모두가 관심을 가지고 있는 적절한 시기에 어느정도 완성도가 있는 프로젝트를 공개하는 것은 프로젝트의 성공율을 높입니다. 최근에는 Swift로 스크립트언어를 대체한다던지 , Swift로 안드로이드 개발을 하는 시도 라던지 (이미 Android에서 “Hello World”를 찍는 앱을 정도를 Swift로 만들었다고 합니다) 다양한 시도가 주목받고 있습니다.

누가 만들고 있나

먼저 이 프로젝트를 만들고 있는 회사는 PerfectlySoft라는 회사 입니다. Perfect 의 GitHub를 보면 몇몇 재미있는 사실을들 확인할 수 있는데요, 먼저 총 기여자는 6명이지만 메인 개발자는 2명으로 보입니다. 주 개발자가 2015년 10월달에 개발을 시작했고, 다른 1명은 11월에 열심히 하다가 지금은 기여하고 있지 않네요. 브랜치도 하나뿐이고, 총 커밋 수는 200개가 조금 넘습니다. 이쁜 홈페이지, 별도의 GitHub 그룹, 서버 프레임워크 등 프로젝트의 완성도를 보고 많은 사람들이 개발하고있지 않을까 생각했는데 실제로는 1명이 개발하고 있는 프로젝트라고 할 수도 있습니다. GitHub 프로필에 의하면 개발자는 캐나다에 있는 것으로 보이네요.

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

어떤 환경을 지원하나

Perfect 가 처음 발표될 당시에는 Swift가 오픈소스 공개되기 전이고 리눅스 지원이 아직 되지 않았기 때문에 Mac OS에서만 돌아갔었으나, 지금은 Linux도 지원하고 있습니다. Swift오픈소스와 같이 현재로서는 Ubuntu만 지원한다고 합니다. 현재 자체 HTTP서버를 통한 stand-alone HTTP 서버 모드 와 mod_perfect 를 통한 FastCGI 를 통한 Apache 2.4에서 동작합니다. 서버 시작시에 Swift기반의 모듈이 올라오는 것을 제공하고 Mustache라고하는 템플릿 엔진을 통해 렌더링 하게됩니다. nginx 지원이야기는 없는 것으로 보아 현재는 Apache 만 지원하는 것으로 보이네요.

놀랍게도 MySQL, PostgreSQL, MondoDB 등이 제공됩니다. 서버 개발을 위해서 가장 중요한 DB연동을 제공한다는 점은 중요한 점 입니다. 또한 다양한 예제들도 제공하고 있습니다. 라이센스는 GNU Affero GPL 3.0 을 채용하고 있습니다.

PerfectLib

기본적으로는 PerfectLib이라는 모듈을 서버개발과 클라이언트 개발에서 모두 사용해서 같은 도메인 모델 코드를 쓸 수 있도록 하겠다는 의도를 가지고 있습니다.

클라언트 모듈은 가볍고, JSON 인코딩/디코딩 및 관리, Raw 스트림 관리, UTF-8/16 인코딩/디코딩, 문자 테스트를 위한 유니코드 도구들, cURL 지원, SQLite 지원 등을 하고 있습니다.

서버 모듈은 위의 기능을 포함하고 그 외에도 확장성있는 고성능 네트워킹을 위한 LibEvent지원, 파일 과 디렉토리 객체, 프로세스 관리, FastCGI 지원, Multi-part POST/MIME과 파일업로드 지원, Mustache 템플릿 파싱과 처리, 서버 기능확장을 위한 다이나믹 모듈 로딩, 서버사이드 상태와 세션관리 등을 지원 합니다.

써볼만 할까?

Perfect의 문서는 깔끔하고 이쁘게 정리되어있습니다. 아직은 벤치마크도, 사례도, 관련된 블로그 글도 많지 않은 것도 아쉬운 점 입니다. 개인적으로 REST API서버를 만들어본다거나, 취미용 서버를 만드는데에는 유용하겠지만 아직까지는 상용서비스를 만드는데에는 검증되지 않은 것으로 보입니다. 앞으로 Swift 서버개발 프레임워크에서 Pefect가 중요한 역할을 하기를 기대해봅니다.


Realm은 모바일 데이터베이스 입니다: SQLite 또는 Core Data를 대체하여 사용하실 수 있습니다.
물론 Swift를 지원합니다 더 알아보기

컨텐츠에 대하여

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


Realm Korea

Realm Korea Team

4 design patterns for a RESTless mobile integration »

close