How To Plan A Successful Multi-Site Deployment In Mura CMS

Preview:

DESCRIPTION

Originally presented by Max Appiah-Kubi at MuraCon EU 2014 in Edinburgh, Scotland.

Citation preview

How to plan a successful multi-site deployment in Mura CMS By Max Appiah-Kubi

Who am I ?

Presentation Overview

Presentation Overview

• Planning

Presentation Overview

• Planning

• Developing the solution

Presentation Overview

• Planning

• Developing the solution

• Deployment

Presentation Overview

• Planning

• Developing the solution

• Deployment

• Monitoring

Presentation Overview

• Planning

• Developing the solution

• Deployment

• Monitoring

• Maintenance and enhancements

Before We Get Started

Before We Get Started

How do you define a successful deployment?

Before We Get Started

Planning

Why do we need to plan?

Planning

Start from project inception

Planning

Weighing the cost of not planning

Planning

Weighing the cost of not planning

Planning

Client / Organisation needs • Stakeholder participation • Requirements • Assessment

Planning

The team (Who to include?) • Project Manager • Developers • Ops • QA • Support

Planning

Infrastructure (Hardware) • Servers

• Load balancers

• Routers

• SAN

Planning

Infrastructure (Software) • Mura

• Application server

• OS

• Database

Planning

Fault Tolerance • Performance and High-Availability

• Redundancy

Planning

Capacity Planning

Planning

Environments •Development • Staging / Test •Production

Planning

Source Control Management

Planning

Security

Planning

Rollback, Backup and Recovery

Planning

Prototype the deployment

Planning

Timelines

Developing the solution

Developing the solution

Example Architecture

Developing the solution

Setting up the infrastructure

Developing the solution

Setting up software stack • Operating system (Windows and Linux) • IIS or Apache • Railo or ColdFusion • Tomcat • Mura

Developing the solution

Configuration management

•Chef

•Puppet

Developing the solution

Mura (Multi instance or Single instance?)

Developing the solution

Target domains • Development • Staging • QA • Production

Developing the solution

Securing the setup

Developing a solution

Deployment pre-preparation

Deployment

Deployment

What is deployment? … and the most important things about it

Deployment

What is deployment? … and the most important things about it

“Software deployment is all of the activities that make a software system available for use”

Deployment

Basics of deployment …things we typically have to do to get a system up and running

Deployment

• Synchronise source code • Configure web server • Configure site options • Set environment-specific configuration (file paths, database

details, hostnames, SSL on/off, e-mail addresses, debugging etc.)

• Set up database server • Deploy database • Set up scheduled jobs • Configure DNS

Deployment

How to perform a deployment …different approaches and their advantages and disadvantages

Deployment

Manual

Deployment

Manual • Cons

• They are slow • Time consuming

• They aren’t consistent across environments

• Likely to fail in production

• No audit trail, you don’t who deployed what, where or when

Deployment

Manual • Pros

• Have more control • Have always done it

• Easy to do eg using FTP

• Scripts

Deployment

Automatic

Deployment

Automatic • Pros

• Faster • Less error prone

• Improves consistency

• Requires tools

• Eliminates communication problems

• If you set it up right it will run clockwork

Deployment

Modern deployment

Deployment

High level view of a deployment process

Deployment

Delivery pipeline • Continuous integration tooling

Deployment

Continuous integration tooling •VCS integration

Deployment

Continuous integration tooling •CI server - Jenkins

Deployment

CI Server - Jenkins (screenshot)

Monitoring

Monitoring

• FusionReactor • Visual VM • New Relic (Rackspace) • Nagios

Maintenance and enhancements

Maintenance and enhancements

• Sustainability

Maintenance and enhancements

• Sustainability

• Post launch support

Questions