71
DevOps 소개 ver 0.2 2015.10.27 http://tunelinux.pe.kr 문태준

DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

  • Upload
    -

  • View
    3.757

  • Download
    13

Embed Size (px)

DESCRIPTION

DEVOPS 전반적인 것에 대해서 소개를 한 자료입니다. http://wiki.tunelinux.pe.kr/display/sysadmin/DEVOPS https://groups.google.com/forum/#!topic/sysadminstudy/g4bM_xbZPC8 DevOps 시작 DevOps 정의 Dev vs Ops 충돌 DevOps 유래 참고자료 애자일 방법론 ITIL 린스타트업 린 생산방식 애자일을 OPS로 확장 DevOps 관점 : 측정지표 관점, 프로세스 관점, 기술 관점 DevOps가 아닌 것은? DevOps 소개 프로젝트 세팅 : 전통적인 프로젝트 세팅, 애자일 프로세스 세팅 하나의 팀 핵심 가치와 목적 프로세스 도구 DevOps 구성하기 측정지표 : cycle time, 변경(change) 흐름 개선하기 배포 개선 및 가속화 : batch size 줄이고 더 자주 배포하여 cyclle time 줄이기. 못 다한 이야기 : Metrics and Measurement View / Process View / Technical View Top 11 Things About DevOps DevOps의 기초 원리 : 전체 시스템적인 사고, 피드백 루프를 확대하기, 지속적인 실헝과 학습 자동화 도구 이상적인 프로젝트란? 버전관리 티켓관리 지속적인 통합(CI) 지속적인 배포(CD) 프로비저닝 툴체인 OS설치 설정 오케스트레이션(배포)/워크플로우 이제 무엇을 할까? 나가면서 참고자료

Citation preview

Page 1: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

DevOps 소개

ver 0.2 2015.10.27

http://tunelinux.pe.kr 문태준

Page 2: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

변경내용

•2015.10.27 : DevOps Tools 의 orchestration 일부업데이트및ansible,saltstack 추가

•2014.11.18 : 문서작성

Page 3: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

DevOps 시작

DevOps 소개

DevOps 구성

Top 11 Things About DevOps

자동화도구

이제무엇을할까?

참고자료

Page 4: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

•DevOps 시작•DevOps 정의/DevOps 충돌/DevOps 유래•참고자료 : 애자일, ITIL, 린스타트업, 린생산방식•애자일을 OPS로확장•DevOps 관점•DevOps가아닌것은?

•DevOps 소개•프로젝트세팅/하나의팀•핵심 : 가치와목적, 프로세스, 도구

•DevOps 구성•측정지표•흐름개선하기•배포개선및가속화•못다한이야기

•Top 11 Things About DevOps•자동화도구

•이상적인프로젝트•버전관리/티켓관리/CI/CD•프로비저닝툴체인 : OS설치/설정/오케스트레이션(배포)/워크플로우

•이제무엇을할까?•참고자료

Page 5: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

DevOps 시작하기

Page 6: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

DevOps 시작 - 정의(Wikipedia)

•DevOps 라는합성어는소프트웨어개발자들과 IT 종사자들사이의의사소통, 협업, 융합을강조한소프트웨어개발방법론이며, 소프트웨어개발과 IT 운영간의상호의존관계에대한산물이다.

•DevOps 는조직에서소프트웨어상품과서비스를신속히생산하는것에도움이되는것을목적으로한다.

Page 7: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

Dev VS Ops - 충돌

출처 : http://dev2ops.org/2010/02/what-is-devops/

Page 8: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

Dev VS Ops - 충돌

출처 : http://dev2ops.org/2010/02/what-is-devops/

Page 9: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

Dev VS Ops - 충돌

•Dev VS Ops•Dev : 고객에게제공한변경을빠르게보기원함•Ops : 안정성에관심이더많음

•Dev와 Ops 간에생기는차이•동기 (incentives) : Dev 와 Ops 간에서로다른목표때문에생김•프로세스 : 변경을관리하는방식, 실서비스에반영하는방식및관리하는방식이다름•도구 : Dev 와 Ops 가서로별도의프로그램을사용함•세가지중어떤것이가장중요하다고생각하세요???

•DevOps란?•동기를맞추고프로세스와도구에대한접근을공유하여차이를줄임•애자일프랙티스를운영으로확장하여더강한협업및 소프트웨어배포프로세스강화•문화, 사람이프로세스보다중요하며도구보다더중요함.

Page 10: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

DevOps 의유래

