37
Место: Харьков Дата: 29 Июля 2011 Время: 18:30 Докладчик: Андрей Гусев Java Club Харьков (День второй)

Ukraine, Kharkiv, Java Club. Day 2

Embed Size (px)

DESCRIPTION

Ukraine, Kharkiv, Jave Club. (Day 2) In this presentation you can find the brief overview of Clloud Computing development vs. desktop app. development. This presentation oriented to persons with general level of knowledge in such topics as: Amazon AWS, cloud computing, CAP theorem, logical time.

Citation preview

Page 1: Ukraine, Kharkiv, Java Club. Day 2

 Место:  Харьков Дата:    29 Июля 2011 Время: 18:30 Докладчик: Андрей Гусев

Java Club Харьков  (День второй)

Page 2: Ukraine, Kharkiv, Java Club. Day 2

Повестка  Дня

Виртуальное программирование

Page 3: Ukraine, Kharkiv, Java Club. Day 2

Виртуальное программирование

Что такое виртуальное программирование ?

Page 4: Ukraine, Kharkiv, Java Club. Day 2

Может это программировани

едля виртуалных

систем ?

Виртуальное программирование

Page 5: Ukraine, Kharkiv, Java Club. Day 2

Может это программирование на одном из языковНиклауса Вирта ?

Виртуальное программирование

Page 6: Ukraine, Kharkiv, Java Club. Day 2

К сожалению, Google не нашел определения для данного понятия и самое близкое из предложенных

звучало так:облачные вычисления, cloud

computing

Виртуальное программирование

Page 7: Ukraine, Kharkiv, Java Club. Day 2

Следующий слайд, к сожалению, был включен по требованию ред.коллегии, и

сразу хочу предупредить о "нарушении смыслового ряда доклада" ...

Виртуальное программирование

Page 8: Ukraine, Kharkiv, Java Club. Day 2

После предыдущего "Java Club" одним из самых популярных

вопросов стал:

"Так что, Java Club только об Amazon AWS и облачных

вычисленияx ?"

Виртуальное программирование

Page 9: Ukraine, Kharkiv, Java Club. Day 2

Короткий ответ: 

"Нет"

Развернутый ответ и планы можно найти на нашем блоге:

"http://epamkharkiv.blogspot.com/"

Виртуальное программирование

Page 10: Ukraine, Kharkiv, Java Club. Day 2

Так что же такое программирование в эпоху

повсеместной виртуализации и чем оно отличается от

"обычного" программирования ?

Виртуальное программирование

Page 11: Ukraine, Kharkiv, Java Club. Day 2

Как видел программу самНиклаус Вирт ?

Виртуальное программирование

Page 12: Ukraine, Kharkiv, Java Club. Day 2

Виртуальное программирование

Algorithms + Data Structures =Programs

1. Fundamental Data Structures 2. Sorting3. Recursive Algorithms4. Dynamic Information

Structures5. Language Structures and

CompilersAppendix A - the ASCII character setAppendix B - Pascal syntax diagrams

Page 13: Ukraine, Kharkiv, Java Club. Day 2

Закон Вирта:Программы становятся медленнее гораздо быстрее, чем увеличивается быстродействие компьютеров. Software is getting slower more rapidly than hardware becomes faster. 

1995 год.

Виртуальное программирование

Page 14: Ukraine, Kharkiv, Java Club. Day 2

Если закон Вирта верен, то "обычные" алгоритмы могут быть

описаны, как медленные, а структуры данных, как НЕ

масштабируемые ...

Виртуальное программирование

Page 15: Ukraine, Kharkiv, Java Club. Day 2

... и если мы планируем разрабатывать программы

пригодные для виртуальных вычислений, то в первую

очередь мы должны использовать другие алгоритмы

и другие стуктуры данных?

Виртуальное программирование

Page 16: Ukraine, Kharkiv, Java Club. Day 2

CAP теорема: В распределённой системе невозможно обеспечить одновременное выполнение всех трёх условий: 

