SlideShare a Scribd company logo
1 of 29
Download to read offline
R 프로덕트의 개발과 배포
김대영
RUCK 2017
R 프로덕트의 개발과 배포
김대영
인생 첫 복리효과
RUCK 2017
“복리야말로 인간의 가장 위대한 발명”
“세상의 8번째 불가사의”
2
1. 혼자 버둥거리는 이야기
~ 2014 / 8
산업 및 시스템 공학
feat. 전기및전자공학
R알못
전문연구요원
2014 / 8 ~
•R알못 + MATLAB (X) + 시급한 비즈니스 지원
•엑셀로 데이터 분석 & 시각화
•분석은 많은 반복 과정 필요
•비효율적인 작업
•극복을 위해 R을 틈틈히 학습
입사 후 첫 번째 고난 : 도구 없이 시작
도구 장착: R
•기본적인 문법은 비교적 수월
•첫 번째 고민
•직접 짜야할까? 이미 구현된 걸 찾아서 써야할까?
•‘찾느니 그 시간에 짰겠다’ 생각이 새로운 도구 학습 속도 제한
•(게을러서) 더 좋은 도구 틈틈히 계속 찾음
•활용도가 높은 패키지를 중심으로 학습 성공
작업을 처리하는 도구: 스크립트
패키지 로딩
데이터 import
데이터 정제/변환
분석
결과 export
<이 당시의 코드 형태>
작업 A
배포
개발
작업 B
배포
개발
<이 당시의 개발과 배포의 범위>
특정 작업에만 유용

‘키위 깎는 용도의 칼’
시간
일하는 나
작업 요구
도구
산출물
일하는 나
작업 요구
도구
산출물
복리의 비밀 - 김창준
http://agile.egloos.com/2854698
전체적인 작업의 흐름
외부의 요구를 그때 그때
현재의 생산성 -> 미래의 생산성 (x)
R vs Excel .. ?
핵심은 재활용!
•또 다시 ‘high 게으름 low 참을성’이 열일
•현재 시점/환경만을 고려한 개발/배포

(결과적으로 나는 이득이 없고, 요구자만 이득)
•미래 시점/환경까지 고려하는 개발/배포

(나도, 요구자도 이득)
•다시 쓸 가능성이 있도록 작업 방식을 바꿔보자! 

(미래의 나를 가엾게 여기기 + 미래의 요구자도 혜택)
-> 넓은 배포: 혜택을 입는 대상/수준 증가
-> 좁은 배포: 혜택을 입는 대상/수준 한정적
배포 범위를 넓히기 첫 시도: 함수 만들기
•프로그래밍 교육에서 매우 강조하는 개념

(많은 사람들이 시도하고 활용)
•대표적인 효과는 반복을 제거

(20줄 짜리 코드를 함수로 정의한 상황, 

해당 함수 기능이 필요한 작업마다 근 20줄 코드만큼의 반복이 제거되는 효과)
•그러나 모든 ‘함수화’가 유용한 것은 아님

(쓰이지 않는 형태로 함수화하면 무용함)

(예: 스크립트 전체를 함수로 정의하면 함수를 만들었어도 배포 범위는 동일)
‘함수 만들기’가 낳는 또 다른 고민들
•재사용 되지 않으면 함수 만들기의 유용성은 제한적

(예: 스크립트 전체를 함수로 정의하면 함수를 만들었어도 배포 범위는 동일)
•함수 로딩 방법의 비효율성
•함수가 다른 함수를 활용할 때의 의존성
의존성 해결
더 유용한 함수를 위한 더 좋은 추상화
‘소프트웨어 공학’의 고민들!
…
의존성 최소화
Package로 ‘소프트웨어 공학’의 고민을 다루기
•더 나은 방법을 추구하는 과정에서 파생된 문제들 -> ‘소프트웨어 공학’의 고민
•R의 Package는 R에 존재하는 ‘소프트웨어 공학’의 고민을 효과적으로 해결하기 위한 핵심 도구

(Package는 기존 단계의 향상 시도에서 발생하는 복잡성 비용이 복리로 증가하지 않도록 막는 역할)
•Package 활용이 숙련됐을 때, R의 첫 복리효과를 체험

(까다로울 수 있지만, 이후 모든 복리효과의 기반이기 때문에, 충분한 가치가 있음)
복리의 비밀 - 김창준
http://agile.egloos.com/2854698
Package 활용 이후, 작업의 흐름
일하는 나
도구
일하는 나
도구
산출물
도구
일하는 나
도구
도구
도구
산출물
산출물
- 새롭게 만들어지는 도구는 

다음 작업을 하는 나의 일부로 더해짐
- 산출물의 결과는 증가하는 ‘나’의 능력에

