SlideShare a Scribd company logo
1 of 26
김용환
#카카오스토리 #DevOps #Practical #CI/CD #NoSQL
카카오스토리의
DevOps 사례
1
순서
발표자 소개
카카오 스토리 소개
DevOps란?
카카오 스토리를 지탱하는 DevOps 환경
카카오 스토리의 테스트/배포 환경
2
발표자 소개
 공부용으로 김용환 블로그(http://knight76.tistory.com) 작성
 하루에 2,000 View 이상
 NIPA 소프트웨어공학센터 기고
 대용량 캐시/형상 관리/오픈 소스 거버넌스/WEB,WAS 표준화
 업무 : 임베디드, 웹/백엔드 개발, 플랫폼 기획/개발, WEB/WAS튜닝, 생산성
혁신활동(SQE), 서비스 개발, 클라우드
 다녀본 회사
3
발표자 소개 – 번역, 그림, 사진
 번역 출간 (7권)
 『Ansible 설정 관리』(2015),
 『ElasticSearch Cookbook 2/e』(2016),
 『Redis 핵심정리』(2016),
 『일래스틱서치 입문과 활용』(2016),
 『CentOS 7 리눅스 서버 쿡북』(2016),
 『하이브 핵심정리』(2017),
 『일래스틱서치 살펴보기』(2017.9 출간 예정)
 번역 출간 예정 (5권)
 High Performance Scala
 Fast Data Processing Systems with SMACK Stack
 Shell Programming in Unix, Linux and OS X
 Learning Cassandra
 Scala and Spark for Big Data Analytics
4
카카오 스토리 소개 5
2017 소셜 미디어 이용 행태 및
광고 접촉 태도 분석 보고(2017.7)
출처 : http://www.itworld.co.kr/news/105506
6
카카오 스토리 서버 개발 접근 방식
 기능(Function)
 데이터 모델링
 동작 구현/테스트
 Since(from/to)
 단순화
 트래픽(Traffic)
 캐시(Write Through/Write Back)
 용량(Capacity)
 샤딩(Sharding) 전략
 백업(Backup) 전략
• 지속적인 모니터링/로깅
• 고객 문의
• 마이그레이션(Migration)
• 양쪽 저장(Dual Write Functionality)
• 모델링
• NoSQL 성격에 맞게
• 생성일/변경일
• 반정규화(denormalization)
• 에러/성능/장애 튜닝
• Hotspotting
• 큰 장애가 오기 전에 신호가 옴. 미리 파악
해두는 것이 좋음(Cassandra/Hbase 사례)
평상시에 미리 공부를 하고 있어야 함
7
DevOps란?
 Dev과 Ops 조직이 하나로 구성
 일반적으로 명시된 역할 또는 직책의 범위를 넘어 서비스에 대한 완전한 주인의식을 갖음
 전체 개발과 인프라 수명 주기를 스스로의 책임으로 간주함
 빠른 속도로 서비스를 제공(Time To Market, 새로운 릴리즈의 더 낮은 실패율, 빠른 장애 복
구)
 조직의 역량을 향상시키는 문화, 철학, 도구의 조합
 반복적인 개선, 혁신
 효율적, 유지보수성이 높음 -> 속도,자동화(Automation) 강조
8
DevOps를 지탱하는 요소(발표자 관점)
 사람 : 능력이 있고 책임감을 갖고 있는 DevOps 개발자/
관리자(리더십)
 테스트/배포 환경 : 개발 산출물을 바로 빌드/ 배포할 수
있는 환경
 인프라 : 환경, 시스템, 지원 조직, 문화
사람
인프라
테스트 /
배포 환경
9
DevOps 툴 체인
계획
버전
콘트롤
빌드 테스트 배포 추적
• 자동화된 빌드 / 테스트 수행을 통해 지속적인 기능 추가, 품질
개선 시간이 단축
• 상용 환경 테스트 환경이 완료되면 언제든지 배포될 수 있는 배
포 환경
10
카카오 스토리 서버 환경
 대용량 트래픽과 빅 데이터를 처리
 스토리지 : 다양한 NoSQL(zookeeper, redis, memcached, resque, elasticsearch,
mongodb, cassandra, hbase, hadoop, kafka),
MySQL DB
 언어 : Java/Spring(주요 언어), Scala/Spark, Python, Ruby, R
 DevOps 개발자 인원 : 1x명
 QA 엔지니어 인원 : 없음
11
카카오 스토리 DevOps 환경
 API 서버
 배포 자동화 툴(로컬 배포 가능)
 빌드/테스트 환경
 로컬 / CI 서버
 지표 공유, 테스트, 배포, 모니터링 정보를 카카오톡으로 자동으로 받음
 업무 소통은 카카오톡으로 진행
 단위 및 회귀 테스팅 환경
12
카카오 스토리 DevOps 버전 콘트롤 환경
 소스 관리
 저장소 : GitHub
 브랜치 정책 : Git Flow와 Github Flow의 중간 상태
 Merge를 최소화하고 간결화한 상태
 브랜치 : develop/master/feature만 사용
 로컬/알파 환경 : develop
 베타/상용 환경 : master
13
카카오 스토리 DevOps 운영 환경
알파 상용베타
develop develop master master
14
일반 회사의 DevOps 테스팅 환경
 개발하기 어려운 상황
 특정 사람에 의존적
 테스팅 환경(CI)의 부재
 로컬 테스트 환경이 없음
 잘 모르는 운영 환경에 대한 두려움
 코드 따로 문서 따로
 상상 코딩 / 상상 배포 / 배포했다가 롤백하는 정책
개발은 더 이상 리팩토링을 하지 못하고
더 이상 개선하지 못하고 지속적인 발전을 이룰 수 없음
15
카카오 스토리 DevOps 테스팅 환경
 개발할 만한 환경
 테스팅 환경(CI)
 로컬 테스트 환경
 운영 환경을 미리 예상
 테스트 환경에서 충분한 테스트
 단위 테스트/회귀 테스트 코드는 DevOps가 직접 작성
 문서 업데이트 속도는 코드의 속도를 따라올 수 없어서 지금까지 정리된 문서와 코드를 각각 봐야하
는데, 테스트 코드는 문서화와 코드의 중간 가교 역할도 가능
Innovation!
16
최신 테스팅 추세 –
Specification by Example
 리빙 도큐멘테이션은..
 리빙 도큐멘테이션은 이해하기 쉬워야 한다
 리빙 도큐멘테이션은 일관성이 있어야 한다
 접근하기 쉽게 구성해야 한다
 명세의 변경 없이 검증 자동화하기
 테스트는 좋은 문서가 될 수 있다
 명세는 설명이 필요 없을 만큼 자명해야 한다
 최근 미국에서는 회귀 테스트, 기능 테스트라는 단
어 대신 Specification by Example이라 표현
17
로컬(PC) 테스트 환경
RSpec(based on Ruby)
카카오 스토리
서버 컴포넌트
18
RSpec
 Ruby 기반
 명세서는 자연어와 비슷하고 읽기 쉬어야 함
 명세서 기반의 BDD(Behaviour Driven
Development)
 Mocking 지원
 Open Stack( IaaS 형태의 클라우드 컴퓨팅 오
픈 소스 프로젝트)에서도 사용
19
RSpec 예제
it ’feed 테스트' do
user1.subscribe(”samuel”)
user2.subscribe(“alice”)
user1.make_friend(user2)
user1.post(“스토리 가입했다!”)
feed_result = user2.feed
expect(feed_result[0].content).to equal(“스토리 가입했다!”)
end
20
리눅스 테스팅 클러스터 환경
Docker
RSpec(based on Ruby)
자동 배포 (Continuous Deployment)
카카오 스토리
서버 컴포넌트
21
리눅스 테스팅 클러스터 환경
 웹과 앱 환경에 맞춰진 테스팅 환경 구성
 개발 환경/상용 환경은 다르게 구성
 다양한 git 브랜치 테스트 가능
 테스트 서버 확장성
 빠른 속도
22
리눅스 테스팅 클러스터 자동화 환경
버전 콘트롤 저장소
소스 커밋
개발자
알림
빌드/
유닛 테스트
Continuous Integration
빌드/유닛 테스트
성공
빌드/유닛 테스트
실패
3,000+ 회귀 테스트
회귀 테스트 실패 서버(알파) 배포
10분
23
회귀 테스트 최적화 방법
소스 변경시
젠킨스 실행
자바 소스 컴파일,
도커에 자바 빌드
산출물 복사
RSpec 테스트 RSpec 결과 수집
도커 이미지 생성과
컴포넌트 추가
도커 이미지를 도커
사설 저장소에 저장
젠킨스 서버에
도커 이미지 배포
젠킨스 테스트
도커 사설
저장소
워커 장비
버전 콘트롤
저장소
업로드 도커 이미지 배포
테스트 실행
소스 다운로드
테스트용 도커 이미지 생성
도커 다운로드
테스트 결과 얻음
24
회귀 테스트 최적화 방법 - 아키텍처
#group1
1. 빌드/유닛 테스트 완료
젠킨스 회귀 테스트
Multi-job
젠킨스 플러그인
Worker-1-1
Worker-1-1
Worker-1-1
Worker-1-1
Worker-1-1
#group2
Worker-1-1
Worker-1-1
Worker-1-1
Worker-1-1
Worker-1-1
#group N
Worker-1-1
Worker-1-1
Worker-1-1
Worker-1-1
Worker-1-1
4. Job(도커 기반 RSpec) 실행
5. 각 Job의 부분 테스트 결과를 저장
서버(알파) 배포
6. 결과 집계
2. 플러그인 실행
테스트 장비
7. 성공하면
배포
3. 이전 테스트 정보를 기반으로
미리 분배된 Job 정보를 읽음
25
감사합니다
26

More Related Content

What's hot

DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기SeungYong Baek
 
[122]네이버의모던웹라이브러리 박재성
[122]네이버의모던웹라이브러리 박재성[122]네이버의모던웹라이브러리 박재성
[122]네이버의모던웹라이브러리 박재성NAVER D2
 
[오픈소스컨설팅]인프라 자동화 도구 Chef
[오픈소스컨설팅]인프라 자동화 도구  Chef[오픈소스컨설팅]인프라 자동화 도구  Chef
[오픈소스컨설팅]인프라 자동화 도구 ChefOpen Source Consulting
 
[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)Ildoo Kim
 
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화KTH, 케이티하이텔
 
FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발현승 배
 
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST_NHNent
 
Quic을 이용한 네트워크 성능 개선
 Quic을 이용한 네트워크 성능 개선 Quic을 이용한 네트워크 성능 개선
Quic을 이용한 네트워크 성능 개선NAVER D2
 
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스Dan Kang (강동한)
 
[233]멀티테넌트하둡클러스터 남경완
[233]멀티테넌트하둡클러스터 남경완[233]멀티테넌트하둡클러스터 남경완
[233]멀티테넌트하둡클러스터 남경완NAVER D2
 
JBoss EAP on Azure Workshop
JBoss EAP on Azure Workshop JBoss EAP on Azure Workshop
JBoss EAP on Azure Workshop rockplace
 
Nginx Testing in NAVER
Nginx Testing in NAVERNginx Testing in NAVER
Nginx Testing in NAVER형근 송
 
[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영NAVER D2
 
김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15Chanwoong Kim
 
Spring Framework 튜토리얼 - 네이버 최영목님
Spring Framework 튜토리얼 - 네이버 최영목님Spring Framework 튜토리얼 - 네이버 최영목님
Spring Framework 튜토리얼 - 네이버 최영목님NAVER D2
 

What's hot (17)

Docker osc 0508
Docker osc 0508Docker osc 0508
Docker osc 0508
 
DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기DevOps - CI/CD 알아보기
DevOps - CI/CD 알아보기
 
[122]네이버의모던웹라이브러리 박재성
[122]네이버의모던웹라이브러리 박재성[122]네이버의모던웹라이브러리 박재성
[122]네이버의모던웹라이브러리 박재성
 
[오픈소스컨설팅]인프라 자동화 도구 Chef
[오픈소스컨설팅]인프라 자동화 도구  Chef[오픈소스컨설팅]인프라 자동화 도구  Chef
[오픈소스컨설팅]인프라 자동화 도구 Chef
 
[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)
 
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화
[H3 2012] 앱(APP) 중심으로 생각하기 - DevOps와 자동화
 
FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발
 
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
 
Quic을 이용한 네트워크 성능 개선
 Quic을 이용한 네트워크 성능 개선 Quic을 이용한 네트워크 성능 개선
Quic을 이용한 네트워크 성능 개선
 
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
 
[233]멀티테넌트하둡클러스터 남경완
[233]멀티테넌트하둡클러스터 남경완[233]멀티테넌트하둡클러스터 남경완
[233]멀티테넌트하둡클러스터 남경완
 
Docker Container
Docker ContainerDocker Container
Docker Container
 
JBoss EAP on Azure Workshop
JBoss EAP on Azure Workshop JBoss EAP on Azure Workshop
JBoss EAP on Azure Workshop
 
Nginx Testing in NAVER
Nginx Testing in NAVERNginx Testing in NAVER
Nginx Testing in NAVER
 
[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영
 
김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15김찬웅_그룹웨어에 새 에너지를_NDC15
김찬웅_그룹웨어에 새 에너지를_NDC15
 
Spring Framework 튜토리얼 - 네이버 최영목님
Spring Framework 튜토리얼 - 네이버 최영목님Spring Framework 튜토리얼 - 네이버 최영목님
Spring Framework 튜토리얼 - 네이버 최영목님
 

Viewers also liked

Let's Go (golang)
Let's Go (golang)Let's Go (golang)
Let's Go (golang)상욱 송
 
Redis: Lua scripts - a primer and use cases
Redis: Lua scripts - a primer and use casesRedis: Lua scripts - a primer and use cases
Redis: Lua scripts - a primer and use casesRedis Labs
 
Openstack Rally - Benchmark as a Service. Openstack Meetup India. Ananth/Rahul.
Openstack Rally - Benchmark as a Service. Openstack Meetup India. Ananth/Rahul.Openstack Rally - Benchmark as a Service. Openstack Meetup India. Ananth/Rahul.
Openstack Rally - Benchmark as a Service. Openstack Meetup India. Ananth/Rahul.Rahul Krishna Upadhyaya
 
LinkedIn Data Infrastructure (QCon London 2012)
LinkedIn Data Infrastructure (QCon London 2012)LinkedIn Data Infrastructure (QCon London 2012)
LinkedIn Data Infrastructure (QCon London 2012)Sid Anand
 

Viewers also liked (8)

속도체크
속도체크속도체크
속도체크
 
ScalaBlitz
ScalaBlitzScalaBlitz
ScalaBlitz
 
Scala Parallel Collections
Scala Parallel CollectionsScala Parallel Collections
Scala Parallel Collections
 
Let's Go (golang)
Let's Go (golang)Let's Go (golang)
Let's Go (golang)
 
Redis: Lua scripts - a primer and use cases
Redis: Lua scripts - a primer and use casesRedis: Lua scripts - a primer and use cases
Redis: Lua scripts - a primer and use cases
 
Openstack Rally - Benchmark as a Service. Openstack Meetup India. Ananth/Rahul.
Openstack Rally - Benchmark as a Service. Openstack Meetup India. Ananth/Rahul.Openstack Rally - Benchmark as a Service. Openstack Meetup India. Ananth/Rahul.
Openstack Rally - Benchmark as a Service. Openstack Meetup India. Ananth/Rahul.
 
Redis
RedisRedis
Redis
 
LinkedIn Data Infrastructure (QCon London 2012)
LinkedIn Data Infrastructure (QCon London 2012)LinkedIn Data Infrastructure (QCon London 2012)
LinkedIn Data Infrastructure (QCon London 2012)
 

Similar to Hancom MDS Conference - KAKAO DEVOPS Practice (카카오 스토리의 Devops 사례)

소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해Terry Cho
 
올챙이로 살펴보는 개발툴과 Cloud
올챙이로 살펴보는 개발툴과 Cloud올챙이로 살펴보는 개발툴과 Cloud
올챙이로 살펴보는 개발툴과 Cloudcho hyun jong
 
클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...
클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...
클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...Amazon Web Services Korea
 
SOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AISOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AIJoongi Kim
 
세션5_데보션테크데이_1_MSA와 오픈소스의 중요성 - OSC Korea(이제응) - v2...
세션5_데보션테크데이_1_MSA와 오픈소스의 중요성 - OSC Korea(이제응) - v2...세션5_데보션테크데이_1_MSA와 오픈소스의 중요성 - OSC Korea(이제응) - v2...
세션5_데보션테크데이_1_MSA와 오픈소스의 중요성 - OSC Korea(이제응) - v2...Jaesuk Ahn
 
Lablupconf session8 "Paving the road to AI-powered world"
Lablupconf session8 "Paving the road to AI-powered world"Lablupconf session8 "Paving the road to AI-powered world"
Lablupconf session8 "Paving the road to AI-powered world"Lablup Inc.
 
Intro to hpe helion stackato_paa_s
Intro to hpe helion stackato_paa_sIntro to hpe helion stackato_paa_s
Intro to hpe helion stackato_paa_sSeong-Bok Lee
 
[오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1
[오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1[오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1
[오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1Ji-Woong Choi
 
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20Amazon Web Services Korea
 
DevOps를 위한 AWS 서비스 및 개발도구 -김상필 솔루션아키텍트 :: AWS 파트너 테크시프트 세미나
DevOps를 위한 AWS 서비스 및 개발도구  -김상필 솔루션아키텍트 :: AWS 파트너 테크시프트 세미나 DevOps를 위한 AWS 서비스 및 개발도구  -김상필 솔루션아키텍트 :: AWS 파트너 테크시프트 세미나
DevOps를 위한 AWS 서비스 및 개발도구 -김상필 솔루션아키텍트 :: AWS 파트너 테크시프트 세미나 Amazon Web Services Korea
 
[OpenInfra Days Korea 2018] (Track 3) Software Defined Infrastructure 전략 및 사례
[OpenInfra Days Korea 2018] (Track 3) Software Defined Infrastructure 전략 및 사례[OpenInfra Days Korea 2018] (Track 3) Software Defined Infrastructure 전략 및 사례
[OpenInfra Days Korea 2018] (Track 3) Software Defined Infrastructure 전략 및 사례OpenStack Korea Community
 
Unionweb프로젝트
Unionweb프로젝트Unionweb프로젝트
Unionweb프로젝트Dong-Jin Park
 
Cloud life seminar open shift,이준영(배포용)
Cloud life seminar   open shift,이준영(배포용)Cloud life seminar   open shift,이준영(배포용)
Cloud life seminar open shift,이준영(배포용)Software in Life
 
4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴Terry Cho
 
삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdf삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdfSeung kyoo Park
 
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)Amazon Web Services Korea
 
오픈스택데이 오픈소스PaaS 솔루션 - openshift 소개
오픈스택데이   오픈소스PaaS 솔루션 - openshift 소개오픈스택데이   오픈소스PaaS 솔루션 - openshift 소개
오픈스택데이 오픈소스PaaS 솔루션 - openshift 소개Hojoong Kim
 
Backend.AI: 오픈소스 머신러닝 인프라 프레임워크
Backend.AI: 오픈소스 머신러닝 인프라 프레임워크Backend.AI: 오픈소스 머신러닝 인프라 프레임워크
Backend.AI: 오픈소스 머신러닝 인프라 프레임워크Jeongkyu Shin
 
데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series
데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series
데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online SeriesAmazon Web Services Korea
 
인프라 자동 배포를 위한 AWS CloudFormation 고급 활용법 - AWS Summit Seoul 2017
인프라 자동 배포를 위한 AWS CloudFormation 고급 활용법 - AWS Summit Seoul 2017인프라 자동 배포를 위한 AWS CloudFormation 고급 활용법 - AWS Summit Seoul 2017
인프라 자동 배포를 위한 AWS CloudFormation 고급 활용법 - AWS Summit Seoul 2017Amazon Web Services Korea
 

Similar to Hancom MDS Conference - KAKAO DEVOPS Practice (카카오 스토리의 Devops 사례) (20)

소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
 
올챙이로 살펴보는 개발툴과 Cloud
올챙이로 살펴보는 개발툴과 Cloud올챙이로 살펴보는 개발툴과 Cloud
올챙이로 살펴보는 개발툴과 Cloud
 
클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...
클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...
클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...
 
SOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AISOSCON 2017 - Backend.AI
SOSCON 2017 - Backend.AI
 
세션5_데보션테크데이_1_MSA와 오픈소스의 중요성 - OSC Korea(이제응) - v2...
세션5_데보션테크데이_1_MSA와 오픈소스의 중요성 - OSC Korea(이제응) - v2...세션5_데보션테크데이_1_MSA와 오픈소스의 중요성 - OSC Korea(이제응) - v2...
세션5_데보션테크데이_1_MSA와 오픈소스의 중요성 - OSC Korea(이제응) - v2...
 
Lablupconf session8 "Paving the road to AI-powered world"
Lablupconf session8 "Paving the road to AI-powered world"Lablupconf session8 "Paving the road to AI-powered world"
Lablupconf session8 "Paving the road to AI-powered world"
 
Intro to hpe helion stackato_paa_s
Intro to hpe helion stackato_paa_sIntro to hpe helion stackato_paa_s
Intro to hpe helion stackato_paa_s
 
[오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1
[오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1[오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1
[오픈소스컨설팅]오픈소스 클라우드 개발플랫폼_및_Docker의_이해_v1
 
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20
 
DevOps를 위한 AWS 서비스 및 개발도구 -김상필 솔루션아키텍트 :: AWS 파트너 테크시프트 세미나
DevOps를 위한 AWS 서비스 및 개발도구  -김상필 솔루션아키텍트 :: AWS 파트너 테크시프트 세미나 DevOps를 위한 AWS 서비스 및 개발도구  -김상필 솔루션아키텍트 :: AWS 파트너 테크시프트 세미나
DevOps를 위한 AWS 서비스 및 개발도구 -김상필 솔루션아키텍트 :: AWS 파트너 테크시프트 세미나
 
[OpenInfra Days Korea 2018] (Track 3) Software Defined Infrastructure 전략 및 사례
[OpenInfra Days Korea 2018] (Track 3) Software Defined Infrastructure 전략 및 사례[OpenInfra Days Korea 2018] (Track 3) Software Defined Infrastructure 전략 및 사례
[OpenInfra Days Korea 2018] (Track 3) Software Defined Infrastructure 전략 및 사례
 
Unionweb프로젝트
Unionweb프로젝트Unionweb프로젝트
Unionweb프로젝트
 
Cloud life seminar open shift,이준영(배포용)
Cloud life seminar   open shift,이준영(배포용)Cloud life seminar   open shift,이준영(배포용)
Cloud life seminar open shift,이준영(배포용)
 
4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴
 
삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdf삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdf
 
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)
 
오픈스택데이 오픈소스PaaS 솔루션 - openshift 소개
오픈스택데이   오픈소스PaaS 솔루션 - openshift 소개오픈스택데이   오픈소스PaaS 솔루션 - openshift 소개
오픈스택데이 오픈소스PaaS 솔루션 - openshift 소개
 
Backend.AI: 오픈소스 머신러닝 인프라 프레임워크
Backend.AI: 오픈소스 머신러닝 인프라 프레임워크Backend.AI: 오픈소스 머신러닝 인프라 프레임워크
Backend.AI: 오픈소스 머신러닝 인프라 프레임워크
 
데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series
데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series
데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series
 
인프라 자동 배포를 위한 AWS CloudFormation 고급 활용법 - AWS Summit Seoul 2017
인프라 자동 배포를 위한 AWS CloudFormation 고급 활용법 - AWS Summit Seoul 2017인프라 자동 배포를 위한 AWS CloudFormation 고급 활용법 - AWS Summit Seoul 2017
인프라 자동 배포를 위한 AWS CloudFormation 고급 활용법 - AWS Summit Seoul 2017
 

More from knight1128

Spring MVC 3 Restful
Spring MVC 3 RestfulSpring MVC 3 Restful
Spring MVC 3 Restfulknight1128
 
Jersey framework
Jersey frameworkJersey framework
Jersey frameworkknight1128
 
Google Protocol buffer
Google Protocol bufferGoogle Protocol buffer
Google Protocol bufferknight1128
 
Jdk(java) 7 - 5. invoke-dynamic
Jdk(java) 7 - 5. invoke-dynamicJdk(java) 7 - 5. invoke-dynamic
Jdk(java) 7 - 5. invoke-dynamicknight1128
 
Jdk(java) 7 - 6 기타기능
Jdk(java) 7 - 6 기타기능Jdk(java) 7 - 6 기타기능
Jdk(java) 7 - 6 기타기능knight1128
 
Jdk 7 4-forkjoin
Jdk 7 4-forkjoinJdk 7 4-forkjoin
Jdk 7 4-forkjoinknight1128
 
공유 Jdk 7-2-project coin
공유 Jdk 7-2-project coin공유 Jdk 7-2-project coin
공유 Jdk 7-2-project coinknight1128
 
공유 Jdk 7-1-short introduction
공유 Jdk 7-1-short introduction공유 Jdk 7-1-short introduction
공유 Jdk 7-1-short introductionknight1128
 
아마존 Aws 서비스_연구
아마존 Aws 서비스_연구아마존 Aws 서비스_연구
아마존 Aws 서비스_연구knight1128
 
구글크롬Os
구글크롬Os구글크롬Os
구글크롬Osknight1128
 
하이브리드앱
하이브리드앱하이브리드앱
하이브리드앱knight1128
 
오픈소스를 활용한 Batch_처리_플랫폼_공유
오픈소스를 활용한 Batch_처리_플랫폼_공유오픈소스를 활용한 Batch_처리_플랫폼_공유
오픈소스를 활용한 Batch_처리_플랫폼_공유knight1128
 
Ssl 하드웨어 가속기를 이용한 성능 향상
Ssl 하드웨어 가속기를 이용한 성능 향상Ssl 하드웨어 가속기를 이용한 성능 향상
Ssl 하드웨어 가속기를 이용한 성능 향상knight1128
 

More from knight1128 (17)

Comet
CometComet
Comet
 
Apache avro
Apache avroApache avro
Apache avro
 
Apache Thrift
Apache ThriftApache Thrift
Apache Thrift
 
Spring MVC 3 Restful
Spring MVC 3 RestfulSpring MVC 3 Restful
Spring MVC 3 Restful
 
Jersey framework
Jersey frameworkJersey framework
Jersey framework
 
Google Protocol buffer
Google Protocol bufferGoogle Protocol buffer
Google Protocol buffer
 
Jdk(java) 7 - 5. invoke-dynamic
Jdk(java) 7 - 5. invoke-dynamicJdk(java) 7 - 5. invoke-dynamic
Jdk(java) 7 - 5. invoke-dynamic
 
Jdk(java) 7 - 6 기타기능
Jdk(java) 7 - 6 기타기능Jdk(java) 7 - 6 기타기능
Jdk(java) 7 - 6 기타기능
 
Jdk 7 4-forkjoin
Jdk 7 4-forkjoinJdk 7 4-forkjoin
Jdk 7 4-forkjoin
 
Jdk 7 3-nio2
Jdk 7 3-nio2Jdk 7 3-nio2
Jdk 7 3-nio2
 
공유 Jdk 7-2-project coin
공유 Jdk 7-2-project coin공유 Jdk 7-2-project coin
공유 Jdk 7-2-project coin
 
공유 Jdk 7-1-short introduction
공유 Jdk 7-1-short introduction공유 Jdk 7-1-short introduction
공유 Jdk 7-1-short introduction
 
아마존 Aws 서비스_연구
아마존 Aws 서비스_연구아마존 Aws 서비스_연구
아마존 Aws 서비스_연구
 
구글크롬Os
구글크롬Os구글크롬Os
구글크롬Os
 
하이브리드앱
하이브리드앱하이브리드앱
하이브리드앱
 
오픈소스를 활용한 Batch_처리_플랫폼_공유
오픈소스를 활용한 Batch_처리_플랫폼_공유오픈소스를 활용한 Batch_처리_플랫폼_공유
오픈소스를 활용한 Batch_처리_플랫폼_공유
 
Ssl 하드웨어 가속기를 이용한 성능 향상
Ssl 하드웨어 가속기를 이용한 성능 향상Ssl 하드웨어 가속기를 이용한 성능 향상
Ssl 하드웨어 가속기를 이용한 성능 향상
 

Recently uploaded

MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionKim Daeun
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Wonjun Hwang
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Kim Daeun
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Wonjun Hwang
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)Tae Young Lee
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스
 

Recently uploaded (6)

MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 

Hancom MDS Conference - KAKAO DEVOPS Practice (카카오 스토리의 Devops 사례)

  • 1. 김용환 #카카오스토리 #DevOps #Practical #CI/CD #NoSQL 카카오스토리의 DevOps 사례 1
  • 2. 순서 발표자 소개 카카오 스토리 소개 DevOps란? 카카오 스토리를 지탱하는 DevOps 환경 카카오 스토리의 테스트/배포 환경 2
  • 3. 발표자 소개  공부용으로 김용환 블로그(http://knight76.tistory.com) 작성  하루에 2,000 View 이상  NIPA 소프트웨어공학센터 기고  대용량 캐시/형상 관리/오픈 소스 거버넌스/WEB,WAS 표준화  업무 : 임베디드, 웹/백엔드 개발, 플랫폼 기획/개발, WEB/WAS튜닝, 생산성 혁신활동(SQE), 서비스 개발, 클라우드  다녀본 회사 3
  • 4. 발표자 소개 – 번역, 그림, 사진  번역 출간 (7권)  『Ansible 설정 관리』(2015),  『ElasticSearch Cookbook 2/e』(2016),  『Redis 핵심정리』(2016),  『일래스틱서치 입문과 활용』(2016),  『CentOS 7 리눅스 서버 쿡북』(2016),  『하이브 핵심정리』(2017),  『일래스틱서치 살펴보기』(2017.9 출간 예정)  번역 출간 예정 (5권)  High Performance Scala  Fast Data Processing Systems with SMACK Stack  Shell Programming in Unix, Linux and OS X  Learning Cassandra  Scala and Spark for Big Data Analytics 4
  • 6. 2017 소셜 미디어 이용 행태 및 광고 접촉 태도 분석 보고(2017.7) 출처 : http://www.itworld.co.kr/news/105506 6
  • 7. 카카오 스토리 서버 개발 접근 방식  기능(Function)  데이터 모델링  동작 구현/테스트  Since(from/to)  단순화  트래픽(Traffic)  캐시(Write Through/Write Back)  용량(Capacity)  샤딩(Sharding) 전략  백업(Backup) 전략 • 지속적인 모니터링/로깅 • 고객 문의 • 마이그레이션(Migration) • 양쪽 저장(Dual Write Functionality) • 모델링 • NoSQL 성격에 맞게 • 생성일/변경일 • 반정규화(denormalization) • 에러/성능/장애 튜닝 • Hotspotting • 큰 장애가 오기 전에 신호가 옴. 미리 파악 해두는 것이 좋음(Cassandra/Hbase 사례) 평상시에 미리 공부를 하고 있어야 함 7
  • 8. DevOps란?  Dev과 Ops 조직이 하나로 구성  일반적으로 명시된 역할 또는 직책의 범위를 넘어 서비스에 대한 완전한 주인의식을 갖음  전체 개발과 인프라 수명 주기를 스스로의 책임으로 간주함  빠른 속도로 서비스를 제공(Time To Market, 새로운 릴리즈의 더 낮은 실패율, 빠른 장애 복 구)  조직의 역량을 향상시키는 문화, 철학, 도구의 조합  반복적인 개선, 혁신  효율적, 유지보수성이 높음 -> 속도,자동화(Automation) 강조 8
  • 9. DevOps를 지탱하는 요소(발표자 관점)  사람 : 능력이 있고 책임감을 갖고 있는 DevOps 개발자/ 관리자(리더십)  테스트/배포 환경 : 개발 산출물을 바로 빌드/ 배포할 수 있는 환경  인프라 : 환경, 시스템, 지원 조직, 문화 사람 인프라 테스트 / 배포 환경 9
  • 10. DevOps 툴 체인 계획 버전 콘트롤 빌드 테스트 배포 추적 • 자동화된 빌드 / 테스트 수행을 통해 지속적인 기능 추가, 품질 개선 시간이 단축 • 상용 환경 테스트 환경이 완료되면 언제든지 배포될 수 있는 배 포 환경 10
  • 11. 카카오 스토리 서버 환경  대용량 트래픽과 빅 데이터를 처리  스토리지 : 다양한 NoSQL(zookeeper, redis, memcached, resque, elasticsearch, mongodb, cassandra, hbase, hadoop, kafka), MySQL DB  언어 : Java/Spring(주요 언어), Scala/Spark, Python, Ruby, R  DevOps 개발자 인원 : 1x명  QA 엔지니어 인원 : 없음 11
  • 12. 카카오 스토리 DevOps 환경  API 서버  배포 자동화 툴(로컬 배포 가능)  빌드/테스트 환경  로컬 / CI 서버  지표 공유, 테스트, 배포, 모니터링 정보를 카카오톡으로 자동으로 받음  업무 소통은 카카오톡으로 진행  단위 및 회귀 테스팅 환경 12
  • 13. 카카오 스토리 DevOps 버전 콘트롤 환경  소스 관리  저장소 : GitHub  브랜치 정책 : Git Flow와 Github Flow의 중간 상태  Merge를 최소화하고 간결화한 상태  브랜치 : develop/master/feature만 사용  로컬/알파 환경 : develop  베타/상용 환경 : master 13
  • 14. 카카오 스토리 DevOps 운영 환경 알파 상용베타 develop develop master master 14
  • 15. 일반 회사의 DevOps 테스팅 환경  개발하기 어려운 상황  특정 사람에 의존적  테스팅 환경(CI)의 부재  로컬 테스트 환경이 없음  잘 모르는 운영 환경에 대한 두려움  코드 따로 문서 따로  상상 코딩 / 상상 배포 / 배포했다가 롤백하는 정책 개발은 더 이상 리팩토링을 하지 못하고 더 이상 개선하지 못하고 지속적인 발전을 이룰 수 없음 15
  • 16. 카카오 스토리 DevOps 테스팅 환경  개발할 만한 환경  테스팅 환경(CI)  로컬 테스트 환경  운영 환경을 미리 예상  테스트 환경에서 충분한 테스트  단위 테스트/회귀 테스트 코드는 DevOps가 직접 작성  문서 업데이트 속도는 코드의 속도를 따라올 수 없어서 지금까지 정리된 문서와 코드를 각각 봐야하 는데, 테스트 코드는 문서화와 코드의 중간 가교 역할도 가능 Innovation! 16
  • 17. 최신 테스팅 추세 – Specification by Example  리빙 도큐멘테이션은..  리빙 도큐멘테이션은 이해하기 쉬워야 한다  리빙 도큐멘테이션은 일관성이 있어야 한다  접근하기 쉽게 구성해야 한다  명세의 변경 없이 검증 자동화하기  테스트는 좋은 문서가 될 수 있다  명세는 설명이 필요 없을 만큼 자명해야 한다  최근 미국에서는 회귀 테스트, 기능 테스트라는 단 어 대신 Specification by Example이라 표현 17
  • 18. 로컬(PC) 테스트 환경 RSpec(based on Ruby) 카카오 스토리 서버 컴포넌트 18
  • 19. RSpec  Ruby 기반  명세서는 자연어와 비슷하고 읽기 쉬어야 함  명세서 기반의 BDD(Behaviour Driven Development)  Mocking 지원  Open Stack( IaaS 형태의 클라우드 컴퓨팅 오 픈 소스 프로젝트)에서도 사용 19
  • 20. RSpec 예제 it ’feed 테스트' do user1.subscribe(”samuel”) user2.subscribe(“alice”) user1.make_friend(user2) user1.post(“스토리 가입했다!”) feed_result = user2.feed expect(feed_result[0].content).to equal(“스토리 가입했다!”) end 20
  • 21. 리눅스 테스팅 클러스터 환경 Docker RSpec(based on Ruby) 자동 배포 (Continuous Deployment) 카카오 스토리 서버 컴포넌트 21
  • 22. 리눅스 테스팅 클러스터 환경  웹과 앱 환경에 맞춰진 테스팅 환경 구성  개발 환경/상용 환경은 다르게 구성  다양한 git 브랜치 테스트 가능  테스트 서버 확장성  빠른 속도 22
  • 23. 리눅스 테스팅 클러스터 자동화 환경 버전 콘트롤 저장소 소스 커밋 개발자 알림 빌드/ 유닛 테스트 Continuous Integration 빌드/유닛 테스트 성공 빌드/유닛 테스트 실패 3,000+ 회귀 테스트 회귀 테스트 실패 서버(알파) 배포 10분 23
  • 24. 회귀 테스트 최적화 방법 소스 변경시 젠킨스 실행 자바 소스 컴파일, 도커에 자바 빌드 산출물 복사 RSpec 테스트 RSpec 결과 수집 도커 이미지 생성과 컴포넌트 추가 도커 이미지를 도커 사설 저장소에 저장 젠킨스 서버에 도커 이미지 배포 젠킨스 테스트 도커 사설 저장소 워커 장비 버전 콘트롤 저장소 업로드 도커 이미지 배포 테스트 실행 소스 다운로드 테스트용 도커 이미지 생성 도커 다운로드 테스트 결과 얻음 24
  • 25. 회귀 테스트 최적화 방법 - 아키텍처 #group1 1. 빌드/유닛 테스트 완료 젠킨스 회귀 테스트 Multi-job 젠킨스 플러그인 Worker-1-1 Worker-1-1 Worker-1-1 Worker-1-1 Worker-1-1 #group2 Worker-1-1 Worker-1-1 Worker-1-1 Worker-1-1 Worker-1-1 #group N Worker-1-1 Worker-1-1 Worker-1-1 Worker-1-1 Worker-1-1 4. Job(도커 기반 RSpec) 실행 5. 각 Job의 부분 테스트 결과를 저장 서버(알파) 배포 6. 결과 집계 2. 플러그인 실행 테스트 장비 7. 성공하면 배포 3. 이전 테스트 정보를 기반으로 미리 분배된 Job 정보를 읽음 25