Показаны сообщения с ярлыком облачные вычисления. Показать все сообщения
Показаны сообщения с ярлыком облачные вычисления. Показать все сообщения

Сервер - это по сути инструмент

Ты же не копаешь колодцы для воды и не строишь электростанции для тока.


Фрагмент из сериала "Кремниевая долина" (2014)

AWS Instance X1

Amazon AWS даёт за 13 долларов 2 терабайта оперативной памяти и 4 Xeon по 64 ядра. Эта штука стоит 60 000 $ (prepaid) в год.

Это будущее

Эй! Привет! Мой босс сказал поговорить с тобой. Сказал, что ты много знаешь про веб приложения.

— Да, сейчас правда, я больше занимаюсь распределенными системами. Я только что вернулся с ContainerCamp и GlueCon, а еще я собираюсь на DockerCon на следующей неделе. Реально впечатлен тем, как двигается бизнес — все становится намного проще и доступнее! Это — будущее!

Здорово… Видишь ли, я сейчас разрабатываю простенькое web-приложение — обычный CRUD на Rails, собираюсь деплоиться в Heroku. Скажи, Heroku все еще актуальна?

— Ты что! Нет. Это уже старая школа. Heroku — труп. Никто этим больше не пользуется. Теперь тебе нужно познать Docker. Это будущее!

Возможности Google Cloud Datastore

  • Atomic transactions. Cloud Datastore can execute a set of operations where either all succeed, or none occur.
  • High availability of reads and writes. Cloud Datastore runs in Google data centers, which use redundancy to minimize impact from points of failure.
  • Massive scalability with high performance. Cloud Datastore uses a distributed architecture to automatically manage scaling. Cloud Datastore uses a mix of indexes and query constraints so your queries scale with the size of your result set, not the size of your data set.
  • Flexible storage and querying of data. Cloud Datastore maps naturally to object-oriented and scripting languages, and is exposed to applications through multiple clients. It also provides a SQL-like query language.
  • Balance of strong and eventual consistency. Cloud Datastore ensures that entity lookups by key and ancestor queries always receive strongly consistent data. All other queries are eventually consistent. The consistency models allow your application to deliver a great user experience while handling large amounts of data and users.
  • Encryption at rest. Cloud Datastore automatically encrypts all data before it is written to disk and automatically decrypts the data when read by an authorized user. For more information, see Server-Side Encryption.
  • Fully managed with no planned downtime. Google handles the administration of the Cloud Datastore service so you can focus on your application. Your application can still use Cloud Datastore when the service receives a planned upgrade.


источник

Доступ к Amazon S3

Amazon Simple Storage Service (S3) — это долгосрочное хранилище данных на основе облачной обработки. Этот сервис работает независимо от остальных сервисов, предоставляемых Amazon. Фактически приложения, которые вы разрабатываете для хостинга ваших собственных серверов, могут использовать Amazon S3, без необходимости перемещения в облако иным образом. Когда компания Amazon называет S3 "простым хранилищем" (simple storage), то она имеет в виду набор функций, предоставляемых сервисом, а не простоту использования. Amazon S3 позволяет вам переместить данные в облако и извлечь их обратно. При этом вам нет необходимости знать что-либо о том, как именно и где именно в облаке хранятся ваши данные. Если вы воспринимаете Amazon S3 как удаленную файловую систему, то вы глубоко заблуждаетесь. Amazon S3 во многих отношениях гораздо примитивнее файловой системы. В действительности вы не храните там нечто, называемое "файлами", вы храните там объекты. Более того, объекты (objects) хранятся в "корзинах" (buckets), а не в каталогах (directories), как в файловой системе. Хотя эти различия могут казаться чисто семантическими, вы должны учитывать их, принимая во внимание следующие важные факты:
  • объекты, хранимые в S3, не могут иметь размер, превышающий 5 Гбайт;
  • "корзины" (Buckets) существуют в плоском пространстве имен, предоставленном в общий доступ всем пользователям Amazon S3. Вы не имеете возможности создавать вложенные корзины и должны быть предельно внимательны к пересечениям в пространстве имен;
  • вы можете сделать свои корзины и объекты доступными для публичного просмотра;
  • без помощи инструментов от сторонних разработчиков вы не можете "монтировать" (mount) хранилище S3. На самом деле, я не слишком одобрительно отношусь к самой идее "монтирования" S3, как раз из-за столь существенной концептуальной разницы между S3 и файловой системой. Это различие делает неправильной саму мысль о рассмотрении S3 в качестве файловой системы.

