Using Service Oriented Operation and Provisioning at Financial Times
1. Using Service Oriented Operation and
Provisioning at Financial Times
Emeka Mosanya
emeka@mosanya.net
@EmekaMosanya
2. In case you didn't know...
“The Financial Times (FT) is one of the world’s
leading business news and information organisations,
recognised internationally for its authority, integrity
and accuracy."
… it is also one of the few newspapers making
money with online subscription!
3. Our goal: Reduce Cycle Time
Up to 6 weeks for a release
Business
Customers
Idea
We need to make this shorter!
We want to release several time
a day without stress...
4. Problem: Long Feedback Loop
Workstation CI QA INT STAGING PROD
$
$$$
●No environment like PROD
●Manual Configuration
●Not enough environments
Each deployment to PROD is an adventure...
5. Problem: Organizational Frictions
Release Management
Network
Create Machine
●Dilution of Responsibility Too Many
●Misalignment of Priority
Gates!
6. Our Vision
Release
Network
Create VM
Replace gates
Locally / VMWare / AWS / ... with automation
7. Deploy Services into Domains
membership.test.cloud.ft.com
controller-service-1.0.0
access-service-2.3.5
gateway-service-1.2.3
Service Definition = Puppet Domain
Modules and More
8. Service Definition = Puppet Modules
access-service-2.3.5
RPM
access
httpd nagios
Nodes Config
tomcat splunk
Application
Versioned Module library
Each service exists in its own Puppet environment
Everything you need to install a service is encapsulated in a
single versioned artifact excepted global configuration.
9. Puppet Master is part of a Service
membership.test.cloud.ft.com
controller-service-1.0.0 Puppet
DNS1 Nagios
Master
DNS2
●One Puppet Mater per Domain
●Contains “Mandatory” servers
No Sacred Cow!
… but we need a bootstrap
10. Bootstrap
We start with vanilla VM including a Base RPM
ftppm101-lvpr-uk-t ftcloud init standalone
controller-puppet.membership.test.cloud.ft.com
controller-service-1.0.0
access-service-2.3.5
Base RPM
gateway-1.2.3
ftaps104-lvpr-uk-t
ftcloud init client
access-app.membership.test.cloud.ft.com
ftppm101-lvpr-uk-t
Base RPM
From vanilla VM to a running environment in a
few shell commands...
11. Thin Integration with Infrastructure
controller-service-1.0.0
Automatic
during build
Vagrantfile
access-service-2.3.5
OVF
gateway-service-1.2.3 AWS Cloud
Formation
15. We don't use ENC
Service Definitions should contain everything we
need to deploy a service... so node definition
cannot be external!
ftaps123-lvpr-uk-p
ENC Meaningful name in DNS
●class A access-app-01
●class B
Node files defined at service level
16. Configuration with Hiera
Slight customization of the YAML backend to
use multiple configuration directories.
Facters:
Certname
Domain
Datacenter
Country
Environment (Dev, Test, Prod)
Domain Level
Service Level
Global Config
17. Global Configuration Install
membership.test.cloud.ft.com
global-config-1.3.4
RPM Puppet
Master
Global Config: Company Wide
Service Config: per service
Local Config: for override
Domain
18. That's all Folks
● Reducing bottlenecks:
● Everything is a service
● Team fully control service deployment
● No sacred cow: Puppet Master is a service
● Reducing Risk
● Everything is versioned
● Automatic deployment is the same everywhere
● Responsibilities well defined
19. FT is recruiting
The Team @FTcareers
"Jussi Heinonen" <jussi.heinonen@ft.com>
"Peter Hehn" <peter.hehn@ft.com>
"Pete Houghton" <pete.houghton@ft.com>
"Chris Malins" <chris.malins@ft.com>
"Nick Haddock" <nick.haddock@ft.com>
"Ashley de Souza" <ashley.de.souza@ft.com>
"David Reay" <David.Reay@ft.com>
"Richard Moran" <richard.moran@ft.com>
"Santanu Das" <santanu.das@ft.com>
"Barry Ridout" <barry.ridout@ft.com>
"Sujith Santhan" <sujith.santhan@ft.com>