•2009년 Belgium 에서첫 DevOps 컨퍼런스개최 (Patrick DeBois)

•Velocity 컨펀러스. especially the seminal “10 Deploys A Day” presentation given by John Allspaw and Paul Hammond

•“인프라로코드관리” 운동 (Mark Burgess and Luke Kanies), “애자일인프라스트럭쳐” 운동 (Andrew Shafer), 애자일시스템관리운동 (Patrick DeBois)

•린스타트업운동 (Eric Ries)

•지속적인통합및배포운동. CI, CD (Jez Humble)

•아마존웹서비스와같은각종 cloud, PaaS 기술의확대

Page 11: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

참고자료 –애자일

•폭포수방법론 vs 애자일방법론•폭포수방법론은 1970 년에창안된첫번째소프트웨어개발방법론이며애자일방법론은폭포수방법론의과도한문서업무때문에내재하는낭비를줄이고자 1990 년대에고안된방법론임•폭포수방법론은소프트웨어개발방법론의첫번째모델로환영받았지만느린단계별접근법으로중복프로세스가발생하고릴리즈간긴시간차가발생함•폭포수방법론은요구사항 - 분석 - 디자인 -코딩 -테스트 - 릴리즈의단계를지님•애자일방법론은빠르고모듈식의주기적인방식을통해개발전단계에걸쳐요구사항을지속적으로분석 , 반영하여릴리즈간시간차를최소화함

•애자일은무엇인가? (Wikipedia)•애자일방법론은소프트웨어개발방법에있어서아무런계획이없는개발방법과계획이지나치게많은개발방법들사이에서타협점을찾고자하는방법론이다.

•계획이없는방법론의경우, 앞으로의일을예측하기힘들고효율적이지못하다는점에서취약점을가지고있으며, 계획에너무의존하는경우는그형식적인절차를따르는데필요한시간과비용을무시할수없으며, 전체적인개발의흐름자체를느리게하는단점을가지고있다.

•애자일방법론에서택한, 그리고다른고전적인방법론, 예를들면폭포수모델또는나선모형과구별되는가장큰차이점은 less document-oriented, 즉문서를통한개발방법이아니라, code-oriented, 실질적인코딩을통한방법론이라는점이다.•애자일개발방법론 : 익스트림프로그래밍, 스크럼등

Page 12: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

참고자료 –애자일

출처 : “성공으로이끄는팀개발실천기술"

Page 13: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

참고자료 –애자일 (애자일프랙티스)

•애자일소프트웨어개발선언문•우리는직접개발하면서또남이개발하는일을도와주면서소프트웨어개발의더나은방법을발견하고있다. 이작업을통해우리는아래것들을더가치있게여기게되었다.

•‘프로세스와도구’보다는 ‘개인과상호작용’을•‘포괄적인문서화’보다는 ‘동작하는소프트웨어 ‘를•‘계약협상 ‘보다는 ‘고객과의협력 ‘을•‘계획준수 ‘보다는 ‘변화에대응‘ 을

•이말은, 왼쪽에있는것들에도가치가있긴하지만, 우리는오른쪽에이는것들에더많은가치를둔다는것이다.

•애자일정신•사람, 협조, 반응성, 동작하는소프트웨어강조•빠르게반응하고상호협력하는사람들과논증가능한구체적인목표(실제동작하는소프트웨어)를결합하는것•계획에기반한접근방법에서자연스럽고끊임없이지속하는방식으로이동•프로젝트의끝으로테스트를미루지않고월말까지통합을미루지않아야하며코딩을시작하면서요구사항과피드백을모으는일을멈추지않아야한다.•프로젝트의전생애주기동안일시적인아닌지속적인개발•고도의협력적인환경에서지속적인조정을위해피드백을사용한다.

Page 14: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

참고자료 – ITIL

•ITIL은무엇인가?•ITIL(IT Infrastructure Library)은 IT 서비스관리에대한프레임워크구현을돕기위한문서들의집합•과거에많은기업들의 IT 조직이내부적으로기술중심으로업무를집중하는반면, 현재의 IT조직은비즈니스조직의요구사항에따라 IT서비스품질향상에역량을집중하고있으며고객지향적인접근방식을채택•ITIL은영국뿐아니라전세계 IT 서비스관리에대한사실상의표준(de-facto standards)•다음항목으로구성

•서비스전략•서비스설계•서비스전환•서비스운영•지속적인서비스개선

Page 15: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

참고자료 –린스타트업