의해 가속도를 얻어 ‘지수적’으로 증가
혼자 바둥거리던 R알못
지속적으로 불편을 느끼고 더 나은 방향을 찾는것
스스로 능력을 점진적으로 가속하는 방향
같은 자원하에 실현할 수 있는 범위/속도 확대
2. 곱하기 팀에 대한 이야기
팀의 초기 모습: 더하기 팀
각자 분배된 일을 독립적으로 처리
낮은 협업 수준
서로가 서로의 도구를

공유하지 못함
개인이 생산성을 올려도

그 효과는 개인에 국한
다른 팀원의 성장이

나의 능력 증대로 이어지지 않음
1 + 1.5 1 x 1.5 + 1.5 x1
vs
개인 성장은 같을 때 팀의 생산성
두 명 중 한 명이 50%의 생산성 향상을 보였을때
2.5
더하기 팀 vs 곱하기 팀
3.0
도구를 누가 만들었나 상관 없이 자유롭게 조합해 (= 곱해) 활용하는 형태
곱하기 팀으로 변화하는 시작은 도구의 공유였다
•도구의 공유는 패키지를 통해 촉진됨
•개인 차원에서의 복리효과를 만든 패키지가, 팀 차원에서의 복리효과도 만듬

(복리효과는 예상 범위를 넘어 또 다른 복리효과를 만듬)
•패키지가 공유에 유용했던 이유: 의존성을 자체에 포함할 수 있기 때문

(도구만 받을 때 vs 도구가 완전하게 동작할 수 있는 부품 목록을 함께 받을때)
‘패키지’가 낳는 또 다른 고민들
1. 패키지를 ‘어떻게’ 배포하고 받을 것인가
2. 지속적으로 업데이트 되는 패키지의 이력을 어떻게 관리할 것인가
3. 함께 설치해야하는 의존 패키지들을 어떻게 설치할 것인가
Git/GitHub을 활용한 내부 패키지 배포
1. 패키지를 ‘어떻게’ 배포하고 받을 것인가
-> GitHub의 클라우드 저장소를 활용

-> 인터넷 연결이 가능한 모든 머신에서 push/pull 가능해짐
2. 지속적으로 업데이트 되는 패키지의 이력을 어떻게 관리할 것인가
-> Git
3. 함께 설치해야하는 의존 패키지들을 어떻게 설치할 것인가
-> devtools, remotes 패키지 활용
복리효과에 대한 복리효과
‘함수의 고민들’을 해결한 ‘패키지’
개인의 생산성 향상
도구 공유에 대한 필요성 발견
도구 공유 과정 촉진
여유 (slack)
2가지 이야기
R 코드를 개발하고 배포하는 궁극적인 목표가 뭘까?
나와 더 많은 사람들이 지속적으로 더 높은 생산성을 목표로 하는
복리 효과가 아닐까?
•지금 내가 노력한 작업의 결과물을,
•나의 다음 작업에서,
•또는 누군가의 다음 작업에서 활용할 수 있게함
지속적인 향상을 추구하는 과정에서 발견한 R 코드의 개발과 배포의 변화
언제나 더 나은 방법이 존재한다는 믿음
두 이야기를 설명하는 하나의 이야기
스스로를 가엾게 여기고, 더 나은 방법을 찾길 주저하지 마세요
감사합니다

More Related Content

Viewers also liked

RUCK 2017 R에 날개 달기 - Microsoft R과 클라우드 머신러닝 소개
RUCK 2017 R에 날개 달기 - Microsoft R과 클라우드 머신러닝 소개RUCK 2017 R에 날개 달기 - Microsoft R과 클라우드 머신러닝 소개
RUCK 2017 R에 날개 달기 - Microsoft R과 클라우드 머신러닝 소개r-kor
 
RUCK 2017 권재명 효율적 데이터 과학과 데이터 조직을 위한 7가지 요인
RUCK 2017 권재명 효율적 데이터 과학과 데이터 조직을 위한 7가지 요인RUCK 2017 권재명 효율적 데이터 과학과 데이터 조직을 위한 7가지 요인
RUCK 2017 권재명 효율적 데이터 과학과 데이터 조직을 위한 7가지 요인r-kor
 
RUCK 2017 Shiny의 또 다른 활용: RStudio addin 함수 및 패키지의 제작
RUCK 2017 Shiny의 또 다른 활용: RStudio addin 함수 및 패키지의 제작RUCK 2017 Shiny의 또 다른 활용: RStudio addin 함수 및 패키지의 제작
RUCK 2017 Shiny의 또 다른 활용: RStudio addin 함수 및 패키지의 제작r-kor
 
