Облачные вычисления на языке Python
Понятие и характеристики облачных технологий, модели их развертывания, технологические процессы, аспекты экономики и критика. Язык программирования Python, оценка функциональности, сравнение с аналогами. Управление облаком в Python на примере libcloud.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 08.06.2014 |
Размер файла | 43,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
КУРСОВАЯ РАБОТА
Облачные вычисления на языке Python
Введение
С момента своего появления компьютерные сети совершили огромный шаг вперёд. От простейших операций с передачей битов данных между двумя компьютерами, до тысяч терабайт в час по всему свету, окутанному проводами и беспроводными сетями. Совершенствование web-технологий и относительная простота в освоении языков программирования позволяют решать сложные вычислительные задачи, имея лишь доступ к Сети.
Облачные технологии (от англ. Cloud - облако), говорить о которых стали еще в 60-х годах прошлого века, стали возможны в задуманном виде лишь в последние несколько лет и позиционируются разработчиками как самые доступные и безопасные решения для обычного пользователя на рынке хранения и обработки информации.
Облачные вычисления позволяют снять нагрузку с компьютера конечного пользователя и вынести обработку информации на мощный вычислительный кластер, подключенный к сети Интернет и предоставляющий ресурсы для обработки данных. Пользователю при этом доступны лишь данные, вводимые в программу и возвращаемые из неё. Таким образом, операции с данными, что ранее были доступны лишь крупным корпорациям, теперь служат всем, кто имеет выход в мировую сеть.
В этой работе я хочу рассказать о появлении облачных технологий, принципах их работы, о способах реализации облачных вычислений с помощью языка Python, а так же рассмотрю пример создания системы облачной обработки информации, созданной при помощи этого языка.
1. Облачные технологии
облако программирование python
В наши дни практически не осталось тех пользователей ПК, кто бы не обращался к услугам облачных систем. От сетевых хранилищ данных до многоуровневых фреймов для сверхсложных вычислений, невидимые на первый взгляд «облака» прочно закрепились в современной жизни.
Cloud computing - облачные вычисления - это технология, при которой конечный пользователь, не имея доступа к «железу» или возможности изменять код рабочей программы при этом обладает полным контролем над обрабатываемыми данными.
Этот термин появился в 1960-х годах благодаря Джону Маккарти. Этот ученый в своё время предложил использовать термин «искусственный интеллект», изобрёл язык программирования Lisp и заложил основы функционального программирования, стал лауреатом премии Тьюринга. Маккарти более полувека назад создал макет проекта по использованию вычислительных ресурсов системы «по принципу коммунального хозяйства» - компьютерная технология разделения времени, действующая по модели бизнес услуг, как сейчас распределяется вода и электричество. Идея была популярная до 1970-х годов, но когда стало ясно, что технологии того времени не могли этого позволить, о проекте забыли почти на 40 лет.
В 2008 годах стали проводится увенчавшиеся успехом попытки создания первых облачных технологий. Предположительно, термин cloud впервые ввёл Эрик Шмидт - глава компании Google - медиагиганта, начавшего как поисковая система, но ныне задающая направления во многих областях сферы web-технологий. По другой версии, термин стал популярен в 2005 году, когда одна из крупнейших аукцион-систем Amazon.com запустила сервис Elastic Compute Cloud (Amazon EC2). EC2 работает и сейчас, являясь одним из самых простых в настройке и удобных облачных сервисов по созданию и администрированию веб-серверов.
«Облаком» так же метафорически называют схематически изображение Интернет в целом, или массив из сложных структур, за которым скрываются все не имеющие значения детали.
2. Характеристики облачных технологий
Современные облачные технологии - это комплексы по выполнению всевозможных задач. Не смотря на теоретически общий подход к решению основной задачи (разделение времени и ресурсов для ускорения выполнения работы) технически же системы различаются по многим факторам. Национальный институт стандартов и технологий США определил основные характеристики, присущие облачным вычислениям:
· Самообслуживание по требованию - пользователь сам определяет и изменяет такие переменные, как серверное время скорости и доступа обрабатываемых данных, необходимый для хранения информации объём данных.
· Универсальный доступ по сети - «облака» доступны с любого устройства, имеющего доступ к Сети.
· Объединение ресурсов - поставщик облачных сервисов объединяет системные ресурсы в так называемый pool - кластер для динамического распределения нагрузки. Пользователи при этом определяют необходимую мощность, скорость системы и объём необходимой памяти, в соответствии с принципом самообслуживания по требованию.
· Эластичность - возможность предоставления и изменения услуг пользователем в любое время без каких-либо задержек.
· Учёт потребления - поставщик предоставляет автоматическое вычисление количества необходимых для выполнения поставленной задачи ресурсов. На основе этих данных объявляется, например, конечная цена пользования услугами, если услуга платная.
Являясь самым передовым направлением современной IT-науки, облачные технологии обслуживаются постоянно развивающимися мощными сервисами, так называемыми aaS (as a service):
· SaaS (software as a service; по как услуга) - сервис, в котором пользователю даётся доступ к определённому набору программного обеспечения по подписке. Как пример, компания Google и её Google Docs.
· PaaS (Platform as a service; платформа как услуга) - сервис, целевая аудитория которого не конечный пользователь, а разработчик. PaaS предоставляет для разработчика целую платформу вместе с необходимыми компонентами и библиотеками, которые требуются для решения поставленной задачи. Пример: Google AppEngine, в котором при необходимости можно даже докупать вычислительные ресурсы.
· Iaas (infrastructure as a service; инфраструктура как услуга) - сервис, предоставляющий пользователю аппаратные ресурсы, объединённые в единое целое с помощью технологий виртуализации и эмуляции (Вычислительный кластер программно настраивается на работу как определённые комплектующие и ПО, которые определяет пользователь). Примеры: вышеуказанная Amazon EC2, а так же всевозможные сетевые хранилища информации: Dropbox и др.)
· CaaS (Communication as a service; связь как услуга) - наиболее популярный сервис. CaaS используется в электронной почте, социальных сетях и программ мгновенного обмена сообщениями.
3. Модели развёртывания облачных технологий
«Облака», как следует из предыдущего пункта, работают по общим принципам, но, выполняя разные функции, должны быть организованы с учетом индивидуального подхода к решению каждой из поставленных задач. Выделяются следующие основные модели развёртывания «облаков»:
· Частное облако - структура, созданная внутри и для одной организации для выполнения корпоративных задач. Чаще всего используется в обеспечении работы электронной документации и\или контроля за предприятием. Контролируется владельцем корпорации, поставщиком технологии или третьей стороной.
· Общедоступное облако - структура, предназначенная для общего пользования. Может находиться в управлении коммерческих, научных или правительственных организаций. Существует и зависит от поставщика.
· Гибридное облако - состоит из синтеза двух или более облачных структур, обычно это промежуточный вариант, когда нужны функции нескольких структур. Так же может быть создана в условиях разгрузки основных сетей.
· Общественное облако - структура, предназначенная для пользования конкретным сообществом потребителей или организаций, имеющих общие требования к подобным сервисам (например, защищенность). Подобные облака могут находиться в общественном управлении.
4. Технологические процессы, аспекты экономики и критика облачных технологий
От внедрения облачных технологий экономически выигрывают и поставщик и потребитель: потребитель не платит дорогостоящую аренду вычислительных дата-центров, а поставщик не занимается их не менее дорогим строительством и обслуживанием, ведь подобные сложные инфраструктуры должны потреблять огромное количество сетевых ресурсов. С использованием облачной схемы практически вся нагрузка на передачу данных ложится на провайдера подключения к Интернет. Для описания экономической составляющей пользования Cloud services часто приводят аналогию с услугами снабжения электричеством и водой\газом: потребитель платит только за потребление, например, воды. Ему не нужно покупать и устанавливать насос, а так же проводить все трубы к своему дому.
Компьютеры, объединённые в одну сеть, не разделяют своих вычислительных ресурсов сами по себе, так же как многоядерные процессоры не дают прироста производительности без правильного подхода к программированию этих устройств. Облачные сервисы так же не могли бы существовать без специального промежуточного программного обеспечения, обеспечивающего наблюдение за оборудованием и программами. Такое ПО распределяет нагрузку между подсистемами облачных фреймов и «на лету» выделяет необходимые для выполнения задач ресурсы, предоставляемые облаком. Это позволяет справиться с основной проблемой, которой подвержены облака - неравномерная нагрузка. Сложное многоуровневое программное обеспечение облачных сервисов автоматически переводит сложные задачи на свободные и ненагруженные участки кластера, в то же время не отнимая ресурсы у других участков. Говоря простым языком: когда один пользователь передаёт на облако задачу обсчёта белковой молекулы, вычисление вашего числа Пи не замедлится, вы даже не заметите, что облако виртуально изменило положение и строение.
Концепция и реализация облаков, при всех своих преимуществах, не избежала критики. Основатель движения Свободного ПО, Ричард Столлман, неоднократно ссылался на то, что пользователь «теряет контроль над облачным веб приложением». Несмотря на то, что пользуясь облачными услугами, пользователю прежде всего важен конечный результат, нельзя не предположить такого развития ситуации, когда не имея контроля над данными, информация будет неопределённое время храниться в неизвестных секторах «облаков», создавая излишнюю нагрузку или создавая угрозу безопасности пользователей, если их данные попадут не в те руки. Уже в 2010 году уважаемые критики, например, Марк Андерсон из Strategic News Service прогнозировал увеличивающуюся стоимость утечки информации и устранения ошибок в обработке данных. Однако, по состоянию на 2013 не известно не так много крупных случаев, связанных с утечкой информации или потерей данных (в 2009 году сервис хранения закладок Magnolia сообщил о потере всей информации). Это можно объяснить неверными прогнозами относительно роста популярности данных сервисов, а так же достаточной мощностью вычислительных кластеров, успешно справляющихся с нагрузкой. При этом опасения по поводу невозможности удаления данных из облаков можно считать временными, ведь эта технология еще очень молодая, и многое будет привнесено в неё со временем. Хотя бы из-за увеличивающейся конкуренции между поставщиками данных услуг.
5. Язык программирования Python
Прежде чем анализировать облачную систему, реализованную с помощью Python, рассмотрим сам язык.
Python (Пайтон, отсылка к британской комик-группе Монти Пайтон), был разработан и создан голландским программистом Гвидо ван Россумом. В шутку называемый программистами на Python «великодушным пожизненным диктатором проекта». Это означает, что Гвидо наблюдает за всеми изменениями языка и выносит окончательное решение по поводу внедрения тех или иных функций, когда этого требует ситуация.
Ван Россум так же принимал участие в разработке обучающего языка программирования ABC, стал лауреатом престижной премии «Free software award» в 2001 году, работал в Google. Сейчас создатель Python трудится в Dropbox inc, а значит, напрямую связан с облачными сервисами.
Язык появился в 1991 году, заявив о себе как мультипарадигмальный (программы пишутся на одном языке, но в разных стилях). Объектно-ориентированный (работает с полями и методами). Кроссплатформенный (на Python можно с одинаковым набором возможностей программировать как на windows, так и MacOS, linux, *nix и других популярных операционных системах). Рефлективный (программа может анализировать свою структуру и изменять её по мере выполнения кода). Императивный (выполнение прямых инструкций, «приказов»). Функциональный (символьная обработка данных). Аспектно-ориентированный (программа разделяется на модули-аспекты).
То есть, имея минималистический синтаксис, не уступает, а иногда и превосходит в мощности более крупные программируемые среды. Этот минимализм позволяет повысить скорость написания программ, а так же чтения кода. При этом стандартная библиотека модулей включает себя постоянно увеличивающийся набор всевозможных функций, а недостающие пользователь может достаточно легко встроить сам.
6. Философия языка
Как и в других языках программирования, программы должны быть написаны с использованием особых правил - синтаксиса. Между тем, программисты на Python так же придерживаются почти догматического свода установок, так называемого Zen of Python (Дзен Пайтона):
· Красивое лучше, чем уродливо
· Явное лучше неявного
· Простое лучше сложного
· Сложное лучше запутанного
· Плоское лучше вложенного
· Разреженное лучше плотного
· Читаемость имеет значение
· Особые случаи (исключения) не настолько особые, чтобы нарушать правила
· Практичность важнее безупречности
· Ошибки не должны замалчиваться
· Если явно не замалчиваются
· Встретив неопределённость, стоит отказаться от искушения угадать
· Должен быть один - и, желательно, только один - очевидный способ сделать это
· Хотя он может быть и не очевиден, если вы не голландец ()
· Сейчас лучше, чем никогда
· Хотя никогда зачастую лучше, чем прямо сейчас
· Если реализацию сложно объяснить - идея плоха
· Если легко - возможно, хороша
· Пространства имён - отличная штука! Сделаем их побольше!
Из этих полушутливых правил следует следующий вывод: программа на Пайтон прежде всего должна быть простой в реализации и легкой в построении, но если того требует ситуация, программист волен сам решать, как ему составлять код.
PEP8
К своду правил так же можно отнести и так называемый PEP8. Это набор общих стилевых правил по написанию кода для Пайтон. PEP8 состоит из множества страниц с разобранными рекомендациями по оформлению кода, общих советов и часто задаваемых вопросов с примерами реализации. Хотя он может помочь в решении самых базовых проблем начинающего программиста, в большинстве случаев команды программистов сами дополняют свой PEP8, повышая производительность каждого участника ив сей команды в целом. Ниже рассмотрим некоторые из обязательных к рассмотрению правил:
· Использовать 4 пробела для отступа, не использовать табуляцию, не смешивать табы (клавиша Tab) и пробелы.
· Максимальная длина строки в 79 символов. Для разрыва используйте отступы и бэкслеш (клавиша \).
· Функции верхнего уровня и определения классов следует отделять двумя пустыми строками.
· Каждый импортируемый модуль с новой строки
· Избегайте лишних пробелов внутри скобок, перед запятыми, точкой с запятой и двоеточиями.
· Обновляйте комментарии вместе с кодом
· Пишите их на английском
· Избегать имён из одиночных букв I, O
· Давайте подробные имена переменным
· Не сравнивайте булевы переменные с True и False
Даже следуя самым основным правилам, программист на Пайтон создаёт код, который одинаково легко читается и анализируется. Подобный подход к написанию является одним из главных преимуществ Python среди всех языков программирования.
7. Особенности языка Python
В четкой, но достаточно простой структурируемости кода заключается
причина популярности языка. Отсутствие громоздких конструкций, обозначающих новые классы, методы или циклы заменяются наглядным выделением пробелами и табуляцией. В таких условиях намного легче отслеживать прогресс создания программы, её легче отлаживать и дополнять. Структурированный «питоний» код значительно проще понять как новичку в программировании, так и специалисту, сменившему язык программирования. При этом справедливо будет заметить, что без наличия хотя бы теоретических знаний об объектно-ориентированном программировании знакомство с Python и другими языками будет осложнено.
Но красивого оформления мало для достижения успеха в условиях жёсткой конкуренции между разработчиками разных языков программирования. Следующие факторы так же являются залогом успеха Python на мировой арене:
1. Интерпретируемость языка. Так же, как и при работе с языками Lisp и Prolog, пользователю доступен набор различных интерпретаторов. Это графические интерфейсы языка программирования, упрощающие работу с языком. Например, в стандартном дистрибутиве Python уже имеется интерпретатор, который в «горячем» режиме выполняет каждую введённую программистом команду. Таким образом можно сильно сократить временные затраты на проект, когда для проверки определённого участка кода не нужно составлять полноценную программу, а новичок сможет сразу увидеть результат действия той или иной функции. Интерпретатор используется и как калькулятор.
2. Объектно-ориентированный подход. ООП - основная модель, на основе которой реализован Пайтон, но эта модель несколько отличается от традиционной: Классы могут быть и являются объектами внутри программы; Поддерживается множественное наследование; Виртуальный полиморфизм классов; Инкапсуляция всех уровней; Наличие конструкторов, деструкторов и «уборщиков мусора» в базовой сборке; Свободная перегрузка практически всех операторов, даже системных; Развитые эмулятивные возможности; «Вшитые» методы для работы с наиболее часто выполнимыми операциями; Метапрограммирование; Статические методы, поля и классы; Вложенность.
3. Функциональность программирования. Возможна работа с функцией как объектом, полноценная рекурсивность, замыкания, обращение к частям функций и возможность создания собственных средств.
4. Пакетно-модульная система расширений языка. Python, благодаря своей простоте, имеет множество надстроек и дополнений, гибко увеличивающие возможности языка по мере необходимости. Подключение новых модулей выполняется в одну команду в коде или интерпретаторе.
5. Интроспекция. Эта функция языка позволяет по запросу получать детальную информацию о любом объекте внутри даже выполняющейся программы.
Эти и многие другие функции уже являются частью языка и там, где для многих «тяжеловесных» сред нужны дополнительные модули, Python справляется своим куда более компактным базовым дистрибутивом. Если же необходимой надстройки нет, её установка или самостоятельное написание не потребует много времени.
8. Сравнение с другими языками и критика Python
Python делит нишу лёгких, но не простых, скриптовых языков программирования вместе с Perl и Ruby. Эти языки так же интерпретируемы, обладают примерно одинаковой скоростью обработки и выполнения кода. Python и Ruby практически одинаково хорошо применимы к выполнению задач объектно-ориентированного программирования. Кроме того, Python был создан под влиянием ABC, C/C++, Lisp, Fortran, Java и некоторых других, следовательно, Питон можно сравнивать и с ними по конкретным функциям.
Однако Python не лишен недостатков. Большая их часть имеет решение с помощью патчей (patch, заплатка - набор исправлений) или модулей. Например, Python не обладает JIT-компиляцией «из коробки», то есть не может прямо во время работы программы компилировать байт-код в машинный код, если к исходному набору установки не добавить дополнительные пакеты, например llvmpy и numba. Эту проблему исправляет библиотека psycho, но она сильно зависит от сложности структуры программы.
Из первого пункта следует, что сложные вычисления, например, виртуальные машины на Python (PyPy, Parrot), как в своё время Java, будут заметно снижать вычислительную мощность.
Для серверных решений так же важна сравнительно ресурсоёмкая и низкая по скорости работа встроенного в Python интерпретатора, а сам интерпретатор может быть глобально блокирован - использует большое количество небезопасных и неперемещаемых каналов данных. Начиная с версии 3.2, имеется решение и этих трудностей. К тому же существуют и более сложные приёмы, например использование Python для написания кода, но компилирование и исполнение в кодах других языков программирования. Получивший широкое распространение проект Dropbox основан как раз на таком подходе и для его реализации использует особый компилятор cython.
Продвинутые программисты отмечают невозможность редактирования встроенных классов типа int, str, float и т.д.
9. Реализация облачной технологии с помощью Python
Облачные технологии активно развиваются, а вместе с ними и сопутствующие им средства и технологические решения. Некогда ограниченные в возможностях разработчики подобных систем ныне имеют широкополосный доступ в Интернет, мощную цифровую технику и доступные средства написания программ - необходимые условия для внедрения новых проектов в сфере IT. Начиная с 2008 года количество и качество предоставляемых облачных сервисов только растёт, но как нужно организовать их работу, чтобы остаться на плаву в условиях постоянного соперничества?
10. Google AppEngine
Для ответа на этот вопрос рассмотрим AppEngine (Applications engine - движок приложений) от Google. Появившись сравнительно недавно, он уже набрал большую популярность, являясь не только веб-средой для разработки приложений, но и, как принято у Google, медийной платформой.
Google AppEngine позволяет создавать, хранить, редактировать и выполнять веб-приложения в вычислительной системе Google. То есть это полностью облачная среда, созданная для разработки программ на удалённом устройстве. В соответствии с принципами развёртки и поддержки облачных сервисов, AppEngine может динамически менять необходимую вычислительную мощность по мере необходимости, а пользователь при этом свободен в выборе установок, таких как объём памяти, особые системные компоненты (с помощью виртуализации) и потребление траффика.
Все приложения (это могут быть веб страницы, программы, сервисы) размещаются на выделенном домене, пользователь сам решает, приобрести ли ему доменное имя определённого уровня или воспользоваться бесплатным предложением от самой Google, используя промежуточный домен appspot.com. Выбор домена никак не влияет на политику приложения - только автор в праве решать, кто может иметь доступ к его наработкам. Однако AppEngine накладывает ограничения на выполнение программ, например, он не даёт доступа к системному реестру, предоставляет планировщик задач, но ограничивает его 20 задачами, а сохранять данные приложений можно лишь на собственном веб-хранилище Datastore, требующего интеграции своего API (набор принципов работы ПО) в приложения пользователя. В App Engine присутствует система авторизации пользователей через хеш-адаптер Mencahced Api или учетные записи Google. Огромную важность для обеспечения работы облачных приложений имеет поддержка таблиц баз данных по технологии BigTable, а сложные вычисления на огромными объёмами данных (до петабайтов) делает возможным MapReduce. BigTable, не вышедшая за пределы AppEngine база данных является высокоскоростной и высокопроизводительной, она дала основу множеству подобных себе проектов на многих языках программирования. MapReduce - это модель распределённых вычислений, фреймворк, задействующий большое количество компьютеров, «нодов», объединённых в кластер.
Адаптация своих приложений под данную, достаточно новую и еще только осваиваемую, архитектуру требует от разработчика дополнительных усилий и временных затрат на освоение API. Для некоторых команд это может решающим фактором, и они выберут другого поставщика облачных сервисов.
AppEngine поддерживает три платформы: Java (и интерпретируемые на базе java-кода языки), специальный язык Google GO и Python. На май 2013 года система практически полностью поддерживает Python 2.7, о переходе на третью версию языка Google не заявляла.
Django
Благодаря своей модульности и легкой масштабируемости, Python дал основу такому сервису как Django (назван так в честь музыканта Джанго Рейнхардта).
Django - это сетевой фреймворк (структурный комплекс программ и компонентов), который использует собственный ORM. ORM - Объектно-реляционное отображение, технология создания виртуальной объектной базы данных, которая работает по принципу классической БД, но на основе парадигм объектно-ориентированных языков программирования, этому способствуют изначально интегрированные функциональный набор по администрированию веб-приложения и возможность заполнение БД с использование шаблонов. Django создан на Python, имеет кроссплатформенную совместимость в управление с помощью веб-интерфейса. Как и язык, на котором написан Django, фреймворк поддерживает модульную структуру. Разработчики, Django Software Foundation, настоятельно рекомендуют именно «отчужденные и подключаемые» приложения к основному набору программ и функций.
Джанго задумывался как средство работы новостными агрегаторами, этот факт объясняет ключевую особенность его архитектуры, освоение которой является первым шагом на пути к изучению этого фреймворка: разделение и распределение здесь имеет первоочерёдный, базисный характер. Модульный дизайн системы отражается и на всех администрируемых с помощью Django проектах, так, несколько сайтов могут располагаться на одном сервере, при этом в каждом из них можно редактировать код и наполнение контентом, а Django запротоколирует каждую правку. Такой подход исключает ситуацию, когда содержимое сайта бесследно исчезает из-за неосторожных действий или ошибки приложения. Администрирование этой системы поддерживает ограничение возможностей групп пользователей и предоставление им особых прав, применимых не ко всему проекту в целом (хотя и это возможно), а к объектам в частности: функциям, классам, приложению целиком, его содержимому.
Основные возможности Django:
· ORM-технология для доступа к базам данных.
· Входящий в основной набор функций интерфейс администрирования.
· Работу с гиперссылками упрощает полная поддержка регулярных выражений - формального языка поиска и манипуляций с подстроками в тексте. Они задают правила и принципы поиска.
· Обширная библиотека шаблонов, поддерживающая добавление новых записей, а так же работу с тегами (ключевыми словами) и наследованием свойств.
· Система кеширования - хранения временно необходимой информации в оперативной памяти сервера, на котором базируется и развёрнут Django.
· Поддержка анонимных сессий, встроенная документация по редактированию и использованию тегов и шаблонов.
Имея богатые возможности по замене встроенных пакетов на сторонние, Django имеет и ряд компонентов, например, ORM, которые заменить очень сложно. Другие же компоненты заменяются или расширяются крупным набором расширений, который постоянно улучшается разработчиками и сообществом. Основным принципом комплекса является аббревиатура DRY - Don't repeat yourself, не повторяйся.
Для выполнения своих задач Django использует собственный вариант базы данных, в которой составляющие описываются классами языка Python. Как известно, отвечающий парадигмам ООП Python, в сочетании с подобным подходом к построению структуры базы данных, даёт наиболее гибкую возможность администрирования.
11. Python в облаке
К Питон уже имеются несколько популярных и многофункциональных пакетов, расширяющих функционал языка до полноценного управления «облаками» в любом их проявлении. Сама система работы с облаком выглядит так: программист работает с кодом программы через Django (или другой framework), который вместе с самим web-приложением хранится на сервере поставщика облачного сервиса, например Google AppEngine. Контроль функционала Django и AppEngine может осуществляться с помощью доступного интерфейса, но само приложение конфигурируется по средствам Python.
Написание подробной библиотеки для работы с облаками может занимать достаточно много времени, в зависимости от сложности проекта, поэтому многие команды разработчиков прибегают к услугам уже готовых систем управления, таких как PiCloud, boto, libcloud.
Boto - это библиотека, представляющая собой интерфейс для работы с облаками от Amazon и, в первую очередь, Amazon EC2. Boto повышает свой функционал и стабильность от версии к версии, этой библиотекой пользуется большое количество разработчиков, однако её узкая направленность на работу только с сервисами от Amazon не даёт проекту расширятся более быстрыми темпами.
Picloud - система с сильной поддержкой со стороны создателей (преимущественно) и возможностью запуска программ как написанных на Пайтон, так и других языков (используя командную строку). В целом, этот комплекс программ не уступает конкурентам, однако Picloud даёт пользователю широкие возможности по наблюдению за выполнением всех процессов, а так же легкую интеграцию официально не поддерживающихся языков программирования для работы с облаком. Нельзя не отметить наличие крупного кластера вычислительных машин научного класса для сверхсложных расчётов, работающих над облачными процессомы в режиме real-time render. Picloud предоставляет не только программные компоненты, но и хостинги, однако, за все услуги Picloud разработчики установили почасовую, хоть и сравнительно не крупную оплату, что может быть трудным решением для начинающих команд.
Libcloud была разработана для работы с веб-сервером Apache. Апач (назван так в честь группы племён индейцев апачей) является кроссплатформенным программным набором для создания, администрирования и обслуживания сервера. Apache может быть установлен на все популярные операционные системы, множество профессиональных (в основном *nix) и ряд узкоспециализированных, однако они в своей основе так же имеют *никсовое ядро. Апач выгодно отличается от многих конкурентов высокой безопасностью и тонкой настройкой, возможностью использования баз данных для учета действий пользователей, создавать отчеты об ошибках, поддержкой протокола IPv6.
12. Управление облаком в Python на примере libcloud
Для работы с libcloud необходим Apache, установка и первичная настройка которого занимает лишь слегка больше времени, чем интеграция облачного API для покрытия самых базовых функций и работы с облачным интерфейсом.
Первым шагом идёт установка пакета Libcloud на машину-клиент, не зависимо от операционной системы это делается «в один клик» или простыми командами, мало отличающимися от обычной установки пакетов приложений, например «easy_install apache-libcloud». В данном случае даже не нужно указывать пути установки или дополнительные параметры, а будучи установленной, как и все сторонние дополнения для Python, для задействования libcloud достаточно в исходный код программы добавить строчку import libcloud, если требуется вся библиотека целиком, или from libcloud import % name%, где % name% - необходимая функция.
Второй шаг - получение реквизитов у провайдера «облака». Учетную запись и пароль от неё чаще всего можно интегрировать в libcloud и другие библиотеки, воспользовавшись руководством пользователя или «часто задаваемыми вопросами» на сайтах большинства поставщиков cloud-услуг.
Libcloud оперирует понятием ноды (или сервера) - виртуального сервера в единичном экземпляре. Образом ноды называется операционная система, предустановленная или эмулируемая на сервере, этот пункт определяют предпочтения потребителя согласно правилам развёртывания clod-услуг. Пользователь так же в праве распоряжаться размером ноды - физический объём данных, мощность центрального процессора и количество его вычислительных ядер, оперативная память и (реже) выделение места на жестких дисках. Libcloud с помощью базовой команды list (ближайший аналог - ls в bash) может проверить состояние всех этих параметров и самой ноды. Прямо из libcloud можно и редактировать ноды: create, destroy и reboot создаёт, уничтожает и перезагружает ноды по желанию пользователя прямо из рабочей среды, сокращая затраты по времени на решение динамически меняющихся поставленных задач. Сами функции просты настолько, что для, например, создания ноды фиксированного размера достаточно добавить строку % node_name% = conn.create_node(), а в скобках перечислить такие свойства ноды, как имя, требуемую ОС и необходимый размер.
После того, как облако было создано и настроено, а клиент подготовил программу и набор переменных для приёма и отправки данных, готовы к обмену информацией. Программа, базирующаяся в облаке или на клиентской машине, подготавливает массив данных для обработки и отправляет его вычисляться на облако. При этом пользователь, как известно, в праве адаптировать необходимую мощность ноды. После выполнения всех операций готовые данные возвращаются к клиенту cloud-сервиса. Это могут быть математические или физические вычисления (и другие задачи научного характера), базы данных, запросы для веб-страниц и веб-приложений, где облако выступает ускорителем обработки всех данных.
Этот краткий обзор-руководство сделан для libcloud, но мало чем отличается от аналогичных решений других разработчиков облачных библиотек, так что, с некоторыми оговорками, развёртывание клиентской базы для администрирования облака проходит одинаково. Оговориться можно о `extra' методах - особенных решениях в драйверах тех поставщиков, которые предоставляют пользователю набор расширенных функций и действий с облаками. Такие методы характерны для специфических библиотек, «заточенных» под работу с конкретным провайдером.
Кроме того, возможно создание облачной структуры дома. Этому способствуют «свободные» дистрибутивы ОС Linux и nix подобные системы.
Заключение
Цель и задачи, поставленные в работе, выполнены. Сделан обзор облачных технологий, истории их появления, принципах их развёртывания и реализации. Дано описание языка Python как выделяющегося с точки зрения объектно-ориентированного программирования, так и преимущества данного языка с технической стороны. Была дана характеристика наиболее популярных решений в области cloud-вычислений и общий пример реализации работы с одним из облачных сервисов по средствам популярного комплекса Apache. Краткие выводы:
Облачная обработка информации является молодой технологией, идеей о которой ученые загорелись еще полвека назад, при появлении прототипов первых компьютерных сетей. Техническая база стала доступной совсем недавно, однако это не помешало cloud-вычислениям стать одной из самых значимых отраслей в современной IT-науке.
Все решения в этой области подчиняются строгому набору базовых правил, развёртываются по определённым шаблонам. «Облака» разделяются на специализированные структурные модели, но имеют общие для каждого из проектов характеристики: масштабируемость, доступность и широкие возможности по контролю для пользователей.
Для успешной бесперебойной работы облачным сервисам требуется мощное оборудование и специально написанное промежуточное программное обеспечение, в задачи которого в обязательном порядке входит динамическое распределение мощностей и адаптация оборудования под запросы конечного пользователя.
Язык Python является одним из самых популярных и быстрых скриптовых языков программирования, полностью отвечающий парадигмам ООП и имеющий практически безграничные возможности по расширению функционала благодаря модульной структуре.
Основное отличием языка перед конкурирующими средами - строгий синтаксис, разработанный в соответствии с один из правил «философии языка»: простое лучше сложного. Требующий некоторого времени к привыканию, синтаксис значительно ускоряет процесс написания, прочтения и отладки кода программ.
Python заслужил признание у программистов за такие особенности как пакетно-модульная система расширений языка, функциональность программирования с богатыми возможностями по реализации методов, ООП-подход как основная модель реализации языка, интерпретируемость и интроспекция.
Пайтон часто сравнивают как со сложными программными средами, вроде C++ или Java, так и с другими решениями в нише «лёгких» и быстрых языков близких к скриптовым. Хотя Python и не лишен недостатков, он ценится, прежде всего, за простоту, мощность и скорость.
Облачная технология предполагает обмен данными между клиентом и вычислительным центром, администрирование и доступ к которому осуществляют поставщики cloud-технологий. С начала внедрения облаков в повседневную жизнь на рынке предоставления cloud-сервисов началась сильнейшая конкуренция, а, следовательно, и расширение спектра предоставляемых услуг.
Наиболее значимыми среди провайдеров cloud-сервисов являются Google с Google AppEngine, Amazon с EC2 и некоторые другие. Все эти сервисы обладают большой аудиторией пользователей, а качество и список предоставляемых ими услуг растёт с каждым годом.
Впрочем, хранение файлов (основная функция «облаков» для многих пользователей) - это лишь одна из немногих возможностей cloud-сервисов. Но для работы с расширенными функциями требуются дополнительные знания пользователя в программировании и даже в администрировании сетевых приложений с помощью программных комплексов-фреймворков, таких как Django, Apache и других.
Работу с облаками через эти комплексы осуществляет API-программы. Это библиотеки файлов и функций, с которыми пользователь может реализовать потенциал «облака» с помощью заранее готовых команд, функций и выражений. Хотя их можно написать самостоятельно, на это требуется немалое время и разработчикам предоставляются уже готовые библиотеки, такие как boto, picloud или libcloud.
На примере libcloud был рассмотрен типичный базовый процесс интеграции API в программный комплекс и последующее выполнение основной задачи этих программ: лёгкое и быстрое управление облачным сервисом с минимальными временными затратами.
Таким образом, можно сказать, что некогда являвшиеся фантастикой облачные вычисления на сегодняшний день прочно укрепились в повседневной жизни и доступны каждому желающему для работы. Они сочетают в себе мощность суперкомпьютеров с доступностью и простотой управления, а богатейшие возможности современных языков программирования вроде Python и стабильные программные комплексы дают все необходимые условия для успешного выполнения поставленных задач.
Список источников
1. http://habrahabr.ru
2. http://www.googleappengine.ru/docs
3. Чаплыгин А.Н. - «Учимся програмировать вместе с Питоном» 2004 г.
4. Марк Лутц - «Изучаем Python» (4 издание, 2011), «Dive into python» - интернет-публикация.
5. Форсье Д., Биссекс П., Чан У. - «Django Разработка веб-приложений на Python» 2010 г.
6. Дэвид М. Бизли - «Python. Подробный справочник» 2010 г.
7. http://thecloudtutorial.com/
8. Скотт Хокинс - «Администрирование веб-сервера Apache и руководство по электронной коммерции» 2001 г.
9. https://www.djangoproject.com/
10. https://developers.google.com/appengine/
11. http://docs.picloud.com/
12. http://libcloud.apache.org/
Размещено на Allbest.ru
Подобные документы
Отличительные особенности языка программирования Python: низкий порог вхождения, минималистичный язык, краткий код, поддержка математических вычислений, большое количество развитых web-фреймворков. Традиционная модель выполнения программ на языке Python.
реферат [51,9 K], добавлен 18.01.2015Программное обеспечение Python и ее основные характеристики, как программной среды. Общие сведения о языке программирования Python. Особенности применения ППП Python (x,y) с использованием его различных вычислительных модулей в учебном процессе.
дипломная работа [2,9 M], добавлен 07.04.2019Разработка структуры базы данных для хранения дипломных проектов в среде объектно-ориентированного программирования Python. Создание внешнего вида окон ввода-вывода информации, технологии переходов. Листинг программы с пояснениями; направления улучшения.
курсовая работа [3,1 M], добавлен 27.02.2015Этапы развития, особенности и возможности языка программирования Java; происхождение названия. Приложения Sun Microsystems: идеи, примитивные типы. Python - высокоуровневый язык программирования общего назначения: структуры данных, синтаксис и семантика.
реферат [79,0 K], добавлен 23.06.2012Об'єктно-орієнтована мова Python - сучасна мова програмування, проста у вивченні та використанні. Наявність повної стандартної бібліотеки. Середовища програмування на Python. Механізм функціонування інтерпретатора. Колекції даних, комбіновані оператори.
презентация [753,2 K], добавлен 06.02.2014Представление полиномов в виде кольцевых списков и выполнение базовых арифметических действий над ними. Реализация алгоритмов сложения, умножения и вычитания полиномов класса List на языке программирования Python 2.7. в интегрированной среде Python IDLE.
курсовая работа [228,1 K], добавлен 11.01.2012Особенности программирования аркадных игр в среде Python. Краткая характеристика языка программирования Python, его особенности и синтаксис. Описание компьютерной игры "Танчики" - правила игры, пояснение ключевых строк кода. Демонстрация работы программы.
курсовая работа [160,3 K], добавлен 03.12.2014Исторические аспекты развития линии "Алгоритмизация и программирование" в старшей школе. Изучение языка программирования Python с применением дистанционных курсов Coursera. Методическая система обучения программированию с использованием Coursera.
дипломная работа [808,8 K], добавлен 13.12.2017Разработка программ средствами библиотеки tkinter на языке Python. Изучение основы работы в текстовом редакторе Word. Описание авторской идеи анимации. Использование базовых команд и конструкций. Процесс проектирования и алгоритм разработанной программы.
контрольная работа [125,3 K], добавлен 11.11.2014Анализ основ ООП, изучение языка программирования Python, применение полученных знаний на практике для реализации предметной области. Понятие и механизм инкапсуляции. Фиксирование информационной работы отеля. Диаграмма классов. Реализация на языке Python.
курсовая работа [227,6 K], добавлен 14.05.2017