SlideShare a Scribd company logo
1 of 66
Your systems. Working as one.
May 15, 2013
Reinier Torenbeek
reinier@rti.com
Learn How to Develop a
Distributed Game of Life with DDS
Agenda
• Problem definition: Life Distributed
• A solution: RTI Connext DDS
• Applying DDS to Life Distributed: concepts
• Applying DDS to Life Distributed: (pseudo)-code
• Advanced Life Distributed: leveraging DDS
• Summary
• Questions and Answers
Conway's Game of Life
• Devised by John Conway in 1970
• Zero-player game
– evolution determined by initial state
– no further input required
• Plays in two-dimensional, orthogonal grid of
square cells
– originally of infinite size
– for this webinar, toroidal array is used
• At any moment in time, each cell is either dead or
alive
• Neighboring cells interact with each other
– horizontally, vertically, or diagonally adjacent.
Conway's Game of Life
At each step in time, the following transitions occur:
1. Any live cell with fewer than two live neighbors
dies, as if caused by under-population.
2. Any live cell with two or three live neighbors lives on
to the next generation.
3. Any live cell with more than three live neighbors
dies, as if by overcrowding.
4. Any dead cell with exactly three live neighbors
becomes a live cell, as if by reproduction.
These rules continue to be applied repeatedly to create
further generations.
Conway's Game of Life
Glider gun
Pulsar
Block
Conway's Game of Life – Distributed
Problem description: how can Life be properly
implemented in a distributed fashion?
• have multiple processes work on parts of the
Universe in parallel
Conway's Game of Life – Distributed
Conway's Game of Life – Distributed
Problem description: how can Life be properly
implemented in a distributed fashion?
• have multiple processes work on parts of the
Universe in parallel
• have these processes exchange the required
information for the evolutionary steps
Conway's Game of Life – Distributed
Conway's Game of Life – Distributed
Problem description: how can Life be properly
implemented in a distributed fashion?
• have multiple processes work on parts of the
Universe in parallel
• have these processes exchange the required
information for the evolutionary steps
This problem and its solution serve as an
example for developing distributed applications
in general
Conway's Game of Life – Distributed
Properly here means:
• with minimal impact on the application logics
– let distribution artifacts be dealt with transparently
– let the developer focus on Life and its algorithms
• allowing for mixed environments
– multiple programming languages, OS-es and hardware
– asymmetric processing power
• supporting scalability
– for very large Life Universes on many machines
– for load balancing of CPU intensive calculations
• in a fault-tolerant fashion
Agenda
• Problem definition: Life Distributed
• A solution: RTI Connext DDS
• Applying DDS to Life Distributed: concepts
• Applying DDS to Life Distributed: (pseudo)-code
• Advanced Life Distributed: leveraging DDS
• Summary
• Questions and Answers
RTI Connext DDS
A few words describing RTI Connext DDS:
• an implementation of the Object Management
Group (OMG) Data Distribution Service (DDS)
– standardized, multi-language API
– standardized wire-protocol
– see www.rti.com/elearning for tutorials (some free)
• a high performance, scalable, anonymous
publish/subscribe infrastructure
• an advanced distributed data management
technology
– supporting many features know from DBMS-es
RTI Connext DDS
DDS revolves around the concept of a typed data-
space that
• consists of a collection of structured, observable
items which
– go through their individual lifecycle of
creation, updating and deletion (CRUD)
– are updated by Publishers
– are observed by Subscribers
• is managed in a distributed fashion
– by Connext libraries and (optionally) services
– transparent to applications
RTI Connext DDS
DDS revolves around the concept of a typed data-
space that
• allows for extensive fine-tuning
– to adjust distribution behavior according to
application needs
– using standard Quality of Service (QoS) mechanisms
• can evolve dynamically
– allowing Publishers and Subscribers to join and leave
at any time
– automatically discovering communication paths
between Publishers and Subscribers
Agenda
• Problem definition: Life Distributed
• A solution: RTI Connext DDS
• Applying DDS to Life Distributed: concepts
• Applying DDS to Life Distributed: (pseudo)-code
• Advanced Life Distributed: leveraging DDS
• Summary
• Questions and Answers
Applying DDS to Life Distributed
First step is to define the data-model in IDL
• cells are observable items, or "instances"
– row and col identify their location in the grid
– generation identifies the "tick nr" in evolution
– alive identifies the state of the cell
module life {
struct CellType {
long row; //@key
long col; //@key
unsigned long generation;
boolean alive;
};
};
Applying DDS to Life Distributed
First step is to define the data-model in IDL
• cells are observable items, or "instances"
– row and col identify their location in the grid
– generation identifies the "tick nr" in evolution
– alive identifies the state of the cell
• the collection of all cells is the CellTopic Topic
– cells exist side-by-side and for the Universe
– conceptually stored "in the data-space"
– in reality, local copies where needed
row: 16
col: 4
generation: 25
alive: false
Applying DDS to Life Distributed
Each process is responsible for publishing the
state of a certain subset of cells of the Universe:
• a rectangle or square area with corners
(rowmin,colmin)i and (rowmax,colmax)i for process i
(1,1) – (10,10)
Applying DDS to Life Distributed
Each process is responsible for publishing the
state of a certain subset of cells of the Universe:
• a rectangle or square area with corners
(rowmin,colmin)i and (rowmax,colmax)i for process i
• each cell is individually updated using the
write() call on a CellTopic DataWriter
– middleware analyzes the key values (row,col) and
maintains the individual states of all cells
• updating happens generation by generation
Applying DDS to Life Distributed
Each process subscribes to the required subset
of cells in order to determine its current state:
• all neighboring cells, as well as its "own" cells
Applying DDS to Life Distributed
Each process subscribes to the required subset
of cells in order to determine its current state:
• all neighboring cells, as well as its "own" cells
• using a SQL-expression to identify the cells
subscribed to (content-based filtering)
– complexity is "Life-specific", not "DDS-specific"
"((row >= 1 AND row <= 11) OR row = 20) AND
((col >= 1 AND col <= 11) OR col = 20)"
Applying DDS to Life Distributed
Each process subscribes to the required subset
of cells in order to determine its current state:
• all neighboring cells, as well as its "own" cells
• using a SQL-expression to identify the cells
subscribed to (content-based filtering)
– complexity is "Life-specific", not "DDS-specific"
• middleware will deliver cell updates to those
DataReaders that are interested in it
Applying DDS to Life Distributed
Additional processes can be added to peek at
the evolution of Life:
• subscribing to (a subset of) the CellTopic
"row >= 8 AND row <= 13 AND col >= 8 AND col <= 13"
Applying DDS to Life Distributed
Additional processes can be added to peek at
the evolution of Life:
• subscribing to (a subset of) the CellTopic
• using any supported language, OS, platform
– C, C++, Java, C#, Ada
– Windows, Linux, AIX, Mac OS X, Solaris,
INTEGRITY, LynxOS, VxWorks, QNX…
• without changes to the existing applications
– middleware discovers new topology and
distributes updates accordingly
Agenda
• Problem definition: Life Distributed
• A solution: RTI Connext DDS
• Applying DDS to Life Distributed: concepts
• Applying DDS to Life Distributed: (pseudo)-code
• Advanced Life Distributed: leveraging DDS
• Summary
• Questions and Answers
Life Distributed (pseudo-)code
Life Distributed prototype applications were
developed on Mac OS X
• Life evolution application written in C
• Life observer application written in Python
– using Pythons extension-API
• (Pseudo-)code covers basic scenario only
– more advanced apects are covered in next section
Life Distributed (pseudo-)code
Life evolution application written in C:
• application is responsible for
– knowing about the Life seed (initial state of cells)
– executing the Life rules based on cell updates
coming from DDS
– updating cell states after a full generation tick has
been processed
• evolution of Life takes place one generation at
a time
– consequently, Life applications run in "lock-step"
initialize DDS
current generation = 0
write sub-universe Life seed to DDS
repeat
repeat
wait for DDS cell update for
current generation
update sub-universe with cell
until 8 neighbors seen for all cells
execute Life rules on sub-universe
increase current generation
write all new cell states to DDS
until last generation reached
Life Distributed (pseudo-)code
Worth to note about the Life application:
• loss of one cell-update will eventually stall the
complete evolution
– this is by nature of the Life algorithm
– implies RELIABLE reliability QoS for DDS
– history of 2 generations need to be stored to avoid
overwriting
<dds>
<qos_library name="GameOfLifeQosLibrary">
<qos_profile name="CellProfile">
<topic_qos>
<reliability>
<kind>RELIABLE_RELIABILITY_QOS</kind>
</reliability>
<history>
<kind>KEEP_LAST_HISTORY_QOS</kind>
<depth>2</depth>
</history>
<durability>
<kind>TRANSIENT_LOCAL_DURABILITY_QOS</kind>
</durability>
</topic_qos>
</qos_profile>
</qos_library>
</dds>
Life Distributed (pseudo-)code
Worth to note about the Life application:
• loss of one cell-update will eventually stall the
complete evolution
– this is by nature of the Life algorithm
– implies RELIABLE reliability QoS for DDS
– history of 2 generations needs to be stored to avoid
overwriting of state of a single cell
• startup-order issues resolved by DDS durability QoS
– newly joined applications will be delivered current state
– delivery of historical data transparent to applications
– applications not waiting for other applications, but for cell
updates
<dds>
<qos_library name="GameOfLifeQosLibrary">
<qos_profile name="CellProfile">
<topic_qos>
<reliability>
<kind>RELIABLE_RELIABILITY_QOS</kind>
</reliability>
<history>
<kind>KEEP_LAST_HISTORY_QOS</kind>
<depth>2</depth>
</history>
<durability>
<kind>TRANSIENT_LOCAL_DURABILITY_QOS</kind>
</durability>
</topic_qos>
</qos_profile>
</qos_library>
</dds>
Life Distributed (pseudo-)code
Worth to note about the Life application:
• DDS cell updates come from different places
– mostly from the application's own DataWriter
– also from neighboring sub-Universes' DataWriters
– all transparently arranged based on the filter
create DDS DomainParticipant
with DomainParticipant, create DDS Topic "CellTopic"
with CellTopic and filterexpression, create DDS
ContentFilteredTopic "FilteredCellTopic"
create DDS Subscriber
create DDS DataReader for FilteredCellTopic
Life Distributed (pseudo-)code
Worth to note about the Life application:
• DDS cell updates come from different places
– mostly from the application's own DataWriter
– also from neighboring sub-Universes' DataWriters
– all transparently arranged based on the filter
• algorithm relies on reading cell-updates for a
single generation
– evolving one tick at a time
– leverages DDS QueryCondition
– "generation = %0" with %0 value changing
create DDS DomainParticipant
with DomainParticipant, create DDS Topic "CellTopic"
with CellTopic and filterexpression, create DDS
ContentFilteredTopic "FilteredCellTopic"
with DomainParticiapnt, create DDS Subscriber
with Subscriber and FilteredCellTopic, create DDS
CellTopicDataReader
with CellTopicDataReader, query expression and
parameterlist, create QueryCondition
with DomainParticipant, create WaitSet
attach QueryCondition to WaitSet
in main loop:
in generation loop:
block thread in WaitSet, wait for data from DDS
read with QueryCondition from CellTopicDataReader
increase generation
update query parameterlist with new generation
Life Distributed (pseudo-)code
Life observer application written in Python:
• application is responsible for
– subscribing to cell updates
– printing cell states to display evolution
– ignoring any generations that have missing cell
updates
import clifedds as life
#omitted option parsing
filterString = 'row>={} and col>={} and row<={} and
col<={}'.
format(options.minRow, options.minCol,
options.maxRow, options.maxCol)
life.open(options.domainId, filterString)
generation = 0
while generation is not None:
# read from DDS, block if nothing availble,
# returns Nones in case of time-out after 10 seconds
row, col, generation, isAlive = life.read(10)
# omitted administration for building and printing strings
life.close()
Life Distributed (pseudo-)code
Life observer application written in Python:
• application is responsible for
– subscribing to cell updates
– printing cell states to display evolution
– ignoring any generations that have missing cell
updates
• for minimal impact, DataReader uses default QoS
settings
– BEST_EFFORT reliability, so updates might be lost
– VOLATILE durability, so no delivery of historical
updates
– still history depth of 2
<dds>
<qos_library name="GameOfLifeQosLibrary">
<qos_profile name="CellProfile">
<topic_qos>
<history>
<kind>KEEP_LAST_HISTORY_QOS</kind>
<depth>2</depth>
</history>
</topic_qos>
</qos_profile>
</qos_library>
</dds>
Life Distributed (pseudo-)code
domainId
# of generations
universe dimensions
sub-universe dimensions
Example of running a single life application:
Life Distributed (pseudo-)code
Example of running a life scenario:
Agenda
• Problem definition: Life Distributed
• A solution: RTI Connext DDS
• Applying DDS to Life Distributed: concepts
• Applying DDS to Life Distributed: (pseudo)-code
• Advanced Life Distributed: leveraging DDS
• Summary
• Questions and Answers
Fault tolerance
Not all is lost if Life application crashes
• if using TRANSIENT durability
QoS, infrastructure will keep status roaming
– requires extra service to run (redundantly)
• after restart, current status is available
automatically
– new incarnation can continue seamlessly
persistence
service
Fault tolerance
Not all is lost if Life application crashes
• if using TRANSIENT durability QoS,
infrastructure will keep status roaming
– requires extra service to run (redundantly)
• after restart, current status is available
automatically
– new incarnation can continue seamlessly
• results in high robustness
• even more advanced QoS-es are possible
Reliability and flow control
Running the Python app with a larger grid:
• with current QoS, faster writer with slower
reader will overwrite samples in reader
• whenever at least one cell update is
missing, the generation is not printed (by
design)
Reliability and flow control
Running the Python app with a larger grid:
• whenever at least one cell update is missing,
the generation is not printed (by design)
• with current QoS, faster writer with slower
reader will overwrite samples in reader
• this is often desired result, to avoid system-
wide impact of asymmetric processing power
• if not desired, KEEP_ALL QoS can be leveraged
<dds>
<qos_library name="GameOfLifeQosLibrary">
<qos_profile name="CellProfile">
<topic_qos>
<reliability>
<kind>RELIABLE_RELIABILITY_QOS</kind>
</reliability>
<history>
<kind>KEEP_ALL_HISTORY_QOS</kind>
</history>
<resource_limits>
<max_samples_per_instance>2</max_samples_per_instance>
</resource_limits>
<durability>
<kind>TRANSIENT_LOCAL_DURABILITY_QOS</kind>
</durability>
</topic_qos>
</qos_profile>
</qos_library>
</dds>
Reliability and flow control
Running the Python app with a larger grid:
• whenever at least one cell update is missing,
the generation is not printed (by design)
• with current QoS, faster writer with slower
reader will overwrite samples in reader
• this is often desired result, to avoid system-
wide impact of asymmetric processing power
• if not desired, KEEP_ALL QoS can be leveraged
– flow control will slow down writer to avoid loss
More advanced problem solving
Other ways to improve the Life implementation:
• for centralized grid configuration, distribute grid-
sizes with DDS
– with TRANSIENT or PERSISTENT QoS
– this isolates configuration-features to one single app
– dynamic grid-reconfiguration can be done by re-
publishing grid-sizes
• for centralized seed (generation 0)
management, distribute seed with DDS
– with TRANSIENT or PERSISTENT QoS
– this isolates seeding to one single app
More advanced problem solving
Other ways to improve the Life implementation:
• in addition to separate cells, distribute complete sub-
Universe state using a more compact data-type
– DDS supports a very rich set of data-types
• bitmap-like type would work well
– especially useful for very large scale Universes
– can be used for seeding as well
– with TRANSIENT QoS
• multiple Universes can exist and evolve side-by-side using
Partitions
– only readers and writers that have a Partition in common will
interact
– Partitions can be added and removed on the fly
– Partitions are string names, allowing good flexibility
Agenda
• Problem definition: Life Distributed
• A solution: RTI Connext DDS
• Applying DDS to Life Distributed: concepts
• Applying DDS to Life Distributed: (pseudo)-code
• Advanced Life Distributed: leveraging DDS
• Summary
• Questions and Answers
Summary
Distributed Life can be properly implemented
leveraging DDS
• communication complexity is off-loaded to
middleware, developer can focus on application
• advanced QoS settings allow for adjustment to
requirements and deployment characteristics
• DDS features simplify extending Distributed Life
beyond its basic implementation
• all of this in a standardized, multi-language, multi-
platform environment with an infrastructure built
to scale and perform
Agenda
• Problem definition: Life Distributed
• A solution: RTI Connext DDS
• Applying DDS to Life Distributed: concepts
• Applying DDS to Life Distributed: (pseudo)-code
• Advanced Life Distributed: leveraging DDS
• Summary
• Questions and Answers
Questions?
Thanks!

