Running stateful services is difficult, upgrading under those services is even more difficult. The presentation explores some approaches to move forward while hosting stateful services
7. Downstream
systems
• Specialised
management
systems
• Reporting Systems
• Product
management
Channel &
product
systems
Master Data
Management
Hadoop
• Leverage all data & reduce
integration costs
• Comprehensive dataset –
internal & external, realtime &
batch, structured & unstructured
• Advanced analytics / machine
learning
Group Data
Warehouse
• Understand our business
• Accurate, conformed, and
reconciled data
• Access layer to support BI &
reporting
BI/Reporting
• User facing tools
• Regulatory reporting
• Dishoarding
• Self service BI for the
masses
Customer record &
insights
All data
Price,
conversation,
credit dec.
etc.
Financial Data
Subset of
data
User
access
Information for
people
Core Financial
Systems and
functions
• P&L
• Recon
• General Ledger
• Etc…
Closed loop,
automated ‘decisions’
Decisioning
• Personalise/optimise decisions,
maximise customer value
• E.g. price, credit decision, next
conversation, experience
Core information repositories
Analytics applications
Other systems
8. Channels
Hadoop
Rules
Serving and decisioning
Analytic
Records
Systems Of Record
Core
Banking
Payments
Event Processor
Raw Data
Derived Data
Feature Store
Event Store
Scoring
Machine
Learning
www
Event Streams
Customer
Information
data loaded
Data
analysed &
processed
Insights &
events
captured
Integration API/Service Discovery
61. for node in nodes:
if info[node]['instance']:
if Status(node).run().wait() == AVAILBLE_FOR_MAINTENANCE:
MaintenanceMode(node).run().wait()
Upgrade(node).run().wait()
Health = HealthTests(node).run.wait()
UpdateStatus(node, health).run.wait()
62. all_good = True
host = self.cdh.get_host(self.host_map[self.node_name])
if host.healthSummary != 'GOOD':
all_good = False
# Look up the host by its roles
for c in self.cdh.get_all_clusters():
for s in c.get_all_services():
for r in s.get_all_roles():
h = r.hostRef
if h.hostId == self.host_map[self.node_name]:
if r.healthSummary != 'GOOD':
all_good = False
return all_good