oConsistency - корректности oAvailability  - доступности  oPartition tolerance - устойчивости к сбоям узлов 

Виртуальное программирование

Professor Eric A. Brewer (2000 год.)

http://www.julianbrowne.com/article/viewer/brewers-cap-theorem

Page 17: Ukraine, Kharkiv, Java Club. Day 2

Корректность (Consistency)Говорит о том, что система всегда выдаёт только логически непротиворечивые ответы. Доступность (Availability)Означает, что сервис отвечает на запросы, а не выдаёт ошибки о том, что он недоступен. Устойчивость к сбоям узлов (Partition tolerance)Означает, что распределённая по кластеру система продолжает работать корректно при недоступности нескольких серверов кластера (кроме случая, когда упали все сервера, конечно). 

Виртуальное программирование

Page 18: Ukraine, Kharkiv, Java Club. Day 2

Виртуальное программирование

Характерные черты:• 2 phase commit• Cache validation

protocol

+ Consistency  + Availability - Partition tolerance

• RDBMS (Recovery): o Master/Slave replication o Sharding  

• Terracotta (Recovery):o Quorum vote o majority partition survival

Примеры:

• Oracle Coherence (Recovery):o Partitioning o Read-replicas 

• Google BigTable• GigaSpaces* (Recovery): 

o Per-key data partitioning

http://javathink.blogspot.com/2010/01/characterizing-enterprise-systems-using.html

Page 19: Ukraine, Kharkiv, Java Club. Day 2

+ Consistency  - Availability + Partition tolerance

Виртуальное программирование

Характерные черты:• Pessimistic locking• Make minority partitions

unavailable

Примеры:• Distributed databases• Distributed locking• Majority protocols

http://javathink.blogspot.com/2010/01/characterizing-enterprise-systems-using.html

Page 20: Ukraine, Kharkiv, Java Club. Day 2

- Consistency + Availability + Partition tolerance

Виртуальное программирование

Характерные черты:• expiration/leases• conflict resolution• optimistic locks

Примеры:• Amazon Dynamo

(Recovery): o Read-repairo Application hooks 

•  Apache Cassandra (Recovery): o Partitioningo Read-repair

• Voldemort (Recovery): o Configurable read-repair

• Apache CouchDB • GigaSpaces* (Recovery): 

o Per-key data partitioning

http://javathink.blogspot.com/2010/01/characterizing-enterprise-systems-using.html

Page 21: Ukraine, Kharkiv, Java Club. Day 2

Виртуальное программирование

В итоге получается как в известном предложении клиенту: 

"Быстро, Дёшево, Качественно - выбирайте любые два..."

Page 22: Ukraine, Kharkiv, Java Club. Day 2

Виртуальное программирование

Итак, преходим к  

Algorithms

http://kharkovconcurrencygroup.blogspot.com/

Page 23: Ukraine, Kharkiv, Java Club. Day 2

Algorithms

• Model of Computation• Logical Clocks• Verifying Clock Algorithms• Clocks of Different Dimensions• Mutual Exclusion: Using Timestamps• Mutual Exclusion: Tokens and Quorums• Drinking Philosophers Problem• Leader Election• Global State• Observing Global Predicates• Observing Conjunctive Predicates• Channel Predicates• Termination Detection• Control of Distributed Computation• Causal Message Ordering• Synchronous and Total Order• Computation of a Global Function• Repeated Global Computation• Synchronizers• Slicers• Distributed Shared Memory• Self-Stabilization•  .....

Page 24: Ukraine, Kharkiv, Java Club. Day 2

Algorithms

Вопрос 1:

А что без этих знаний нельзя создавать распределенные системы

(IaaS)?

Вопрос 2:

А что без этих знаний нельзя писать программы (SaaS) работающие в

распределенных системах ?

Page 25: Ukraine, Kharkiv, Java Club. Day 2

Виртуальное программирование

Вторая состовляющая программы 

Data Structures(на примере Amazon AWS)

Page 26: Ukraine, Kharkiv, Java Club. Day 2

Data Structures

Возможные источники информации: 