Прежде чем получить доступ к S3, вам необходимо создать учетную запись Amazon Web Services. При этом вы можете запросить пространство для хранения данных на серверах, расположенных либо в США, либо в Европе, либо даже в Азиатско-Тихоокеанском регионе (в апреле 2010 года компания Amazon запустила первый регион EC2 в Азиатско-Тихоокеанском регионе (Сингапур)). Когда речь заходит о хранении данных, выбор местоположения серверов — это вопрос не только вашего места жительства. Как будет рассказано далее в этой книге, на решение о месте хранения ваших облачных данных влияют административные вопросы и различные аспекты, касающиеся конфиденциальности информации. В этой главе я рассматриваю вопрос доступа к S3, исходя из предположения, что вы выбрали хранилище, ближайшее к вам.

Amazon предоставляет доступ к S3 как через SOAP API, так и через REST API. Хотя разработчики обычно лучше знакомы с разработкой Web-сервисов с помощью SOAP, REST представляет собой предпочтительный механизм для доступа к S3, вследствие того, что при обработке больших двоичных объектов (Blinary Large Objects, BLOBs) через SOAP API возникают сложности. В частности, SOAP ограничивает размер объекта, которым можно манипулировать в S3, а также ограничивает любую обработку (например, индикатор статуса передачи), которую вам может потребоваться осуществлять над потоками данных по мере того, как они передаются в S3 и обратно.

Интерфейс прикладного программирования Amazon Web Services поддерживает следующие возможности:
  • поиск корзин (buckets) и объектов;
  • обнаружение их метаданных;
  • создание новых корзин;
  • загрузка новых объектов;
  • удаление существующих корзин и объектов.

При манипулировании вашими корзинами вы при желании можете указать местоположение для хранения содержимого корзины. За исключением случаев, когда вам требуется по-настоящему тонкоструктурированный контроль над взаимодействиями с S3, я рекомендовал бы вам использовать "обертку" API (API wrapper) для вашего предпочитаемого языка программирования, которая будет абстрагировать вас от S3 REST API. Например, мои разработчики программируют на Java с применением Jets3t. Чтобы начать работу с Amazon S3, вам наверняка пригодится клиентское приложение командной строки s3cmd для Amazon S3. Это приложение представляет собой "обертку" с интерфейсом командной строки для доступа к Web-сервисам S3. Данный инструмент написан на Python, а это значит, что вы можете изучить его исходный код — он послужит отличным образцом, иллюстрирующим хороший стиль написания приложений на Python для S3.

Кроме того, Amazon предоставляет доступ к Amazon S3 по протоколу BitTorrent. BitTorrent представляет собой пиринговый (peer-to-peer, P2P) протокол для кооперативного доступа к файлам. Поскольку BitTorrent является стандартным протоколом для совместного доступа к большим двоичным объектам, на рынке предлагается целый ряд клиентов и приложений, предназначенных для потребления и публикации данных с помощью BitTorrent. Если ваше приложение может использовать эту встроенную инфраструктуру, то возможно, имеет смысл воспользоваться преимуществами, предоставляемыми поддержкой протокола BitTorrent со стороны Amazon S3. В общем случае, однако, транзакционные Web-приложения не используют BitTorrent для взаимодействия с S3.

