45
Developing Web Server with Swift Kitura : Swift개발하는 서버 윤성관 대표 ( ) 코더스하이

Developing Web Server with Swift Kitura : Swift로 개발하는 웹 서버 · Node.js. Demo - 1 : 개발환경 ... • Bluemix App for Swift에서 시작하기 • Bluemix 에 Deploy

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Developing Web Server with Swift

Kitura :Swift로 개발하는 웹 서버

윤성관 대표(주)코더스하이

이 세션은,

신기술 소개 (실용적 사례 아님)

오버뷰 (이런게 있다던데…)

초급 (시작해 볼까요?’)

윤성관 LingoStar

• (주)코더스하이

• Distinguished Educator

• 다양한 시공간에서 강의 중

• 취미 개발자

http://bit.ly/Kitura

나는 왜 Kitura에 꽂히게 되었나

나는 어쩌다가 Kitura에 꽂히게 되었나

Swift• 현대적이고• 빠르고 • 배우기 쉬운

Swift• 현대적이고• 빠르고 • 배우기 쉬운 배울 순 있는 • 함수형

• 오픈소스

Swift• 현대적이고• 빠르고 • 배우기 쉬운 누가? • 함수형

• 🎉오픈소스🎊

swift.org

Architecture

Swift Language

Standard LibraryFoundation

CoreFoundation

Dispatch Swift Language

Standard LibraryFoundation

CoreFoundation

Dispatch

Darwin Linux

Architecture

Darwin

Swift Language

Linux

Standard LibraryFoundation

CoreFoundation

Dispatch Swift Language

Standard LibraryFoundation

CoreFoundation

Dispatch

IBM이 Swift를 부러워 합니다.

Apple 💚 IBM

swiftlang.ng.bluemix.net

Kitura• Swift 웹 프레임워크• Apache 2.0 라이센스• HTTP URL 라우팅

• GET, POST, PUT, DELETE• 파라미터 파싱 • 정적 파일 서빙• JSON 파싱 • Pluggable

github.com/IBM-Swift

swiftpkgs.ng.bluemix.net

교실에선 충분히 쓸만하지 않을까?

iOS 앱 개발 과정• 서울대, 연세대(국제), 한양대, …• 앱 개발이지만 간단한 서버가 필요하다• 1학기 내에 2개의 언어를 익히기는 어렵다.

• 이미 서버 사이드 코딩 언어를 알면 알아서 만들어라• 모르는 학생들에겐 Swift로 알려주겠다

Swift Web frameworks

Kitura Perfect Vapor Zewo

Kitura를 선택한 이유• IBM은 Swift 언어의 큰 컨트리뷰터• Bluemix를 통하면 통합된 환경을 제공받을 수 있다.

Demo - 1 : 개발환경 만들기

리포지터리 만들기 - Bluemix Web• Bluemix Web 페이지에서 Kitura 프로젝트 만들기• GitHub에 리포지터리 만들기• 로컬에 Clone

• 로컬 Host에서 실행하기

Swift Kitura 리포지터리 만들기

Swift Kitura 리포지터리 만들기

swift package generate-xcodeproj

> 15 min

Swift Kitura 리포지터리 만들기

In Xcode

리포지터리 만들기 - Bluemix App• Bluemix App for Swift에서 시작하기• Bluemix 에 Deploy 하기• GitHub에 Repo 등록하기

Kitura Starter Bluemix 선택

Swift Kitura 리포지터리 만들기

> 15 min

Cloud Runtime 만들기 http://codershighkitura.mybluemix.net/hello/json

기본 서버 구동public let router = Router() Kitura.addHTTPServer(onPort: 8090, with:router) Kitura.run()

Demo - 2 : JSON GET/POST

Todo List

Router 클래스 제작HeliumLogger.use()

let todoList = ToDoList() let router = todoList.router

Kitura.addHTTPServer(onPort: 8090, with: router) Kitura.run()

Router 클래스 생성, 저장공간 연결public class ToDoList { public let router = Router() var todoArray:Array<String> = [] public init() { todoArray += ["코더스하이 미팅"] router.all("*", middleware:BodyParser()) router.get(“/itct/tasks", handler:handleGetTasks) router.post("/itct/tasks", handler:handleAddTask) }

GET 핸들러func handleGetTasks(request:RouterRequest, response:RouterResponse, next: @escaping() -> Void) throws { let responseStr = String(describing: todoArray) response.status(.OK).send(responseStr) next()

}

POST 핸들러func handleAddTask(request:RouterRequest, response:RouterResponse, next: @escaping() -> Void) throws{ guard let body = request.body else { return }

guard case let .text(bodyText) = body else { return }

todoArray += [bodyText] next()

}

정리

Swift• 새로운 언어를 찾고 있다면• 다양한 가능성이 열린 언어를 찾고 있다면• ‘힙’한 언어를 찾고 있다면

• 도전해 볼 가치 있는 언어다.

Kitura에 뛰어들어야 할까요?• 적극매수

• 학생이고 Swift를 이미 공부하고 있다• “성능이 중요하지 않다” 거나 “튜닝 자신 있다”• 스위프트 힙스터

• 관망• 당장 Deploy 해야 하는 서버 개발자• 고성능 서버 개발을 공부하는 사람

Office Hour

17:00 ~ 17:30포이어 (그랜드 볼룸 앞)

Thank you