Стартапы в amazon web services – тонкости, подводные...
TRANSCRIPT
![Page 1: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического](https://reader030.vdocument.in/reader030/viewer/2022040809/5e4e0c4490eb3c505a6fcba2/html5/thumbnails/1.jpg)
Девятая независимая научно-практическая конференция «Разработка ПО 2013» 23 - 25 октября, Москва
Александр Сербул
Стартапы в Amazon Web Services –
тонкости, подводные камни, рецепты
1С-Битрикс
![Page 2: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического](https://reader030.vdocument.in/reader030/viewer/2022040809/5e4e0c4490eb3c505a6fcba2/html5/thumbnails/2.jpg)
О чем поговорим
Стартап – глазами инвестора
Стартап – глазами технического директора
Быстрый старт, инкрементальное развитие
А требования – постоянно меняются
Технологические риски – и бизнес-задачи
Werner Vogels - VP and CTO of Amazon.com
![Page 3: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического](https://reader030.vdocument.in/reader030/viewer/2022040809/5e4e0c4490eb3c505a6fcba2/html5/thumbnails/3.jpg)
О чем поговорим
Стартап – веб-приложение
Выбор технологий: unix/nginx/PHP/memcached/MySQL – кратко,
узкие места
Развитие архитектуры стартапа – как обычно и
как полезно
Облако для стартапа – возможности и
ограничения
Чем особенно полезен Amazon Web Services
Риски AWS – как не сломать «спину»
![Page 4: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического](https://reader030.vdocument.in/reader030/viewer/2022040809/5e4e0c4490eb3c505a6fcba2/html5/thumbnails/4.jpg)
Стеки ПО и риски стартапа
Выбираем платформу для стартапа…
Java, C++, Node.js, Python/Django, Ruby on Rails
LAMP: linux, nginx, php-fpm, MySQL, memcached…
Кадровые риски. Где искать разработчиков, когда
и кого
Эксплуатация и сисадмины
![Page 5: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического](https://reader030.vdocument.in/reader030/viewer/2022040809/5e4e0c4490eb3c505a6fcba2/html5/thumbnails/5.jpg)
Требования меняются постоянно…
Гибкая разработка – поможет ли?
Простая архитектура – о чем это?
Компоненты, модули, философия unix
![Page 6: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического](https://reader030.vdocument.in/reader030/viewer/2022040809/5e4e0c4490eb3c505a6fcba2/html5/thumbnails/6.jpg)
Клиентов становится все больше…
Быстрая отдача тяжелого контента, CDN
Быстрая загрузка страниц в браузер
Быстрая работа мобильных приложений
SLA – как удержать?
Пиковые нагрузки – теория и практика
![Page 7: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического](https://reader030.vdocument.in/reader030/viewer/2022040809/5e4e0c4490eb3c505a6fcba2/html5/thumbnails/7.jpg)
Клиентов становится все больше…
![Page 8: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического](https://reader030.vdocument.in/reader030/viewer/2022040809/5e4e0c4490eb3c505a6fcba2/html5/thumbnails/8.jpg)
Объем данных растет. Быстро.
В одну БД данные не помещаются
БД-кластер? А не страшно?
Разные регионы, latency
Теорема CAP
![Page 9: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического](https://reader030.vdocument.in/reader030/viewer/2022040809/5e4e0c4490eb3c505a6fcba2/html5/thumbnails/9.jpg)
Поможет ли NoSQL?
Риски:
Eventual consistency
Агрессивная денормализация
Проблемы со сложными запросами
Усложнение приложения-клиента
![Page 10: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического](https://reader030.vdocument.in/reader030/viewer/2022040809/5e4e0c4490eb3c505a6fcba2/html5/thumbnails/10.jpg)
Репликация – как «продержаться»,
не разделяя данные
![Page 11: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического](https://reader030.vdocument.in/reader030/viewer/2022040809/5e4e0c4490eb3c505a6fcba2/html5/thumbnails/11.jpg)
Разделяем данные клиентов
Вертикальный шардинг
Горизонтальный шардинг
База данных MySQL
База данных MySQL 1
База данных MySQL 2
База данных MySQL
База данных MySQL 1
База данных MySQL 2
Аккаунты a-m
Аккаунты n-z
![Page 12: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического](https://reader030.vdocument.in/reader030/viewer/2022040809/5e4e0c4490eb3c505a6fcba2/html5/thumbnails/12.jpg)
![Page 13: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического](https://reader030.vdocument.in/reader030/viewer/2022040809/5e4e0c4490eb3c505a6fcba2/html5/thumbnails/13.jpg)
Когда всё «упало» и «пропало»
Виды аварий
Мониторинг – мы или клиенты?
Скорость восстановления после сбоя
Распределенные данные, целостность и
резервирование
SLA и ответственность перед клиентами
![Page 14: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического](https://reader030.vdocument.in/reader030/viewer/2022040809/5e4e0c4490eb3c505a6fcba2/html5/thumbnails/14.jpg)
Требования к стартапу
Высокая производительность
Интеграция с CDN
Поддержка мобильных устройств
Поддержка протоколов – WebDAV, long pooling,
WebSockets, spdy и т.п.
Масштабируемость при росте нагрузке – быстро и
дешево, автоматически
Защищенные соединения - SSL
Простой и эффективный мониторинг состояния
Отказоустойчивость при авариях, быстрое
восстановление, автоматически
Простота резервирования информации
![Page 15: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического](https://reader030.vdocument.in/reader030/viewer/2022040809/5e4e0c4490eb3c505a6fcba2/html5/thumbnails/15.jpg)
Требования к стартапу
А еще нужен быстрый поиск по веб-проекту
… с учетом прав
… с умной фильтрацией
А еще хочется, чтобы эксплуатировал систему один человек, а
не отдел системного администрирования.
![Page 16: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического](https://reader030.vdocument.in/reader030/viewer/2022040809/5e4e0c4490eb3c505a6fcba2/html5/thumbnails/16.jpg)
Требования к стартапу
![Page 17: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического](https://reader030.vdocument.in/reader030/viewer/2022040809/5e4e0c4490eb3c505a6fcba2/html5/thumbnails/17.jpg)
На пути к веб-кластеру. Один сервер.
Сервер
RDBMS(MySQL)
Web server (Apache+PHP)
Сервер
RDBMS(MySQL)
Appl. server - Web (Apache+PHP)
Rev. proxy server (Nginx)
Сервер
RDBMS(MySQL)
Appl. server – FastCGI (PHP-FPM)
Rev. proxy server (Nginx)
![Page 18: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического](https://reader030.vdocument.in/reader030/viewer/2022040809/5e4e0c4490eb3c505a6fcba2/html5/thumbnails/18.jpg)
На пути к веб-кластеру. Вынос компонентов
на серверы.
Сервер баз данных
Сервер статики
Rev. proxy server (Nginx)
Сервер приложений
RDBMS(MySQL) Appl. server (PHP-FPM)
Стат. файлы
![Page 19: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического](https://reader030.vdocument.in/reader030/viewer/2022040809/5e4e0c4490eb3c505a6fcba2/html5/thumbnails/19.jpg)
Типичный веб-кластер
SLAVE
SLAVE
Сервер
Сервер
Сервер базы данных: MASTER
Rev. proxy server (nginx + http_upstream_module)
Серверы приложений
RDBMS(MySQL) Appl. server (PHP-FPM)
Стат. файлы
Серверы баз данных: SLAVE
RDBMS(MySQL)
Диспетчер SQL запросов
Общие сессии
Общие файлы
![Page 20: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического](https://reader030.vdocument.in/reader030/viewer/2022040809/5e4e0c4490eb3c505a6fcba2/html5/thumbnails/20.jpg)
Сессии, кеши, NoSQL
Кластер memcached – для кэша, сессий
Согласованность кэшей
Управляемость кэшей
NoSQL - нужен ли и когда?
HandlerSocket
![Page 21: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического](https://reader030.vdocument.in/reader030/viewer/2022040809/5e4e0c4490eb3c505a6fcba2/html5/thumbnails/21.jpg)
Веб-кластер в AWS – Битрикс24
Elastic Load Balancing
Web 1
Elastic Load Balancing
Dynamic
Web N
… CloudWatch + AutoScaling
Web 1 Web 2 Web N
… CloudWatch + AutoScaling
S3
management, monitoring,
backup
Static
CDN
js, css
Dynamic Static
CDN
js, css
imag
es (
clie
nts
)
imag
es (
clie
nts
)
local cache local cache local cache local cache local cache
control cache: memcached
mysqld
mysqld
mysqld
mysqld
mysqld
mysqld
master-master replication
master-master replication
master-master replication mysqld
mysqld
mysqld
mysqld
mysqld
mysqld
mysqld
mysqld
mysqld
mysqld
mysqld
mysqld
control cache: memcached
control cache: memcached
control cache: memcached
control cache: memcached
control cache: memcached
Web 2
local cache
![Page 22: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического](https://reader030.vdocument.in/reader030/viewer/2022040809/5e4e0c4490eb3c505a6fcba2/html5/thumbnails/22.jpg)
Производительность
EC2 (elastic compute cloud) – виртуалки, %stolen CPU
Нужны мощнее? VPC (virtual private cloud): сеть 10Gb,
hardware vpn, firewalls
Region = группа связанных датацентров, SLA = 99,95%
ДЦ1 ДЦ2
Балансировщик (ELB)
Группа автомасштабирования (AutoScaling)
CNAME к «myproj-1873425.us-east-
1.elb.amazonaws.com», SSL-терминация
![Page 23: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического](https://reader030.vdocument.in/reader030/viewer/2022040809/5e4e0c4490eb3c505a6fcba2/html5/thumbnails/23.jpg)
Производительность
ELB (elastic load balancing) – tcp/http балансировщик
EBS (elastic block store) – заметно уступают
«железным» дискам
Software RAID 10
Provisioned IOPS EBS – тысячи IOPS («SSD-диски»)
Percona Server – быстрая загрузка InnoDB buffer pool
страниц при старте.
![Page 24: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического](https://reader030.vdocument.in/reader030/viewer/2022040809/5e4e0c4490eb3c505a6fcba2/html5/thumbnails/24.jpg)
Поддержка протоколов
ELB – только недавно стал поддерживать WebDAV
ELB – нет поддержки spdy
Long pooling и ELB
ELB tcp-proxy и адреса клиентов
UDP
Ступенчатый трафик и ELB
Мониторинг проблем
![Page 25: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического](https://reader030.vdocument.in/reader030/viewer/2022040809/5e4e0c4490eb3c505a6fcba2/html5/thumbnails/25.jpg)
Отказоустойчивость
ELB + AutoScaling + CloudWatch
2 и более датацентров (AZ)
Балансировищки – тоже ломаются
Инкрементальные снепшоты серверов (раз в N мин)
Route 53:
- DNS-failover, автопроверка серверов
- сервера на разных континентах
- UDP трафик
![Page 26: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического](https://reader030.vdocument.in/reader030/viewer/2022040809/5e4e0c4490eb3c505a6fcba2/html5/thumbnails/26.jpg)
Мониторинг - CloudWatch
Полностью обойтись только встроенным
мониторингом – скорее нельзя
Довольно «молодой»
Не хватает ряда важных, привычных метрик
Гибкий, алерты, графики, агрегация
Автоматизация AutoScaling
![Page 27: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического](https://reader030.vdocument.in/reader030/viewer/2022040809/5e4e0c4490eb3c505a6fcba2/html5/thumbnails/27.jpg)
Мониторинг - CloudWatch
Region = группа связанных датацентров
ДЦ1 ДЦ2
Балансировщик (ELB)
Группа автомасштабирования (AutoScaling)
Мониторинг (CloudWatch)
Образ машины (AMI)
![Page 28: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического](https://reader030.vdocument.in/reader030/viewer/2022040809/5e4e0c4490eb3c505a6fcba2/html5/thumbnails/28.jpg)
Масштабируемость данных
S3 (simple storage service)
Любой объем данных
Локальная папка через fuse
Временные токены (IAM)
Плюшки типа статических сайтов
Интеграция с CDN – CloudFront
![Page 29: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического](https://reader030.vdocument.in/reader030/viewer/2022040809/5e4e0c4490eb3c505a6fcba2/html5/thumbnails/29.jpg)
CDN - CloudFront
abc123.cloudfront.net
А в России – пока нет точки раздачи
Настройка политик кэширования
Свои SSL сертификаты
Раздача потоков RTMP
Управление через API
Можно раздавать из s3, своих серверов, ELB
![Page 30: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического](https://reader030.vdocument.in/reader030/viewer/2022040809/5e4e0c4490eb3c505a6fcba2/html5/thumbnails/30.jpg)
Производительность MySQL
AWS RDS (relation database service)
Master-Slave репликация – можно читать быстро
2 датацентра (az)
Автопереключение при аварии, бэкапы,
восстановление
Отсутствие гибкости при настройке
Были проблемы при авариях региона
Мы – не используем RDS
![Page 31: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического](https://reader030.vdocument.in/reader030/viewer/2022040809/5e4e0c4490eb3c505a6fcba2/html5/thumbnails/31.jpg)
Производительность MySQL
Master-Master (Active - Pasive)
Переключаем трафик между ДЦ - сами
Percona XtraDB
Master-Master
(Active/Passive)
Мас
шта
би
ро
ван
ие
MyS
QL
ДЦ1 ДЦ2
![Page 32: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического](https://reader030.vdocument.in/reader030/viewer/2022040809/5e4e0c4490eb3c505a6fcba2/html5/thumbnails/32.jpg)
Резервирование данных
Снепшоты серверов в s3
Инкрементальный бэкап – “из коробки”
Автоматическая консолидация данных
Перенос данных из s3 в s3
Glacier
Регионы и данные
Резервное копирование MySQL
Автоматизация резервирования – AWS SDK …
![Page 33: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического](https://reader030.vdocument.in/reader030/viewer/2022040809/5e4e0c4490eb3c505a6fcba2/html5/thumbnails/33.jpg)
Резервирование данных
Дата-центр 1
Веб-проект
Дата-центр 2
RDBMS(MySQL) Slave
«Горячий» бэкап
RDBMS(MySQL) Master
S3 снепшот S3 снепшот S3 снепшот
![Page 34: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического](https://reader030.vdocument.in/reader030/viewer/2022040809/5e4e0c4490eb3c505a6fcba2/html5/thumbnails/34.jpg)
Резервирование данных
Дата-центр 2
RDBMS(MySQL) Master
S3 снепшот S3 снепшот S3 снепшот
Веб-проект
«Эластичный» IP, не поменялся
![Page 35: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического](https://reader030.vdocument.in/reader030/viewer/2022040809/5e4e0c4490eb3c505a6fcba2/html5/thumbnails/35.jpg)
Полезные веб-сервисы
ElastiCache – кластерный кэш:
- медленнее memcached
CloudSearch – поисковый движок с фасетами:
- нет поддержки морфологии
- не автоматизируется stemming
Альтернативы: sphinx, lucene
SQS (simple queue service) – middleware, очереди
сообщений, распределенное демультиплексирование
IAM (Identity and Access Management) – права,
временные токены
![Page 36: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического](https://reader030.vdocument.in/reader030/viewer/2022040809/5e4e0c4490eb3c505a6fcba2/html5/thumbnails/36.jpg)
Полезные веб-сервисы
DynamoDB – «законодатель» NoSQL:
- SSD-хранилище
- до 40к запросов в секунду на запись/чтение
SimpleDB
CloudFormation
![Page 37: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического](https://reader030.vdocument.in/reader030/viewer/2022040809/5e4e0c4490eb3c505a6fcba2/html5/thumbnails/37.jpg)
Выбор региона AWS
Latency
AWS нет в России, оплата
«Технологичные» регионы – в США
Стоимость и наличие reserved-instances
Стоимость spot-instances – как эффективно
сэкономить
![Page 38: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического](https://reader030.vdocument.in/reader030/viewer/2022040809/5e4e0c4490eb3c505a6fcba2/html5/thumbnails/38.jpg)
Выбор региона AWS
Latency
AWS нет в России, оплата
«Технологичные» регионы – в США
Стоимость и наличие reserved-instances
Стоимость spot-instances – как эффективно
сэкономить
Ужасы …
![Page 39: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического](https://reader030.vdocument.in/reader030/viewer/2022040809/5e4e0c4490eb3c505a6fcba2/html5/thumbnails/39.jpg)
Когда все «упало»
status.aws.amazon.com
Что может упасть, «когда и почему»
Архитектура стартапа с учетом возможного падения
любого узла
Свой мониторинг амазона – nagios/zabbix
Форумы – быстро отвечают и помогают
Прогресс восстановления после аварии
Платная техподдержка
![Page 40: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического](https://reader030.vdocument.in/reader030/viewer/2022040809/5e4e0c4490eb3c505a6fcba2/html5/thumbnails/40.jpg)
Спасибо за внимание! Вопросы?
Александр Сербул
AlexSerbul