Стартапы в Amazon Web Services – тонкости, подводные...

40
Девятая независимая научно-практическая конференция «Разработка ПО 2013» 23 - 25 октября, Москва Александр Сербул Стартапы в Amazon Web Services – тонкости, подводные камни, рецепты -Битрикс

Transcript of Стартапы в Amazon Web Services – тонкости, подводные...

Page 1: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического

Девятая независимая научно-практическая конференция «Разработка ПО 2013» 23 - 25 октября, Москва

Александр Сербул

Стартапы в Amazon Web Services –

тонкости, подводные камни, рецепты

1С-Битрикс

Page 2: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического

О чем поговорим

Стартап – глазами инвестора

Стартап – глазами технического директора

Быстрый старт, инкрементальное развитие

А требования – постоянно меняются

Технологические риски – и бизнес-задачи

Werner Vogels - VP and CTO of Amazon.com

Page 3: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического

О чем поговорим

Стартап – веб-приложение

Выбор технологий: unix/nginx/PHP/memcached/MySQL – кратко,

узкие места

Развитие архитектуры стартапа – как обычно и

как полезно

Облако для стартапа – возможности и

ограничения

Чем особенно полезен Amazon Web Services

Риски AWS – как не сломать «спину»

Page 4: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического

Стеки ПО и риски стартапа

Выбираем платформу для стартапа…

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 · Стартап – глазами технического

Требования меняются постоянно…

Гибкая разработка – поможет ли?

Простая архитектура – о чем это?

Компоненты, модули, философия unix

Page 6: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического

Клиентов становится все больше…

Быстрая отдача тяжелого контента, CDN

Быстрая загрузка страниц в браузер

Быстрая работа мобильных приложений

SLA – как удержать?

Пиковые нагрузки – теория и практика

Page 7: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического

Клиентов становится все больше…

Page 8: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического

Объем данных растет. Быстро.

В одну БД данные не помещаются

БД-кластер? А не страшно?

Разные регионы, latency

Теорема CAP

Page 9: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического

Поможет ли NoSQL?

Риски:

Eventual consistency

Агрессивная денормализация

Проблемы со сложными запросами

Усложнение приложения-клиента

Page 10: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического

Репликация – как «продержаться»,

не разделяя данные

Page 11: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического

Разделяем данные клиентов

Вертикальный шардинг

Горизонтальный шардинг

База данных 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 · Стартап – глазами технического
Page 13: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического

Когда всё «упало» и «пропало»

Виды аварий

Мониторинг – мы или клиенты?

Скорость восстановления после сбоя

Распределенные данные, целостность и

резервирование

SLA и ответственность перед клиентами

Page 14: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического

Требования к стартапу

Высокая производительность

Интеграция с CDN

Поддержка мобильных устройств

Поддержка протоколов – WebDAV, long pooling,

WebSockets, spdy и т.п.

Масштабируемость при росте нагрузке – быстро и

дешево, автоматически

Защищенные соединения - SSL

Простой и эффективный мониторинг состояния

Отказоустойчивость при авариях, быстрое

восстановление, автоматически

Простота резервирования информации

Page 15: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического

Требования к стартапу

А еще нужен быстрый поиск по веб-проекту

… с учетом прав

… с умной фильтрацией

А еще хочется, чтобы эксплуатировал систему один человек, а

не отдел системного администрирования.

Page 16: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического

Требования к стартапу

Page 17: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического

На пути к веб-кластеру. Один сервер.

Сервер

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 · Стартап – глазами технического

На пути к веб-кластеру. Вынос компонентов

на серверы.

Сервер баз данных

Сервер статики

Rev. proxy server (Nginx)

Сервер приложений

RDBMS(MySQL) Appl. server (PHP-FPM)

Стат. файлы

Page 19: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического

Типичный веб-кластер

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 · Стартап – глазами технического

Сессии, кеши, NoSQL

Кластер memcached – для кэша, сессий

Согласованность кэшей

Управляемость кэшей

NoSQL - нужен ли и когда?

