Интеграция сайта с облачным хранилищем (Александр...
TRANSCRIPT
Безопасность и надежностьДоступность – 99.99%
Надежность – 99.999999999%
ACL
Версионность
Шифрование (server-side, client-side)
Зачем нам нужен cloud storage?Снижаем стоимость эксплуатацииМожем использовать совместно с CDNСнижаем нагрузку на web-узлы«Легкий» сайт – легко переезжать и бэкапитьСинхронизация контента между множественными web-узламиУскоряем рендеринг страниц в браузере
Amazon S3Собственный CDN
Разные типы хранилищ (наличие Reduced Redundancy Storage – RRS)
Возможность использования BitTorrent
SDK: Java, .NET, PHP, Ruby, iOS, Android
S3tools, s3fs, сторонние клиенты
Google Cloud StorageOAuth 2.0
Возможность использования Google account в ACL
SDK (Google App Engine): Java, Python
GSUtil, Google Storage FS, сторонние клиенты
Windows Azure StorageСобственный CDN
Windows Azure Drive
SDK (Windows Azure): .NET, Node.js, Java, PHP
Сторонние клиенты
Rackspace Cloud Files / OpenStackCDN Akamai
Развитие OpenStack
SDK: PHP, Python, Ruby, Java, .NET
ftpcloudfs, сторонние клиенты
<img width="200" height="151" border="0"src="http://cs1.clodo.ru/v1/CLODO_7f71c0228dfd469ad68f425520bac415/upload-clodo/iblock/a202296a71b9f16ccb502d8ada9298a/karasik.jpg" />
БД
Веб-серверХранилище
Посетительhtml
*.png; *.jpeg ...
Поддержка в популярных CMSПлагины
Медиа, бэкапы
«StorageQloud for WordPress», «BackWPup», «Amazon S3 Uploads»
Расширения
Медиа, бэкапы, статический контент
«JA Amazon S3», «jomCDN», «XCloner-Backup and Restore»
Внешние модули
Медиа, бэкапы
«CDN», «CloudFlare», «Backup and Migrate»
Встроенный модуль, поддержка на уровне ядра
Поддержка во всех модулях
Возможность использования в сторонних модулях
Как сделать правильно?API хранилища для «прозрачной» работы с файламиAPI для разработчиков (не используем стандартные функции для работы с файлами)Избегаем «диких» файловПростое подключение хранилищПравила для выбора при работе с несколькими хранилищами«Прозрачность» для всех модулей системы
Как сделать правильно?Таблица с данными обо всех подключенных хранилищахТаблица со списком файлов, и указанием, где они хранятся (можно сразу хранить дополнительную информацию)Не используем file_size, getimagesize и т.п. – сохраняем все данные при аплоадеОтлов «диких» файлов через обработку 404
Как сделать красиво?http://s3.amazonaws.com/bucket/file.ext
http://bucket.s3.amazonaws.com/file.ext
Используем CNAME
Название бакета – в виде субдомена (files.domain.ru)
files.domain.ru. IN CNAME s3.amazonaws.com.
http://files.domain.ru/file.ext
Использование нескольких хранилищ
Одновременно можно хранить разные файлы в разных «облачных хранилищах». Например, все файлы «весом» больше 100 Мб перемещать в «облако» Google Storage, а все видео - в Amazon S3.
Облачное хранилище в масштабируемом проекте
CloudWatch + Auto Scaling
Web 1
HTTP / HTTPS
Elastic Load Balancing
Web 2 Web N…
Облачное хранилище в масштабируемом проекте
DB
Web 1
ElasticLoad Balancing
Web 2
Web N…
DB
Web 1
Web 2
Web N…
репликация
S3
Датацентр 1 Датацентр 2
Веб-ноды – «расходный материал»
На веб-нодах нет пользовательского контентаRead only (возможно, кроме tmp)Обновления, аварии – убираем лишниеИзоляция пользователей друг от друга
Web 1
Web 2
Web N
Сервер обновлений
Новый образ AMI
ElasticLoad
Balancing
Создание нового аккаунтаНовый IAM пользовательПолучаем AccessKey, SecretKeyПрава внутри одной директории:
PutObject
GetObject
DeleteObject
Спасибо за внимание!Александр Демидов
+7 (915) 201-1500
@demidov
http://www.1c-bitrix.ru