Apple은 원래 Objective-C의 후속 제품으로 Swift를 알고 있었기 때문에 네트워크가 iOS, macOS, watchOS 및 tvOS 애플리케이션을 코딩하는 방식을 변경했습니다.
Swift가 오픈 소스 단계로 전환 된 시점에서 모바일 및 클라이언트 측 애플리케이션을 넘어 언어에 대해 새로운 상상할 수있는 결과를 열었습니다. Swift는 서버 측 언어로도 변했습니다. 이 교육 연습에서는 서버 측 Swift가 무엇인지, 왜 백엔드에 Swift가 있어야하는지 알게됩니다.
서버 측 Swift 활동은 Swift 개발자에게 완전히 백엔드 관리를 할 수있는 기회를 제공하기 위해 Vapor by Qutheory, IBM의 Kitura 및 Perfect라는 세 가지 저명한 프로젝트에 의해 추진되고 있습니다. 이것은 근본적으로 그러한 엔지니어를 풀 스택 개발자로 변경하여 Node 또는 PHP에 대한 의존성 요구 사항을 무효화하거나 Google의 Firebase와 같은 BaaS 단계에 대한 제어를 제공합니다.
이 기사의 대상
이 기사에서는 서버 측 Swift에 대해 설명합니다. 먼저 서버 측 Swift의 작동 방식을 명확히하고 그 후에 Kitura, Vapor 및 Perfect 시스템으로 시작하는 모범 사례를 보여 드리겠습니다.
서버 측 Swift 소개
Swift는 2014 년 Apple에서 처음 발표했으며 가장 빠르게 개발되는 프로그래밍 언어 중 하나를 빠르게 완성했습니다. Swift는 예를 들어 Python과 같은 수많은 최고의 현대 언어를 사용하여 우아함과 사용 편의성을 제공합니다. Objective-C의 특수 족쇄에서 엔지니어를 해방시켜 점점 더 유동적이고 본능적 인 작업을 가능하게합니다.
2015 년 12 월 Apple은 또 다른 환상적인 선언을하고 지원 라이브러리, 디버거 및 패키지 관리자와 함께 Swift 언어를 Apache 2.0 라이선스에 따라 오픈 소스 프로젝트로 만들었으며, 일반적으로 사람들이 풀 요청을하고 기여할 수있는 플랫폼을 열었습니다. Objective-C에서 멀어진 움직임은 App Store에 기여하는 수많은 Objective-C 개발자를 유혹했을뿐만 아니라 모든 기술과 기반을 가진 개발자가 Swift로 Apple 생태계에 진입하는 것을 더 간단하게 만들었습니다.
어쨌든, Apple의 발전된 장치는 개발자가 App Store를 위해 외부 적으로 설득력 있고 매력적인 앱을 쉽게 개발할 수있게 해주었지만, 프로젝트에서 복잡한 정보 기반 응용 프로그램을 개발하려면 전문 백엔드 개발자가 여전히 필요하다는 것이 눈에 띄는 병목 현상입니다. 따라서 iOS 및 macOS 개발자는 Python, PHP 또는 Node 개발자의 도움을 받아 백엔드 데이터베이스를 만들거나 스스로 능력을 얻어야하며, 수행 목표를 완료하기 위해 남은 작업이 훨씬 더 많아야합니다.
서비스로서의 백엔드 (BaaS)는 코드없는 백엔드 솔루션 (예 : 백엔드의 복잡성을 완화하는 Google의 Firebase 및 Apple의 고유 한 CloudKit)을 통해 iOS 개발자의 영웅 역할을했지만 많은 그룹과 벤처가 더 많은 것을 요구합니다. 이것은 서버 측 Swift가 들어오는 곳으로, 오픈 소스이고 끝없이 구성 할 수있는 완전한 멀티 스레드 백엔드 서버를 만들 수있게 해줍니다.
서버 측 Swift는 AWS, RackSpace 또는 자체 물리적 서버와 관계없이 백엔드 서버를 보유하는 방법을 선택할 수있는 기회를 제공합니다. 마찬가지로 서버 부하 분산 방법 (예 : NGINX와 같은 유명한 서버 솔루션 사용)과 데이터베이스에서 정보를 계속하는 방법 (예 : MongoDB 또는 기존 데이터베이스와 같은 NoSQL 배열)을 선택할 수 있습니다. , Postgres, MySQL 또는 Oracle). 즉, 한 부분 배열에 집착하지 않고 전체 애플리케이션 코드베이스에 영향을주지 않고 전환 할 수 있습니다.
문제의 사실은 Vapor by Qutheory, IBM의 Kitura 또는 Perfect와 같은 오픈 소스 서버 측 Swift 배열을 결정함으로써 백엔드 만 설계 할 수있는 방대한 양의 모듈을 활용한다는 것입니다. 필요한 방식으로 Swift에서 현재 그룹의 능력 범위를 활용하여 그렇게 할 수 있습니다.
서버 측 스위프트는 정말 설득력있게 들리지만 어떤 구조가 당신에게 이상적일까요? 다음으로 우리는 Kitura를 시작으로 모든 사람을 이렇게 조사합니다.
Kitura로 시작
Kitura를 시작으로 2016 년 2 월에 처음 퇴원 한 후 곧 Apple의 WWDC에서 틀림없는 품질을 획득 한 무대가 있습니다. IBM이 Swift로 서버 측 웹을 지원하기로 한 침공에 대해 말한 후 Apple의 손에서 다음으로 전환하도록 설정되었습니다. 오픈 소스.
일반적으로 Kitura는 구성보다 전통을 중심으로합니다. 빌드하려는 명시 적 프레임 워크 및 라이브러리를 선택하기 전에 스텁으로 기본 프로젝트를 구성합니다. Kitura의 인증 프로세스는 고유 한 Kitura-Credentials 미들웨어 프레임 워크에 의해 유지되며, JSON 웹 토큰 (JWT)을 처리하는 OpenID를 활용하여 기존 사용자 이름 / 비밀번호에서 온라인 네트워킹 로그인 및 통합 검증에 이르기까지 다양한 검증 시스템을 살펴볼 수 있습니다. .
Kitura의 데이터베이스 ORM 배열은 Kuery에 의해 제어되어 SQL 관리의 복잡성을 해결하여 MySQL, SQLite 및 PostgreSQL과 같은 기본 합리적인 데이터베이스를 로컬로 지원하고 NoSQL 데이터베이스를 포함한 다른 데이터베이스 배열을 다른 플러그인을 통해 지원합니다.
Kitura는 예를 들어 Stencil 및 Markdown과 같은 잘 알려진 플러그인을 활용하여 HTML 템플릿과 같은 다른 유용한 플러그인을 추가로 제공합니다. IBM에서 시작된 서버 측 시스템은 IBM Watson API와의 연결을 통해 추가로 이익을 얻고 추가로 macOS 지원을 제공하여 Bluemix 클라우드 플랫폼으로 간단하게 조정할 수 있습니다. 이를 통해 Linux / Unix 및 macOS 서버를 가로 지르는 기존의 다른 배포 대안과 함께 추가 옵션을 사용할 수 있습니다.
이 플랫폼은 Kuery에서 다양한 IBM API 라이브러리와 통합 할 수있는 용량에 이르기까지 특별한 기능 세트를 절대적으로 제공합니다. Vapor이 가지고있는 네트워크 영향력이 없습니다. Kitura를 받으려면 Kuery의 작동 방식에서 인증 메커니즘에 이르기까지 작업을 수행하기위한 자체의 비정규 적 방법을 인정하고 파악해야합니다. 어쨌든 노력에 관심을 가진 광범위한 조직이 후원한다는 점을 감안할 때 미래 봉인 확언이 작동했습니다.
Kitura 설치 및 실행
가장 빠른 시작 방법은 macOS와 Linux 모두에서 지원되는 Kitura의 CLI (Direction Line Interface)를 활용하는 것입니다. 잘 알려진 패키지 관리 유틸리티 인 Homebrew를 사용하여 다음을 입력하여 Kitura 및 Kitura CLI를 설치합니다.
$ brew tap ibm-swift / kitura $ brew installkitura |
벤처로 사용할 작성되지 않은 주최자 내부에서 다음을 실행하여 귀하의 사업을 설명하십시오.
$ kitura init
스켈레톤 애플리케이션 생성이 완료되면 HelloKitura.xcodeproject라는 또 다른 프로젝트가 표시됩니다. Kitura의 문서를 참조하여 프로젝트 생성에 대해 더 자세히 알아볼 수 있습니다. Xcode에서 최근에 생성 된 프로젝트를 열고 필수 애플리케이션 클래스 인 Application.swift를 변경하여 서버의 루트 http : // localhost : 8080 / URL 에 대한 모든 호출을 처리 할 수 있습니다.
// "/"에 대한 HTTP GET 요청 처리
router.get ( "/") {요청, 응답, 다음
response.send ( "Hello, World!")
다음()
}
위의 코드 조각은 예시적인 Hello, World! . 프로젝트를 최종적으로 실행하기 전에 HelloKitura (활성 프로젝트)를 가리 키도록 Xcode 체계를 변경하고 Command-R 을 눌러 작업을 시작하십시오. 서버가 실행되는 동안 선택한 브라우저에서 http : // localhost : 8080으로 이동하면 브라우저에 hello world가 표시됩니다.
Vapor으로 시작
Kitura가 출시 된 지 몇 달 후인 2016 년 9 월에 출시 된 Vapor by Qutheory는 일반적으로 커뮤니티 규모와 모듈 수에서 가장 두드러진 것으로 간주됩니다. Apple의 Swift-nio 프레임 워크 위에 구축되어 진정한 실행 강국이되었습니다. 단순히 Swift로 제작 된 것이 아니라 Node.js 또는 다른 중개인 파서에서 제작 된 Kitura 및 다른 단계와는 전혀 다르며 Vapor은 이러한 종속성에서 분리하여 Swift 파서를 제공하고 명확하고 일관된 API를 제공합니다.
Vapor은 SQL 공급 업체 (예 : MySQL 및 PostgreSQL)와 NoSQL 공급 업체 (예 : Redis 및 MongoDB)에 Kitura와 같은 데이터베이스에 대한 철저한 지원을 제공합니다. Kitura에는 자체 Kuery ORM 솔루션이 있지만 Vapor은 Fluent ORM을 활용하여 방금 참조한 데이터베이스를 지원하므로 ORM을 다른 타사 데이터베이스 제공 업체로 확장하는 것이 적당히 간단합니다. Vapor은 기본적으로 Apple의 푸시 알림 서비스를 지원하고 이메일 알림을 푸시하기위한 SMTP를 지원함으로써 대체 프레임 워크와 분리됩니다.
Kitura가 자체 인증 프레임 워크를 실현하는 동안 Vapor에는 기본적으로 구운 Stormpath의 Turnstile 인증 라이브러리가 있습니다. Kitura와 마찬가지로 플랫폼은 Mustache 및 Markdown 유혹을 지원하며 자체 Swift 네이티브 표현 템플릿 언어 외에도 Vapor은 다른 서버 측 Swift 프레임 워크와 마찬가지로 자체 CLI 모터를 추가로 수반하여 애플리케이션 명령을 확장 할 수 있습니다. 사용자 정의 플래그가있는 라인 인수.
설치 및 실행
Vapor으로 시작하려면 먼저 모든 라이브러리 종속성과 CLI 도구 상자로 구성된 Vapor 도구 키트를 설치해야합니다. 터미널에 다음을 입력하여 Homebrew와 함께 설치하십시오.
$ brew installvapor / tap / vapor
설치가 완료되면 vapor —help를 입력하여 Vapor이 성공적으로 설치되었는지 확인할 수 있습니다. 프로젝트를 만들려면 자신의 프로젝트 이름으로 대체하여 다음을 입력합니다.
$ 증기 새로운
Vapor 엔진은 다음과 같은 폴더 구조를 만듭니다.
├── 공개
├── 출처
│ ├── 앱
│ │ ├── 컨트롤러
│ │ ├── 모델
│ │ ├── boot.swift
│ │ ├── configure.swift
│ │ └── routes.swift
│ └── 달리기
│ └── main.swift
├── 테스트
│ └── AppTests
└── Package.swift
실제로 Xcode 프로젝트를 생성하려면 마찬가지로 프로젝트 폴더 내에서 다음 명령을 명시 적으로 입력해야합니다.
$ 증기 xcode
마지막으로 프로젝트를 빌드하고 실행하려면 Xcode에서 Run 구성표와 My Mac 의 개발 대상 장치를 선택한 다음 다른 Xcode 프로젝트에서와 마찬가지로 Run 버튼을 누릅니다. Xcode 프로젝트에 오류가없는 경우 터미널에 다음 확인 메시지가 표시되어야합니다.
http : // localhost : 8080에서 시작하는 서버
브라우저에 해당 URL을 입력하면 애플리케이션이 실행중인 것을 볼 수 있습니다.
완벽으로 시작
마지막으로 Vapor 및 Kitura와 같은 기능이 풍부한 서버 측 플랫폼 인 PerfectlySoft의 Perfect를 살펴 봅니다. Perfect는 Mustache 또는 Markdown을 사용한 템플릿 작성부터 웹 소켓을 사용한 네트워킹, 그리고 Apple Push Notification 및 SMTP에 이르기까지 이전 공급 업체에서 발견 할 수있는 유사한 표준 종소리와 휘파람을 통합합니다.
다른 서버 측 플랫폼과 마찬가지로 Perfect에는 자체 ORM 구현 인 StORM 플랫폼 (Perfect StORM)이있어 MySQL, PostgreSQL 및 기타 주요 관계형 데이터베이스와 MongoDB, Redis 및 기타 NoSQL 솔루션에 대한 기본 지원을 제공합니다. Perfect에서 눈에 띄는 예외 중 하나는 CLI이지만 프레임 워크는 기본 macOS 애플리케이션으로이를 보완합니다.
Vapor과 마찬가지로 Perfect는 StORM과보다 밀접하게 상호 작용하도록 확장 된 인증 메커니즘을 강화하기 위해 Turnstile을 추가로 제공합니다. 이 배열이 다른 것에 비해 갖는 또 다른 자격은 고유 한 cURL 래퍼 중 하나와 파일 및 폴더 작업을위한 도구를 포함하여 지원하는 많은 기본 유틸리티 라이브러리에 있습니다. Perfect의 개발자 기반은 Vapor과 거의 보조를 맞추고있는 두 번째로 큰 규모입니다. 즉,이 플랫폼을 지원할 강력한 커뮤니티가 있고 풍부한 교육 리소스 세트를 통해 선택할 수있는 기회에 대한 확신을 갖게됩니다.
설치 및 실행
Perfect를 시작하고 실행하는 것은 매우 간단합니다. 처음에는 다음을 입력하여 PerfectlySoft 리포지토리를 복제합니다.
$ git clone https://github.com/PerfectlySoft/PerfectTemplate.git
복제 된 폴더 내에서 프로젝트를 빌드합니다.
$ 신속한 빌드
마지막으로 0.0.0.0:8181 주소에서 로컬 서버를 실행할 프로젝트를 실행 합니다.
.build / debug / PerfectTemplate
다음과 같이 먼저 새 프로젝트를 만들어 Xcode에서 프로젝트를 실행할 수도 있습니다.
$ 신속한 패키지 생성 -xcodeproj
프로젝트를 빌드하고 실행하기 전에 Xcode 내에서 실행 가능한 대상이 My Mac을 가리키는 지 확인하십시오.
결론
오픈 소스 네트워크에 Swift가 도입됨에 따라 백엔드 서버 프레임 워크가 다음과 같은 외곽으로 바뀌면서 클라이언트 애플리케이션을 넘어 Swift 솔루션을 추진하게되었습니다. Qutheory의 Vapor, IBM의 Kitura 및 Perfect라는 세 가지 저명한 프로젝트가 추진했습니다. 서버 측 Swift는 iOS (및 macOS) 개발자가 풀 스택 개발자가 될 수 있도록 지원했습니다. 이는 Node.js, PHP 또는 .NET 백엔드 개발자에 대한 종속성을 무효화 할 수 있습니다. 또한 서버 측 Swift를 사용하면 Firebase 또는 CloudKit과 같은 모바일 서버로서의 백엔드 솔루션에 의존하지 않고도 그룹이 백엔드를 제어 할 수 있습니다.
서버 측 Swift가 모든 사람을위한 것은 아닙니다. 백엔드에 얼마나 많은 제어가 필요한지, 자신이 직접 롤링하는 것이 합당한 지 여부를 결정해야합니다. 또한 어떤 서버 측 Swift 솔루션 이 이상적인지 말씀 드리지 않았습니다. 개발자는 의심 할 여지없이 결정을 내릴 수 없으며, 세 가지 모두 독특하고 성숙한 테이크를 제공하며 실험 할 가치가 있습니다. 모든 예제 코드를 가지고 놀고, 언어 구조를 평가하고, 특정 커뮤니티와 연결하여 어떤 솔루션이 가장 적합한 지 알아 보시기 바랍니다.