Чтобы проиллюстрировать практическое использование S3, воспользуемся утилитой s3cmd для передачи файлов в хранилище S3 и обратно. Команды, поддерживаемые этой утилитой, отражают функции API Web-сервисов, на которых она основывается. После того как вы скачаете эту утилиту, вам потребуется сконфигурировать ее, указав ваши ключ доступа к S3 и секретный ключ S3. Вне зависимости от того, какой инструментарий вы используете — эту утилиту или какоенибудь другое средство, вам все равно будут нужны эти ключи для доступа к вашим частным корзинам в S3.

Первое, что вам потребуется сделать в S3 — это создать корзину, в которой вы будете хранить объекты. Это делается следующей командой: s3cmd mb s3://BUCKET

Данная команда создает корзину и присваивает ей указанное вами имя. Как я уже заметил ранее в этой главе, пространство имен для вашей корзины доступно всем клиентам Amazon. Если только вы не являетесь первым читателем этой книги, крайне маловероятно, что только что приведенная команда будет выполнена успешно. Чтобы команда выполнилась успешно, вам необходимо заменить имя BUCKET на любое другое, уникальное для вас. Многие пользователи с тем, чтобы сделать имена корзин уникальными для себя, примерно так, как это делается для доменных имен, предваряют имена корзин префиксами. Тем не менее, имейте в виду, что какой бы стандарт именования вы ни приняли, ничто не может помешать другим пользователям нарушать ваше соглашение об именовании.

Я уже несколько раз предупреждал вас о ситуациях с пространством имен корзин. Возможно, к этому моменту вы уже серьезно задумались о том, как же следует работать в условиях таких ограничений, касающихся именования.

В первую очередь, вам следует иметь в виду следующие правила именования.
  • Имена могут состоять только из строчных букв (символов в нижнем регистре клавиатуры), цифр, точек, символов подчеркивания и дефисов. Начальным символом имени должна быть буква или цифра.
  • Имя не должно составляться в стиле IP-адреса (иными словами, не допускаются имена наподобие 10.0.0.1).
  • Длина имени должна составлять не менее 3 и не более 255 символов.

Возможно, вам захочется называть свои корзины таким образом, чтобы они образовали ваше собственное виртуальное пространство имен корзин. Например, мне вполне подойдет такое имя, как com.imaginary.mybucketis, потому что мне принадлежит домен imaginary.com. Важно отметить, что ничто не гарантирует вам того, что никакой другой пользователь не станет использовать ваш домен (или любое другое придуманное вами соглашение об именовании) в качестве префикса имен своих корзин. Поэтому ваши приложения должны использовать достаточно интеллектуальный подход к созданию новых корзин и не должны быть привязаны к конкретной схеме именования.

Amazon предлагает следующие правила именования корзин, которые позволят вам создавать действительные и корректные URL для ваших объектов S3.
  • Не следует создавать имена корзин, в состав которых входят символы подчеркивания (несмотря на то, что официально это разрешено).
  • В идеальном варианте лучше всего ограничить длину имени 63 символами.
  • Не следует создавать имена корзин, завершающиеся дефисом, а также следует избегать ситуаций, когда в составе имени за дефисом следует точка.

После того как корзина будет создана, ее можно начинать заполнять объектами:
s3cmd put LOCAL_FILE s3://BUCKET/S3FILE

Например:
s3cmd put home_movie.mp4 s3://com.imaginary.movies/home_movie.mp4

Утилита s3cmd ограничивает размеры ваших файлов до 5 Гбайт, что является следствием ранее упомянутого ограничения S3. Далее в этой книге мы обсудим стратегии обхода этого ограничения, методы обеспечения более высокого уровня безопасности, а также контроля целостности ваших объектов S3.

Когда объект вам потребуется, вы можете извлечь его из облака:
s3cmd get s3://BUCKET/S3FILE LOCAL_FILE

Например:
s3cmd get s3://com.imaginary.movies/home_movie.mp4 home_movies3.mp4

В приведенном примере файл с вашим домашним видео извлечен обратно на ваш настольный компьютер. Приведу еще несколько популярных команд, которые вы можете использовать.
  • Вывод списка всех ваших корзин: s3cmd ls
  • Вывод списка содержимого конкретной корзины: s3cmd ls s3://BUCKET
  • Удаление объекта из корзины: s3cmd del s3://BUCKET/S3FILE
  • Удаление корзины: s3cmd rb s3://BUCKET