More Related Content

What's hot

FCスイッチゾーニング設定ガイド
FCスイッチゾーニング設定ガイドFCスイッチゾーニング設定ガイド
FCスイッチゾーニング設定ガイドBrocade
 
IBM Cloud: Direct Link Guide
IBM Cloud: Direct Link GuideIBM Cloud: Direct Link Guide
IBM Cloud: Direct Link GuideTomoyuki Niijima
 
OpenID Connect のビジネスチャンス
OpenID Connect のビジネスチャンスOpenID Connect のビジネスチャンス
OpenID Connect のビジネスチャンスOpenID Foundation Japan
 
新しい認証技術FIDOの最新動向
新しい認証技術FIDOの最新動向新しい認証技術FIDOの最新動向
新しい認証技術FIDOの最新動向FIDO Alliance
 
Introduction to Dev Ops and Containerisation with Docker
Introduction to Dev Ops and Containerisation with DockerIntroduction to Dev Ops and Containerisation with Docker
Introduction to Dev Ops and Containerisation with DockerShakthi Weerasinghe
 
OpenID for Verifiable Credentials @ IIW 36
OpenID for Verifiable Credentials @ IIW 36OpenID for Verifiable Credentials @ IIW 36
OpenID for Verifiable Credentials @ IIW 36Torsten Lodderstedt
 