RUCK 2017 R 을 이용한 사회조사 자료의 분석 및 보고서 작성 방법
RUCK 2017 R 을 이용한 사회조사 자료의 분석 및 보고서 작성 방법RUCK 2017 R 을 이용한 사회조사 자료의 분석 및 보고서 작성 방법
RUCK 2017 R 을 이용한 사회조사 자료의 분석 및 보고서 작성 방법r-kor
 
RUCK 2017 빅데이터 분석에서 모형의 역할
RUCK 2017 빅데이터 분석에서 모형의 역할RUCK 2017 빅데이터 분석에서 모형의 역할
RUCK 2017 빅데이터 분석에서 모형의 역할r-kor
 
RUCK 2017 R로 API 서버를 만드는 4가지 방법(은 삽질기)
RUCK 2017 R로 API 서버를 만드는 4가지 방법(은 삽질기)RUCK 2017 R로 API 서버를 만드는 4가지 방법(은 삽질기)
RUCK 2017 R로 API 서버를 만드는 4가지 방법(은 삽질기)r-kor
 
RUCK 2017 REx: 엑셀 기반 R 연동 통계분석 소프트웨어
RUCK 2017 REx: 엑셀 기반 R 연동 통계분석 소프트웨어RUCK 2017 REx: 엑셀 기반 R 연동 통계분석 소프트웨어
RUCK 2017 REx: 엑셀 기반 R 연동 통계분석 소프트웨어r-kor
 
구조화된 데이터: Schema.org와 Microdata, RDFa, JSON-LD
구조화된 데이터: Schema.org와 Microdata, RDFa, JSON-LD구조화된 데이터: Schema.org와 Microdata, RDFa, JSON-LD
구조화된 데이터: Schema.org와 Microdata, RDFa, JSON-LDr-kor
 
오픈데이터와 오픈소스 소프트웨어를 이용한 의료이용정보의 시각화
오픈데이터와 오픈소스 소프트웨어를 이용한 의료이용정보의 시각화오픈데이터와 오픈소스 소프트웨어를 이용한 의료이용정보의 시각화
오픈데이터와 오픈소스 소프트웨어를 이용한 의료이용정보의 시각화r-kor
 
선박식별정보를 이용한 어업활동 공간밀도 가시화
선박식별정보를 이용한 어업활동 공간밀도 가시화선박식별정보를 이용한 어업활동 공간밀도 가시화
선박식별정보를 이용한 어업활동 공간밀도 가시화r-kor
 
RUCK 2017 김성환 R 패키지 메타주성분분석(MetaPCA)
RUCK 2017 김성환 R 패키지 메타주성분분석(MetaPCA)RUCK 2017 김성환 R 패키지 메타주성분분석(MetaPCA)
RUCK 2017 김성환 R 패키지 메타주성분분석(MetaPCA)r-kor
 
모듈형 패키지를 활용한 나만의 기계학습 모형 만들기 - 회귀나무모형을 중심으로
모듈형 패키지를 활용한 나만의 기계학습 모형 만들기 - 회귀나무모형을 중심으로 모듈형 패키지를 활용한 나만의 기계학습 모형 만들기 - 회귀나무모형을 중심으로
모듈형 패키지를 활용한 나만의 기계학습 모형 만들기 - 회귀나무모형을 중심으로 r-kor
 
빅데이터 인공지능 전략 및 로드맵
빅데이터 인공지능 전략 및 로드맵빅데이터 인공지능 전략 및 로드맵
빅데이터 인공지능 전략 및 로드맵r-kor
 

Viewers also liked (13)

RUCK 2017 R에 날개 달기 - Microsoft R과 클라우드 머신러닝 소개
RUCK 2017 R에 날개 달기 - Microsoft R과 클라우드 머신러닝 소개RUCK 2017 R에 날개 달기 - Microsoft R과 클라우드 머신러닝 소개
RUCK 2017 R에 날개 달기 - Microsoft R과 클라우드 머신러닝 소개
 
RUCK 2017 권재명 효율적 데이터 과학과 데이터 조직을 위한 7가지 요인
RUCK 2017 권재명 효율적 데이터 과학과 데이터 조직을 위한 7가지 요인RUCK 2017 권재명 효율적 데이터 과학과 데이터 조직을 위한 7가지 요인
RUCK 2017 권재명 효율적 데이터 과학과 데이터 조직을 위한 7가지 요인
 
RUCK 2017 Shiny의 또 다른 활용: RStudio addin 함수 및 패키지의 제작
RUCK 2017 Shiny의 또 다른 활용: RStudio addin 함수 및 패키지의 제작RUCK 2017 Shiny의 또 다른 활용: RStudio addin 함수 및 패키지의 제작
RUCK 2017 Shiny의 또 다른 활용: RStudio addin 함수 및 패키지의 제작
 
