continuous deployment with singularity · continuous deployment with singularity ... big data...

35
CONTINUOUS DEPLOYMENT WITH SINGULARITY Large Scale Mission-Critical Service and Job Deployment Gregory Chomatas @gchomatas

Upload: trinhmien

Post on 31-Aug-2018

236 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CONTINUOUS DEPLOYMENT WITH SINGULARITY · CONTINUOUS DEPLOYMENT WITH SINGULARITY ... Big Data Analysis tasks

CONTINUOUSDEPLOYMENTWITHSINGULARITY

LargeScaleMission-CriticalServiceandJobDeployment

GregoryChomatas@gchomatas

Page 2: CONTINUOUS DEPLOYMENT WITH SINGULARITY · CONTINUOUS DEPLOYMENT WITH SINGULARITY ... Big Data Analysis tasks

PAASTEAMImplement&maintain:

thedeploy&buildtools

thePAASplatform(mesosclusters)

loadbalancertools

logginginfrastructure

Boston:WhitneySorenson,TomPetr,TimFinley

Dublin:GregoryChomatas,KieranManning

Page 3: CONTINUOUS DEPLOYMENT WITH SINGULARITY · CONTINUOUS DEPLOYMENT WITH SINGULARITY ... Big Data Analysis tasks

ANESSENTIALSINGULARITYEXP(1/Z)

Page 4: CONTINUOUS DEPLOYMENT WITH SINGULARITY · CONTINUOUS DEPLOYMENT WITH SINGULARITY ... Big Data Analysis tasks

HUBSPOTSINGULARITY

Page 5: CONTINUOUS DEPLOYMENT WITH SINGULARITY · CONTINUOUS DEPLOYMENT WITH SINGULARITY ... Big Data Analysis tasks

THEWAYTOMESOSSpeedwins->SpeedProductDevelopment

Increasechangerate->RemoveFriction+Reducesize,cost,riskofchange:

smallteams,hightrust,lowprocessfreedomandresponsibilityculture

microserviceslibs&crosscuttingAPIstosimplifycoding

automatedeploymentbytooling

Page 6: CONTINUOUS DEPLOYMENT WITH SINGULARITY · CONTINUOUS DEPLOYMENT WITH SINGULARITY ... Big Data Analysis tasks

SOMEFACTS&NUMBERS3-4personteams

severalmicro-services&jobsperteam(fulloperation)1ormoreservicesperdev

AllQAinMESOS/PartofPRODwithplantomoveall

400deploys/day-843DeployableItems:(longrunningwithanAPI)

(longrunningnoAPI)(CRONschedule)

Page 7: CONTINUOUS DEPLOYMENT WITH SINGULARITY · CONTINUOUS DEPLOYMENT WITH SINGULARITY ... Big Data Analysis tasks

SOMEFACTS&NUMBERSQAEnvironment

pre-mesos:400small&mediumsizeservers(c1.xlarge)

post-mesos:20bigservers(c3.8xlarge)

Page 8: CONTINUOUS DEPLOYMENT WITH SINGULARITY · CONTINUOUS DEPLOYMENT WITH SINGULARITY ... Big Data Analysis tasks

WHYSINGULARITYalmostnoframework1yearago

getaconsistent,unifiedAPIforalldeployableitems

missioncritical/strategictool-importantto control:priorityanddeliveryofbugfixes

featuresandintegrationstheoverallroadmap

havetheresourcestoimplement&maintainahighlycomplexpieceofsoftware

Page 9: CONTINUOUS DEPLOYMENT WITH SINGULARITY · CONTINUOUS DEPLOYMENT WITH SINGULARITY ... Big Data Analysis tasks

DEPLOYCONFIGURATION

name:MDS_All_Item_Types_In_One_ConfigbuildName:MesosDeployIntegrationTestsProjecttype:procfile

owners:[email protected]

appRoot:/mesos-deploy-test-srv1/v1loadBalancers:-test

env:all:JOB_JAR:TestJob.jar

procfile:webService:cmd:java$JVM_DEFAULT_OPTS-jarTestService.jarserver$CONFIG_YAMLinstances:2cpus:2memory:1024numRetriesOnFailure:5scheduledJob:cmd:java$JVM_DEFAULT_OPTS-jar$JOB_JAR-testjobschedule:'*/3****'numRetriesOnFailure:5healthcheckIntervalSeconds:40healthcheckTimeoutSeconds:40worker:

Page 10: CONTINUOUS DEPLOYMENT WITH SINGULARITY · CONTINUOUS DEPLOYMENT WITH SINGULARITY ... Big Data Analysis tasks

DEPLOYWITHHUBSPOTPAAS

Page 11: CONTINUOUS DEPLOYMENT WITH SINGULARITY · CONTINUOUS DEPLOYMENT WITH SINGULARITY ... Big Data Analysis tasks

SINGULARITYCOMPONENTS

