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

Post on 09-Feb-2020

11 views 0 download

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

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

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

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

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

1С-Битрикс

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

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

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

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

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

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

Werner Vogels - VP and CTO of Amazon.com

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

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

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

узкие места

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

как полезно

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

ограничения

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

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

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

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

Java, C++, Node.js, Python/Django, Ruby on Rails

LAMP: linux, nginx, php-fpm, MySQL, memcached…

Кадровые риски. Где искать разработчиков, когда

и кого

Эксплуатация и сисадмины

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Теорема CAP

Поможет ли NoSQL?

Риски:

Eventual consistency

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

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

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

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

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

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

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

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

База данных MySQL

База данных MySQL 1

База данных MySQL 2

База данных MySQL

База данных MySQL 1

База данных MySQL 2

Аккаунты a-m

Аккаунты n-z

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

Виды аварий

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

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

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

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

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

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

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

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

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

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

WebSockets, spdy и т.п.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Сервер

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)

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

на серверы.

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

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

Rev. proxy server (Nginx)

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

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

Стат. файлы

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

SLAVE

SLAVE

Сервер

Сервер

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

Rev. proxy server (nginx + http_upstream_module)

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

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

Стат. файлы

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

RDBMS(MySQL)

Диспетчер SQL запросов

Общие сессии

Общие файлы

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

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

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

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

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

HandlerSocket

Веб-кластер в 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

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

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-терминация

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

ELB (elastic load balancing) – tcp/http балансировщик

EBS (elastic block store) – заметно уступают

«железным» дискам

Software RAID 10

Provisioned IOPS EBS – тысячи IOPS («SSD-диски»)

Percona Server – быстрая загрузка InnoDB buffer pool

страниц при старте.

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

ELB – только недавно стал поддерживать WebDAV

ELB – нет поддержки spdy

Long pooling и ELB

ELB tcp-proxy и адреса клиентов

UDP

Ступенчатый трафик и ELB

Мониторинг проблем

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

ELB + AutoScaling + CloudWatch

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

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

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

Route 53:

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

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

- UDP трафик

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

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

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

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

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

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

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

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

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

ДЦ1 ДЦ2

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

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

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

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

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

S3 (simple storage service)

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

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

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

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

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

CDN - CloudFront

abc123.cloudfront.net

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

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

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

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

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

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

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

AWS RDS (relation database service)

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

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

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

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

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

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

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

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

Master-Master (Active - Pasive)

Переключаем трафик между ДЦ - сами

Percona XtraDB

Master-Master

(Active/Passive)

Мас

шта

би

ро

ван

ие

MyS

QL

ДЦ1 ДЦ2

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

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

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

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

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

Glacier

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

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

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

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

Дата-центр 1

Веб-проект

Дата-центр 2

RDBMS(MySQL) Slave

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

RDBMS(MySQL) Master

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

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

Дата-центр 2

RDBMS(MySQL) Master

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

Веб-проект

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

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

ElastiCache – кластерный кэш:

- медленнее memcached

CloudSearch – поисковый движок с фасетами:

- нет поддержки морфологии

- не автоматизируется stemming

Альтернативы: sphinx, lucene

SQS (simple queue service) – middleware, очереди

сообщений, распределенное демультиплексирование

IAM (Identity and Access Management) – права,

временные токены

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

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

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

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

SimpleDB

CloudFormation

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

Latency

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

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

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

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

сэкономить

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

Latency

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

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

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

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

сэкономить

Ужасы …

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

status.aws.amazon.com

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

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

любого узла

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

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

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

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

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

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

serbul@1c-bitrix.ru

AlexSerbul