RUCK 2017 R 을 이용한 사회조사 자료의 분석 및 보고서 작성 방법
RUCK 2017 R 을 이용한 사회조사 자료의 분석 및 보고서 작성 방법RUCK 2017 R 을 이용한 사회조사 자료의 분석 및 보고서 작성 방법
RUCK 2017 R 을 이용한 사회조사 자료의 분석 및 보고서 작성 방법
 
RUCK 2017 빅데이터 분석에서 모형의 역할
RUCK 2017 빅데이터 분석에서 모형의 역할RUCK 2017 빅데이터 분석에서 모형의 역할
RUCK 2017 빅데이터 분석에서 모형의 역할
 
RUCK 2017 R로 API 서버를 만드는 4가지 방법(은 삽질기)
RUCK 2017 R로 API 서버를 만드는 4가지 방법(은 삽질기)RUCK 2017 R로 API 서버를 만드는 4가지 방법(은 삽질기)
RUCK 2017 R로 API 서버를 만드는 4가지 방법(은 삽질기)
 
RUCK 2017 REx: 엑셀 기반 R 연동 통계분석 소프트웨어
RUCK 2017 REx: 엑셀 기반 R 연동 통계분석 소프트웨어RUCK 2017 REx: 엑셀 기반 R 연동 통계분석 소프트웨어
RUCK 2017 REx: 엑셀 기반 R 연동 통계분석 소프트웨어
 
구조화된 데이터: Schema.org와 Microdata, RDFa, JSON-LD
구조화된 데이터: Schema.org와 Microdata, RDFa, JSON-LD구조화된 데이터: Schema.org와 Microdata, RDFa, JSON-LD
구조화된 데이터: Schema.org와 Microdata, RDFa, JSON-LD
 
오픈데이터와 오픈소스 소프트웨어를 이용한 의료이용정보의 시각화
오픈데이터와 오픈소스 소프트웨어를 이용한 의료이용정보의 시각화오픈데이터와 오픈소스 소프트웨어를 이용한 의료이용정보의 시각화
오픈데이터와 오픈소스 소프트웨어를 이용한 의료이용정보의 시각화
 
선박식별정보를 이용한 어업활동 공간밀도 가시화
선박식별정보를 이용한 어업활동 공간밀도 가시화선박식별정보를 이용한 어업활동 공간밀도 가시화
선박식별정보를 이용한 어업활동 공간밀도 가시화
 
RUCK 2017 김성환 R 패키지 메타주성분분석(MetaPCA)
RUCK 2017 김성환 R 패키지 메타주성분분석(MetaPCA)RUCK 2017 김성환 R 패키지 메타주성분분석(MetaPCA)
RUCK 2017 김성환 R 패키지 메타주성분분석(MetaPCA)
 
모듈형 패키지를 활용한 나만의 기계학습 모형 만들기 - 회귀나무모형을 중심으로
모듈형 패키지를 활용한 나만의 기계학습 모형 만들기 - 회귀나무모형을 중심으로 모듈형 패키지를 활용한 나만의 기계학습 모형 만들기 - 회귀나무모형을 중심으로
모듈형 패키지를 활용한 나만의 기계학습 모형 만들기 - 회귀나무모형을 중심으로
 
빅데이터 인공지능 전략 및 로드맵
빅데이터 인공지능 전략 및 로드맵빅데이터 인공지능 전략 및 로드맵
빅데이터 인공지능 전략 및 로드맵
 

Similar to RUCK 2017 김대영 R 기반 프로덕트의 개발과 배포

Machine Learning Foundations (a case study approach) 강의 정리
Machine Learning Foundations (a case study approach) 강의 정리Machine Learning Foundations (a case study approach) 강의 정리
Machine Learning Foundations (a case study approach) 강의 정리SANG WON PARK
 
Github 으로 학교 팀 프로젝트 하기
Github 으로 학교 팀 프로젝트 하기Github 으로 학교 팀 프로젝트 하기
Github 으로 학교 팀 프로젝트 하기nexusz99
 
경희대 해커 기술 세미나 - Git hub으로 학교 팀프로젝트 하기(조성수)
경희대 해커 기술 세미나 - Git hub으로 학교 팀프로젝트 하기(조성수)경희대 해커 기술 세미나 - Git hub으로 학교 팀프로젝트 하기(조성수)
경희대 해커 기술 세미나 - Git hub으로 학교 팀프로젝트 하기(조성수)NAVER D2
 
격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it go격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it goChris Ohk
 
소프트웨어 공학의 사실과 오해
소프트웨어 공학의 사실과 오해소프트웨어 공학의 사실과 오해
소프트웨어 공학의 사실과 오해한 경만
 
