Swift-бэкенд с CouchDB: Kitura vs. Vapor vs. Node.js
Я написал несколько тестовых проектов, реализующих API для моего простого приложения, чтобы прогнать бенчмарки. Они делают всего один запрос к базе данных и возвращают JSON.
Все проекты гонялись на VPS Linode в Лондоне:
- 2 ГБ RAM
- 1 ядро CPU
- SSD
- 125 Мбит/с исходящего трафика
- Ubuntu 16.10
- MySQL и CouchDB с одинаковыми данными (около 13к строк/документов)
Сами бенчмарки прогонялись с другого, более мощного выделенного сервера в Германии при помощи wrk:
wrk -t4 -c20 -d5m https://my_url
Результаты сильно отличаются от бенчмарков Райана Коллинза.
Что я попробовал:
- Node.js 7.0 + MySQL 5.7.16
- Node.js 7.0 + CouchDB 2.0 (через node-couchdb)
- Vapor 1.1.11 + CouchDB 2.0 (через HTTP)
- Kitura 1.1.1 + CouchDB 2.0 (через Kitura-CouchDB)
Всего запросов
Запросов в секунду
Средняя задержка
Результаты для меня очень разочаровывающие. Node.js оказался на 50% быстрее Swift. Похоже, что писать бэкенды на Swift пока ещё рановато — разве что вы не ждёте высокой нагрузки и просто хотите писать на Swift.
UPDATE: примерно через месяц я прогнал ещё одни тесты для новой версии Vapor (1.2.5) против Node.js, и Vapor оказался очень-очень быстрым. Так что теперь я смотрю на использование Swift в качестве бэкенда оптимистично.