VMware - HCX - Architecture and Design .pdf
VMware - HCX - Architecture and Design .pdfVMware - HCX - Architecture and Design .pdf
VMware - HCX - Architecture and Design .pdfGiancarloSampaolesi
 
Why is DDS the Right Technology for the Industrial Internet?
Why is DDS the Right Technology for the Industrial Internet?Why is DDS the Right Technology for the Industrial Internet?
Why is DDS the Right Technology for the Industrial Internet?Real-Time Innovations (RTI)
 
Making Cassandra more capable, faster, and more reliable (at ApacheCon@Home 2...
Making Cassandra more capable, faster, and more reliable (at ApacheCon@Home 2...Making Cassandra more capable, faster, and more reliable (at ApacheCon@Home 2...
Making Cassandra more capable, faster, and more reliable (at ApacheCon@Home 2...Scalar, Inc.
 
[열린기술공방] Container기반의 DevOps - 클라우드 네이티브
[열린기술공방] Container기반의 DevOps - 클라우드 네이티브[열린기술공방] Container기반의 DevOps - 클라우드 네이티브
[열린기술공방] Container기반의 DevOps - 클라우드 네이티브Open Source Consulting
 
【de:code 2020】 今すぐはじめたい SQL Database のかしこい使い分け術 後編
【de:code 2020】 今すぐはじめたい SQL Database のかしこい使い分け術 後編【de:code 2020】 今すぐはじめたい SQL Database のかしこい使い分け術 後編
【de:code 2020】 今すぐはじめたい SQL Database のかしこい使い分け術 後編日本マイクロソフト株式会社
 
PCI DSSにおける認証認可 インフラ編
PCI DSSにおける認証認可 インフラ編PCI DSSにおける認証認可 インフラ編
PCI DSSにおける認証認可 インフラ編Nobuhiro Nakayama
 
[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링
[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링
[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링OpenStack Korea Community
 
OpenStack 개요 및 활용 사례 @ Community Open Camp with Microsoft
OpenStack 개요 및 활용 사례 @ Community Open Camp with MicrosoftOpenStack 개요 및 활용 사례 @ Community Open Camp with Microsoft
OpenStack 개요 및 활용 사례 @ Community Open Camp with MicrosoftIan Choi
 
Container Orchestration with Docker Swarm and Kubernetes
Container Orchestration with Docker Swarm and KubernetesContainer Orchestration with Docker Swarm and Kubernetes
Container Orchestration with Docker Swarm and KubernetesWill Hall
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.8.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.8.0対応)FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.8.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.8.0対応)fisuda
 
PLNOG15: Practical deployments of Kea, a high performance scalable DHCP - Tom...
PLNOG15: Practical deployments of Kea, a high performance scalable DHCP - Tom...PLNOG15: Practical deployments of Kea, a high performance scalable DHCP - Tom...
PLNOG15: Practical deployments of Kea, a high performance scalable DHCP - Tom...PROIDEA
 
【入門編】 ”はじめてのKong” APIゲートウェイとService Meshについて学ぼう!
【入門編】 ”はじめてのKong” APIゲートウェイとService Meshについて学ぼう! 【入門編】 ”はじめてのKong” APIゲートウェイとService Meshについて学ぼう!
【入門編】 ”はじめてのKong” APIゲートウェイとService Meshについて学ぼう! Junji Nishihara
 
Windows Server Container and Windows Subsystem for Linux
Windows Server Container and Windows Subsystem for LinuxWindows Server Container and Windows Subsystem for Linux
Windows Server Container and Windows Subsystem for LinuxTakeshi Fukuhara
 

What's hot (20)

FCスイッチゾーニング設定ガイド
FCスイッチゾーニング設定ガイドFCスイッチゾーニング設定ガイド
FCスイッチゾーニング設定ガイド
 
IBM Cloud: Direct Link Guide
IBM Cloud: Direct Link GuideIBM Cloud: Direct Link Guide
IBM Cloud: Direct Link Guide
 
OpenID Connect のビジネスチャンス
OpenID Connect のビジネスチャンスOpenID Connect のビジネスチャンス
OpenID Connect のビジネスチャンス
 
新しい認証技術FIDOの最新動向
新しい認証技術FIDOの最新動向新しい認証技術FIDOの最新動向
新しい認証技術FIDOの最新動向
 
Introduction to Dev Ops and Containerisation with Docker
Introduction to Dev Ops and Containerisation with DockerIntroduction to Dev Ops and Containerisation with Docker
Introduction to Dev Ops and Containerisation with Docker
 
OpenID for Verifiable Credentials @ IIW 36
OpenID for Verifiable Credentials @ IIW 36OpenID for Verifiable Credentials @ IIW 36
OpenID for Verifiable Credentials @ IIW 36
 
VMware - HCX - Architecture and Design .pdf
VMware - HCX - Architecture and Design .pdfVMware - HCX - Architecture and Design .pdf
VMware - HCX - Architecture and Design .pdf
 
Why is DDS the Right Technology for the Industrial Internet?
Why is DDS the Right Technology for the Industrial Internet?Why is DDS the Right Technology for the Industrial Internet?
Why is DDS the Right Technology for the Industrial Internet?
 
Making Cassandra more capable, faster, and more reliable (at ApacheCon@Home 2...
Making Cassandra more capable, faster, and more reliable (at ApacheCon@Home 2...Making Cassandra more capable, faster, and more reliable (at ApacheCon@Home 2...
Making Cassandra more capable, faster, and more reliable (at ApacheCon@Home 2...
 
[열린기술공방] Container기반의 DevOps - 클라우드 네이티브
[열린기술공방] Container기반의 DevOps - 클라우드 네이티브[열린기술공방] Container기반의 DevOps - 클라우드 네이티브
[열린기술공방] Container기반의 DevOps - 클라우드 네이티브
 
【de:code 2020】 今すぐはじめたい SQL Database のかしこい使い分け術 後編
【de:code 2020】 今すぐはじめたい SQL Database のかしこい使い分け術 後編【de:code 2020】 今すぐはじめたい SQL Database のかしこい使い分け術 後編
【de:code 2020】 今すぐはじめたい SQL Database のかしこい使い分け術 後編
 
PCI DSSにおける認証認可 インフラ編
PCI DSSにおける認証認可 インフラ編PCI DSSにおける認証認可 インフラ編
PCI DSSにおける認証認可 インフラ編
 
[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링
[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링
[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링
 
OpenStack 개요 및 활용 사례 @ Community Open Camp with Microsoft
OpenStack 개요 및 활용 사례 @ Community Open Camp with MicrosoftOpenStack 개요 및 활용 사례 @ Community Open Camp with Microsoft
OpenStack 개요 및 활용 사례 @ Community Open Camp with Microsoft
 
Container Orchestration with Docker Swarm and Kubernetes
Container Orchestration with Docker Swarm and KubernetesContainer Orchestration with Docker Swarm and Kubernetes
Container Orchestration with Docker Swarm and Kubernetes
 
LLAP: Sub-Second Analytical Queries in Hive
LLAP: Sub-Second Analytical Queries in HiveLLAP: Sub-Second Analytical Queries in Hive
LLAP: Sub-Second Analytical Queries in Hive
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.8.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.8.0対応)FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.8.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.8.0対応)
 
PLNOG15: Practical deployments of Kea, a high performance scalable DHCP - Tom...
PLNOG15: Practical deployments of Kea, a high performance scalable DHCP - Tom...PLNOG15: Practical deployments of Kea, a high performance scalable DHCP - Tom...
PLNOG15: Practical deployments of Kea, a high performance scalable DHCP - Tom...
 
【入門編】 ”はじめてのKong” APIゲートウェイとService Meshについて学ぼう!
【入門編】 ”はじめてのKong” APIゲートウェイとService Meshについて学ぼう! 【入門編】 ”はじめてのKong” APIゲートウェイとService Meshについて学ぼう!
【入門編】 ”はじめてのKong” APIゲートウェイとService Meshについて学ぼう!
 
Windows Server Container and Windows Subsystem for Linux
Windows Server Container and Windows Subsystem for LinuxWindows Server Container and Windows Subsystem for Linux
Windows Server Container and Windows Subsystem for Linux
 

Similar to Learn How to Develop a Distributed Game of Life with DDS

The Power of Determinism in Database Systems
The Power of Determinism in Database SystemsThe Power of Determinism in Database Systems
The Power of Determinism in Database SystemsDaniel Abadi
 
Cyclone DDS Unleashed: Scalability in DDS and Dealing with Large Systems
Cyclone DDS Unleashed: Scalability in DDS and Dealing with Large SystemsCyclone DDS Unleashed: Scalability in DDS and Dealing with Large Systems
Cyclone DDS Unleashed: Scalability in DDS and Dealing with Large SystemsZettaScaleTechnology
 
Brains, Data, and Machine Intelligence (2014 04 14 London Meetup)
Brains, Data, and Machine Intelligence (2014 04 14 London Meetup)Brains, Data, and Machine Intelligence (2014 04 14 London Meetup)
Brains, Data, and Machine Intelligence (2014 04 14 London Meetup)Numenta
 
Using Containers and HPC to Solve the Mysteries of the Universe by Deborah Bard
Using Containers and HPC to Solve the Mysteries of the Universe by Deborah BardUsing Containers and HPC to Solve the Mysteries of the Universe by Deborah Bard
Using Containers and HPC to Solve the Mysteries of the Universe by Deborah BardDocker, Inc.
 
Pnuts yahoo!’s hosted data serving platform
Pnuts  yahoo!’s hosted data serving platformPnuts  yahoo!’s hosted data serving platform
Pnuts yahoo!’s hosted data serving platformlammya aa
 
MissStateStdCellTut.ppt
MissStateStdCellTut.pptMissStateStdCellTut.ppt
MissStateStdCellTut.pptyasakoj1
 
Climb stateoftheartintro
Climb stateoftheartintroClimb stateoftheartintro
Climb stateoftheartintrothomasrconnor
 
Introduction to Version Control
Introduction to Version ControlIntroduction to Version Control
Introduction to Version ControlWei-Tsung Su
 
Swift container sync
Swift container syncSwift container sync
Swift container syncOpen Stack
 
Dc lec-06 & 07 (osi model)
Dc lec-06 & 07 (osi model)Dc lec-06 & 07 (osi model)
Dc lec-06 & 07 (osi model)diaryinc
 
The Architecture of Continuous Innovation - OSCON 2015
The Architecture of Continuous Innovation - OSCON 2015The Architecture of Continuous Innovation - OSCON 2015
The Architecture of Continuous Innovation - OSCON 2015Chip Childers
 
Instrumenting the real-time web: Node.js in production
Instrumenting the real-time web: Node.js in productionInstrumenting the real-time web: Node.js in production
Instrumenting the real-time web: Node.js in productionbcantrill
 
Lecture 1 (distributed systems)
Lecture 1 (distributed systems)Lecture 1 (distributed systems)
Lecture 1 (distributed systems)Fazli Amin
 
Brief Introduction To Kubernetes
Brief Introduction To KubernetesBrief Introduction To Kubernetes
Brief Introduction To KubernetesAvinash Ketkar
 
Scalability20140226
Scalability20140226Scalability20140226
Scalability20140226Nick Kypreos
 
Go Reactive: Event-Driven, Scalable, Resilient & Responsive Systems
Go Reactive: Event-Driven, Scalable, Resilient & Responsive SystemsGo Reactive: Event-Driven, Scalable, Resilient & Responsive Systems
Go Reactive: Event-Driven, Scalable, Resilient & Responsive SystemsJonas Bonér
 
Parallel Computing - Lec 3
Parallel Computing - Lec 3Parallel Computing - Lec 3
Parallel Computing - Lec 3Shah Zaib
 
Talk at the Boston Cloud Foundry Meetup June 2015
Talk at the Boston Cloud Foundry Meetup June 2015Talk at the Boston Cloud Foundry Meetup June 2015
Talk at the Boston Cloud Foundry Meetup June 2015Chip Childers
 

Similar to Learn How to Develop a Distributed Game of Life with DDS (20)

The Power of Determinism in Database Systems
The Power of Determinism in Database SystemsThe Power of Determinism in Database Systems
The Power of Determinism in Database Systems
 
Cyclone DDS Unleashed: Scalability in DDS and Dealing with Large Systems
Cyclone DDS Unleashed: Scalability in DDS and Dealing with Large SystemsCyclone DDS Unleashed: Scalability in DDS and Dealing with Large Systems
Cyclone DDS Unleashed: Scalability in DDS and Dealing with Large Systems
 
Brains, Data, and Machine Intelligence (2014 04 14 London Meetup)
Brains, Data, and Machine Intelligence (2014 04 14 London Meetup)Brains, Data, and Machine Intelligence (2014 04 14 London Meetup)
Brains, Data, and Machine Intelligence (2014 04 14 London Meetup)
 
Using Containers and HPC to Solve the Mysteries of the Universe by Deborah Bard
Using Containers and HPC to Solve the Mysteries of the Universe by Deborah BardUsing Containers and HPC to Solve the Mysteries of the Universe by Deborah Bard
Using Containers and HPC to Solve the Mysteries of the Universe by Deborah Bard
 
Pdc lecture1
Pdc lecture1Pdc lecture1
Pdc lecture1
 
Pnuts yahoo!’s hosted data serving platform
Pnuts  yahoo!’s hosted data serving platformPnuts  yahoo!’s hosted data serving platform
Pnuts yahoo!’s hosted data serving platform
 
MissStateStdCellTut.ppt
MissStateStdCellTut.pptMissStateStdCellTut.ppt
MissStateStdCellTut.ppt
 
Climb stateoftheartintro
Climb stateoftheartintroClimb stateoftheartintro
Climb stateoftheartintro
 
Introduction to Version Control
Introduction to Version ControlIntroduction to Version Control
Introduction to Version Control
 
Swift container sync
Swift container syncSwift container sync
Swift container sync
 
Dc lec-06 & 07 (osi model)
Dc lec-06 & 07 (osi model)Dc lec-06 & 07 (osi model)
Dc lec-06 & 07 (osi model)
 
The Architecture of Continuous Innovation - OSCON 2015
The Architecture of Continuous Innovation - OSCON 2015The Architecture of Continuous Innovation - OSCON 2015
The Architecture of Continuous Innovation - OSCON 2015
 
Introduction
IntroductionIntroduction
Introduction
 
Instrumenting the real-time web: Node.js in production
Instrumenting the real-time web: Node.js in productionInstrumenting the real-time web: Node.js in production
Instrumenting the real-time web: Node.js in production
 
Lecture 1 (distributed systems)
Lecture 1 (distributed systems)Lecture 1 (distributed systems)
Lecture 1 (distributed systems)
 
Brief Introduction To Kubernetes
Brief Introduction To KubernetesBrief Introduction To Kubernetes
Brief Introduction To Kubernetes
 
Scalability20140226
Scalability20140226Scalability20140226
Scalability20140226
 
Go Reactive: Event-Driven, Scalable, Resilient & Responsive Systems
Go Reactive: Event-Driven, Scalable, Resilient & Responsive SystemsGo Reactive: Event-Driven, Scalable, Resilient & Responsive Systems
Go Reactive: Event-Driven, Scalable, Resilient & Responsive Systems
 
Parallel Computing - Lec 3
Parallel Computing - Lec 3Parallel Computing - Lec 3
Parallel Computing - Lec 3
 
Talk at the Boston Cloud Foundry Meetup June 2015
Talk at the Boston Cloud Foundry Meetup June 2015Talk at the Boston Cloud Foundry Meetup June 2015
Talk at the Boston Cloud Foundry Meetup June 2015
 

More from Real-Time Innovations (RTI)

Precise, Predictive, and Connected: DDS and OPC UA – Real-Time Connectivity A...
Precise, Predictive, and Connected: DDS and OPC UA – Real-Time Connectivity A...Precise, Predictive, and Connected: DDS and OPC UA – Real-Time Connectivity A...
Precise, Predictive, and Connected: DDS and OPC UA – Real-Time Connectivity A...Real-Time Innovations (RTI)
 
The Inside Story: How the IIC’s Connectivity Framework Guides IIoT Connectivi...
The Inside Story: How the IIC’s Connectivity Framework Guides IIoT Connectivi...The Inside Story: How the IIC’s Connectivity Framework Guides IIoT Connectivi...
The Inside Story: How the IIC’s Connectivity Framework Guides IIoT Connectivi...Real-Time Innovations (RTI)
 
Upgrade Your System’s Security - Making the Jump from Connext DDS Professiona...
Upgrade Your System’s Security - Making the Jump from Connext DDS Professiona...Upgrade Your System’s Security - Making the Jump from Connext DDS Professiona...
Upgrade Your System’s Security - Making the Jump from Connext DDS Professiona...Real-Time Innovations (RTI)
 
The Inside Story: Leveraging the IIC's Industrial Internet Security Framework
The Inside Story: Leveraging the IIC's Industrial Internet Security FrameworkThe Inside Story: Leveraging the IIC's Industrial Internet Security Framework
The Inside Story: Leveraging the IIC's Industrial Internet Security FrameworkReal-Time Innovations (RTI)
 
ISO 26262 Approval of Automotive Software Components
ISO 26262 Approval of Automotive Software ComponentsISO 26262 Approval of Automotive Software Components
ISO 26262 Approval of Automotive Software ComponentsReal-Time Innovations (RTI)
 
The Low-Risk Path to Building Autonomous Car Architectures
The Low-Risk Path to Building Autonomous Car ArchitecturesThe Low-Risk Path to Building Autonomous Car Architectures
The Low-Risk Path to Building Autonomous Car ArchitecturesReal-Time Innovations (RTI)
 
How to Design Distributed Robotic Control Systems
How to Design Distributed Robotic Control SystemsHow to Design Distributed Robotic Control Systems
How to Design Distributed Robotic Control SystemsReal-Time Innovations (RTI)
 
Fog Computing is the Future of the Industrial Internet of Things
Fog Computing is the Future of the Industrial Internet of ThingsFog Computing is the Future of the Industrial Internet of Things
Fog Computing is the Future of the Industrial Internet of ThingsReal-Time Innovations (RTI)
 
The Inside Story: How OPC UA and DDS Can Work Together in Industrial Systems
The Inside Story: How OPC UA and DDS Can Work Together in Industrial SystemsThe Inside Story: How OPC UA and DDS Can Work Together in Industrial Systems
The Inside Story: How OPC UA and DDS Can Work Together in Industrial SystemsReal-Time Innovations (RTI)
 
Space Rovers and Surgical Robots: System Architecture Lessons from Mars
Space Rovers and Surgical Robots: System Architecture Lessons from MarsSpace Rovers and Surgical Robots: System Architecture Lessons from Mars
Space Rovers and Surgical Robots: System Architecture Lessons from MarsReal-Time Innovations (RTI)
 
Learn About FACE Aligned Reference Platform: Built on COTS and DO-178C Certif...
Learn About FACE Aligned Reference Platform: Built on COTS and DO-178C Certif...Learn About FACE Aligned Reference Platform: Built on COTS and DO-178C Certif...
Learn About FACE Aligned Reference Platform: Built on COTS and DO-178C Certif...Real-Time Innovations (RTI)
 
How the fusion of time sensitive networking, time-triggered ethernet and data...
How the fusion of time sensitive networking, time-triggered ethernet and data...How the fusion of time sensitive networking, time-triggered ethernet and data...
How the fusion of time sensitive networking, time-triggered ethernet and data...Real-Time Innovations (RTI)
 
Cybersecurity Spotlight: Looking under the Hood at Data Breaches and Hardenin...
Cybersecurity Spotlight: Looking under the Hood at Data Breaches and Hardenin...Cybersecurity Spotlight: Looking under the Hood at Data Breaches and Hardenin...
Cybersecurity Spotlight: Looking under the Hood at Data Breaches and Hardenin...Real-Time Innovations (RTI)
 
Data Distribution Service Security and the Industrial Internet of Things
Data Distribution Service Security and the Industrial Internet of ThingsData Distribution Service Security and the Industrial Internet of Things
Data Distribution Service Security and the Industrial Internet of ThingsReal-Time Innovations (RTI)
 
The Inside Story: GE Healthcare's Industrial Internet of Things (IoT) Archite...
The Inside Story: GE Healthcare's Industrial Internet of Things (IoT) Archite...The Inside Story: GE Healthcare's Industrial Internet of Things (IoT) Archite...
The Inside Story: GE Healthcare's Industrial Internet of Things (IoT) Archite...Real-Time Innovations (RTI)
 

More from Real-Time Innovations (RTI) (20)

A Tour of RTI Applications
A Tour of RTI ApplicationsA Tour of RTI Applications
A Tour of RTI Applications
 
Precise, Predictive, and Connected: DDS and OPC UA – Real-Time Connectivity A...
Precise, Predictive, and Connected: DDS and OPC UA – Real-Time Connectivity A...Precise, Predictive, and Connected: DDS and OPC UA – Real-Time Connectivity A...
Precise, Predictive, and Connected: DDS and OPC UA – Real-Time Connectivity A...
 
The Inside Story: How the IIC’s Connectivity Framework Guides IIoT Connectivi...
The Inside Story: How the IIC’s Connectivity Framework Guides IIoT Connectivi...The Inside Story: How the IIC’s Connectivity Framework Guides IIoT Connectivi...
The Inside Story: How the IIC’s Connectivity Framework Guides IIoT Connectivi...
 
Upgrade Your System’s Security - Making the Jump from Connext DDS Professiona...
Upgrade Your System’s Security - Making the Jump from Connext DDS Professiona...Upgrade Your System’s Security - Making the Jump from Connext DDS Professiona...
Upgrade Your System’s Security - Making the Jump from Connext DDS Professiona...
 
The Inside Story: Leveraging the IIC's Industrial Internet Security Framework
The Inside Story: Leveraging the IIC's Industrial Internet Security FrameworkThe Inside Story: Leveraging the IIC's Industrial Internet Security Framework
The Inside Story: Leveraging the IIC's Industrial Internet Security Framework
 
ISO 26262 Approval of Automotive Software Components
ISO 26262 Approval of Automotive Software ComponentsISO 26262 Approval of Automotive Software Components
ISO 26262 Approval of Automotive Software Components
 
The Low-Risk Path to Building Autonomous Car Architectures
The Low-Risk Path to Building Autonomous Car ArchitecturesThe Low-Risk Path to Building Autonomous Car Architectures
The Low-Risk Path to Building Autonomous Car Architectures
 
Introduction to RTI DDS
Introduction to RTI DDSIntroduction to RTI DDS
Introduction to RTI DDS
 
How to Design Distributed Robotic Control Systems
How to Design Distributed Robotic Control SystemsHow to Design Distributed Robotic Control Systems
How to Design Distributed Robotic Control Systems
 
Fog Computing is the Future of the Industrial Internet of Things
Fog Computing is the Future of the Industrial Internet of ThingsFog Computing is the Future of the Industrial Internet of Things
Fog Computing is the Future of the Industrial Internet of Things
 
The Inside Story: How OPC UA and DDS Can Work Together in Industrial Systems
The Inside Story: How OPC UA and DDS Can Work Together in Industrial SystemsThe Inside Story: How OPC UA and DDS Can Work Together in Industrial Systems
The Inside Story: How OPC UA and DDS Can Work Together in Industrial Systems
 
Cyber Security for the Connected Car
Cyber Security for the Connected Car Cyber Security for the Connected Car
Cyber Security for the Connected Car
 
Space Rovers and Surgical Robots: System Architecture Lessons from Mars
Space Rovers and Surgical Robots: System Architecture Lessons from MarsSpace Rovers and Surgical Robots: System Architecture Lessons from Mars
Space Rovers and Surgical Robots: System Architecture Lessons from Mars
 
Advancing Active Safety for Next-Gen Automotive
Advancing Active Safety for Next-Gen AutomotiveAdvancing Active Safety for Next-Gen Automotive
Advancing Active Safety for Next-Gen Automotive
 
Learn About FACE Aligned Reference Platform: Built on COTS and DO-178C Certif...
Learn About FACE Aligned Reference Platform: Built on COTS and DO-178C Certif...Learn About FACE Aligned Reference Platform: Built on COTS and DO-178C Certif...
Learn About FACE Aligned Reference Platform: Built on COTS and DO-178C Certif...
 
How the fusion of time sensitive networking, time-triggered ethernet and data...
How the fusion of time sensitive networking, time-triggered ethernet and data...How the fusion of time sensitive networking, time-triggered ethernet and data...
How the fusion of time sensitive networking, time-triggered ethernet and data...
 
Secrets of Autonomous Car Design
Secrets of Autonomous Car DesignSecrets of Autonomous Car Design
Secrets of Autonomous Car Design
 
Cybersecurity Spotlight: Looking under the Hood at Data Breaches and Hardenin...
Cybersecurity Spotlight: Looking under the Hood at Data Breaches and Hardenin...Cybersecurity Spotlight: Looking under the Hood at Data Breaches and Hardenin...
Cybersecurity Spotlight: Looking under the Hood at Data Breaches and Hardenin...
 
Data Distribution Service Security and the Industrial Internet of Things
Data Distribution Service Security and the Industrial Internet of ThingsData Distribution Service Security and the Industrial Internet of Things
Data Distribution Service Security and the Industrial Internet of Things
 
The Inside Story: GE Healthcare's Industrial Internet of Things (IoT) Archite...
The Inside Story: GE Healthcare's Industrial Internet of Things (IoT) Archite...The Inside Story: GE Healthcare's Industrial Internet of Things (IoT) Archite...
The Inside Story: GE Healthcare's Industrial Internet of Things (IoT) Archite...
 

Recently uploaded

Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 

Recently uploaded (20)

Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 

Learn How to Develop a Distributed Game of Life with DDS

  • 1. Your systems. Working as one. May 15, 2013 Reinier Torenbeek reinier@rti.com Learn How to Develop a Distributed Game of Life with DDS
  • 2. Agenda • Problem definition: Life Distributed • A solution: RTI Connext DDS • Applying DDS to Life Distributed: concepts • Applying DDS to Life Distributed: (pseudo)-code • Advanced Life Distributed: leveraging DDS • Summary • Questions and Answers
  • 3. Conway's Game of Life • Devised by John Conway in 1970 • Zero-player game – evolution determined by initial state – no further input required • Plays in two-dimensional, orthogonal grid of square cells – originally of infinite size – for this webinar, toroidal array is used • At any moment in time, each cell is either dead or alive • Neighboring cells interact with each other – horizontally, vertically, or diagonally adjacent.
  • 4. Conway's Game of Life At each step in time, the following transitions occur: 1. Any live cell with fewer than two live neighbors dies, as if caused by under-population. 2. Any live cell with two or three live neighbors lives on to the next generation. 3. Any live cell with more than three live neighbors dies, as if by overcrowding. 4. Any dead cell with exactly three live neighbors becomes a live cell, as if by reproduction. These rules continue to be applied repeatedly to create further generations.
  • 5. Conway's Game of Life Glider gun Pulsar Block
  • 6. Conway's Game of Life – Distributed Problem description: how can Life be properly implemented in a distributed fashion? • have multiple processes work on parts of the Universe in parallel
  • 7. Conway's Game of Life – Distributed
  • 8. Conway's Game of Life – Distributed Problem description: how can Life be properly implemented in a distributed fashion? • have multiple processes work on parts of the Universe in parallel • have these processes exchange the required information for the evolutionary steps
  • 9. Conway's Game of Life – Distributed
  • 10. Conway's Game of Life – Distributed Problem description: how can Life be properly implemented in a distributed fashion? • have multiple processes work on parts of the Universe in parallel • have these processes exchange the required information for the evolutionary steps This problem and its solution serve as an example for developing distributed applications in general
  • 11. Conway's Game of Life – Distributed Properly here means: • with minimal impact on the application logics – let distribution artifacts be dealt with transparently – let the developer focus on Life and its algorithms • allowing for mixed environments – multiple programming languages, OS-es and hardware – asymmetric processing power • supporting scalability – for very large Life Universes on many machines – for load balancing of CPU intensive calculations • in a fault-tolerant fashion
  • 12. Agenda • Problem definition: Life Distributed • A solution: RTI Connext DDS • Applying DDS to Life Distributed: concepts • Applying DDS to Life Distributed: (pseudo)-code • Advanced Life Distributed: leveraging DDS • Summary • Questions and Answers
  • 13. RTI Connext DDS A few words describing RTI Connext DDS: • an implementation of the Object Management Group (OMG) Data Distribution Service (DDS) – standardized, multi-language API – standardized wire-protocol – see www.rti.com/elearning for tutorials (some free) • a high performance, scalable, anonymous publish/subscribe infrastructure • an advanced distributed data management technology – supporting many features know from DBMS-es
  • 14. RTI Connext DDS DDS revolves around the concept of a typed data- space that • consists of a collection of structured, observable items which – go through their individual lifecycle of creation, updating and deletion (CRUD) – are updated by Publishers – are observed by Subscribers • is managed in a distributed fashion – by Connext libraries and (optionally) services – transparent to applications
  • 15. RTI Connext DDS DDS revolves around the concept of a typed data- space that • allows for extensive fine-tuning – to adjust distribution behavior according to application needs – using standard Quality of Service (QoS) mechanisms • can evolve dynamically – allowing Publishers and Subscribers to join and leave at any time – automatically discovering communication paths between Publishers and Subscribers
  • 16. Agenda • Problem definition: Life Distributed • A solution: RTI Connext DDS • Applying DDS to Life Distributed: concepts • Applying DDS to Life Distributed: (pseudo)-code • Advanced Life Distributed: leveraging DDS • Summary • Questions and Answers
  • 17. Applying DDS to Life Distributed First step is to define the data-model in IDL • cells are observable items, or "instances" – row and col identify their location in the grid – generation identifies the "tick nr" in evolution – alive identifies the state of the cell
  • 18. module life { struct CellType { long row; //@key long col; //@key unsigned long generation; boolean alive; }; };
  • 19. Applying DDS to Life Distributed First step is to define the data-model in IDL • cells are observable items, or "instances" – row and col identify their location in the grid – generation identifies the "tick nr" in evolution – alive identifies the state of the cell • the collection of all cells is the CellTopic Topic – cells exist side-by-side and for the Universe – conceptually stored "in the data-space" – in reality, local copies where needed
  • 20. row: 16 col: 4 generation: 25 alive: false
  • 21. Applying DDS to Life Distributed Each process is responsible for publishing the state of a certain subset of cells of the Universe: • a rectangle or square area with corners (rowmin,colmin)i and (rowmax,colmax)i for process i
  • 23. Applying DDS to Life Distributed Each process is responsible for publishing the state of a certain subset of cells of the Universe: • a rectangle or square area with corners (rowmin,colmin)i and (rowmax,colmax)i for process i • each cell is individually updated using the write() call on a CellTopic DataWriter – middleware analyzes the key values (row,col) and maintains the individual states of all cells • updating happens generation by generation
  • 24. Applying DDS to Life Distributed Each process subscribes to the required subset of cells in order to determine its current state: • all neighboring cells, as well as its "own" cells
  • 25.
  • 26. Applying DDS to Life Distributed Each process subscribes to the required subset of cells in order to determine its current state: • all neighboring cells, as well as its "own" cells • using a SQL-expression to identify the cells subscribed to (content-based filtering) – complexity is "Life-specific", not "DDS-specific"
  • 27. "((row >= 1 AND row <= 11) OR row = 20) AND ((col >= 1 AND col <= 11) OR col = 20)"
  • 28. Applying DDS to Life Distributed Each process subscribes to the required subset of cells in order to determine its current state: • all neighboring cells, as well as its "own" cells • using a SQL-expression to identify the cells subscribed to (content-based filtering) – complexity is "Life-specific", not "DDS-specific" • middleware will deliver cell updates to those DataReaders that are interested in it
  • 29. Applying DDS to Life Distributed Additional processes can be added to peek at the evolution of Life: • subscribing to (a subset of) the CellTopic
  • 30. "row >= 8 AND row <= 13 AND col >= 8 AND col <= 13"
  • 31. Applying DDS to Life Distributed Additional processes can be added to peek at the evolution of Life: • subscribing to (a subset of) the CellTopic • using any supported language, OS, platform – C, C++, Java, C#, Ada – Windows, Linux, AIX, Mac OS X, Solaris, INTEGRITY, LynxOS, VxWorks, QNX… • without changes to the existing applications – middleware discovers new topology and distributes updates accordingly
  • 32. Agenda • Problem definition: Life Distributed • A solution: RTI Connext DDS • Applying DDS to Life Distributed: concepts • Applying DDS to Life Distributed: (pseudo)-code • Advanced Life Distributed: leveraging DDS • Summary • Questions and Answers
  • 33. Life Distributed (pseudo-)code Life Distributed prototype applications were developed on Mac OS X • Life evolution application written in C • Life observer application written in Python – using Pythons extension-API • (Pseudo-)code covers basic scenario only – more advanced apects are covered in next section
  • 34. Life Distributed (pseudo-)code Life evolution application written in C: • application is responsible for – knowing about the Life seed (initial state of cells) – executing the Life rules based on cell updates coming from DDS – updating cell states after a full generation tick has been processed • evolution of Life takes place one generation at a time – consequently, Life applications run in "lock-step"
  • 35. initialize DDS current generation = 0 write sub-universe Life seed to DDS repeat repeat wait for DDS cell update for current generation update sub-universe with cell until 8 neighbors seen for all cells execute Life rules on sub-universe increase current generation write all new cell states to DDS until last generation reached
  • 36. Life Distributed (pseudo-)code Worth to note about the Life application: • loss of one cell-update will eventually stall the complete evolution – this is by nature of the Life algorithm – implies RELIABLE reliability QoS for DDS – history of 2 generations need to be stored to avoid overwriting
  • 38. Life Distributed (pseudo-)code Worth to note about the Life application: • loss of one cell-update will eventually stall the complete evolution – this is by nature of the Life algorithm – implies RELIABLE reliability QoS for DDS – history of 2 generations needs to be stored to avoid overwriting of state of a single cell • startup-order issues resolved by DDS durability QoS – newly joined applications will be delivered current state – delivery of historical data transparent to applications – applications not waiting for other applications, but for cell updates
  • 40. Life Distributed (pseudo-)code Worth to note about the Life application: • DDS cell updates come from different places – mostly from the application's own DataWriter – also from neighboring sub-Universes' DataWriters – all transparently arranged based on the filter
  • 41. create DDS DomainParticipant with DomainParticipant, create DDS Topic "CellTopic" with CellTopic and filterexpression, create DDS ContentFilteredTopic "FilteredCellTopic" create DDS Subscriber create DDS DataReader for FilteredCellTopic
  • 42. Life Distributed (pseudo-)code Worth to note about the Life application: • DDS cell updates come from different places – mostly from the application's own DataWriter – also from neighboring sub-Universes' DataWriters – all transparently arranged based on the filter • algorithm relies on reading cell-updates for a single generation – evolving one tick at a time – leverages DDS QueryCondition – "generation = %0" with %0 value changing
  • 43. create DDS DomainParticipant with DomainParticipant, create DDS Topic "CellTopic" with CellTopic and filterexpression, create DDS ContentFilteredTopic "FilteredCellTopic" with DomainParticiapnt, create DDS Subscriber with Subscriber and FilteredCellTopic, create DDS CellTopicDataReader with CellTopicDataReader, query expression and parameterlist, create QueryCondition with DomainParticipant, create WaitSet attach QueryCondition to WaitSet in main loop: in generation loop: block thread in WaitSet, wait for data from DDS read with QueryCondition from CellTopicDataReader increase generation update query parameterlist with new generation
  • 44. Life Distributed (pseudo-)code Life observer application written in Python: • application is responsible for – subscribing to cell updates – printing cell states to display evolution – ignoring any generations that have missing cell updates
  • 45. import clifedds as life #omitted option parsing filterString = 'row>={} and col>={} and row<={} and col<={}'. format(options.minRow, options.minCol, options.maxRow, options.maxCol) life.open(options.domainId, filterString) generation = 0 while generation is not None: # read from DDS, block if nothing availble, # returns Nones in case of time-out after 10 seconds row, col, generation, isAlive = life.read(10) # omitted administration for building and printing strings life.close()
  • 46. Life Distributed (pseudo-)code Life observer application written in Python: • application is responsible for – subscribing to cell updates – printing cell states to display evolution – ignoring any generations that have missing cell updates • for minimal impact, DataReader uses default QoS settings – BEST_EFFORT reliability, so updates might be lost – VOLATILE durability, so no delivery of historical updates – still history depth of 2
  • 48. Life Distributed (pseudo-)code domainId # of generations universe dimensions sub-universe dimensions Example of running a single life application:
  • 49. Life Distributed (pseudo-)code Example of running a life scenario:
  • 50.
  • 51. Agenda • Problem definition: Life Distributed • A solution: RTI Connext DDS • Applying DDS to Life Distributed: concepts • Applying DDS to Life Distributed: (pseudo)-code • Advanced Life Distributed: leveraging DDS • Summary • Questions and Answers
  • 52. Fault tolerance Not all is lost if Life application crashes • if using TRANSIENT durability QoS, infrastructure will keep status roaming – requires extra service to run (redundantly) • after restart, current status is available automatically – new incarnation can continue seamlessly
  • 54. Fault tolerance Not all is lost if Life application crashes • if using TRANSIENT durability QoS, infrastructure will keep status roaming – requires extra service to run (redundantly) • after restart, current status is available automatically – new incarnation can continue seamlessly • results in high robustness • even more advanced QoS-es are possible
  • 55. Reliability and flow control Running the Python app with a larger grid: • with current QoS, faster writer with slower reader will overwrite samples in reader • whenever at least one cell update is missing, the generation is not printed (by design)
  • 56.
  • 57. Reliability and flow control Running the Python app with a larger grid: • whenever at least one cell update is missing, the generation is not printed (by design) • with current QoS, faster writer with slower reader will overwrite samples in reader • this is often desired result, to avoid system- wide impact of asymmetric processing power • if not desired, KEEP_ALL QoS can be leveraged
  • 59. Reliability and flow control Running the Python app with a larger grid: • whenever at least one cell update is missing, the generation is not printed (by design) • with current QoS, faster writer with slower reader will overwrite samples in reader • this is often desired result, to avoid system- wide impact of asymmetric processing power • if not desired, KEEP_ALL QoS can be leveraged – flow control will slow down writer to avoid loss
  • 60.
  • 61. More advanced problem solving Other ways to improve the Life implementation: • for centralized grid configuration, distribute grid- sizes with DDS – with TRANSIENT or PERSISTENT QoS – this isolates configuration-features to one single app – dynamic grid-reconfiguration can be done by re- publishing grid-sizes • for centralized seed (generation 0) management, distribute seed with DDS – with TRANSIENT or PERSISTENT QoS – this isolates seeding to one single app
  • 62. More advanced problem solving Other ways to improve the Life implementation: • in addition to separate cells, distribute complete sub- Universe state using a more compact data-type – DDS supports a very rich set of data-types • bitmap-like type would work well – especially useful for very large scale Universes – can be used for seeding as well – with TRANSIENT QoS • multiple Universes can exist and evolve side-by-side using Partitions – only readers and writers that have a Partition in common will interact – Partitions can be added and removed on the fly – Partitions are string names, allowing good flexibility
  • 63. Agenda • Problem definition: Life Distributed • A solution: RTI Connext DDS • Applying DDS to Life Distributed: concepts • Applying DDS to Life Distributed: (pseudo)-code • Advanced Life Distributed: leveraging DDS • Summary • Questions and Answers
  • 64. Summary Distributed Life can be properly implemented leveraging DDS • communication complexity is off-loaded to middleware, developer can focus on application • advanced QoS settings allow for adjustment to requirements and deployment characteristics • DDS features simplify extending Distributed Life beyond its basic implementation • all of this in a standardized, multi-language, multi- platform environment with an infrastructure built to scale and perform
  • 65. Agenda • Problem definition: Life Distributed • A solution: RTI Connext DDS • Applying DDS to Life Distributed: concepts • Applying DDS to Life Distributed: (pseudo)-code • Advanced Life Distributed: leveraging DDS • Summary • Questions and Answers