131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원NAVER D2
 
레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화Jaehoon Choi
 
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법복연 이
 
About Functional Programming Paradigms
About Functional Programming Paradigms About Functional Programming Paradigms
About Functional Programming Paradigms Junho Yeo
 
프로토타이핑
프로토타이핑프로토타이핑
프로토타이핑정인 주
 
『이펙티브 디버깅』 맛보기
『이펙티브 디버깅』 맛보기『이펙티브 디버깅』 맛보기
『이펙티브 디버깅』 맛보기복연 이
 
프로젝트 Xxx에 적용하고 싶은 개발방법
프로젝트 Xxx에 적용하고 싶은 개발방법프로젝트 Xxx에 적용하고 싶은 개발방법
프로젝트 Xxx에 적용하고 싶은 개발방법도형 임
 
『클라우드 시스템을 관리하는 기술』 - 맛보기
『클라우드 시스템을 관리하는 기술』 - 맛보기『클라우드 시스템을 관리하는 기술』 - 맛보기
『클라우드 시스템을 관리하는 기술』 - 맛보기복연 이
 
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)VMware Tanzu Korea
 
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스Hee Jae Lee
 
오픈소스 생태계 일원으로서의 개발자(자막 버전)
오픈소스 생태계 일원으로서의 개발자(자막 버전)오픈소스 생태계 일원으로서의 개발자(자막 버전)
오픈소스 생태계 일원으로서의 개발자(자막 버전)JeongHun Byeon
 
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)SangIn Choung
 

Similar to RUCK 2017 김대영 R 기반 프로덕트의 개발과 배포 (20)

Machine Learning Foundations (a case study approach) 강의 정리
Machine Learning Foundations (a case study approach) 강의 정리Machine Learning Foundations (a case study approach) 강의 정리
Machine Learning Foundations (a case study approach) 강의 정리
 
Github 으로 학교 팀 프로젝트 하기
Github 으로 학교 팀 프로젝트 하기Github 으로 학교 팀 프로젝트 하기
Github 으로 학교 팀 프로젝트 하기
 
경희대 해커 기술 세미나 - Git hub으로 학교 팀프로젝트 하기(조성수)
경희대 해커 기술 세미나 - Git hub으로 학교 팀프로젝트 하기(조성수)경희대 해커 기술 세미나 - Git hub으로 학교 팀프로젝트 하기(조성수)
경희대 해커 기술 세미나 - Git hub으로 학교 팀프로젝트 하기(조성수)
 
애자일의 모든것
애자일의 모든것애자일의 모든것
애자일의 모든것
 
격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it go격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it go
 
Native A/V
Native A/VNative A/V
Native A/V
 
소프트웨어 공학의 사실과 오해
소프트웨어 공학의 사실과 오해소프트웨어 공학의 사실과 오해
소프트웨어 공학의 사실과 오해
 
131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원
 
In c
In cIn c
In c
 
레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화레가시 프로젝트의 빌드 자동화
레가시 프로젝트의 빌드 자동화
 
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
 
About Functional Programming Paradigms
About Functional Programming Paradigms About Functional Programming Paradigms
About Functional Programming Paradigms
 
프로토타이핑
프로토타이핑프로토타이핑
프로토타이핑
 
『이펙티브 디버깅』 맛보기
『이펙티브 디버깅』 맛보기『이펙티브 디버깅』 맛보기
『이펙티브 디버깅』 맛보기
 
프로젝트 Xxx에 적용하고 싶은 개발방법
프로젝트 Xxx에 적용하고 싶은 개발방법프로젝트 Xxx에 적용하고 싶은 개발방법
프로젝트 Xxx에 적용하고 싶은 개발방법
 
『클라우드 시스템을 관리하는 기술』 - 맛보기
『클라우드 시스템을 관리하는 기술』 - 맛보기『클라우드 시스템을 관리하는 기술』 - 맛보기
『클라우드 시스템을 관리하는 기술』 - 맛보기
 
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)
 
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
 
오픈소스 생태계 일원으로서의 개발자(자막 버전)
오픈소스 생태계 일원으로서의 개발자(자막 버전)오픈소스 생태계 일원으로서의 개발자(자막 버전)
오픈소스 생태계 일원으로서의 개발자(자막 버전)
 
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
 

More from r-kor

한글 언어 자원과 R: KoNLP 개선과 활용
한글 언어 자원과 R: KoNLP 개선과 활용한글 언어 자원과 R: KoNLP 개선과 활용
한글 언어 자원과 R: KoNLP 개선과 활용r-kor
 
