SlideShare a Scribd company logo
Building Data Streaming Platforms
Using OpenShift and Kafka
Openshift @ Amadeus
Pierre Dor Senior Architect
Nenad Bogojević Senior Expert
Olivier Richaud Senior Manager
©AmadeusITGroupanditsaffiliatesandsubsidiaries
Data Streaming Architecture
©AmadeusITGroupanditsaffiliatesandsubsidiaries
1.
©AmadeusITGroupanditsaffiliatesandsubsidiaries
3
©AmadeusITGroupanditsaffiliatesandsubsidiaries
Using Append-Only Streams of Immutable Events
When you have an event stream, you can do many great things with it
Transform and load into
data stores
This is a very powerful way of building
complex applications cleanly
Sequence of persistent
immutable events
Process it to create a
new output stream
4
©AmadeusITGroupanditsaffiliatesandsubsidiaries
Tools
Apache Kafka
To process events, either
• use Kafka’s client libraries directly or
• use one or several Stream Processor
application framework like:
- Kafka Streams
- Flink
- Samza
- Storm
- Spark Streaming
_Loose coupling & Resilience
_Scalability
_Flexibility & Agility
_Auditability/error recovery
5
©AmadeusITGroupanditsaffiliatesandsubsidiaries
What are the main benefits?
Business
Data Ingestion
Parse
6
©AmadeusITGroupanditsaffiliatesandsubsidiaries
Lambda Architecture Template
Archive (cold)
Archiver
Transform
Event
Detection
Rules
ODS (hot)
Raw data
Store
Business
process
Actions
Big Data
Real Time
Analytics
Hadoop
Store
MapR-FS (warm)
Offline
Analytics
Online
Delivery
Data push
Offline
Delivery
Data batch
Append
Append
Update
Business
process
Data driven projects are based on very similar
architecture.
Load
ODS REST API
Business
Data Ingestion
Parse
7
©AmadeusITGroupanditsaffiliatesandsubsidiaries
Data Driven Architecture
Archive (cold)
Archiver
Transform
Event
Detection
Rules
ODS (hot)
Raw data
Store
Business
process
Actions
Big Data
Real Time
Analytics
Hadoop
Store
MapR-FS (warm)
Offline
Analytics
Online
Delivery
Data push
Offline
Delivery
Data batch
Append
Append
Update
Business
process
Computed insights are driving
business layer behavior
Load
ODS REST API
Business
Data Ingestion
Parse
8
©AmadeusITGroupanditsaffiliatesandsubsidiaries
Data Driven Architecture
Machine Learning / Artificial Intelligence
Archive (cold)
Archiver
Transform
Event
Detection
ML Decision Tree
ODS (hot)
Raw data
Store
Business
process
Actions
Big Data
Real Time
Analytics
Hadoop
Store
MapR-FS (warm)
Offline
Analytics
Online
Delivery
Data push
Offline
Delivery
Data batch
Append
Append
Update
Business
process
Computed ML
Models can be
deployed to
business layerLoad
ODS REST API
Kafka (& more) @ OpenShift
©AmadeusITGroupanditsaffiliatesandsubsidiaries
2.
©AmadeusITGroupanditsaffiliatesandsubsidiaries
_Kafka cluster
• Each broker has identity – need to find each other
• Brokers need persistence to store partition logs
_Zookeeper cluster
• Another cluster with persistence
_Thanks to StatefulSet
10
©AmadeusITGroupanditsaffiliatesandsubsidiaries
Kafka in OpenShift
broker-178523330-61d6n
_Provide stable pod identity
_Provide stable storage
_Ordered startup, shutdown
_Rolling updates
11
©AmadeusITGroupanditsaffiliatesandsubsidiaries
Stateful Sets and Kafka
kafka-0 kafka-1 kafka-2 zoo-0 zoo-1 zoo-2
kafka zookeeper
broker zooHeadless
service
Discovery
service
clients
use this
to discover these
_Node Affinity & Anti-affinity
• e.g. good storage, not on same machine
_Persistence
• Common wisdom: Use persistent volume, otherwise you’ll lose Kafka logs
• Relying on Kafka replication
• Use empty volume
• if container crashes, you keep the logs
• if node crashes, rely on replication
• Soon: local persistent volume
_Monitoring: Prometheus & JMX
12
©AmadeusITGroupanditsaffiliatesandsubsidiaries
Tuning
_Many microservices -> many kafka topics
_Operating topics means
• Make sure that topic exists in target environments
• Make sure that topic is deleted once it is no longer used
• Propagate same configuration across environments
• Configure retention based on available disk space
• Configure clients with credentials
• Deliver configuration and requirements as code
13
©AmadeusITGroupanditsaffiliatesandsubsidiaries
What about topics?
_ConfigMap describing
• Name
• Partition count
• Replication factor
• Topic properties
_Equivalent to provision/unprovision
of ServiceCatalog
_Can work for credentials too
14
©AmadeusITGroupanditsaffiliatesandsubsidiaries
Managing topics
Kafka-operator
apiVersion: v1
kind: ConfigMap
metadata:
name: sample-topic
labels:
config: kafka-topic
data:
partitions: "20"
replication-factor: "2"
properties: |
retention.ms=1000000
_A tool to develop, design – visually or yaml
_An operator to deploy, visualize and monitoring
• OpenShift console links (and authorization)
• Prometheus for monitoring each service
• OpenTracing for following messages across microservices – streaming & HTTP
15
©AmadeusITGroupanditsaffiliatesandsubsidiaries
Topology Management
Kafka at scale
©AmadeusITGroupanditsaffiliatesandsubsidiaries
3.
©AmadeusITGroupanditsaffiliatesandsubsidiaries
_Large scale platform with thousands of nodes
_Need to notify prices / availability are changing to nodes
• 1st level: Local cache on each node
• 2nd level: Central cache
_Large burst and throughput: up to 20K notifications / s
17
©AmadeusITGroupanditsaffiliatesandsubsidiaries
Notification at scale
Large scale usage for Amadeus Shopping
Central Cache
Shopping PlatformNotify changes to nodes
Fetch data
1
2
_ Kafka for invalidations
• Very small message (200 bytes): allow very good scalability and containing cluster size
• JSON format
• Deployed with ansible: next step is Openshift, typically with an operator
• Stream analysis on node and decision to fetch data from central cache
_ Couchbase cluster for central cache
• Dissociate notification from content
• Couchbase to Kafka to manage changes
• # fetch < # notifications: nodes decide to fetch or not
18
©AmadeusITGroupanditsaffiliatesandsubsidiaries
Notification at scale
Kafka to support fast & reliable notification
Central Cache
Notify changes to nodes
Fetch data
1
2
Region 2Region 1
_Couchbase as data bus
• Leverage XDCR capability
_Kafka as the change notification solution
• Large interest in Openshift integration to allow spawning new Kafka clusters on the spot
©AmadeusITGroupanditsaffiliatesandsubsidiaries
Notification at scale
Multidata center
XDCR
Thank you!
©AmadeusITGroupanditsaffiliatesandsubsidiaries
You can follow us on:
AmadeusITgroup
amadeus.com
amadeus.com/blog

