DEPLOYMENT
-
Upload
rowan-mcmillan -
Category
Documents
-
view
13 -
download
0
description
Transcript of DEPLOYMENT
SDL Proprietary and ConfidentialSDL Proprietary and Confidential
DEPLOYMENT
Fredhopper Cloud Infrastructure
2
1. Problem
2. Approach
3. “Demo”
Outline
3
• Multiple products, in different versions
• Custom on-premise deployments
• Many manual steps for routine operations work
• Diverse environments
– Hardware differences
– Operating Systems and versions
– Java VM versions
The Problem
4
Managing stateDeployment
Agent• One agent per machine, running as service/daemon• Abstraction from operating system and hardware• Provides access to resources on machine via REST interface
• Clients for command line and Fredhopper Data Manager
Managing changeController
• One controller per separate environment• Abstraction from network topology• Provides access to resources in network via REST interface
• Dashboard as client• Configuration describes “should”
Approach
5
• Installation: The ”bits”, factory for instances
• Instances: Keeps configuration and index, provides processes
• Processes: Daemons/Services/Tools in the context of an instance
• Verbs: Primitives for invoking processes
Deployment Agent - Concepts
6
• Service: a particular deployment model
– Specific to the product
• Service Instance: a particular instance of the service, owned by a customer
• Triggers: requests from a user for a change
– Available triggers depend on service instance
Controller - Concepts
7
<service-plans>
<load-balancer
name="rightscale"
factory="com.fredhopper.controller.rightscale.RightScaleLoadBalancerClientFactory">
...
</load-balancer>
<installation-directory
name="default"
directory="/data/distributions"
allow-upload="true"/>
<service-plan customer="internal">
<service-instance
name="dm:dm"
installation=“fredhopper-data-manager-1.0.4“
load-balancer="none"
factory="com.fredhopper.controller.kitchen.distributed.DataManagerServiceInstanceFactory"/>
</service-plan>
..
</service-plans>
Controller Configuration (1)
8
<service-plan customer="demo">
<service-instance
name="fas:live1"
installation="fas-assembly-7.2.0"
load-balancer="rightscale“
factory="com.fredhopper.controller.fas.MasterSlaveServiceInstanceFactory">
<property name=“control.dataManagerServiceInstance">dm:dm</property>
<property name="ms.masterHasLive">true</property>
</service-instance>
<service-instance
name="suggest:live1"
installation="suggest-distribution-2.0"
load-balancer="rightscale"
factory="com.fredhopper.controller.suggest.SuggestServiceInstanceFactory">
<property name=“suggest.fasServiceInstance">fas:live1</property>
</service-instance>
</service-plan>
Controller Configuration (2)
9
Demo
Copyright © 2008-2012 SDL plc. All rights reserved.. All company names, brand names, trademarks, service marks,
images and logos are the property of their respective owners.
This presentation and its content are SDL confidential unless otherwise specified, and may not be copied, used or
distributed except as authorised by SDL.
11
• Identification of core concepts is key
– Removing concepts is hard
– Avoid complexity
• Versioning and Fail-Fast Behaviors
– Detect problems, and report them immediately and clearly
• System Identification and “Support for Support”
– If something in the higher layers breaks the agent is the last resort for gathering valuable information
– Auditing/Logging
• Infrastructure components are hard to upgrade
– Cannot get enough testing in synthetic and production scenarios
– Stable API to ensure compatibility with future versions
– Plugins and alternative implementations of core components
• UI is important
– People want to see that everything is good, ‘no news is good news’ does not work
• Complexity in high-level language, not in scripts
– Well-known language and environment
– Easily testable
– Adaptable for new products: installations deliver the glue code, coded against available API
Deployment Agent - Results & Learnings
12
• Also infrastructure glue, Deployment Agent results apply
– Concepts, Integration, Extensibility, Testing
– Testing is hard: cannot duplicate production environment easily
• Software updates are common
– New services
– Improved deployment models
• Must provide real benefit for adoption
– Upgrades of service software
– Scaling models to reduce costs
• Centralized model enables access to the big picture
– Support/Operations can solve routine tasks quickly
– I/O scaling is needed, CPU is irrelevant: partitioning seems inevitable
Controller - Results
13
Customer A
Service Instance fas:live1
EC2 Instance 1
DA Instance indexer
DA Instance live
EC2 Instance 2
DA Instance live
... EC2 Instance n
DA Instance live
Service Instance suggest:live1
EC2 Instance n+1
DA Instance suggest
... EC2 Instance m
DA Instance suggest
Customer B
Service Instance
service:other
Customer internal
Service instance dm:dm
EC2 instance(s)
DA instance customerA-fas:live1-reindex
...
Controller - Structure
14
Trigger•Upload Data•Create trigger
Input Validation•Required parameters
•MD5 checks
ETL•create DM instance in pool
•run kitchen•wait for status callback and poll for process exit
Output Validation•status•files produced FAS Reindex
Trigger Execution Example: FAS Full Data Load
Situation – On-Premise
15
Custom Scripts
Load-Balancing
FAS
Monitoring
Frontend
Sh
op
pe
rs
Integrators
Integrators
Business Users
SysAdmins Hardware
Inte
gra
tors
Situation – Cloud Environment
16
FH Operations
Deployment Agent
Load-Balancing
Fredhopper
Monit
oringFrontend
Sh
op
pe
rs
Hardware
Inte
gra
tors
Monitoring
FH Operations
Con
trol
ler
Ser
vic
e A
PI
Inte
grat
ors
Business U
sers