o Memoryo Message Queueo Storage Area Network(SAN)o Direct Attached Storage(DAS)o Network Attached Storage (NAS)o Databaseso Off-line

Page 27: Ukraine, Kharkiv, Java Club. Day 2

Data Storage

Возможные источники информации (AWS): • Amazon EC2 Elastic Block Storage (EBS) volumes• Amazon EC2 Local Instance Store (Ephemeral)

volumes• Amazon Simple Storage Service (Amazon S3)• Amazon Simple Queue Service (SQS)• Amazon SimpleDB• Amazon EC2 Relational Database• Amazon Relational Database Service (RDS)

Page 28: Ukraine, Kharkiv, Java Club. Day 2

Data Structures

Для каждого из сервисов рассмотрим: 

o Название и краткое описаниеo Идеальный сценарий использованияo Производительностьo Отказоустойчивостьo Стоимостьo Масштабируемостьo Доступные APIo Анти-паттерны

Page 29: Ukraine, Kharkiv, Java Club. Day 2

Data Storage

Amazon EC2 Elastic Block Storage (EBS): • Persistent virtual block mode storage• Network attached USB device• Designed to be highly available• Priced by GB-month + million IO request• To use as primary storage for a file system • 99.5% - 99.9% annual durability

Anti-patterns: • Temporary storage• Highly-durable storage• Static data or web content• Key-value pair information storage

Page 30: Ukraine, Kharkiv, Java Club. Day 2

Data Storage

Amazon EC2 Local Instance Store : • Temporary block-level storage• Ideal for caching and buffering• Located in the same physical server• Very fast (particularly for sequential access)• Not persistent • Cost: $0.00 

Anti-patterns: • Persistent storage• Data-base storage• Shared storage• Snapshots

Page 31: Ukraine, Kharkiv, Java Club. Day 2

Data Storage

Amazon Simple Storage Service (Amazon S3): • Distributed object storage• Storage for static web content• Background for Content delivery network (CDN)• 99.999999999% (“11 nines”) durability per

object• RESTfull API • Data Transfer (IN: $0.00 , OUT: $0.12 per GB) • Storage (First 1 TB / month $0.14 per GB) Anti-patterns: • File system• Structured data with query• Rapidly-changing data

Page 32: Ukraine, Kharkiv, Java Club. Day 2

Data Storage

Amazon Simple Queue Service (SQS): • Temporary storage and delivery of short text-

based messages (up to 64 Kb)• Distributed queuing system• Highly durable but temporary• Query (HTTP) interface. Five API calls (Create,

Send, Receive,Change Visibility, Delete) • Priced per 10.000 requests and per GB/month

Anti-patterns: • Binary or large data• Long-term storage

Page 33: Ukraine, Kharkiv, Java Club. Day 2

Data Storage

Amazon SimpleDB: • Non-relational data store• "Schema-less" data model• To keep track of metadata about information that

is stored in other AWS offering• Provides eventually consistent reads• 250 domains /1 billion attr. and 10 GB per

domain • Cost = Data storage + Data transfer + Machine

hoursAnti-patterns: • As relational database• Join and/or complex transactions• BLOB data • Typed (Numeric) data • Large amounts of data

Page 34: Ukraine, Kharkiv, Java Club. Day 2

Data Storage

Amazon EC2 Relational Database: •  see particular RDBMS usage

Anti-patterns: • Automatic elasticity• BLOB data 

Amazon Relational Database Service (RDS): •  MySQL or Oracle database server• Automatically backs up your database

and maintains the database software

Page 35: Ukraine, Kharkiv, Java Club. Day 2

Вопросы ?

Page 36: Ukraine, Kharkiv, Java Club. Day 2

Последний вопрос

Какое отношение к данной теме имеет <EPAM> ?

И последний вопрос на сегодня:

Page 37: Ukraine, Kharkiv, Java Club. Day 2

Последний ответ

Приглашаем всех на EPAM Open Day  Где помимо ответа на этот вопрос вы получите и другую не менее интересную информацию ...