More Related Content

PDF
Red Hat OpenShift Container Platform Overview
PDF
RedisConf 2017 Redis as Java Servlet Session Store
PDF
Time to Make the Move to In-Memory Data Grids
PPTX
Scaling DataStax in Docker
PDF
Build Robust Blockchain Services with Hyperledger and Containers
PDF
RHTE2015_CloudForms_Containers
PPTX
NGINX as a Content Cache
PDF
OpenStack in Action 4! Franz Meyer - What Use Case does Red Hat Enterprise ...
Red Hat OpenShift Container Platform Overview
RedisConf 2017 Redis as Java Servlet Session Store
Time to Make the Move to In-Memory Data Grids
Scaling DataStax in Docker
Build Robust Blockchain Services with Hyperledger and Containers
RHTE2015_CloudForms_Containers
NGINX as a Content Cache
OpenStack in Action 4! Franz Meyer - What Use Case does Red Hat Enterprise ...

What's hot (20)

PDF
Architectural patterns for caching microservices
PDF
How to create a useful my sql bug report fosdem 2019
PDF
A complete Open Source cloud: Storage, Virt, IaaS, PaaS
PPTX
The New MariaDB Offering: MariaDB 10, MaxScale and More
PDF
Introduction to MANTL Data Platform
PDF
Novinky v Oracle Database 18c
PPTX
Dynamic SSL Certificates and Other New Features in NGINX Plus R18 and NGINX O...
PDF
Where is my cache? Architectural patterns for caching microservices by example
PPTX
NGINX Plus R18: What's new
PDF
Where is my cache architectural patterns for caching microservices by example
PDF
Apache Geode Meetup, London
PDF
Paul Angus - what's new in ACS 4.11
PDF
From Code to Customer with F5 and NGNX London Nov 19
PDF
NGINX Plus R19 : EMEA
PPTX
Adam Dagnall: Advanced S3 compatible storage integration in CloudStack
PPTX
ThunderX ARMV8 Servers: Disruption and Innovation in the Server Market
PDF
Giles Sirett - welcome and CloudStack news
PDF
MySQL Aquarium Paris
PDF
John Spray - Ceph in Kubernetes
PDF
Flowchain: A case study on building a Blockchain for the IoT
Architectural patterns for caching microservices
How to create a useful my sql bug report fosdem 2019
A complete Open Source cloud: Storage, Virt, IaaS, PaaS
The New MariaDB Offering: MariaDB 10, MaxScale and More
Introduction to MANTL Data Platform
Novinky v Oracle Database 18c
Dynamic SSL Certificates and Other New Features in NGINX Plus R18 and NGINX O...
Where is my cache? Architectural patterns for caching microservices by example
NGINX Plus R18: What's new
Where is my cache architectural patterns for caching microservices by example
Apache Geode Meetup, London
Paul Angus - what's new in ACS 4.11
From Code to Customer with F5 and NGNX London Nov 19
NGINX Plus R19 : EMEA
Adam Dagnall: Advanced S3 compatible storage integration in CloudStack
ThunderX ARMV8 Servers: Disruption and Innovation in the Server Market
Giles Sirett - welcome and CloudStack news
MySQL Aquarium Paris
John Spray - Ceph in Kubernetes
Flowchain: A case study on building a Blockchain for the IoT
Ad

