CocoaConf DС 2016: Swift server side

в 9:29, , рубрики: swift, Блог компании NIX Solutions, бэкенд, разработка под iOS

В сентябре 2016 года наши iOS-разработчики побывали в Вашингтоне на конференции CocoaConf DC, где получили массу интересного опыта. Там было очень много увлекательных докладов по разным направлениям, различного уровня сложности. В этой статье мы бы хотели рассказать о докладе, который заинтересовал своей необычностью и новизной — «Creating a Server Side Application with your Favourite Language: Swift!» Джонатана Гатри (Twitter, Github). Джонатан является одним из разработчиков Perfect — фреймворка, который позволяет использовать язык Swift в разработке серверных приложений. Эта тема интересна многим iOS-разработчикам, ведь большинство «домашних» идей останавливает проблема реализации серверной части. При этом изучение дополнительных языков или привлечение сторонних людей не добавляет энтузиазма.

В статье сделан упор на теоретическую часть вопроса, а не на код. Практические руководства можно найти в разделе «Дополнительные материалы», или же в поисковике.

Почему Swift?

В начале доклада у многих в зале возник вопрос о производительности Swift-сервера. Ведь большинство разработчиков наверняка сталкивались с тем, что новые решения для реализации другого типа приложений на их «родном» языке имеют побочные эффекты в виде падения производительности. Яркий пример такого решения, хорошо знакомый iOS-разработчикам — PhoneGap. Этот фреймворк позволяет JS-разработчикам писать iOS-приложения, вот только результат не может похвастаться высокой скорость работы. И докладчик в качестве первого преимущества отметил производительность языка. На иллюстрации видно, что язык Swift не уступает Java (а также Scala, Closure), на порядок обгоняет JavaScript, а такие скриптовые языки как Ruby, PHP и Python и остаются далеко позади.

Benchmark

CocoaConf DС 2016: Swift server side - 1
Сравнение производительности Swift и других языков.

Вторым преимуществом является тот факт, что язык обладает статической строгой типизацией. То есть конечные типы переменных и функций определяются на этапе компиляции, и язык не выполняет неявные преобразования. Соответственно, мы практически мгновенно диагностируем проблемы вроде деления строки на число.

Третьим важным аспектом является использование оперативной памяти. Может показаться, что это не является существенным. Многие не раз слышали от разработчиков бэкенда фразы вроде «нужно просто железок побольше прикупить». При исполнении аналогичного кода (Benchmark) фреймворк Perfect требует гораздо меньше ресурсов, нежели Node.JS, Java или Ruby.

CocoaConf DС 2016: Swift server side - 2
Сравнение использования памяти Swift и другими языками.

Почему это актуально? Ответ прост — стоимость облачных хостингов. Практически у всех основных вендоров главным критерием, влияющим на цену, является размер оперативной памяти облака. Конечно, с более дорогим тарифным планом вам также выделяют дополнительные мощности CPU, но по заверению Джона, на практике причиной перехода на более дорогой тарифный план является именно память.

Например, Amazon Web Services предлагает следующие тарифные планы:

План Цена (в месяц)
4 vCPU, 16 Гб памяти ($0,239 / час) $172,08
1 vCPU, 1 Гб памяти ($0,13 / час) $9,49

Если наш сервер будет «влезать» в ограничения по оперативной памяти, то можно иметь около 18 балансированных экземпляров. Это приятный момент для небольших стартапов или для разработчиков, которых по каким-то причинам уже не устраивают бесплатные планы.

Фреймворк Perfect не требует большого количества памяти под нагрузкой или при запуске (Benchmark), что особенно благоприятно при использовании микросервисной архитектуры.

CocoaConf DС 2016: Swift server side - 3
Сравнение потребления памяти под нагрузкой Swift и JS.

Также Джон отметил возможность изоморфного программирования. Впечатляющая идея — использование одного и того же кода для описания доменной области и бизнес-логики. Это позволило бы разработчикам многократно использовать готовый протестированный код, сильно ускорив разработку и сократив количество багов. А в результате снизились бы расходы и повысилось качество кода. С другой стороны, всё это отлично звучит в теории, но на практике подход не так прост во внедрении и имеет подводные камни, так что к этому пункту отнесёмся со здоровой долей скепсиса.

