Ndc17 DevOps? DevOps개발자? 북미에서의 6년Taehyun Kim많이 들어보기는 했지만 정작 무슨 일을 하는지는 감이 잘 안오는 DevOps. 왜 실리콘밸리의 구글과 같은 선도적인 기업들에서는 DevOps나 SRE(Site Reliability Engineering)조직이 생기는걸까?그 조직에서는 무슨 일을 하는지, 그 일이 왜 중요한지, 어떤 사람들이 그 곳에서 일을 하는지, 그들은 어떤 기술을 사용하고 어떤 커리어로 성장하는지에 대해 북미에서 6년간 DevOps팀에서 일한 경험을 바탕으로 50분 동안 청중들에게 그 이야기를 해보고자 합니다. 또, DevOps 개발자(엔지니어)가 되려면 무엇을 준비해야 하는지에 대해서도 짚어보려 합니다.
DevOps!! 도데체 왜, 어떻게 할까??Joseph Kim위메프에서 DevOps를 적용하기 위해서 공부하고 경험했던 내용을 정리한 자료입니다. DevOps를 왜 해야 하는 지, 그리고, 정확히 DevOps가 뭔지 이해하기 위해서 DevOps의 유래, CAMS/CALMS, 또, Gene Kim의 The three ways와 Patrick의 4 Areas에 대해서 설명하고 DevOps의 다양한 패턴에 대해서 설명했습니다.
그리고, Facebook, Flickr, Etsy, Netflix, Google에서는 어떻게 개발하고 배포 하는 지 사례를 설명 드리고 마지막엔 위메프에서 1년 동안 DevOps를 적용하기 위해 어떤 노력들을 했는 지 설명하려 노력했습니다.
DevOps를 적용하려 고민하는 분들께 조금이나마 도움이 되었으면 좋겠습니다.
[17.01.19] docker introduction (Korean Version)Ildoo KimDocker(도커) 소개를 위해 사용했던 자료입니다.
제가 속한 개발팀에서는 도커 컨테이너를 기반으로 개발부터 배포까지 가능한 환경 및 인프라를 구축하여 개발팀에서 대다수의 오퍼레이션까지 관여하면서 Devops 형태로 운영합니다.
Docker(도커)를 처음 사용하거나 개념적으로 익숙하지 않은 초보를 위해 만든 자료입니다.
슬라이드에서 사용된 스크립트/코드는 아래에 있습니다.
https://github.com/ildoonet/docker_introduction
----
김일두, Software Engineer @ Kakao
Github : https://github.com/ildoonet
Linkedin : https://www.linkedin.com/in/ildoo-kim-56962034/
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST_NHNent "TOAST Meetup 2015"
지난 11월 26일 NHN엔터테인먼트 플레이뮤지엄에서 진행되었던
TOAST Meetup 2015 컨퍼런스 발표 자료를 공유드립니다.
Session 4
"구름으로 구름 개발하기를 통해 알아보는 구름 해부하기" / 코다임 / 류성태
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스Dan Kang (강동한)Flitto는 초기부터 Node.js를 사용하여 서비스를 개발 및 운영하고 있습니다. 중국을 포함하여 글로벌 서비스를 운영하면서 여러가지 겪은 문제점과 고민, 그리고 그 해결방법에 대하여 발표합니다.
JBoss EAP on Azure Workshop rockplace2021년 12월 08일(수)
l 14:00 ~ 14:20 개발 & 인프라 소개
l 14:20 ~ 14:35 개발과 형상관리 (Github Action)
l 14:35 ~ 15:00 사용 인프라 (AZURE APP Service)
l 15:00 ~ 15:20 서비스 런칭 (Deploy & Service)
l 15:20 ~ 15:30 DevOps /Closing
속도체크knight1128This document compares different methods for measuring performance and timing logic in Java, including System.currentTimeMillis(), System.nanoTime(), the StopWatch class from Apache Commons Lang, and the StopWatch utility from Spring Core. Code examples are provided for each method to demonstrate how to use it and sample output is shown. The Spring and Commons StopWatch implementations are then compared in terms of functionality.
Scala Parallel CollectionsAleksandar ProkopecIntroduction to the Parallel Collection framework for data-parallel programming in Scala (from ScalaDays 2011).
Redis: Lua scripts - a primer and use casesRedis LabsItamar Haber, Chief Developer Advocate at Redis Labs talks about Lua, when to use it, how to use it and why it is so awesome with Redis.
[17.01.19] docker introduction (Korean Version)Ildoo KimDocker(도커) 소개를 위해 사용했던 자료입니다.
제가 속한 개발팀에서는 도커 컨테이너를 기반으로 개발부터 배포까지 가능한 환경 및 인프라를 구축하여 개발팀에서 대다수의 오퍼레이션까지 관여하면서 Devops 형태로 운영합니다.
Docker(도커)를 처음 사용하거나 개념적으로 익숙하지 않은 초보를 위해 만든 자료입니다.
슬라이드에서 사용된 스크립트/코드는 아래에 있습니다.
https://github.com/ildoonet/docker_introduction
----
김일두, Software Engineer @ Kakao
Github : https://github.com/ildoonet
Linkedin : https://www.linkedin.com/in/ildoo-kim-56962034/
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST_NHNent "TOAST Meetup 2015"
지난 11월 26일 NHN엔터테인먼트 플레이뮤지엄에서 진행되었던
TOAST Meetup 2015 컨퍼런스 발표 자료를 공유드립니다.
Session 4
"구름으로 구름 개발하기를 통해 알아보는 구름 해부하기" / 코다임 / 류성태
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스Dan Kang (강동한)Flitto는 초기부터 Node.js를 사용하여 서비스를 개발 및 운영하고 있습니다. 중국을 포함하여 글로벌 서비스를 운영하면서 여러가지 겪은 문제점과 고민, 그리고 그 해결방법에 대하여 발표합니다.
JBoss EAP on Azure Workshop rockplace2021년 12월 08일(수)
l 14:00 ~ 14:20 개발 & 인프라 소개
l 14:20 ~ 14:35 개발과 형상관리 (Github Action)
l 14:35 ~ 15:00 사용 인프라 (AZURE APP Service)
l 15:00 ~ 15:20 서비스 런칭 (Deploy & Service)
l 15:20 ~ 15:30 DevOps /Closing
속도체크knight1128This document compares different methods for measuring performance and timing logic in Java, including System.currentTimeMillis(), System.nanoTime(), the StopWatch class from Apache Commons Lang, and the StopWatch utility from Spring Core. Code examples are provided for each method to demonstrate how to use it and sample output is shown. The Spring and Commons StopWatch implementations are then compared in terms of functionality.
Scala Parallel CollectionsAleksandar ProkopecIntroduction to the Parallel Collection framework for data-parallel programming in Scala (from ScalaDays 2011).
Redis: Lua scripts - a primer and use casesRedis LabsItamar Haber, Chief Developer Advocate at Redis Labs talks about Lua, when to use it, how to use it and why it is so awesome with Redis.
Openstack Rally - Benchmark as a Service. Openstack Meetup India. Ananth/Rahul.Rahul Krishna Upadhyayaݺߣ deck used at the presentation at Openstack India Meetup on 01/March 2014 at Netapp, Bangalore. ݺߣ talks about installation and use of Rally and its scope to benchmark and measure performance. There is little on how to install Cisco Openstack as a All in One setup.
LinkedIn Data Infrastructure (QCon London 2012)Sid AnandLinkedIn uses DataBus to replicate data changes from Oracle in real-time. DataBus consists of relay and bootstrap services that capture changes from Oracle and distribute them to various services like search indexes, graphs, and read replicas to keep them updated in real-time. This allows users to immediately see profile updates or new connections in search results and feeds.
클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...Amazon Web Services Korea* 발표 영상 보기: https://youtu.be/mTbS1ddjTE0
최신 애플리케이션 개발에서 만났던 문제를 해결하기 위한 12가지 원칙(Twelve Factor)을 소개하고, 클라우드 네이티브 기반으로 접목해 AWS의 솔루션을 소개합니다. 2012년 이후 최근 동향을 포함한 신규 항목과 전체를 관통하는 앱 현대화를 위한 패턴도 함께 소개합니다. 본 세션은 AWS Summit Online의 보너스 세션으로 아마존 닷컴 CTO의 기조 연설과 47개의 다양한 강연 세션을 더 보실 수 있습니다.
SOSCON 2017 - Backend.AIJoongi Kim
Introduces a brief history and background of Backend.AI project, and technical details with a few key problem solving experiences.
Lablupconf session8 "Paving the road to AI-powered world"Lablup Inc.Lablup Conf 1st (Session4/Core)
"Paving the road to AI-powered world" - 김준기
- 발표내용
* Recap of Backend.AI history
* Future roadmap of Backend.AI for next 2 years
- 영상보러가기 : https://youtu.be/kAGSl99U0Bo
AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안 :: 김필중 :: AWS Summit Seoul 20Amazon Web Services Korea5월 17일 서울COEX에서 열린 AWS Summit Seoul 2016에서 김필중 솔루션즈 아키텍트 님이 발표하신 "AWS 기반의 마이크로 서비스 아키텍쳐 구현 방안" 발표자료입니다.
DevOps를 위한 AWS 서비스 및 개발도구 -김상필 솔루션아키텍트 :: AWS 파트너 테크시프트 세미나 Amazon Web Services Korea11월20일에 있었던 Partner Techshift에서 김 상필 솔루션즈 아키텍트가 발표한 'Dev Ops AWS Services ' 강연 발표자료입니다.
[OpenInfra Days Korea 2018] (Track 3) Software Defined Infrastructure 전략 및 사례OpenStack Korea Community상세 설명: https://event.openinfradays.kr/2018/session1/track_1_1
Cloud life seminar open shift,이준영(배포용)Software in Life이준영 (현 소프트웨어인라이프 연구원)
OpenShfit와 CSB.IO
인프라 비용을 절감하고 애플리케이션 개발속도를 향상 시킬 수 있는 방안으로 PaaS와 레드햇의 오픈 소스 솔루션인 OpenShift에 대하여 설명한다.
그리고, CSB.IO와 OpenShift의 미래 모습에 대해서도 소개한다.
- The Cloud Life Seminar 2014 발표 내용
[발표자료] 오픈소스 기반 클라우드 네이티브 애플리케이션 구축 방안 (feat. Kubernetes)Open Source Consulting[RedHat OpenShift to Kubernetes, 진짜 오픈소스로!]
멀티∙하이브리드 클라우드의 확산, 클라우드 네이티브 애플리케이션 증가, 그리고 데이터 및 보안
관리의 필요성 등의 다양한 이유로 PaaS(Platform as a Service) 도입이 가속화되고 있으나,
이에 반해 대표적인 외산 상용 솔루션 RedHat OpenShift는 상대적으로 비싼 가격과
높은 벤더 의존성으로 국내 기업이 도입하기에는 큰 부담이 되는 것이 사실입니다.
아래 영상을 통해 클라우드 네이티브 환경 구축에 왜 오픈소스를 활용해야 하는지,
상용 솔루션과 오픈소스 솔루션을 비교해보고, 특정 벤더 종속성에서 탈피하면서
동시에 비용 절감을 위한새로운 대안을 찾아보시기 바랍니다.
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)Amazon Web Services Korea이번 월간 웨비나에서는 AWS 클라우드를 통해 어떻게 손쉽게 소프트웨어를 개발하고, 배포하는 과정을 자동화 할 수 있는지를 알아 봅니다. 이를 위해 Amazon.com의 소프트웨어 개발 과정 상의 경험과 이를 토대로 만들어진 AWS CodeDeploy와 CodePipeline 서비스를 소개해 드리고, 이를 통해 EC2 인스턴스 뿐만 아니라 기존 서버에 손쉽게 배포하는 방법을 알려드립니다. 본 세션을 통해 클라우드를 통한 민첩하고 빠른 개발 및 배포를 통해 진화된 데브옵스(DevOps) 프로세스를 정립할 수 있는 방법을 안내해 드립니다.
Backend.AI: 오픈소스 머신러닝 인프라 프레임워크Jeongkyu ShinBackend.AI (https://backend.ai)는 클라우드 및 온-프레미스 환경에서 여러 사용자가 안전하고 효율적으로 컴퓨팅 자원을 공유할 수 있는 머신러닝에 특화된 인프라 관리 프레임워크입니다. 현재 널리 사용되고 있는 오픈소스 기술인 OpenStack, Kubernetes 등과 비교하여 어떤 특징과 차이점이 있는지 소개하고, 프레임워크의 구조와 기반 기술 및 응용 사례를 데모와 함께 소개합니다.
데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online SeriesAmazon Web Services Korea* 발표 동영상: https://youtu.be/xWSk3h4IlcY
데브옵스는 애플리케이션과 서비스를 빠른 속도로 제공할 수 있도록 조직의 역량을 향상시키는 문화 철학, 방식 및 도구의 조합입니다. 기존의 소프트웨어 개발 및 인프라 관리 프로세스를 사용하는 조직보다 제품을 더 빠르게 혁신하고 개선할 수 있도록 AWS 에서는 어떻게 도움 드릴 수 있는지 알아봅니다.
Apache Thriftknight1128Thrift is a software framework that allows for efficient cross-language communication. It provides features such as RPC, code generation, and serialization to make it easy to define and develop services that can be used across multiple languages. Supported languages include C++, Java, Python, PHP and more. Thrift handles low-level details like data serialization while providing an interface definition language to define services and data structures.
Spring MVC 3 Restfulknight1128Spring 3 MVC can be used to build RESTful web services. It supports annotations like @Controller, @RequestMapping and @PathVariable to map HTTP requests to controller methods. Requests and responses can be in various formats like JSON, XML, RSS using ContentNegotiatingViewResolver. Custom converters can be used to convert request parameters to Java objects. Exceptions can be handled using @ExceptionHandler.
Jersey frameworkknight1128The document summarizes Jersey Framework, a Java REST framework. It provides an overview of Jersey's features such as supporting JAX-RS APIs, Servlet 3.0, JSON/JAXB, and integration with Spring. A code sample demonstrates a simple "hello world" RESTful service using Jersey with annotations like @Path, @GET and @Produces. The document also covers additional Jersey concepts like request/response processing, URI building, exception handling, and security.
Jdk(java) 7 - 6 기타기능knight1128This document summarizes new features in JDK 7 including updates to XML stack, JDBC, RowSet, class loading, JVM performance improvements, garbage collection, I/O, graphics APIs, collections, and strict class file checking. It also previews planned features for JDK 8 such as support for modular programming, annotations, collections improvements, lambda expressions, and modularization.
Jdk 7 4-forkjoinknight1128This document discusses Fork/Join framework in Java 7. It explains that Fork/Join is designed to maximize usage of multiple processors by recursively splitting large tasks into smaller subtasks. It uses work-stealing algorithm where idle workers can steal tasks from busy workers' queues to balance load. An example of calculating Fibonacci numbers using Fork/Join is provided where the task is split recursively until the subproblem size is smaller than threshold, at which point it is computed directly.
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
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