Similar to Building Data Streaming Platforms using OpenShift and Kafka (20)

PDF
Deploying Kafka Streams Applications with Docker and Kubernetes
PPTX
Netflix Data Pipeline With Kafka
PPTX
Netflix Data Pipeline With Kafka
PDF
Deploying Kafka Streams Applications with Docker and Kubernetes
PDF
Netflix Keystone Pipeline at Big Data Bootcamp, Santa Clara, Nov 2015
PDF
The Netflix Way to deal with Big Data Problems
PDF
Introduction to apache kafka
PDF
Streaming Analytics with Spark, Kafka, Cassandra and Akka by Helena Edelson
PDF
Kafka internals
PPTX
Building Event-Driven Systems with Apache Kafka
PPTX
Streaming in Practice - Putting Apache Kafka in Production
PPTX
Building big data pipelines with Kafka and Kubernetes
PDF
Troubleshooting as Your Kafka Clusters Grow (Krunal Vora, Tinder) Kafka Summi...
PPTX
Using Apache Cassandra and Apache Kafka to Scale Next Gen Applications
PPTX
Discover Kafka on OpenShift: Processing Real-Time Financial Events at Scale (...
PDF
Hadoop made fast - Why Virtual Reality Needed Stream Processing to Survive
PDF
Streaming Analytics with Spark, Kafka, Cassandra and Akka
PDF
Kafka syed academy_v1_introduction
PPTX
DataEngConf: Apache Kafka at Rocana: a scalable, distributed log for machine ...
PDF
Event Driven Architecture with Quarkus,Kafka, Kubernetes
Deploying Kafka Streams Applications with Docker and Kubernetes
Netflix Data Pipeline With Kafka
Netflix Data Pipeline With Kafka
Deploying Kafka Streams Applications with Docker and Kubernetes
Netflix Keystone Pipeline at Big Data Bootcamp, Santa Clara, Nov 2015
The Netflix Way to deal with Big Data Problems
Introduction to apache kafka
Streaming Analytics with Spark, Kafka, Cassandra and Akka by Helena Edelson
Kafka internals
Building Event-Driven Systems with Apache Kafka
Streaming in Practice - Putting Apache Kafka in Production
Building big data pipelines with Kafka and Kubernetes
Troubleshooting as Your Kafka Clusters Grow (Krunal Vora, Tinder) Kafka Summi...
Using Apache Cassandra and Apache Kafka to Scale Next Gen Applications
Discover Kafka on OpenShift: Processing Real-Time Financial Events at Scale (...
Hadoop made fast - Why Virtual Reality Needed Stream Processing to Survive
Streaming Analytics with Spark, Kafka, Cassandra and Akka
Kafka syed academy_v1_introduction
DataEngConf: Apache Kafka at Rocana: a scalable, distributed log for machine ...
Event Driven Architecture with Quarkus,Kafka, Kubernetes
Ad

Recently uploaded (20)

PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Empathic Computing: Creating Shared Understanding
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Encapsulation theory and applications.pdf
PDF
Electronic commerce courselecture one. Pdf
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
cuic standard and advanced reporting.pdf
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PPT
Teaching material agriculture food technology
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Machine learning based COVID-19 study performance prediction
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Empathic Computing: Creating Shared Understanding
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Encapsulation theory and applications.pdf
Electronic commerce courselecture one. Pdf
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Per capita expenditure prediction using model stacking based on satellite ima...
MIND Revenue Release Quarter 2 2025 Press Release
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Spectral efficient network and resource selection model in 5G networks
cuic standard and advanced reporting.pdf
Understanding_Digital_Forensics_Presentation.pptx
Teaching material agriculture food technology
Dropbox Q2 2025 Financial Results & Investor Presentation
Chapter 3 Spatial Domain Image Processing.pdf
Advanced methodologies resolving dimensionality complications for autism neur...
Machine learning based COVID-19 study performance prediction

Building Data Streaming Platforms using OpenShift and Kafka

  • 1. Building Data Streaming Platforms Using OpenShift and Kafka Openshift @ Amadeus Pierre Dor Senior Architect Nenad Bogojević Senior Expert Olivier Richaud Senior Manager ©AmadeusITGroupanditsaffiliatesandsubsidiaries
  • 3. 3 ©AmadeusITGroupanditsaffiliatesandsubsidiaries Using Append-Only Streams of Immutable Events When you have an event stream, you can do many great things with it Transform and load into data stores This is a very powerful way of building complex applications cleanly Sequence of persistent immutable events Process it to create a new output stream
  • 4. 4 ©AmadeusITGroupanditsaffiliatesandsubsidiaries Tools Apache Kafka To process events, either • use Kafka’s client libraries directly or • use one or several Stream Processor application framework like: - Kafka Streams - Flink - Samza - Storm - Spark Streaming
  • 5. _Loose coupling & Resilience _Scalability _Flexibility & Agility _Auditability/error recovery 5 ©AmadeusITGroupanditsaffiliatesandsubsidiaries What are the main benefits?
  • 6. Business Data Ingestion Parse 6 ©AmadeusITGroupanditsaffiliatesandsubsidiaries Lambda Architecture Template Archive (cold) Archiver Transform Event Detection Rules ODS (hot) Raw data Store Business process Actions Big Data Real Time Analytics Hadoop Store MapR-FS (warm) Offline Analytics Online Delivery Data push Offline Delivery Data batch Append Append Update Business process Data driven projects are based on very similar architecture. Load ODS REST API
  • 7. Business Data Ingestion Parse 7 ©AmadeusITGroupanditsaffiliatesandsubsidiaries Data Driven Architecture Archive (cold) Archiver Transform Event Detection Rules ODS (hot) Raw data Store Business process Actions Big Data Real Time Analytics Hadoop Store MapR-FS (warm) Offline Analytics Online Delivery Data push Offline Delivery Data batch Append Append Update Business process Computed insights are driving business layer behavior Load ODS REST API
  • 8. Business Data Ingestion Parse 8 ©AmadeusITGroupanditsaffiliatesandsubsidiaries Data Driven Architecture Machine Learning / Artificial Intelligence Archive (cold) Archiver Transform Event Detection ML Decision Tree ODS (hot) Raw data Store Business process Actions Big Data Real Time Analytics Hadoop Store MapR-FS (warm) Offline Analytics Online Delivery Data push Offline Delivery Data batch Append Append Update Business process Computed ML Models can be deployed to business layerLoad ODS REST API
  • 9. Kafka (& more) @ OpenShift ©AmadeusITGroupanditsaffiliatesandsubsidiaries 2. ©AmadeusITGroupanditsaffiliatesandsubsidiaries
  • 10. _Kafka cluster • Each broker has identity – need to find each other • Brokers need persistence to store partition logs _Zookeeper cluster • Another cluster with persistence _Thanks to StatefulSet 10 ©AmadeusITGroupanditsaffiliatesandsubsidiaries Kafka in OpenShift broker-178523330-61d6n
  • 11. _Provide stable pod identity _Provide stable storage _Ordered startup, shutdown _Rolling updates 11 ©AmadeusITGroupanditsaffiliatesandsubsidiaries Stateful Sets and Kafka kafka-0 kafka-1 kafka-2 zoo-0 zoo-1 zoo-2 kafka zookeeper broker zooHeadless service Discovery service clients use this to discover these
  • 12. _Node Affinity & Anti-affinity • e.g. good storage, not on same machine _Persistence • Common wisdom: Use persistent volume, otherwise you’ll lose Kafka logs • Relying on Kafka replication • Use empty volume • if container crashes, you keep the logs • if node crashes, rely on replication • Soon: local persistent volume _Monitoring: Prometheus & JMX 12 ©AmadeusITGroupanditsaffiliatesandsubsidiaries Tuning
  • 13. _Many microservices -> many kafka topics _Operating topics means • Make sure that topic exists in target environments • Make sure that topic is deleted once it is no longer used • Propagate same configuration across environments • Configure retention based on available disk space • Configure clients with credentials • Deliver configuration and requirements as code 13 ©AmadeusITGroupanditsaffiliatesandsubsidiaries What about topics?
  • 14. _ConfigMap describing • Name • Partition count • Replication factor • Topic properties _Equivalent to provision/unprovision of ServiceCatalog _Can work for credentials too 14 ©AmadeusITGroupanditsaffiliatesandsubsidiaries Managing topics Kafka-operator apiVersion: v1 kind: ConfigMap metadata: name: sample-topic labels: config: kafka-topic data: partitions: "20" replication-factor: "2" properties: | retention.ms=1000000
  • 15. _A tool to develop, design – visually or yaml _An operator to deploy, visualize and monitoring • OpenShift console links (and authorization) • Prometheus for monitoring each service • OpenTracing for following messages across microservices – streaming & HTTP 15 ©AmadeusITGroupanditsaffiliatesandsubsidiaries Topology Management
  • 17. _Large scale platform with thousands of nodes _Need to notify prices / availability are changing to nodes • 1st level: Local cache on each node • 2nd level: Central cache _Large burst and throughput: up to 20K notifications / s 17 ©AmadeusITGroupanditsaffiliatesandsubsidiaries Notification at scale Large scale usage for Amadeus Shopping Central Cache Shopping PlatformNotify changes to nodes Fetch data 1 2
  • 18. _ Kafka for invalidations • Very small message (200 bytes): allow very good scalability and containing cluster size • JSON format • Deployed with ansible: next step is Openshift, typically with an operator • Stream analysis on node and decision to fetch data from central cache _ Couchbase cluster for central cache • Dissociate notification from content • Couchbase to Kafka to manage changes • # fetch < # notifications: nodes decide to fetch or not 18 ©AmadeusITGroupanditsaffiliatesandsubsidiaries Notification at scale Kafka to support fast & reliable notification Central Cache Notify changes to nodes Fetch data 1 2
  • 19. Region 2Region 1 _Couchbase as data bus • Leverage XDCR capability _Kafka as the change notification solution • Large interest in Openshift integration to allow spawning new Kafka clusters on the spot ©AmadeusITGroupanditsaffiliatesandsubsidiaries Notification at scale Multidata center XDCR
  • 20. Thank you! ©AmadeusITGroupanditsaffiliatesandsubsidiaries You can follow us on: AmadeusITgroup amadeus.com amadeus.com/blog

Editor's Notes

  • #2: Cover example with no photos Please insert the other company’s logo in the same size as the Amadeus logo, with no background and reverse out colour
  • #3: Divider example with no photo You can change the colour to Amadeus blue, Light Blue and Pale Blue To update the text, just click on the text To get more slides with this layout just copy this slide and paste
  • #4: It is based on event streams, similar to RDBMS redo logs: Log is persistent – the events are kept even when consumed, ready to be replayed. The events are strongly sequenced by construction so that we have the absolute guarantee that they are consumed in the right order. The events are immutable meaning that they can be replayed any number of times we’ll get the same result (so a counter increment operation will never fire a “+1” event but rather the result of the operation, e.g. “4”, so that whatever the number of times you’ll replay the event you’ll always get “4”). If instead of writing directly to several data stores (as we are doing right now in Amadeus) the applications are logging their data changes as event in an event log we can do a lot of great things: We can synchronize in an eventually consistent manner several data stores, each with its own required data representation (while consistency is very hard to achieve directly from the application). We can migrate easily from one data store technology (e.g. memcached) to another (e.g. Couchbase) by just plugging in a new log subscriber. Once the new store is populated (by just waiting or replaying old events just to this store), we can decommission the old one. Cherry on the cake, we can write a business logic that will interpret those events and produce a new output stream as a result. By chaining several data processors like that we can build a streaming graph as exposed previously.
  • #5: It is based on event streams, similar to RDBMS redo logs: Log is persistent – the events are kept even when consumed, ready to be replayed. The events are strongly sequenced by construction so that we have the absolute guarantee that they are consumed in the right order. The events are immutable meaning that they can be replayed any number of times we’ll get the same result (so a counter increment operation will never fire a “+1” event but rather the result of the operation, e.g. “4”, so that whatever the number of times you’ll replay the event you’ll always get “4”). If instead of writing directly to several data stores (as we are doing right now in Amadeus) the applications are logging their data changes as event in an event log we can do a lot of great things: We can synchronize in an eventually consistent manner several data stores, each with its own required data representation (while consistency is very hard to achieve directly from the application). We can migrate easily from one data store technology (e.g. memcached) to another (e.g. Couchbase) by just plugging in a new log subscriber. Once the new store is populated (by just waiting or replaying old events just to this store), we can decommission the old one. Cherry on the cake, we can write a business logic that will interpret those events and produce a new output stream as a result. By chaining several data processors like that we can build a streaming graph as exposed previously.
  • #6: Loose coupling – straightforward Read & write performance: with a unique RDBMS we design our data model always with a trade off between read and write performances. As here the write is asynchronous, write cost is not on application side and each store can have a data model well adapted to the need (read or write performant). High scalability with parallelization and massive distribution of the load via micro-services spread in any number of nodes. Flexibility to improve the application by just plugging in new micro-services without impacting the existing code base. Easy to migrate from old to new micro-service or data stores (both can run in parallel). High auditability as each event is persistent, and high recovery as they can easily be replayed in case of error.
  • #10: Divider example with no photo You can change the colour to Amadeus blue, Light Blue and Pale Blue To update the text, just click on the text To get more slides with this layout just copy this slide and paste
  • #17: Divider example with no photo You can change the colour to Amadeus blue, Light Blue and Pale Blue To update the text, just click on the text To get more slides with this layout just copy this slide and paste
  • #21: Backcover option 2