Альтернативные фреймворки

Также хорошим признаком для развития Swift в плане серверной разработки является здоровая конкуренция среди фреймворков. Сейчас альтернативами Perfect на рынке являются:

Kitura создан в IBM, и разработчики официально заявили, что будут максимально способствовать размещению Swift-сервисов на своей облачной платформе IBM Bluemix.

Детальное сравнение фреймворков

Также преимущества и недостатки каждого из них хорошо изложены здесь.

Область применения языка Swift активно расширяется. Джонатан отметил, что хотя разработчики и являются конкурентами, но все они сохраняют хорошие отношения, часто ведут дискуссии о реализациях определенных частей и все стремятся к тому, чтобы в будущем язык Swift всё чаще использовался в серверах. Этому способствует и Apple, создавшая рабочую группу Server APIs, которая включает в себя, помимо собственных разработчиков, технических экспертов из вышеперечисленных компаний. Манифест рабочей группы: https://swift.org/server-apis/.

Группа работает над следующими проблемами:

  • Базовая работа с сетью.
  • Безопасность и шифрование.
  • HTTP и WebSocket.

Уже есть такие плоды коллегиальной работы, как стандарты реализаций базовых интерфейсов и стандарты реализаций HTTP.

Обычному Swift-разработчику это поможет тем, что:

  • Разработчики библиотек будут писать меньше собственных «велосипедов»-абстракций, что снизит порог вхождения в альтернативный фреймворк.
  • Легко заменять (или даже комбинировать) решения из различных библиотек.

Perfect Assistant

Джонатан и команда Perfect разработали инструмент Perfect Assistant, обладающий максимально интуитивно-понятным графическим интерфейсом.

CocoaConf DС 2016: Swift server side - 4
Меню возможностей Perfect Assistant.

Он позволяет:

  • Удобно управлять проектами.
  • Легко добавлять в проект зависимости.
  • Проверять работоспособность проекта не только под OS X, но и под Linux.
  • Настраивать и развёртывать проекты на Amazon S3 и Google Cloud Platform.

Эта утилита очень сильно помогает разработчикам, которые только начинают погружаться в глубины серверной разработки. Масса технически сложных на раннем этапе проблем — запуск сервера или развёртывание — решаются нажатиями нескольких кнопок.

Думаю, что написание вспомогательных графических интерфейсов — правильное направление, ведь это позволит сохранить «огонь в глазах» у интересующихся людей, и сообщество Swift-серверной разработки будет увеличиваться.

Выводы

Использование языка Swift для серверной разработки можно назвать перспективной идеей, популярность которой будет только расти. Причины:

  • Отличные результаты по производительности и потреблению памяти.
  • Сообщество будет разрастаться благодаря наличию большого количества руководств, готовых модулей и разработке вспомогательных инструментов.
  • Разработчики основных фреймворков заручились поддержкой Apple и скооперировались в решении общих проблем, что благоприятно влияет на всю экосистему Swift.
  • Заинтересованность в данной идее таких серьезных компаний как IBM.

К сожалению, есть и некоторые недостатки, которые мешают сейчас использовать Swift в production:

  • Разработка под Linux имеет свою специфику. Некоторые фреймворки (Foundation, GCD) еще не портированы, и приходится использовать библиотеки, написанные на C.
  • Стандарты языка Swift еще активно развиваются и не всегда обладают обратной совместимостью.

Дополнительные материалы

Докладчик:

TwitterGithubMedium

Видеоматериалы:

Докладчик на try!.Swift NYC
WWDC
Отличный доклад от разработчиков Kitura
Доклад на SwiftConf`16
Building Production Server

Статьи:

Отличная статья с примерами кода на Хабре
Сравнение фреймворков
Perfect Assistant

Автор: NIX Solutions

Источник

Поделиться