•린스타트업이란? (Wikipedia)•린생산방법, 디자인중심사고, 고객개발, 애자일개발같은기존경영방법및제품개발방법론의토대위에서만들어진경영전략•시장에대한가정(market assumptions)을테스트하기위해빠른프로토타입(rapid prototype)을만들도록권함.•고객의피드백을받아기존의소프트웨어엔지니어링프랙티스(폭포수모델같은) 보다훨씬빠르게프로토타입을진화시킬것을주장. 지속적배포(Continuous Deployment)라는기법을사용한다.•때론린사고방식 (Lean Thinking)을창업프로세스에적용한것으로설명.

•린사고방식의핵심은낭비를줄이는것임. 린스타트업프로세스는고객개발(Customer Development) 을사용하여, 실제고객과접촉하는빈도를높여서낭비를줄임. •이를통해시장에대한잘못된가정을최대한빨리검증하고회피•시장에대한가정들을검증하기위한작업들을줄이고, 시장선도력(market traction)을가지는비즈니스를찾는데걸리는시간을줄인다. 이것을최소기능제품 (Minimum Viable Product)이라고도한다.

•린스타트업의다섯가지원칙(The Lean Startup)•창업가는어디에나있다 : 극심한불확실성속에서제품, 서비스를만드는조직이라면모두스타트업임.•창업가정신은관리다 : 스타트업은새로운방식의관리가필요•유효한학습 : 지속가능한사업을어떻게만들지학습. 여러비전을빈번히실험하면서과학적으로검증•만들고측정하고배운다 : 제품만들기->고액반응측정-> 고수또는방향전환. 피드백순환을빠르게.•혁신회계 : 지루한것들에집중해야한다. 성과측정, 마일스톤세팅, 일의우선순위어떻게정할것인가?

Page 16: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

참고자료 –린생산방식이란?

•린생산방식은? (도요타주의)•20세기경제발전및경영방식, 포드주의, 포스트포드주의에대한이해필요.

•포드주의 : 소품종대량생산, 획일적/표준화, 전용기계, 대규모재고, 집중화, 규모의경제•포스트포드주의 : 다품종소량생산, 다양화/유연화 , 범용기계, 무재고, 분산화, 범위의경제•협동조합 : 영리보다상호부조, 경쟁보다는협력, 연대의가치를더높이평가함. 그러면서도생산성,

•일본식생산방식 (도요타주의)가각광받았던이유는? •다른선진국들이포드주의의위기속에서정체와위기를겪고있을때압도적인경쟁력으로불황을헤쳐나온방식이기때문

•생산체제 : 적기생산방식(just-in-time), 혼류생산(다양한모델의자동차가하나의라인위를흐르는것), 작은로트생산(단위생산당생산대수를적게하는방법), 범용기계의활용등•노동력편성과활용 : 다능공화, 품질관리서클(QC), 직무순환, 노동자들의자발작참여와생산문제개선등•긍정적입장 : 생산체제, 작업조직을개선•부정적입장 : 포드주의에비해질적으로새로운방식이아님. 노동강도를강화하기위한수단임. 노동자참여도제한적임. 노동자간의경쟁관계를이용. 승진과임금차별. •일본식생산방식안에는부정적인측면과긍정적인측면이함께공존하면서전체적으로고도의경쟁력을갖추는교묘한체제를구성하고있음.

Page 17: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

DevOps –애자일을 ops로확장

출처 : Devops for Developers

Page 18: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

DevOps –애자일을 ops로확장

•애자일은개발에서운영으로프로그램을넘겨주고끝남•DevOps 에서는소프트웨어배포를포함하고있음•DevOps는

•이해관계자끼리의협력을강화하고•소프트웨어배포프로세스를능률적으로하는프로세스와도구를사용함•최종적으로는 Cycle time 을줄임 (inception – Elaboration – Construction – Transition – Operations)

Page 19: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

DevOps –관점

•DevOps 가성공하기위한기초•신뢰의문화•동료의식•”us vs. them” 문화 vs “we” 문화?•DevOps 에서가장중요한것은공유임 : 아이디어, 이슈, 프로세스, 툴, 그리고목표!•Devops 에서중요한것은문화와사람이며그다음이프로세스와도구임.

•DevOps를어떻게판단할수있는가?•측정지표관점 : quality, testing, 공유된동기의정도•프로세스관점 : 합동, 빠른피드백을위한흐름, 전체적인프로세스구성•기술관점 : 자동화를통한빠른피드백. “인프라를코드로관리하기"와같은자동화된릴리즈

Page 20: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

DevOps 가아닌것은?

•DevOps는새로운팀이아님 (이에대해선이견이있을수있음)