Page 12: CONTINUOUS DEPLOYMENT WITH SINGULARITY · CONTINUOUS DEPLOYMENT WITH SINGULARITY ... Big Data Analysis tasks

SINGULARITYSCHEDULER

ADEPLOY-CENTRICRESTAPITO:

registerdeployableitemsexecutetheirdeploysviewsandboxfilesgetmetadata/historicaldata

Page 13: CONTINUOUS DEPLOYMENT WITH SINGULARITY · CONTINUOUS DEPLOYMENT WITH SINGULARITY ... Big Data Analysis tasks

SINGULARITYSCHEDULERAdvancedfeatures:

HealthCheckingattheprocessandtheserviceendpointlevel

Automaticcool-downofrepeatedlyfailingservices

Loadbalancingofserviceinstances(LBAPI)

AutomaticRollbackoffaileddeploys

ReconciliationofLOSTtasks

DecommissioningofSlaves&Racks

Page 14: CONTINUOUS DEPLOYMENT WITH SINGULARITY · CONTINUOUS DEPLOYMENT WITH SINGULARITY ... Big Data Analysis tasks

SINGULARITYEXECUTORLogRotation

TaskSandboxCleanup

GracefulTaskKillingwithconfigurabletimeout

EnvironmentSetup

TaskRunnerScript

Page 15: CONTINUOUS DEPLOYMENT WITH SINGULARITY · CONTINUOUS DEPLOYMENT WITH SINGULARITY ... Big Data Analysis tasks

ADVANCEDSLAVESERVICESLogWatcher :Tail&StreamLogs

S3uploader:ArchivelogswithAWSS3Service

ExecutorCleanup:Cleanfailedexecutortasks

OOMKiller:replacethedefaultmemorylimitcheckingsupportedbyLinuxKernelCGROUPS

Page 16: CONTINUOUS DEPLOYMENT WITH SINGULARITY · CONTINUOUS DEPLOYMENT WITH SINGULARITY ... Big Data Analysis tasks

KEYSINGULARITYABSTRACTIONS

SINGULARITYREQUESTOBJECT

{"id":"TestService","owners":["[email protected]","[email protected]"],"daemon":true,"instances":3,"rackSensitive":true,"loadBalanced":true}

Page 17: CONTINUOUS DEPLOYMENT WITH SINGULARITY · CONTINUOUS DEPLOYMENT WITH SINGULARITY ... Big Data Analysis tasks

KEYSINGULARITYABSTRACTIONS

SINGULARITYDEPLOYOBJECT

RESOURCES:Memory,CPUs,networkportsHEALTHCHECKS:TimeoutsandURLsLOADBALANCINGofwebserviceinstances(LBgroups,apibasepath)EXECUTORINFORMATION:executionenvironment,executableartifacts,configurationfiles,commandtoexecute,executortouse,etc.

Page 18: CONTINUOUS DEPLOYMENT WITH SINGULARITY · CONTINUOUS DEPLOYMENT WITH SINGULARITY ... Big Data Analysis tasks