지능정보시대를 위한 빅데이터, 이대로 좋은가
지능정보시대를 위한 빅데이터, 이대로 좋은가지능정보시대를 위한 빅데이터, 이대로 좋은가
지능정보시대를 위한 빅데이터, 이대로 좋은가r-kor
 
과학기술 발전과 오픈소스
과학기술 발전과 오픈소스과학기술 발전과 오픈소스
과학기술 발전과 오픈소스r-kor
 
오픈 데이터, 스마트 시티 그리고 인공지능
오픈 데이터, 스마트 시티 그리고 인공지능오픈 데이터, 스마트 시티 그리고 인공지능
오픈 데이터, 스마트 시티 그리고 인공지능r-kor
 
유엔 해비타트 신도시의제 실현을 위한 오픈소스 지오스페셜
유엔 해비타트 신도시의제 실현을 위한 오픈소스 지오스페셜유엔 해비타트 신도시의제 실현을 위한 오픈소스 지오스페셜
유엔 해비타트 신도시의제 실현을 위한 오픈소스 지오스페셜r-kor
 
Expanding Open Data Horizons with R and RStudio
Expanding Open Data Horizons with R and RStudioExpanding Open Data Horizons with R and RStudio
Expanding Open Data Horizons with R and RStudior-kor
 
Bristol Approach To Citizen Sensing
Bristol Approach To Citizen SensingBristol Approach To Citizen Sensing
Bristol Approach To Citizen Sensingr-kor
 
OSGeo와 Open Data
OSGeo와 Open DataOSGeo와 Open Data
OSGeo와 Open Datar-kor
 
오픈데이터 관련 글로벌 동향과 정책 기술적 지향점에 대한 고찰
오픈데이터 관련 글로벌 동향과 정책 기술적 지향점에 대한 고찰오픈데이터 관련 글로벌 동향과 정책 기술적 지향점에 대한 고찰
오픈데이터 관련 글로벌 동향과 정책 기술적 지향점에 대한 고찰r-kor
 
Digital Transformation, OSS, 모두를 위한 AI - 마이크로소프트의 관점
Digital Transformation, OSS, 모두를 위한 AI - 마이크로소프트의 관점Digital Transformation, OSS, 모두를 위한 AI - 마이크로소프트의 관점
Digital Transformation, OSS, 모두를 위한 AI - 마이크로소프트의 관점r-kor
 
IoT 구현을 위한 오픈 데이터 이슈
IoT 구현을 위한 오픈 데이터 이슈IoT 구현을 위한 오픈 데이터 이슈
IoT 구현을 위한 오픈 데이터 이슈r-kor
 
황성수 공공데이터 개방과 공공이슈 해결
황성수 공공데이터 개방과 공공이슈 해결황성수 공공데이터 개방과 공공이슈 해결
황성수 공공데이터 개방과 공공이슈 해결r-kor
 

More from r-kor (12)

한글 언어 자원과 R: KoNLP 개선과 활용
한글 언어 자원과 R: KoNLP 개선과 활용한글 언어 자원과 R: KoNLP 개선과 활용
한글 언어 자원과 R: KoNLP 개선과 활용
 
지능정보시대를 위한 빅데이터, 이대로 좋은가
지능정보시대를 위한 빅데이터, 이대로 좋은가지능정보시대를 위한 빅데이터, 이대로 좋은가
지능정보시대를 위한 빅데이터, 이대로 좋은가
 
과학기술 발전과 오픈소스
과학기술 발전과 오픈소스과학기술 발전과 오픈소스
과학기술 발전과 오픈소스
 
오픈 데이터, 스마트 시티 그리고 인공지능
오픈 데이터, 스마트 시티 그리고 인공지능오픈 데이터, 스마트 시티 그리고 인공지능
오픈 데이터, 스마트 시티 그리고 인공지능
 
유엔 해비타트 신도시의제 실현을 위한 오픈소스 지오스페셜
유엔 해비타트 신도시의제 실현을 위한 오픈소스 지오스페셜유엔 해비타트 신도시의제 실현을 위한 오픈소스 지오스페셜
유엔 해비타트 신도시의제 실현을 위한 오픈소스 지오스페셜
 
Expanding Open Data Horizons with R and RStudio
Expanding Open Data Horizons with R and RStudioExpanding Open Data Horizons with R and RStudio
Expanding Open Data Horizons with R and RStudio
 
Bristol Approach To Citizen Sensing
Bristol Approach To Citizen SensingBristol Approach To Citizen Sensing
Bristol Approach To Citizen Sensing
 
OSGeo와 Open Data
OSGeo와 Open DataOSGeo와 Open Data
OSGeo와 Open Data
 