•DevOps는새로운일자리이름이아님

•DevOps는새로운 Tool 이아님

•“2014 state of devops report” 참고•110여개국가 9200명을대상으로조사•DevOps 팀을가진경우가 16%에달했음. (IT Ops 30.4%, Dev/Eng 28.8%)•DevOps Roles 에 DevOps Enginner가 31.3%였음. (Systems Engineer 23.4%, Automation or Tooling Engineer 31.3%, Architect 10.3%, Manage or Senior Manager 8.3%)

Page 21: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

DevOps 소개

Page 22: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

DevOps –프로젝트세팅

•전통적인프로젝트세팅•프로그래머 -> QA -> OPS•OPS가프로그래머, 테스터, QA에항상관여하는것은아니지만최종결과는 OPS에서진행이됨.•분리된팀, 공통의언어가없음, 서로간에두려움이있음

•애자일프로젝트세팅•프로그래머와 QA가함께 developer 가되고한팀이됨•애자일에서운영은분리가되어있음.•운영의경우개발팀에서만든소프트웨어를배포함.•배포단계에서 nonfunctional 요구사항이생기며실제개발된소프트웨어와의격차가생김

•배포•안정성•가용성

•테스트환경에서는빠르게배포가되지만 prod 에서는정체가됨•Cycle time (아이디어에서사용자에게실제서비스하는데걸리는시간)은여전히길어짐•매우빈번한소프트웨어배포는 OPS에서병목현상이됨

Page 23: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

DevOps –프로젝트세팅

출처 : Devops for Developers

Page 24: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

DevOps –하나의팀

출처 : Devops for Developers

Page 25: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

DevOps 의핵심

•DevOps의핵심은?•가치와목적•프로세스•도구

Page 26: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

DevOps 의핵심 – 1. 가치와목적

•DevOps의핵심은?•가치와목적•프로세스•도구

•가치와목적•서로간의존중•공유된목적에대한합의•공동의소유권(ownership)•가치의공유

•전체차원의 “동기, 목적"조정 -> “quality” 정의 -> 가시성, 투명성 -> 하나의팀으로!

Page 27: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

DevOps 의핵심 – 2. 프로세스

•DevOps의핵심은?•가치와목적•프로세스•도구

•프로세스•소프트웨어를어떻게개발하고배포할지정의하는프로세스가툴보다중요함•롤이아닌최종만들어진제품에대한책임을조정•개발에서운영에전달하는속도를관리하기위한프로세스를만들고최적화하기•Dev와 Ops 간의전체적인배포프로세스•운영을애자일프레임워크와프로세스에포함시키기•Dev와 Ops 간에동일프로세스를공유•두그룹이초점을맞춤 : 최대의빈도와품질로사용자에게애플리케이션변경을배포•통합된프로세스를통해서 cycle time 을줄임

Page 28: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

DevOps 의핵심 – 3. 도구

•DevOps의핵심은?•가치와목적•프로세스•도구

•도구•프로세스가도구보다중요하지만도구는여전히중요함. (특히배포프로세스)•DevOps 의능률은자동화에의존함•빌드시스템•소스코드관리시스템•기술적, 기능적, acceptance 테스트•패키징•제품배포•모든단계에서자동화된적절한도구가필요함•코드와스크립트는모두버전관리시스템에저장이되어야함•코드와스크립트는빌드, 테스팅, 배포및 puppet 등의설정관리프로그램도포함을함. (인프라를코드로관리)

Page 29: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

DevOps 구성하기

Page 30: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

DevOps 구성하기 –측정지표

•측정기준을무엇으로할것인가?•Dev와 Ops간에가장중요한측정지표는 cycle time임

•전통적인측정기준•숫자 / 정적코드분석, 테스트 coverage / 기능(function points) 등•전통적인측정기준을이용하면자주팀이나개인을비교하는데악용이됨•가장도움이안되는것은이러한프로세스메트릭으로사람을판단하는데쓰는것임•이슈 10개처리한사람과 100개처리한사람을비교하는것은현명한방법인가?

•애자일측정기준•지속적으로가치가있는소프트웨어를배포할수있도록고객피드백, 지속적인테스팅, 반복적인개발을보장할수있는지를접근방법을필요로함•가치를추가하여사용자또는고객을만족시킨애플리케이션을 “솔루션"이라고함.•새로운업무를시작하기전 The Definition of Done(DOD) , 완성된업무에대한정의를하는방법도있음.

