Letswift swift server cover

Swift로 서버 제작하기: Docker + Swift Server-Side

Let’Swift는 Swift 개발자들이 만나고, 배우고, 즐기는 컨퍼런스로 총 13개의 세션으로 이뤄졌습니다. Swift 개발자들이 모여 iOS의 넥스트 스텝을 이야기한 행사였습니다. 빠르게 발전하는 언어 Swift에 대한 뜨거운 열의를 엿볼 수 있었던 Let’Swift 행사 동영상을 공유합니다

Swift로 클라이언트 뿐만 아니라 서버까지 개발할 수 있다는 희소식, 알고 계신가요? ICT 서비스의 전문 기업으로 Platform을 개발, 운영하는 SK techx의 개발자, 안병욱님이 VirtualBox, Kitura, Docker를 사용해서 Swift로 Server를 만드는 방법을 설명하고, 양원석님이 데모를 보여줬습니다.


Server-side?

  • Backend Web Framework: 다양한 프레임워크가 존재함

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

  • Swift Backend Framework
    • Kitura: 기능과 패키지가 많음, OAuth 가능
    • Perfect: 프레임워크가 Kitura보다 부족, OAuth 불가능
    • 이 밖에도 활발히 활성화된 오픈소스인 Zewo, Vapor 등이 존재

VirtualBox, Kitura, Docker

  • VirtualBox, Kitura, Docker를 활용한 Swift Server 예제 코드
  • VirtualBox Script 설정 (우분투 리눅스)
    • Swift 3.0 Toolchain 바이너리를 가져옴
    • RESTFul API 테스트를 위한 8090 포트 포워드
    • Kitura 백엔드 프레임워크를 가져옴
  • Kitura에서 필요한 패키지(리눅스 라이브러리) 설치
  • Kitura를 다운로드 받고 Swift로 빌드 후
$vagrant up

백엔드에서 필요한 RESTFul API 예제

  • Virtual Box로 들어가서
swift package init

  • swift package 확인
  • Router 기능 설정

Docker 컨테이너 만들기

  • Docker 빌드
  • image 생성
  • Docker 런

$ docker run -d -p 8090 --name api1 swift-api:latest
$ docker run -d -p 8090 --name api2 swift-api:latest
$ docker run -d -p 8090 --name api3 swift-api:latest
// ? => scale up $ docker-compose

Demo

  • 개발환경: MacOS의 VirtualBox 상의 Ubuntu에 RESTFul 서버를 올려서 Google Cloud Platform에서 배포하는 Swift 기반 클라이언트로 접근하여 테스트
  • API 설명
==================================
Description : get a number of vote
Request: Verb: GET URL: http://letswift-api:8090/vote
Response: HTTP code: 200
Body:
{
  "objective-c": 100,
  "swift": 100
}
==================================
Description : Increase a vote
Request: Verb: PUT URL: http://letswift-api:8090/votes/objectivec_voted
Request: Verb: PUT URL: http://letswift-api:8090/votes/swift_voted
Response: HTTP code: 200
  • 데모 내용은 동영상을 참고해 주세요. (Demonstration by 양원석)

발표 슬라이드는 아래를 참고해주세요.

컨텐츠에 대하여

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

Realm Team

Realm의 미션은 더 나은 앱을 빠르게 개발할 수 있도록 돕는 것입니다. 이를 위해 저희는 개발자들이 실시간 협업, 가상 현실, 라이브 데이터 동기화, 오프라인 경험, 메시징 등 정교하고 강력한 기능을 쉽게 개발할 수 있도록 하는 개발 도구와 플랫폼을 제공하고 있습니다.

저희는 모바일 인터넷이 수많은 사용자와 보다 많은 디바이스가 속한 개방형 네트워크와 이들 간의 실시간 상호 작용으로 진화할 것이라고 믿으며, 개발자가 이같은 방향으로 발전할 수 있도록 돕기 위해 저희 제품들을 개발하고 있습니다.

4 design patterns for a RESTless mobile integration »

close