오픈데이터 관련 글로벌 동향과 정책 기술적 지향점에 대한 고찰
오픈데이터 관련 글로벌 동향과 정책 기술적 지향점에 대한 고찰오픈데이터 관련 글로벌 동향과 정책 기술적 지향점에 대한 고찰
오픈데이터 관련 글로벌 동향과 정책 기술적 지향점에 대한 고찰
 
Digital Transformation, OSS, 모두를 위한 AI - 마이크로소프트의 관점
Digital Transformation, OSS, 모두를 위한 AI - 마이크로소프트의 관점Digital Transformation, OSS, 모두를 위한 AI - 마이크로소프트의 관점
Digital Transformation, OSS, 모두를 위한 AI - 마이크로소프트의 관점
 
IoT 구현을 위한 오픈 데이터 이슈
IoT 구현을 위한 오픈 데이터 이슈IoT 구현을 위한 오픈 데이터 이슈
IoT 구현을 위한 오픈 데이터 이슈
 
황성수 공공데이터 개방과 공공이슈 해결
황성수 공공데이터 개방과 공공이슈 해결황성수 공공데이터 개방과 공공이슈 해결
황성수 공공데이터 개방과 공공이슈 해결
 

RUCK 2017 김대영 R 기반 프로덕트의 개발과 배포

  • 1. R 프로덕트의 개발과 배포 김대영 RUCK 2017
  • 2. R 프로덕트의 개발과 배포 김대영 인생 첫 복리효과 RUCK 2017
  • 3. “복리야말로 인간의 가장 위대한 발명” “세상의 8번째 불가사의”
  • 4.
  • 5. 2
  • 7. ~ 2014 / 8 산업 및 시스템 공학 feat. 전기및전자공학 R알못
  • 9. •R알못 + MATLAB (X) + 시급한 비즈니스 지원 •엑셀로 데이터 분석 & 시각화 •분석은 많은 반복 과정 필요 •비효율적인 작업 •극복을 위해 R을 틈틈히 학습 입사 후 첫 번째 고난 : 도구 없이 시작
  • 10. 도구 장착: R •기본적인 문법은 비교적 수월 •첫 번째 고민 •직접 짜야할까? 이미 구현된 걸 찾아서 써야할까? •‘찾느니 그 시간에 짰겠다’ 생각이 새로운 도구 학습 속도 제한 •(게을러서) 더 좋은 도구 틈틈히 계속 찾음 •활용도가 높은 패키지를 중심으로 학습 성공
  • 11. 작업을 처리하는 도구: 스크립트 패키지 로딩 데이터 import 데이터 정제/변환 분석 결과 export <이 당시의 코드 형태> 작업 A 배포 개발 작업 B 배포 개발 <이 당시의 개발과 배포의 범위> 특정 작업에만 유용
 ‘키위 깎는 용도의 칼’
  • 12. 시간 일하는 나 작업 요구 도구 산출물 일하는 나 작업 요구 도구 산출물 복리의 비밀 - 김창준 http://agile.egloos.com/2854698 전체적인 작업의 흐름 외부의 요구를 그때 그때 현재의 생산성 -> 미래의 생산성 (x) R vs Excel .. ?
  • 13. 핵심은 재활용! •또 다시 ‘high 게으름 low 참을성’이 열일 •현재 시점/환경만을 고려한 개발/배포
 (결과적으로 나는 이득이 없고, 요구자만 이득) •미래 시점/환경까지 고려하는 개발/배포
 (나도, 요구자도 이득) •다시 쓸 가능성이 있도록 작업 방식을 바꿔보자! 
 (미래의 나를 가엾게 여기기 + 미래의 요구자도 혜택) -> 넓은 배포: 혜택을 입는 대상/수준 증가 -> 좁은 배포: 혜택을 입는 대상/수준 한정적
  • 14. 배포 범위를 넓히기 첫 시도: 함수 만들기 •프로그래밍 교육에서 매우 강조하는 개념
 (많은 사람들이 시도하고 활용) •대표적인 효과는 반복을 제거
 (20줄 짜리 코드를 함수로 정의한 상황, 
 해당 함수 기능이 필요한 작업마다 근 20줄 코드만큼의 반복이 제거되는 효과) •그러나 모든 ‘함수화’가 유용한 것은 아님
 (쓰이지 않는 형태로 함수화하면 무용함)
 (예: 스크립트 전체를 함수로 정의하면 함수를 만들었어도 배포 범위는 동일)
  • 15. ‘함수 만들기’가 낳는 또 다른 고민들 •재사용 되지 않으면 함수 만들기의 유용성은 제한적
 (예: 스크립트 전체를 함수로 정의하면 함수를 만들었어도 배포 범위는 동일) •함수 로딩 방법의 비효율성 •함수가 다른 함수를 활용할 때의 의존성 의존성 해결 더 유용한 함수를 위한 더 좋은 추상화 ‘소프트웨어 공학’의 고민들! … 의존성 최소화
  • 16. Package로 ‘소프트웨어 공학’의 고민을 다루기 •더 나은 방법을 추구하는 과정에서 파생된 문제들 -> ‘소프트웨어 공학’의 고민 •R의 Package는 R에 존재하는 ‘소프트웨어 공학’의 고민을 효과적으로 해결하기 위한 핵심 도구
 (Package는 기존 단계의 향상 시도에서 발생하는 복잡성 비용이 복리로 증가하지 않도록 막는 역할) •Package 활용이 숙련됐을 때, R의 첫 복리효과를 체험
 (까다로울 수 있지만, 이후 모든 복리효과의 기반이기 때문에, 충분한 가치가 있음)
  • 17. 복리의 비밀 - 김창준 http://agile.egloos.com/2854698 Package 활용 이후, 작업의 흐름 일하는 나 도구 일하는 나 도구 산출물 도구 일하는 나 도구 도구 도구 산출물 산출물 - 새롭게 만들어지는 도구는 
 다음 작업을 하는 나의 일부로 더해짐 - 산출물의 결과는 증가하는 ‘나’의 능력에
 의해 가속도를 얻어 ‘지수적’으로 증가
  • 18. 혼자 바둥거리던 R알못 지속적으로 불편을 느끼고 더 나은 방향을 찾는것 스스로 능력을 점진적으로 가속하는 방향 같은 자원하에 실현할 수 있는 범위/속도 확대
  • 19. 2. 곱하기 팀에 대한 이야기
  • 20. 팀의 초기 모습: 더하기 팀 각자 분배된 일을 독립적으로 처리 낮은 협업 수준 서로가 서로의 도구를
 공유하지 못함 개인이 생산성을 올려도
 그 효과는 개인에 국한 다른 팀원의 성장이
 나의 능력 증대로 이어지지 않음
  • 21. 1 + 1.5 1 x 1.5 + 1.5 x1 vs 개인 성장은 같을 때 팀의 생산성 두 명 중 한 명이 50%의 생산성 향상을 보였을때 2.5 더하기 팀 vs 곱하기 팀 3.0
  • 22. 도구를 누가 만들었나 상관 없이 자유롭게 조합해 (= 곱해) 활용하는 형태 곱하기 팀으로 변화하는 시작은 도구의 공유였다 •도구의 공유는 패키지를 통해 촉진됨 •개인 차원에서의 복리효과를 만든 패키지가, 팀 차원에서의 복리효과도 만듬
 (복리효과는 예상 범위를 넘어 또 다른 복리효과를 만듬) •패키지가 공유에 유용했던 이유: 의존성을 자체에 포함할 수 있기 때문
 (도구만 받을 때 vs 도구가 완전하게 동작할 수 있는 부품 목록을 함께 받을때)
  • 23. ‘패키지’가 낳는 또 다른 고민들 1. 패키지를 ‘어떻게’ 배포하고 받을 것인가 2. 지속적으로 업데이트 되는 패키지의 이력을 어떻게 관리할 것인가 3. 함께 설치해야하는 의존 패키지들을 어떻게 설치할 것인가
  • 24. Git/GitHub을 활용한 내부 패키지 배포 1. 패키지를 ‘어떻게’ 배포하고 받을 것인가 -> GitHub의 클라우드 저장소를 활용
 -> 인터넷 연결이 가능한 모든 머신에서 push/pull 가능해짐 2. 지속적으로 업데이트 되는 패키지의 이력을 어떻게 관리할 것인가 -> Git 3. 함께 설치해야하는 의존 패키지들을 어떻게 설치할 것인가 -> devtools, remotes 패키지 활용
  • 25. 복리효과에 대한 복리효과 ‘함수의 고민들’을 해결한 ‘패키지’ 개인의 생산성 향상 도구 공유에 대한 필요성 발견 도구 공유 과정 촉진 여유 (slack)
  • 27. R 코드를 개발하고 배포하는 궁극적인 목표가 뭘까? 나와 더 많은 사람들이 지속적으로 더 높은 생산성을 목표로 하는 복리 효과가 아닐까? •지금 내가 노력한 작업의 결과물을, •나의 다음 작업에서, •또는 누군가의 다음 작업에서 활용할 수 있게함 지속적인 향상을 추구하는 과정에서 발견한 R 코드의 개발과 배포의 변화
  • 28. 언제나 더 나은 방법이 존재한다는 믿음 두 이야기를 설명하는 하나의 이야기 스스로를 가엾게 여기고, 더 나은 방법을 찾길 주저하지 마세요