•테스팅이완료되지않거나, 대상시스템에설치가안되었거나, 품질이나모니터링을보장하지못하면끝나지않음

•Broken Agile Metrics : Test pass/fail ratios, Number of defects created or resolved, Continuous deployments

Page 31: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

DevOps 구성하기 –측정지표

•“변경”•변경은 Dev와 Ops 간에사용할수있는유용한지표임. Ops 에서변경은실서비스를변경한부분임•변경을 Dev와 Ops 간에공유하는조건으로사용한다면실서비스에서이슈가발생하는것을효율화하는데도움이됨

Page 32: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

DevOps 구성하기 –측정지표

•“변경” 은다음을포함•애플리케이션코드•미들웨어•인프라스트럭쳐 (OS, Servers, switches, routers)•“변경"을장애관점에서보는것이아니라일반적인프로세스로생각을해야함

Page 33: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

DevOps 구성하기 –흐름개선하기

•DevOps는 Dev와 Ops에모두의미가있는접근법을통해서빠른피드백을얻고배포위험을줄이는것이핵심임

•이러한것을달성하기위한가장중요한단계중하나는 inception 에서 availability 까지의흐름을개선하는것임•batch size 를줄이는것이중요해짐 : batch size 는새로운버전으로올리기전에완료해야할변경또는작업량의크기. 더적은변경사항(batch size)을자주배포하는것이중요함.

•Cycle Time•Cycle time은하나의 operation, function, process 를완료하는데필요한기간임.•개발프로세스시작부터매출이발생하기시작하기까지시간•특정가치와기능이고객에게전달이되었을때를완료로정의했을때만의미가있음•측정가능한시작지점과끝지점을동의해야가능함

•Lead time, Takt Time, throughput•Lean time : 요청이입력되고완성된시간•Takt Time : 제조업에서나온개념이며 “rhythm of the process”를가리킴.• throughput

Page 34: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

DevOps 구성하기 –배포개선및가속화

•매우자주배포•Batch size 를줄이면 더자주배포하여 cycle time 을줄일수있음.•실서비스에더자주배포를함으로써변경을더간단하게할수있고변경에초점을맞출수있음•일찍문제파악하고처리가가능•이전버전으로롤백을할필요도줄이고롤백시변경사항이적으므로롤백하기도쉬움.•수백개의다양한기능을롤백하는것보다한개의기능만롤백을할수있으므로사업관점에서도관리하기가쉬워짐•Release 간격이크면 batch size 도크고각종기능도나중에서비스에들어감 (고객에대한가치전달이늦어짐)•Release 간격을줄이면적절한 batch size도가질수있고각종기능도더빠르게 이용가능함

Page 35: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

DevOps 구성하기 –배포개선및가속화

Page 36: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

DevOps 구성하기 –배포개선및가속화

•자동화된릴리즈•지속적인통합 (Continuous integration)•Automatic tests•자동화된릴리즈의목표는소프트웨어를릴리즈하면서의위험을줄이는것•Build, test, releasing 소프트웨어를이용하고반복가능한프로세스를만든다.•가상머신, 미들웨어, 애플리케이션코드등을 “반복” 가능하도록 Provisioning, deploy 함•자동화를할 대상선택이필요함 : 최대의비용고려, 자동화의패러독스, 아이러니등고려(더많은사람필요, 운영자가경험할기회가줄어드는것등)•기술적관점이아닌비즈니스적인관점에서자동화가필요•효율적인자동화는사람을더중요하게만들어야함.•릴리즈를자주, 반복적으로함.•자동화된릴리즈는모니터링에의해서달성될수있음.•철저하게모니터링을해야함. 애플리케이션개발과함께개발을해야함.

Page 37: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

DevOps 구성하기 –배포개선및가속화

•Deployment 와 Release 를분리하기•Deployment 와 Release 를분리하는여러가지방법이있음•Deployment : 특정환경에소프트웨어 Release 를설치•Release : 사용자가사용할수있는특정소프트웨어버전•Deployment 와 Release 분리하는방법

•Branch by Abstraction•Feature Toggles : 런타임시사용할기능을선택•Dark Launching : 전체사용자에게배포하기전 prod에일부만배포•Blue-Green Deployment : 구버전, 신규버전을함께운영하면서로드밸런서등을이용

출처 : “성공으로이끄는팀개발실천기술"

Page 38: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

DevOps 더나아가기

•더설명하지못한이야기들

•Metrics and Measurement View•무엇이 “질"인가? “질"을개선하기위한패턴•서로간의동기를공유하기위한방법. 무엇이팀이고팀을어떻게만들것인가?

