24
Разработка приложений в облаке на примере Amazon Web Services Константин Слисенко JazzTeam, Senior software engineer

Разработка приложений в облаке на примере Amazon Web Serices

Embed Size (px)

DESCRIPTION

Выступление на конференции SolIT в Солигорске. Презентация рассказывает о принципе работы облачных сервисов Amazon и способах разработки приложений для работы в облаке.

Citation preview

Page 1: Разработка приложений в облаке на примере Amazon Web Serices

Разработка приложений в облаке на примере Amazon

Web Services

Константин СлисенкоJazzTeam, Senior software engineer

Page 2: Разработка приложений в облаке на примере Amazon Web Serices

Chuck Norris doesn’t need the cloud to scale his applications, he uses his laptop.

(Chuck Norris plugin for Jenkins)

Page 3: Разработка приложений в облаке на примере Amazon Web Serices

Что такое облако?Пул ресурсов, к которому мы можем получить доступ через API

On demand (self service)● не ждём пока нам сконфигурируют сервер

Scalable (up and down)● в любой момент можно докупить новые ресурсы или

отказаться от существующих● безграничные ресурсы и мощности в любое время

Pay for use● платим только за то, что используем

Page 4: Разработка приложений в облаке на примере Amazon Web Serices

Для чего можно использовать облако?

Размещение приложений с неравномерной нагрузкой● сезонная нагрузка (день/ночь, праздники, пики продаж)

● не известно вначале будет ли приложение популярным, мы не хотим на этом этапе инвестировать в сервера

Большие вычисленияНагрузочное тестирование● необходимо много ресурсов на короткое время

Хранение информации с экстремальными нагрузками● рекламный ролик, который должны посмотреть миллионы

покупателей по всему миру

Улучшение устойчивость к сбоям нашей системы● выход из строя нашего оборудования, запуск копии в облаке пока

не восстановится наша основная система

Page 5: Разработка приложений в облаке на примере Amazon Web Serices

Типы облаковSAAS (Software as a service)

"Аренда" приложений, больше пользуемся - больше платим

PAAS (Platform as a service)Простое для разработчиков развёртывание приложений на известной технологии (Java, .NET, PHP, Ruby, ...)

IAAS (Infrastructure as a service)Настраиваем инфраструктуру самостоятельноНужны дополнительные навыки и опыт работы с окружением

Storageбезразмерное хранилище данныхустойчиво к очень большим нагрузкамCDN - системы "раздачи" контента

Page 6: Разработка приложений в облаке на примере Amazon Web Serices

Рынок

IAAS

PAAS

SAAS

Storage

Page 7: Разработка приложений в облаке на примере Amazon Web Serices

Типы облаковPublic cloud● сервера доступны через интернет● зачастую pay for use

Private cloud● работает и поддерживается

внутри организации ● не требуется интернет-

соединения● не все данные можно хранить вне,

например финансовые данные

Hybrid cloud● гибкость как у private cloud (не

требуется интернет-соединения) и устойчивость к сбоям как у public cloud

● проигрывает в защищённости private cloud

Page 8: Разработка приложений в облаке на примере Amazon Web Serices

Open Source tools to build private clouds

http://incubator.apache.org/cloudstack/

http://www.eucalyptus.com/

http://www.openstack.org/

Page 9: Разработка приложений в облаке на примере Amazon Web Serices

Amazon Web Services● Самый большой на рынке● Легко стартовать

● Период бесплатного использования 1 год!● Облачные сервисы практически для

любых нужд● API – стандарт де-факто● Marketplace (https://aws.amazon.

com/amis)

Page 10: Разработка приложений в облаке на примере Amazon Web Serices

География датацентров

Page 11: Разработка приложений в облаке на примере Amazon Web Serices

AWS Products and services

Page 12: Разработка приложений в облаке на примере Amazon Web Serices

Amazon Elastic CloudВиртуальные машины в аренду

● Разная мощность, разная стоимость

AMI – образ виртуальной машины● Сохраняем настроенную конфигурацию● Запускаем любое количество в любой момент● Можно продавать и покупать на marketplace

Размещение в разных дата-центрах● Для большей надёжности

Auto Scaling groups

Page 13: Разработка приложений в облаке на примере Amazon Web Serices

Amazon S3Файловое хранилище (до 5 ТБ)99,999999999% надёжность*Множество протоколов доступа

● http, https, bittorent, …Резервное копирование данных в разных дата-центрах

Amazon Cloud Front - размещение данных ближе к потребителям

Page 14: Разработка приложений в облаке на примере Amazon Web Serices

Amazon SQSАсинхронная очередь сообщений

Page 15: Разработка приложений в облаке на примере Amazon Web Serices

Управление облаком Amazon

AWS Management Console● Web-ui, наглядно отображены все сервисы

Прямой вызов API● Command line interface● Использование SDK и вызов из программы

API позволяет нам писать скрипты для управления инфраструктурой!

Page 16: Разработка приложений в облаке на примере Amazon Web Serices

AWS Management Console

Page 17: Разработка приложений в облаке на примере Amazon Web Serices

Amazon Web Services APISDK: java, android, iOS, .NET, Node.js,

Python, PHP, Ruby

Amazon SDK for java● поддерживает практически все сервисы● усть плагин к eclipse

http://aws.amazon.com/tools/http://aws.amazon.com/sdkforjava/

Page 18: Разработка приложений в облаке на примере Amazon Web Serices

Запуск сервера в EC2AmazonEC2 ec2 = new AmazonEC2Client(credentials);

RunInstancesRequest req = new RunInstancesRequest();req.setInstanceType("t1.small");req.setImageId("ami-dd47ecb4");req.setMinCount(Integer.valueOf(1));req.setMaxCount(Integer.valueOf(1));

ArrayList<String> sg = new ArrayList<String>();sg.add("MySecurityGroup");req.setSecurityGroups(sg);

RunInstancesResult runResult = ec2.runInstances(req);

for (Instance instance : runResult.getReservation().getInstances()) {System.out.println("Launched Instace: " + instance.getInstanceId());

}

Page 19: Разработка приложений в облаке на примере Amazon Web Serices

Размещение файла в S3AmazonS3 s3 = new AmazonS3Client(credentials);

// Просматриваем все букетыfor (Bucket b : s3.listBuckets()) { System.out.println(b.getName());}

s3.createBucket("myBucket" + UUID.randomUUID());s3.putObject(new PutObjectRequest("myBucket", "MyFile",

createSampleFile()));

ObjectListing listing = s3.listObjects(new ListObjectsRequest().withBucketName("myBucket"));

for (S3ObjectSummary obj : listing.getObjectSummaries()) { System.out.println(obj.getKey() + " size=" + obj.getSize());}

Page 20: Разработка приложений в облаке на примере Amazon Web Serices

Архитектуры приложений в облаке

Web application hosting Disaster recovery

http://aws.amazon.com/architecture/

Batch processing

Page 21: Разработка приложений в облаке на примере Amazon Web Serices
Page 22: Разработка приложений в облаке на примере Amazon Web Serices
Page 23: Разработка приложений в облаке на примере Amazon Web Serices
Page 24: Разработка приложений в облаке на примере Amazon Web Serices

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

[email protected], Константин Слисенко