Удалить корзину можно только в том случае, если она пуста. Прежде чем удалить корзину, вы должны пошагово, один за другим удалить из нее все объекты. Скоро в составе утилиты s3cmd появится опция --recursive, предназначенная для использования с командой del, но вы должны иметь в виду, что она всего лишь будет перечислять содержимое корзины и удалять объекты один за другим. Если вы используете API Web-сервисов, вам потребуется написать собственную подпрограмму рекурсивного удаления корзины, которая содержит объекты.

Обзорная информация об Amazon Simple Storage Service (S3)

Amazon S3 представляет собой облачное хранилище данных, доступное в реальном времени через API Web-сервисов из любой точки Интернета. Используя этот API, вы можете хранить любое количество объектов, размер которых варьируется от 1 байта до 5 Гбайт, в более или менее плоском пространстве имен.

Важно не думать об Amazon S3 как о файловой системе. Я видел много случаев, когда люди наживали себе неприятности, когда воспринимали Amazon S3 таким образом. В первую очередь, Amazon S3 имеет двухуровневое пространство имен. На первом уровне вы имеете так называемые "корзины" или "ведра" (buckets). Их можно считать аналогом каталогов в файловой системе, если вам так нравится, потому что они содержат данные, которые вы помещаете в S3. Однако, в отличие от традиционных каталогов, вы не можете организовать их иерархически — корзины не допускают вложенности (иначе говоря, вы не можете создать корзину внутри корзины). Возможно, еще более важное значение имеет тот факт, что пространство имен корзин предоставлено в общий доступ всем клиентам Amazon. Поэтому вам необходимо особо позаботиться о том, чтобы имена ваших корзин не пересекались с именами других корзин. Проще говоря, не следует создавать корзины с именами наподобие "Documents".

Еще один важный момент, который следует иметь в виду, заключается в том, что служба Amazon S3 работает относительно медленно. В действительности эта служба работает очень быстро для сервиса, развернутого в Интернете, но если вы ожидаете, что она будет отвечать на ваши запросы так же быстро, как локальный жесткий диск или SAN, то вы будете глубоко разочарованы. Таким образом, использование Amazon S3 в качестве оперативного хранилища не слишком благоразумно.

Наконец, доступ к S3 осуществляется через Web-службы, а не через файловую систему или WebDAV (защищенный сетевой протокол высокого уровня, работающий поверх HTTP и обеспечивающий доступ к объектам и коллекциям). В результате этого приложения должны разрабатываться с учетом того, что они должны хранить данные в Amazon S3. Вероятно, еще важнее то, что вы не можете просто воспользоваться командой rsync для синхронизации каталога с S3 без специальных инструментов, которые применяют Amazon API и, таким образом, обходят ограничения S3.

Итак, мы разобрались с тем, чего не следует ожидать от Amazon S3 — а теперь рассмотрим, что мы можем ожидать от этой службы.

Amazon S3 позволяет поместить хранимые данные в облачную инфраструктуру и впоследствии при необходимости их извлечь. При этом вы можете быть практически полностью уверены в том, что извлеченные данные будут представлять собой единый и непротиворечивый блок информации. Ключевым преимуществом Amazon S3 является то, что вы можете сбрасывать и сбрасывать данные в Amazon S3, совершенно не беспокоясь о проблеме нехватки пространства для их хранения. Иначе говоря, для большинства пользователей S3 служит в качестве краткосрочного или долгосрочного хранилища резервных копий.

Облачные сервисы для балансировки нагрузки