•Process View•빠른피드백을얻는방법, •통합적, 전체적인접근

•Technical View•자동화된릴리즈•적절한툴선택을위한패턴•인프라코드로관리하기

Page 39: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

The Top 11 Things

Page 40: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

The Top 11 Things About DevOps

•정확한제목은 Top 11 Things You Need To Know About DevOps

•1. DevOps는무엇이며어디에서왔나?•DevOps 는 Dev와 Ops 간의협력적인관계를만들수있는전문적인운동을말하며이를통해서계획된작업을빠르게할수있도록함. •동시에서비스환경에대한신뢰성, 안정성, 탄력성, 보안을강화함.•왜 Dev와 Ops인가? 그것은 Dev와 Ops가비즈니스와고객사이의가치의흐름이기때문임.•DevOps 운동의기원

•2. DevOps와애자일의차이점은?•애자일프로세스는폭포수모델과다르게더작게더자주소프트웨어를배포함.•애자일을통해더빈번한배포하면서 Ops 에서는병목현상이일어남.•DevOps는애자일방법론을 Ops 까지확장하여코드를더빨리서비스에넣고고객에게가치를전달할수있음•DevOps는 IT 운영의지속적인작업흐름을가능하게함.•DevOps는문화를바꾸는것이며작업흐름과측정기준을바꾸는것임.

Page 41: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

The Top 11 Things About DevOps

•3. DevOps와 ITIL 또는 ITSM 과의차이점은?•ITITL , ITSM 은 IT 운영에대한훌륭한비즈니스프로세스명문화작업임.•애자일, continuous integration, 릴리즈는 Dev에서의출력이며 Ops 에서는입력이됨. ITIL 프로세스의많은영역에서자동화가필요로하며 change, configuration, 릴리즈프로세스가특히중요함•DevOps 의목적은변경의횟수를늘리는것뿐만아니라문제없이성공적으로실서비스환경에기능을배포하는것이며문제가생겼을때빠르게확인하고고치는것임. 이러한것은 ITIL 을더강화함.

•4. How does DevOps fit with VisibleOps?•생략

Page 42: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

The Top 11 Things About DevOps

•5. DevOps의기초원리는?•전체시스템적인사고

Page 43: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

The Top 11 Things About DevOps

•5. DevOps의기초원리는?•피드백루프를확대하기

Page 44: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

The Top 11 Things About DevOps

•5. DevOps의기초원리는?•지속적인실험과학습문화

Page 45: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

The Top 11 Things About DevOps

•6. DevOps 패턴의영역•Area 1: Extend Development into Production•Area 2: Create Production feedback into Development•Area 3: Embed Development into IT Operations•Area 4: Embed IT Operations into Development

•7. DevOps 의가치는?•시장에대한빠른대응•“질” 향상•조직적효율성증대

•8. 보안과 QA는어떻게 DevOps에합류할수있는가?•기능, 통합, 보안테스트를개발의일일운영에통합하여더빠르게문제를찾아냄

Page 46: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

The Top 11 Things About DevOps

•9. My DevOps Favorite Pattern #1•환경을최대한일찍만듬•자동화된환경생성프로세스. Dev, QA, Prod•각환경의차이를최대한출임.

•10. My DevOps Favorite Pattern #2•Dev를고객의경험과최대한밀접하게연결시킴•Dev를 Level 3 기술지원에포함또는코드배포, 롤백등에함께책임을가지도록함•목표는 Dev가 Ops를대체하는것이아님. 개발을통한변경영향을직접확인하고공동의목표를달성하기위해서 Ops 와함께문제를빠르게고치기위한것임

•11. My DevOps Favorite Pattern #3•표준화가안되어있으면문제가생김.•재사용가능한배포프로세스정의•환경을표준화함.

Page 47: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

자동화툴

Page 48: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

이상적인프로젝트란?

출처 : “성공으로이끄는팀개발실천기술"

•티켓관리시스템에이슈등이집약되어있다•버전관리시스템을이용•반복검증가능한 CI 시스템을도입•환경의영향을최소화하고항상배포가능상태로둔다•모두기록해서추적가능하게한다

Page 49: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

버전관리

•버전관리시스템이란?•버전관리시스템의역사와분산버전관리시스템의도입•관리해야할것

•소스코드•요건정의서, 설계서등의문서•데이터베이스스키마및데이터•미들웨어등의설정파일•라이브러리등의의존관계정의•시스템설정및인프라

•브랜치, 태그등을사용한효율적인개발

Page 50: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