HandlerSocket

Page 21: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического

Веб-кластер в 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 · Стартап – глазами технического

Производительность

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 · Стартап – глазами технического

Производительность

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 · Стартап – глазами технического

Поддержка протоколов

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 · Стартап – глазами технического

Отказоустойчивость

ELB + AutoScaling + CloudWatch

2 и более датацентров (AZ)

Балансировищки – тоже ломаются

Инкрементальные снепшоты серверов (раз в N мин)

Route 53:

- DNS-failover, автопроверка серверов

- сервера на разных континентах

- UDP трафик

Page 26: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического

Мониторинг - CloudWatch

Полностью обойтись только встроенным

мониторингом – скорее нельзя

Довольно «молодой»

Не хватает ряда важных, привычных метрик

Гибкий, алерты, графики, агрегация

Автоматизация AutoScaling

Page 27: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического

Мониторинг - CloudWatch

Region = группа связанных датацентров

ДЦ1 ДЦ2

Балансировщик (ELB)

Группа автомасштабирования (AutoScaling)

Мониторинг (CloudWatch)

Образ машины (AMI)

Page 28: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического

Масштабируемость данных

S3 (simple storage service)

Любой объем данных

Локальная папка через fuse

Временные токены (IAM)

Плюшки типа статических сайтов

Интеграция с CDN – CloudFront

Page 29: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического

CDN - CloudFront

abc123.cloudfront.net

А в России – пока нет точки раздачи

Настройка политик кэширования

Свои SSL сертификаты

Раздача потоков RTMP

Управление через API

Можно раздавать из s3, своих серверов, ELB

Page 30: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического

Производительность MySQL

AWS RDS (relation database service)

Master-Slave репликация – можно читать быстро

2 датацентра (az)

Автопереключение при аварии, бэкапы,

восстановление

Отсутствие гибкости при настройке

Были проблемы при авариях региона

Мы – не используем RDS

Page 31: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического

Производительность 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 · Стартап – глазами технического

Резервирование данных

Снепшоты серверов в s3

Инкрементальный бэкап – “из коробки”

Автоматическая консолидация данных

Перенос данных из s3 в s3

Glacier

Регионы и данные

Резервное копирование MySQL

Автоматизация резервирования – AWS SDK …

Page 33: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического

Резервирование данных

Дата-центр 1

Веб-проект

Дата-центр 2

RDBMS(MySQL) Slave

«Горячий» бэкап

RDBMS(MySQL) Master

S3 снепшот S3 снепшот S3 снепшот

Page 34: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического

Резервирование данных

Дата-центр 2

RDBMS(MySQL) Master

S3 снепшот S3 снепшот S3 снепшот

Веб-проект

«Эластичный» IP, не поменялся

Page 35: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического

Полезные веб-сервисы

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 · Стартап – глазами технического

Полезные веб-сервисы

DynamoDB – «законодатель» NoSQL:

- SSD-хранилище

- до 40к запросов в секунду на запись/чтение

SimpleDB

CloudFormation

Page 37: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического

Выбор региона AWS

Latency

AWS нет в России, оплата

«Технологичные» регионы – в США

Стоимость и наличие reserved-instances

Стоимость spot-instances – как эффективно

сэкономить

Page 38: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического

Выбор региона AWS

Latency

AWS нет в России, оплата

«Технологичные» регионы – в США

Стоимость и наличие reserved-instances

Стоимость spot-instances – как эффективно

сэкономить

Ужасы …

Page 39: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического

Когда все «упало»

status.aws.amazon.com

Что может упасть, «когда и почему»

Архитектура стартапа с учетом возможного падения

любого узла

Свой мониторинг амазона – nagios/zabbix

Форумы – быстро отвечают и помогают

Прогресс восстановления после аварии

Платная техподдержка

Page 40: Стартапы в Amazon Web Services – тонкости, подводные …2013.secrus.org/2013/files/086_serbul.pdf · Стартап – глазами технического

Спасибо за внимание! Вопросы?

Александр Сербул

[email protected]

AlexSerbul