{"requestId":"MDS_TestService","id":"71_7","customExecutorCmd":".../singularity-executor","resources":{"cpus":1,"memoryMb":896,"numPorts":3},"env":{"DEPLOY_MEM":"768","JVM_MAX_HEAP":"384m",},

Page 19: CONTINUOUS DEPLOYMENT WITH SINGULARITY · CONTINUOUS DEPLOYMENT WITH SINGULARITY ... Big Data Analysis tasks

"executorData":{"cmd":"java-Xmx$JVM_MAX_HEAP-jar.../TestService.jarserver$CONFIG_YAML""embeddedArtifacts":[{"name":"rawDeployConfig","filename":"TestService.yaml","content":"bmFtZT..."}],"externalArtifacts":[],"s3Artifacts":[{"name":"executableSlug","filename":"TestService.tar.gz","md5sum":"313be85c5979a1c652ec93e305eb25e9","filesize":81055833,"s3Bucket":"hubspot.com","s3ObjectKey":"build_artifacts/.../TestService.tar.gz"}],

Page 20: CONTINUOUS DEPLOYMENT WITH SINGULARITY · CONTINUOUS DEPLOYMENT WITH SINGULARITY ... Big Data Analysis tasks

SINGULARITYAPI

MANAGEDEPLOYABLEITEMS

ENDPOINT:/requests

register/update/unregisteranitem

getinfoaboutanitem

listitemsinactive|paused|cool-downstate

run/restart/pause/un-pauseanitem

Page 21: CONTINUOUS DEPLOYMENT WITH SINGULARITY · CONTINUOUS DEPLOYMENT WITH SINGULARITY ... Big Data Analysis tasks

SINGULARITYAPI

DEPLOYTHEDEPLOYABLEITEMS

ENDPOINT:/deploys

deployanalreadyregistereditem

cancelapendingdeploy

Page 22: CONTINUOUS DEPLOYMENT WITH SINGULARITY · CONTINUOUS DEPLOYMENT WITH SINGULARITY ... Big Data Analysis tasks

SINGULARITYAPI

MANAGEDEPLOYABLEITEMINSTANCES(TASKS)ENDPOINT:/tasks

getthelistofallscheduledtasks(notyetactive)

getscheduledtasksforaspecificitem

listtasksin state

infoaboutaspecifictask

activetasksinaslave

Killatask

Page 23: CONTINUOUS DEPLOYMENT WITH SINGULARITY · CONTINUOUS DEPLOYMENT WITH SINGULARITY ... Big Data Analysis tasks

SINGULARITYAPI

HistoricalInformationaboutdeployableitems&theirtasks

ENDPOINT:/history

asingletaskhistory

tasksthathaveruninthepast

allpreviousitemupdates

searchforhistoricalitemsbyitemid

allitemdeploys

aspecificitemdeploy

Page 24: CONTINUOUS DEPLOYMENT WITH SINGULARITY · CONTINUOUS DEPLOYMENT WITH SINGULARITY ... Big Data Analysis tasks

SINGULARITYAPI

LIST&DOWNLOADFILESINACTIVETASKSANDBOX

ENDPOINT:/sandbox

listalltaskfiles

readfilechunks

downloadafile

Page 25: CONTINUOUS DEPLOYMENT WITH SINGULARITY · CONTINUOUS DEPLOYMENT WITH SINGULARITY ... Big Data Analysis tasks

SINGULARITYAPIClusterSTATEInformation

ENDPOINT:/state

{activeTasks:567,activeRequests:843,cooldownRequests:1,scheduledTasks:142,pendingRequests:0,lbCleanupTasks:1,activeSlaves:21,deadSlaves:0,decomissioningSlaves:0,activeRacks:3,deadRacks:0,futureTasks:142,maxTaskLag:0,overProvisionedRequests:0,underProvisionedRequests:0,allRequests:844}

Page 26: CONTINUOUS DEPLOYMENT WITH SINGULARITY · CONTINUOUS DEPLOYMENT WITH SINGULARITY ... Big Data Analysis tasks

SINGULARITYUI-GLOBALCLUSTERSTATUS

Page 27: CONTINUOUS DEPLOYMENT WITH SINGULARITY · CONTINUOUS DEPLOYMENT WITH SINGULARITY ... Big Data Analysis tasks

SINGULARITYUI-DASHBOARD

Page 28: CONTINUOUS DEPLOYMENT WITH SINGULARITY · CONTINUOUS DEPLOYMENT WITH SINGULARITY ... Big Data Analysis tasks

SINGULARITYUI-DEPLOYABLEITEMLIST

Page 29: CONTINUOUS DEPLOYMENT WITH SINGULARITY · CONTINUOUS DEPLOYMENT WITH SINGULARITY ... Big Data Analysis tasks

SINGULARITYUI-DEPLOYABLEITEM

Page 30: CONTINUOUS DEPLOYMENT WITH SINGULARITY · CONTINUOUS DEPLOYMENT WITH SINGULARITY ... Big Data Analysis tasks

SINGULARITYUI-DEPLOYABLEITEMTASK

Page 31: CONTINUOUS DEPLOYMENT WITH SINGULARITY · CONTINUOUS DEPLOYMENT WITH SINGULARITY ... Big Data Analysis tasks

SINGULARITYUI-HISTORICALTASK

Page 32: CONTINUOUS DEPLOYMENT WITH SINGULARITY · CONTINUOUS DEPLOYMENT WITH SINGULARITY ... Big Data Analysis tasks

SINGULARITYUI-RACKS&SLAVES

Page 33: CONTINUOUS DEPLOYMENT WITH SINGULARITY · CONTINUOUS DEPLOYMENT WITH SINGULARITY ... Big Data Analysis tasks

DEVELOPWITHSINGULARITYjava7guice

dropwizard(jersey,jackson,liquibase)

maven

backbonenodejsbrunch

Page 34: CONTINUOUS DEPLOYMENT WITH SINGULARITY · CONTINUOUS DEPLOYMENT WITH SINGULARITY ... Big Data Analysis tasks

ROADMAP/NEWFEATURESEnhanceJobScheduler

SupportdeployofDockercontainers

AddadvancedslaveaffinityalgorithmstosupportdatalocalityforBigDataAnalysistasks

OpensourceDeployer

(AsimplifiedversionofDeployMetadataRegistry+MesosDeployService+DeployerUI)

Page 35: CONTINUOUS DEPLOYMENT WITH SINGULARITY · CONTINUOUS DEPLOYMENT WITH SINGULARITY ... Big Data Analysis tasks

USEFULLINKS

http://getsingularity.com/https://github.com/HubSpot/Singularity

https://github.com/HubSpot/Singularity/blob/master/Docs/Singularity_API_Reference.md

https://github.com/HubSpot/Singularity/blob/master/Docs/Singularity_Local_Setup_For_Testing.md

https://mesosphere.io/resources/mesos-case-study-hubspot/