ci/cd on windows-based environments - noam shochat, etoro - devopsdays tel aviv 2015

Post on 22-Jan-2018

373 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

CI/CD on Windows-based Environments

Your Social Investment Network

eToro©2015 Presentation materials are confidential and should not be copied, distributed or

passed on, directly or indirectly, to any other person.

Noam Shochat, Sr. DevOps Engineer | noamsh@etoro.com

● The world’s largest social investment network

● Founded in 2007, raised $60M

● >200 employees (~half in Engineering)

● Offices in IL, UK, CY, RU and expending

Some Basic Facts...

eToro©2015 Presentation materials are confidential and should not be copied, distributed or passed on, directly or

indirectly, to any other person.

5M registered users. 140 Countries. 150M Trades.

9 different Apps!

eToro’s Legacy Technology

● HTML/ASP, Flash, iOS & Android clients

● 2 Geo-distributed data centers

● >130 Services

● > 500 Servers

● Hybrid MS tech stack & Open Source Server technologies

(Redis, RabbitMQ, HAProxy, etc…)

● SQL Server 2014 EE

eToro©2015 Presentation materials are confidential and should not be copied, distributed or passed on, directly or

indirectly, to any other person.

CI / CD ingredient

CI / CD

Code commit

Deploy and tests in QA

Production Build, Unit tests

Different OS’s

5 different

environments

Different development

languages

Manage all with Jenkins

CI / CD Pipeline

Check-In

GitHub

Mercurial

Build

MSBuild

Unit tests

NUnit

Integratio

n tests

UI Testing

Prod

Deployment

Managed by Jenkins

QA

Deployment

Jenkins Cross Platform Orchestration

Jenkins master

Build your flow with Jenkins

● Build Flow plugin

● WorkFlow plugin

Inside Jenkins Job

Script languages:

● Batch

● Powershell

● Shell

● Ruby

Auditing and reporting

● Graphite

● Splunk

● Slack

Provisioning servers and Deploy with Puppet

Things we’re doing with puppet

define general::web_service(

$artifact_source,

$config_file_name='web.config',

$configerb_path,

$erb_config_file_name='web.config.erb',

$deploy_destination,

$zipfile_mount_name,

$port=80,

$enableanonymousauthentication=false,

$template_config={}

)

{

include general::7zip

include general::remotesign

include general::basicfoldersinstall

addwebsite {"${name}":

port => $port,

require => Class['enableiis']

}

addwebsite::enablewindowsauthentication{"${name}":

site_name => $name,

require => [Class['enableiis'],Addwebsite["${name}"]],

}

addwebsite::enableanonymousauthentication{"${name}":

site_name => $name,

enable => $enableanonymousauthentication,

require => [Class['enableiis'],Addwebsite["${name}"]],

}

● Enable features

● Install 3rd party apps

● Creating folders

● Installing / Configure win

services

● Installing / Configure

websites (IIS)

Orchestration with mcollective

Mcollective architecture

Mcollective

Client

RabbitMQServer

Servers

Trigger Mcollective

Tools for Key Value store

Hiera

● Developed by Puppet labs, there for fully integrated with

puppet

● Key value store

● Configuration file per environment on the same puppet

master

ETCD

acl to the office acl to the office

Azure North Europe

server 1 server 2

APP1

DLL

APP2

DLL

APP3

DLL

CCM 2

UI -

Admin

server 3 server 4

CCM 4

Azure West Europe

ILB LBS ILB LBS

CCM 3CCM 1

CI / CD on Azure

Cloud

PAAS in Azure

● Cloud service

● Slots

● Uploading Packages

● Integration with github

(Git Hook)

IAAS on Azure

● Jenkins agent

● Puppet master

● Mcollective client

● Mcollective server and puppet agent on all servers.

Summaries

● Jenkins - Main CI / CD tool

● Puppet - Provisioning and deployment

● Mcollective - Orchestrate

● PowerShell Azure SDK - For deploying Web/worker

roles

● This is all just tools - DevOps is a lot more

Wish List

● Automate the creation of new Jobs and Flows in

Jenkins.

● More self service

Noam Shochat, Sr. DevOps Engineer | noamsh@etoro.com

top related