티켓관리

•티켓관리시스템이란?•티켓관리시스템과버전관리시스템의연계

출처 : Jira와 subversion 연동하여이슈처리

Page 51: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

지속적통합(Continous Integration)

•CI란?•통합이란빌드, 테스트를실시하는프로세스를말하며이러한통합프로세스를상시로실시하는것을 CI(Continuous Integration)이라고함

•통합을지속적으로수행하는것이 CI•원래 CI는애자일개발방법의하나로, 익스트림프래그래밍방법론으로고안되었음.•가치있는소프트웨어를고품질로신속하게전달하는것을목표로하는것•애자일개발중에서도가장기본이자핵심방법론임.•통합작업을미루지말고개발중에라도실시해서소프트웨어개발의복잡성을제거하자는것

•왜 CI 같은방법론이요구되는걸까?•비용면에서의이점•시장변화속도•속도와품질둘다확보

Page 52: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

지속적통합(Continous Integration)

•CI 에필요한것•버전관리시스템 : subversion, Git•빌드도구 : make, Scons, Ant, Maven, Gradle, Rake, •테스트도구 : 테스트주도개발프레임워크, 행동주도개발프레임워크.

•단위테스트(Unit Test), 통합테스트(Integration Test), 사용자테스트(User Acceptance Test), 회귀테스트(Regressoin Test)

•CI 도구 : Jenkins, Travis CI

Page 53: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

배포자동화(지속적전달)

출처 : “성공으로이끄는팀개발실천기술"

Page 54: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

배포자동화(지속적전달)

•배포자동화의이점•작은단위로나누어자주배포하면위험을제어할수있음•피드백을빨리받을수있다•조직을안정화한다

•배포자동화하기•배포자동화기반기술을선택할때는개발자와운영자모두공통으로이용할수있는것으로 해야함•개발부터상용환경에배포하기까지일관된처리를필요로함•배포자동화시공통으로인식해야할것

•모든것을버전관리한다•모든환경을같은방법으로구축한다•배포작업을자동화하고사전검증을한다•반복테스트한다.

•배포파이프라인 : 애플리케이션빌드/배포/테스트/배포라는일련의프로세스를자동화하는것•자동화를통해서배포속도를가속화 : 속도와정확도•누구든지배포할수있도록하는것이중요

Page 55: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

프로비저닝툴체인

출처 : “성공으로이끄는팀개발실천기술"출처 : Web Ops 2.0: Achieving Fully

Automated Provisioning

Page 56: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

Automated Provisioning + Automated Lifecycle

출처 : http://dtosolutions.com/fully-automated-infrastructure/fully-

automated-provisioning/

Page 57: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

프로비저닝툴체인 - Bootstrapping

•Kickstart

•Vagrant

•Docker

•Cloud 서비스

Page 58: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

프로비저닝툴체인 - Configuration

•Puppet vs Chef vs Ansible vs Salt vs

Cfengine vs Etc

출처 : “성공으로이끄는팀개발실천기술"

Page 59: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

프로비저닝툴체인 – Configuration - Puppet

출처 : http://theforeman.org/

https://forge.puppetlabs.com/

Page 60: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

프로비저닝툴체인 – Orchestration

•Capistrano : 병렬처리•Fabric : 직렬/병렬처리

•순서가필요한경우직렬처리가유용•기타 : Func(Python) / Rex(Perl)

•Jenkins : CI 도구이지만배포보조도구로활용가능•Mcollective

•Ssh 대신 Publish Subscribe Middleware 기술사용 (비동기메시징. MQ)

•확장성이용이하며대규모환경에서사용가능함.

•Rundeck : workflow 기능•Ansible/SaltStack : configuration + Orchestration

•SaltStack 은 zeromq의분산메시징기술을이용하여성능및확장성을높임.

•수작업으로해야한다면? ClusterSSH, Pssh, Dist, etc

Page 61: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

오케스트레이션 – Mcollective

출처 : https://docs.puppetlabs.com/mcollective/reference/basic/messageflow.html

A : 노드c에대한정보요청B : 전체노드에브로드캐스트C : 모든노드에서메시지받음D : 해당머신(c)만응답보냄

Page 62: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

오케스트레이션 – Jenkins 와 Fabic 조합

출처 : “성공으로이끄는팀개발실천기술"

•Fabic 실행을 Jenkins 슬레이브에서실행함으로써 Fabic 실행결과를Jenkins 콘솔로그로남길수있음•Fabric 은원격호스트추가가쉽고코드로관리할수있어서버전관리를통한본인환경검증등다양한환경에서동작시킬수있음

