Задача
Оценив бюджет содержания сервера небольшой компании на AWS было принято решение создания более дешевого решения с использованием DigitalOcean. В данной статье я постараюсь сравнить затраты на разворачивание сервиса PHP+MySQL с зеркалированием и сравнительным бюджетом.
Начинаем считать.
Чего нам не хватает по сравнению с aws.amazon
Виртуальной частной сети и балансировки нагрузки. Судя по слухам, доносящимся из разных источников, DO планируют развернуть данную услугу уже более года, но так и не собрались.
Сначала предполагаем нагрузку: пусть будет 600 000+ хитов в день.
А так же объем хранимых данных: допустим 100 Гб
Потом определяем платформу: пусть будет WordPress какой-нибудь завалящий.
Следом определяем риски: возможно падение дата-центра хостера(DO), атаки.
Оцениваем стоимость решения от AWS
Для полного счастья нам нужно 2 сервера с балансировкой нагрузки для FrontEnd. И один максимально защищенный с базой данных. Так же нам нужно хранилище картинок и разновсяких файлов для нашего ресурса.
Цены рассчитываются с учетом в месяц.
EC2 в конфигурации
M1 Small Instance (Default) 1.7 GiB of memory, 1 EC2 Compute Unit (1 virtual core with 1 EC2 Compute Unit), 160 GB — 0,06$ x 24 часа х 30 дней = 43,2$ за инстанс в США и 0,065 х 24 часа х 30 дней = 46,8$ в Европе. Итого: 90$
RDS в конфигурации
Small DB Instance: 1.7 GB memory, 1 ECU (1 virtual core with 1 ECU) — 0,08 x 24 часа х 30 дней = 57,6$ в США.
Тут стоит указать что дублирование базы так же возможно, но из-за некоторых нюансов (да и лени автора решения — меня данный финт ушами будет опущен).
S3 для хранения 100 Гб с условием частых запросов (по количеству хитов умноженное на 3 обращения хотя бы)
Хранение: 0,095$ х 10 Гб = 9,5$
Запросы: 0,005$ х (600 000 хитов х 3 обращения / 1 000 (цена указана за 1000 запросов) = 9$
Так же дополнительные опции:
VPC что бы скрыть наш MySQL. 0,05$ x 24 часа х 30 дней = 36$
Итого у нас получается внушительная сумма: 90$+57,6$+9,5$+36$ = 193,1$ в месяц.
Так не подойдет. Идем другим путем, а именно DigitalOcean:
Берем 3 сервера 2GB Memory/2 Cores/40GB SSD Disk/3TB Transfer за 20$ х 3 штуки = 60$ в месяц (два в США, один в Европе).
Теперь нам нужно сделать самостоятельно VPC + Load Balancer
Приобретаем еще один front-end за 10$ в месяц.
VPC под нашу задачу делается очень несложно — соединяемся через web админку DO с нашими тремя 20$ серверами серверами. На всех трех разворачиваем VPN, закрываем лишние порты, запускаем на двух Apache и на одном MySQL (как это сделать), и на 10$ сервере поднимаем nginx с неофициальным патчем для реверс-проксирования (читать статью об этой тривиальной настройке).
Итого у нас получилось — все 4 сервера в одной VPN сети с жестким соединением по IP. Основным сервером для VPN соединения можно использовать 10$ сервер — он справится с нагрузкой. 3 сервера за 20$ полностью закрыты (включая SSH) от внешнего мира. 1 сервер — FrontEnd для балансировки.
Хранилище оставляем на Amazon S3 за 9,5$ в месяц.
Итого: 60$ + 10$ + 9,5$ = 79,5$ в месяц.
В сухом остатке
Как в случае с Amazon так и с DigitalOcean — брались оптимальные по ресурсам для данной задачи виртуальные машины, соответственно расширение или занижение производительности возможно. Порядок цифр изменяется примерно в том же диапазоне — 60% экономия. В моем конкретном случае — 113,6$ в месяц, или 1 363,2$ в год.