Интеграция сайта с облачным хранилищем (Александр...

22
Интеграция сайта с облачным хранилищем Александр Демидов

Upload: ontico

Post on 15-Jun-2015

3.562 views

Category:

Technology


0 download

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»

Встроенный модуль, поддержка на уровне ядра

Поддержка во всех модулях

Возможность использования в сторонних модулях

Сайт + cloud storage

Как сделать правильно?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

Спасибо за внимание!Александр Демидов

[email protected]

+7 (915) 201-1500

@demidov

http://www.1c-bitrix.ru