Page 63: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

오케스트레이션 – workflow Rundeck 활용

•워크플로우기능•Workflow 정의, 빌드, 실행관리가능•Job 정의 -> 해당팀에 job 넘겨줌

•사용용도•표준운영프로시져공유•잡스케쥴러•빌드 후자동화된배포•테스트환경을셀프서비스로제공•데이터프로세싱

출처 : http://rundeck.org/

Page 64: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

이제무엇을할까?

Page 65: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

우리의문제는무엇인가? 무엇을할것인가?

•큰이야기•같은목적을향해달려가고있는가?

•같은프로세스를사용하고있는가?

•같은도구를사용하고있는가?

•작은이야기 1

•공부하기•도구부터접근하기•시스템설정은 Puppet 에.

•VM OS 설치는 vagrant 에.

•모든설정파일/스크립트는버전관리소프트웨어에.

•공통의배포프로그램, 워크플로우프로그램사용•QA/Staging 환경을함께구축하기 : Dev + Ops 공통사용. 최대한실제환경과비슷하게구현

•작은이야기 2

•파일럿프로젝트선정하여효과가있는지검증하기 (만들고측정하고배우기)

Page 66: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

참고자료

Page 67: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

참고자료

•DevOps 전반적으로연관있는서적lDevops for Developers

l전반적으로 DEVOPS 에대해서설명을하고있는책임. DEVOPS 정의,

DEVOPS 가아닌것, DEV와 OPS간의충돌문제, DEVOPS 의핵심, (Values

and goals, Processes, Tools), devops 구축하기, Values and goals, Processes,

Tools 세가지핵심의관점에서자세한설명을하고있음lThe Phoenix Project: A Novel About IT, DevOps, and Helping Your Business Win

l소설임. 번역서제목은 “피닉스프로젝트비즈니스를승리로이끄는 IT와DevOps”

l성공으로이끄는팀개발실천기술l팀개발, 버전관리, 티켓관리, 지속적통합, 배포자동화(지속적 전달), 회귀테스트lkickstart, puppet 류의설정관리, capistrano 등의오케스트레이션 을골고루다루고있음

l린스타트업

•DevOps 인터넷lThe Top 11 Things You Need to Know About DevOps

l간략하게 Devops 에대한핵심적인내용을설명하고있음.

l출처 : http://itrevolution.com/11devops/

lhttp://www.slideshare.net/ds5apn/dev-ops-2013041801pdf 한글자료. KTH 에서의devops 경험담을담고있음. 주로자동화에촛점이맞추어져있음.

l2014 STATE OF DEVOPS REPORT http://puppetlabs.com/2014-devops-report

Page 68: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

참고자료

•애자일•실용주의프로그래머•애자일프랙티스

지속적인통합 (Continuous Integration)

•실용주의프로그래머를위한프로젝트자동화 : 빌드, 디플로이, 모니터링•자바프로젝트필수유틸리티 : Maven, TeamCity, Subversion, Trac

•윈도우프로젝트필수유틸리티: Subversion, Trac, CruiseControl.NET

•지속적인전달(Continuous Delivery)

•신뢰할수있는소프트웨어출시•성공으로이끄는팀개발실천기술

Page 69: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

참고자료

•Puppet

l초보자 : 시스템관리자를위한 Puppet3 (번역판)

l중고급자 : Pro Puppet 2’nd edition, Puppet cookbook

•자동화된인프라구축lBuilding an Automated Infrastructure (O’REILY Velocity 2008) :

lhttp://en.oreilly.com/velocity2008/public/schedule/detail/2238

lReliable, Repeatable, Reproducible Infrastructure

lhttp://sysadmin.miniconf.org/presentations08.html#02

lWeb Ops 2.0: Achieving Fully Automated Provisioning

lhttp://www.puppetlabs.com/wp-

content/uploads/2010/03/FullyAutomatedProvisioning_Whitepaper7.p

df

lScalable System Operations (O’REILY Velocity 2012)

lhttp://velocityconf.com/velocity2012/public/schedule/detail/23605

lUsing Open Source to Provide Infrastructure Services

lhttp://blog.mague.com/?p=552

lSysadmin study

Page 70: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

나가면서

•인문학, 철학, 과학을공부하자!!

•무엇이인간적인삶인가?

•어떻게살것인가?

•기술에만매몰되지말자. IT는인간을위한도구이다.

Page 71: DEVOPS 에 대한 전반적인 소개 및 자동화툴 소개

질의응답