С ростом популярности облачных сервисов все больше систем размещаются на внешних площадках, образуя гибридные облака. Большинство разработчиков предлагает ко всему прочему и возможность балансировки нагрузки, это очень удобно, так как не требует от клиента установки дополнительного оборудования и готово к применению почти сразу. Хотя возможностей по управлению такой способ дает, как правило, меньше. Все основные игроки уже предложили свои решения. Например, Amazon Route 53, являющийся частью Amazon Web Services и предоставляющий балансировку при помощи Round Robin DNS. Стоимость услуги небольшая и составляет один доллар в месяц, плюс 0,50 доллара за первый миллион запросов и 0,25 за каждый следующий. Предусмотрен удобный API для редактирования, добавления и удаления записей.
Также нужная функциональность доступна в специализированных облачных продуктах — WAF или решениях для защиты от DDoS. Например, сервис Akamai Global Traffic Management Akamai.

Зрительный тракт головного мозга в облаке из 1000 16-процессорных узлов, моделирование около миллиарда нейронных связей (Стэнфорд)

NVIDIA GRID

NVIDIA предоставила в доступ через Amazon Web Services технологию NVIDIA GRID для приложений, требовательных к графике: играм, проектам визуализации и так далее.

HeroCloud - cреда разработки MMO-игр в облаке

HeroEngine 2 - движек для MMO-игр.

HeroCloud - среда разработки в облаке. 

Вообще, облачный геймдев — прекрасная идея, и за ней будущее, разработчики могут одновременно и непосредственно работать над одной игрой из разных точек земного шара. В отличие от обычных кодерских тулз в облаке, HeroCloud представляет полный набор инструментов для игродела. Кроме интегрированного редактора кода для внутреннего скриптового языка — HeroScript, здесь имеются конструктор мира (World Builder), включающий редакторы окружения и ландшафтов, редакторы GUI и персонажей, редакторы звуков и анимаций — короче, в HeroCloud имеется весь список редакторов, входящих в состав современных игровых движков, только все это в облаке! Но самое главное, что есть в HeroCloud и без чего не может обойтись ни одна MMO игра, — это встроенная БД, которая обеспечивает хранение данных о всей игровой вселенной. При этом используемая в HeroEngine БД Oracle на сегодня безусловный лидер и стоит умопомрачительных денег, но разработчику, который приобрел HeroCloud за 99 долларов в год, не надо об этом беспокоиться. Плюс к этому все операции по настройке железа и системы твоей игры ложатся на компанию Idea Fabrik — нынешнего владельца движка.

Mobile Backend-as-a-Service

Главная мантра, которая позволила развиться многочисленным MBaaS-провайдерам (мобильные SaaS-бэкенды), звучит так: «Не думайте о бэкенде, просто храните данные и управляйте ими».

В промо-туториалах таких сервисов можно встретить заголовки типа «Как закодить Airbnb за один день» от Stackmob или «Сделаем свой Instagram в одиночку» от Parse. И эти ребята не врут — строить сервер на таких платформах одно удовольствие, особенно если тебе хочется использовать несколько мобильных ОС. Платить за первые 5–10 тысяч пользователей тебе почти не придется, а с переходом на платную модель ты будешь получать чеки за количество вызовов API, что опять-таки позволит наращивать затраты пропорционально росту аудитории.


Система логирования на основе ModSecurity

Для обнаружения подозрительных паттернов в запросах и в поведении пользователя применяют сетевые системы обнаружения вторжений (NIDS). Наиболее известен среди таких систем Snort.

Если развернуть Snort в EC2, то тогда при зеркалировании трафика произойдет «деление» канала по поллам, так как весь входящий трафик нужно дублировать на инстанс с Snort. Короче этот вариант — «не очень». 

OSv — легковесная ОС для гипервизора

Виртуализация используется для всего, начиная от запуска серверов и заканчивая тестированием приложений.

Гипервизор (Hypervisor) (или Монитор виртуальных машин) — (в компьютерах) программа или аппаратная схема, обеспечивающая или позволяющая одновременное, параллельное выполнение нескольких или даже многих операционных систем на одном и том же хост-компьютере. Гипервизор также обеспечивает изоляцию операционных систем друг от друга, защиту и безопасность, разделение ресурсов между различными запущенными ОС и управление ресурсами.

В случае запуска каждого сервиса в обособленной виртуальной машине возможности полноценной ОС оказываются избыточны: развитая файловая система не нужна, разделение времени в большинстве случаев тоже, многопользовательский режим не нужен, разделение процессов между режимом ядра и пользовательским бессмысленно, драйверы ни к чему, множество внутренних прослоек и дополнительных компонентов не нужны. Все это лишь замедляет ОС, делает ее слишком сложной и уязвимой.

OSv - ОС, созданная исключительно для работы в виртуальных окружениях.

В целом в ОС реализовано четыре простых идеи:
  • Одна память на всех. В OSv нет разделения памяти как между ядром и приложениями, так и между самими приложениями. Вся оперативная память — это одна большая страница, доступная для записи, чтения и исполнения всем, включая пользовательские процессы и процессы ядра. И те и другие здесь всего лишь нити, а понятия «режим ядра» и «пользовательский режим» вообще не существуют.
  • Максимально простой дизайн. Являясь операционной системой для виртуальных окружений, OSv не включает в себя драйверов и многочисленных прослоек, предназначенных для упрощения переноса ОС на другие архитектуры.
  • Автоматическая конфигурация. В системе нет ни одного конфигурационного файла. После запуска она просто работает.
  • Интегрированная Java-машина. OSv ориентирована в первую очередь на запуск Java-приложений, но может быть использована и для запуска серверов на Си (требуется портирование), а также на таких языках, как Ruby (jRuby), Python (Jython) и JavaScript (Rhino, Nashorn).

Установка OSv

Загрузка

qcow2 - стандартный для QEMU/KVM образ.

Установка

1) Подготовка виртуального моста:
$ sudo brctl addbr virbr0
$ sudo brctl addbr eth0
$ sudo ifconfig virbr0 up

2) Скрипт, для автоматического подключения виртуального окружения к мосту:
#!/bin/sh
echo SCRIPT, $1
brctl addif virbr0 $1
ifconfig $1 up

3) Скрипт для запуска самой ОС (создает виртуальное окружение с 2 Гб памяти, двумя виртуальными процессорами и консолью):
#!/bin/sh
sudo qemu-system-x86_64 -vnc :1 \
    -gdb tcp::1234,server,nowait -m 2G -smp 2 \
    -chardev stdio,mux=on,id=stdio \
    -mon chardev=stdio,mode=readline,default \
    -device isa-serial,chardev=stdio \
    -drive file=osv-v0.02.qcow2,if=virtio,cache=unsafe \
    -netdev tap,id=hn0,script=qemu-ifup.sh,vhost=on \
    -device virtio-net-pci,netdev=hn0,id=nic1 \
    -enable-kvm -cpu host,+x2apic

Запуск

Шелл CRaSH какими-то серьезными особенностями, кроме возможности скриптинга на Clojure, он не отличается и включает в себя несколько стандартных UNIX-команд (cat, cd, ls, pwd, sleep, sort) и специфичных Java-инструментов.

Содержимое файловой системы также очень скудно: каталоги /dev (реализация devfs из FreeBSD), /etc, /tools, /usr/lib (минимальный набор библиотек, необходимых для запуска Java-машины) и /java, содержащий Java-компоненты и стандартную библиотеку классов. Сама машина Java располагается в разделяемой библиотеке /java.so (которую лучше назвать модулем ядра, хотя границы между этими понятиями в OSv стерты).

В комплекте есть веб-сервер и удаленная консоль управления, которые можно запустить так (порт 8080):
> java -jar /usr/mgmt/web-1.0.0.jar app prod

С его помощью можно выполнять мониторинг ОС, а также загружать Java-приложения. Кроме него, для удаленного управления OSv можно использовать REST API либо тот же shell, доступный по SSH. Никакого механизма обновления не предусмотрено, сами разработчики заявляют, что в будущем для этого достаточно будет просто загрузить новый образ OSv, однако, как будет выполняться сохранение существующей конфигурации, пока непонятно.