SlideShare a Scribd company logo
1 of 20
Download to read offline
구글시트로 개발자 해방
Redshift 데이터 추출 자동화가 회사에 불러온 변화
CFO
공인회계사
재무/회계/자금/총무 담당
멋사에서 파이썬 한 달 수강 후 4개월 경과
주요개발이력(fb.me/legacycoder):
냉장고 스티커 출력기/안마의자 사용 현황/
옥상 화분 자동 물주기/트위터 크롤러/
슬랙봇/구내식당 식단알림
Who am I?
데이터 업무의 목표는 데이터를 내려받아 일을 하는 것입니다.
데이터를 내려받아 일을 하자
개발 현업
SENDSENDSENDSENDSEND
주세요~주세요~주세요~주세요~주세요~
아닌데요아닌데요아닌데요아닌데요아닌데요
자료요청을 줄이기 위해 DW를 구축하였으나
사람들은 게으릅니다.
• 민감정보를 제외한 모든 데이터
• SQL로 맘대로 직접 뽑아서 써라!
• 민감정보는 pbot 개발메일송부
안함
• SQL에 익숙하지 않음
SELECT * FROM table WHERE dfjakdfjkdasfjldsjf 아아아악!!
• Tableau도 구매했지만 계산이 불편함. 계산필드가 먹는 건가요
• 솔직히 내가 뽑으려면 10시간 고생해야 하는데 개발자들은 5분이면 뽑을 것 같음
현업들은 SQL을 통한 데이터 추출 과정이 너무 어렵습니다.
• DB 클라이언트 실행  쿼리 수정  쿼리 실행  결과값 export  엑셀 오픈  복사/붙여넣기
형식 수정  함수 수정  이메일 전송 (9단계)
• 쿼리를 열심히 짜놨는데, “어? 그 쿼리 왜 짰어요? 내가 이미 쓰고 있는데?”
• 같은 목적의 쿼리인데, “어? 그 결과값이 왜 나랑 달라요?”
• 아아아아아아아아악!!
SQL을 배워도 딱히 더 편해지지 않습니다.
• 결국 모든 데이터 요청에 대해 pbot을 만들어 줌
• 추가로 필요한 필드가 있거나 데이터구조가 바뀌면 프로그램 수정 요청
• 개발자: 왜 자꾸 빠졌다고 추가해 달래  다주자
• 현업: 왜 자꾸 빼먹고 줘  다받자
• 쓸데없이 덩치가 커진 민감정보 데이터 파일들이 이메일로 돌아다님
• pbot 개수 74개, 2019년 상반기 퀵픽스 67개
• 데이터 추출 시간을 줄이고 민감정보 유통을 막으려했던 DW 프로세스가 반대의 결과 초래
모두가 더 열심히 불행해졌습니다.
문제의 원인인 비효율적인 데이터 추출과 데이터의 가공 프로세스를
없애야 함.
마이리얼트립(데이터가 흐르는 조직 만들기) *
1. 데이터 추출 업무에 시간을 뺏기면서 분석에 쓰는 시간이 줄어듬
2. 한 번의 요청으로 추출 목적에 맞는 데이터를 뽑는 게 불가능함(반복
되는 변경을 진행하기 어려움)
3. 데이터 분석은 좋은 질문에서 시작되는데 현업과 도메인에 대한 인
사이트가 모두 필요함
추출
가공
현업이 SQL을 고민없이 쓰게 하자
• 가장 좋은 질문자는 데이터 요청자
• SQL은 진입장벽: 남이 만든 건 이해해도
처음부터는 못하겠다
• 추출 과정을 혁신해서 개발자들을 단순
데이터 요청에서 해방
데이터만 들어오면 자동으로 최종 결과물이
나오게 하자
• 가공에 드는 시간과 단계가 과도함
• 단순업무 삭제로 비효율적 근면성의 싹을
제거
* https://www.slideshare.net/leoyang991/ss-152175755
구글시트로 SQL을 쉽게 쓰고 리포트를 자동 생성합니다.
1
• SQL 쿼리를 구글 시트에 기재하여 공유/자동 수정
다른 사람의 쿼리를 볼 수 있고, 날짜 등 변동값에 따라 쿼리 자동 수정
2
• 쿼리 결과를 쿼리가 기재된 동일한 구글 시트로 전달
안 해봤는데 이걸 어떻게 할까?
3
• 갱신된 데이터로 리포트를 자동 생성*
구글 시트의 배열 함수로 해결
* “왜 내가 이제 와서 구글시트를 해야 합니다.” 참조
bit.ly/2mDD4vI
Google Sheets와 Redshift를 연결하자.(쉽게 편)
안됨
- 접속IP 제한
- 안 풀어줌
Google Apps Script의 JDBC Service로 몇 줄 안되는
코딩으로도 아주 쉽게 Redshift의 DB를 긁어 올 수 있
음
Google Sheets와 Redshift를 연결하자.(어렵게 편)
• 사내 jombot* 서버에서 python으로 redshift 접근(psycopg2 모듈)
* 방좀,밥좀,식권좀,랜런버,누규 등 CFO가 만든 쓸데없는 슬랙봇(slaccato 모듈 feat. N0rR)
a.py
1.query
2.query3.data
4.data
0.execute
5.result
b.py
c.py
d.py
Google Sheets와 Redshift를 연결하자.(어렵게 편_2)
• 모듈을 통합하고 슬랙으로 sqljom 시트 ID만 호출하면 실행되게 만듬
jom.py
1.query
2.query3.data
4.data
0.execute
5.result
안 씀
TO-BE
• 구글 시트를 연다
• 시트 주소를 복사한다
• 슬랙을 연다
• 슬랙봇 채널을 찾는다
• 명령어를 넣는다
• 구글 시트 아이디를 넣는다
• 엔터까지 때린다
외않되?
AS-IS
• DB클라이언트 실행
• 쿼리 수정/실행
• 결과값 export
• 엑셀 오픈
• 복사  붙여 넣기
• 형식/함수 수정
• 이메일 전송
VS
되돌이키기에는 늦음  구글 시트에 모든 걸 때려 넣자
• 구글 시트를 연다
• 시트 주소를 복사한다
• 슬랙을 연다
• 슬랙봇 채널을 찾는다
• 명령어를 넣는다
• 구글 시트 아이디를 넣는다
• 엔터까지 때린다
• 메뉴에서 JOM을 클릭• 메뉴에서 JOM을 클릭 매일 자동 실행
추가개선사항
• 유지보수
- 구글 시트는 템플릿으로 배포
- 앱스스크립트 라이브러리 작성
- 권한 자동 설정
• 쿼리공유
- 로그 시트를 만들어 독립시행횟수로 소팅
- 최초 작성자명과 함께 노출명예(멍에)의 전당
앱스스크립트로 키보드 한 방도 안 묻게 해 줄게
이제야 씀
• 총 데이터 사용량의 급증, pbot호출 급감. 휴일에도 sqljom 사용
• 7월 4일 개시 이후 3개월 동안 5,654건의 sqljom 실행
변화1. pbot 호출 감소, 데이터 사용 증가
• 데이터 변경/오류로 인한 퀵픽스 요청 급감(SQLJOM 사용이 본격화된 9월에는 연평균 대비 83% 감소)
• 개발자가 드디어 단순 데이터 추출업무에서 해방
변화2. 개발자 호출 감소
변화3. 하던 일은 안 하고 안 하던 일을 하기 시작
• SQLJOM 2주 만에 2년 동안 못 만들던 대시보드들이 생성
• 좋은 쿼리에 대해 현업들이 논의
• 요청을 쳐내는데 바쁘던 개발자들은 왜 그런 요청이 발생하는지 같이 봐줄 여유가 생김
결론: 목표로 돌아가기 위해서 시간을 들여 시간을 찾아줘야 함
• 식기세척기, 로봇청소기, 건조기:
- 단계를 줄여서 삶을 개선
기본수준이 유지되어야 개선에 쓸 시간이 생김
• SQLJOM:
- 단계를 줄여서 전체 스콥 수행의 에너지 감소
- “질문>데이터추출>데이터분석까지 하나의 완결적인
cycle을 스스로 해보는” 경험으로 본인의 에너지 증가
개선에 쓸 에너지 확보
• 시간을 들여서라도 시간을 찾아줘야 변화가 생긴다.
데이터를 내려받아 일을 하자
개발
현업
(구글 IP만 열렸으면 한 시간만 들여도 됐을텐데...)
Q&A
Thank You

More Related Content

What's hot

화성에서 온 개발자, 금성에서 온 기획자
화성에서 온 개발자, 금성에서 온 기획자화성에서 온 개발자, 금성에서 온 기획자
화성에서 온 개발자, 금성에서 온 기획자Yongho Ha
 
elasticsearch_적용 및 활용_정리
elasticsearch_적용 및 활용_정리elasticsearch_적용 및 활용_정리
elasticsearch_적용 및 활용_정리Junyi Song
 
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Yongho Ha
 
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.jsHeeJung Hwang
 
손코딩뇌컴파일눈디버깅을 소개합니다.
손코딩뇌컴파일눈디버깅을 소개합니다.손코딩뇌컴파일눈디버깅을 소개합니다.
손코딩뇌컴파일눈디버깅을 소개합니다.Kwangsung Ha
 
Little Big Data #1. 바닥부터 시작하는 데이터 인프라
Little Big Data #1. 바닥부터 시작하는 데이터 인프라Little Big Data #1. 바닥부터 시작하는 데이터 인프라
Little Big Data #1. 바닥부터 시작하는 데이터 인프라Seongyun Byeon
 
Deepcheck, 딥러닝 기반의 얼굴인식 출석체크
Deepcheck, 딥러닝 기반의 얼굴인식 출석체크Deepcheck, 딥러닝 기반의 얼굴인식 출석체크
Deepcheck, 딥러닝 기반의 얼굴인식 출석체크지운 배
 
Django in Production
Django in ProductionDjango in Production
Django in ProductionHyun-woo Park
 
Sling Component Filters in CQ5
Sling Component Filters in CQ5 Sling Component Filters in CQ5
Sling Component Filters in CQ5 connectwebex
 
Processing Large Data with Apache Spark -- HasGeek
Processing Large Data with Apache Spark -- HasGeekProcessing Large Data with Apache Spark -- HasGeek
Processing Large Data with Apache Spark -- HasGeekVenkata Naga Ravi
 
[D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint
[D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint [D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint
[D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint NAVER D2
 
충돌 알고리즘(collision detection algorithms)
충돌 알고리즘(collision detection algorithms)충돌 알고리즘(collision detection algorithms)
충돌 알고리즘(collision detection algorithms)ssuserbe87d6
 
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출 NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출 정주 김
 
webservice scaling for newbie
webservice scaling for newbiewebservice scaling for newbie
webservice scaling for newbieDaeMyung Kang
 
[2D1]Elasticsearch 성능 최적화
[2D1]Elasticsearch 성능 최적화[2D1]Elasticsearch 성능 최적화
[2D1]Elasticsearch 성능 최적화NAVER D2
 
신입 개발자 생활백서 [개정판]
신입 개발자 생활백서 [개정판]신입 개발자 생활백서 [개정판]
신입 개발자 생활백서 [개정판]Yurim Jin
 
훌륭한 개발자로 성장하기
훌륭한 개발자로 성장하기훌륭한 개발자로 성장하기
훌륭한 개발자로 성장하기Changyol BAEK
 
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019devCAT Studio, NEXON
 
전형규, 프로젝트DH의 절차적 애니메이션 시스템, NDC2017
전형규, 프로젝트DH의 절차적 애니메이션 시스템, NDC2017전형규, 프로젝트DH의 절차적 애니메이션 시스템, NDC2017
전형규, 프로젝트DH의 절차적 애니메이션 시스템, NDC2017devCAT Studio, NEXON
 

What's hot (20)

화성에서 온 개발자, 금성에서 온 기획자
화성에서 온 개발자, 금성에서 온 기획자화성에서 온 개발자, 금성에서 온 기획자
화성에서 온 개발자, 금성에서 온 기획자
 
elasticsearch_적용 및 활용_정리
elasticsearch_적용 및 활용_정리elasticsearch_적용 및 활용_정리
elasticsearch_적용 및 활용_정리
 
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
 
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
 
손코딩뇌컴파일눈디버깅을 소개합니다.
손코딩뇌컴파일눈디버깅을 소개합니다.손코딩뇌컴파일눈디버깅을 소개합니다.
손코딩뇌컴파일눈디버깅을 소개합니다.
 
Little Big Data #1. 바닥부터 시작하는 데이터 인프라
Little Big Data #1. 바닥부터 시작하는 데이터 인프라Little Big Data #1. 바닥부터 시작하는 데이터 인프라
Little Big Data #1. 바닥부터 시작하는 데이터 인프라
 
Deepcheck, 딥러닝 기반의 얼굴인식 출석체크
Deepcheck, 딥러닝 기반의 얼굴인식 출석체크Deepcheck, 딥러닝 기반의 얼굴인식 출석체크
Deepcheck, 딥러닝 기반의 얼굴인식 출석체크
 
Django in Production
Django in ProductionDjango in Production
Django in Production
 
Sling Component Filters in CQ5
Sling Component Filters in CQ5 Sling Component Filters in CQ5
Sling Component Filters in CQ5
 
Processing Large Data with Apache Spark -- HasGeek
Processing Large Data with Apache Spark -- HasGeekProcessing Large Data with Apache Spark -- HasGeek
Processing Large Data with Apache Spark -- HasGeek
 
[D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint
[D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint [D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint
[D2] java 애플리케이션 트러블 슈팅 사례 & pinpoint
 
충돌 알고리즘(collision detection algorithms)
충돌 알고리즘(collision detection algorithms)충돌 알고리즘(collision detection algorithms)
충돌 알고리즘(collision detection algorithms)
 
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출 NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출
 
webservice scaling for newbie
webservice scaling for newbiewebservice scaling for newbie
webservice scaling for newbie
 
[2D1]Elasticsearch 성능 최적화
[2D1]Elasticsearch 성능 최적화[2D1]Elasticsearch 성능 최적화
[2D1]Elasticsearch 성능 최적화
 
신입 개발자 생활백서 [개정판]
신입 개발자 생활백서 [개정판]신입 개발자 생활백서 [개정판]
신입 개발자 생활백서 [개정판]
 
훌륭한 개발자로 성장하기
훌륭한 개발자로 성장하기훌륭한 개발자로 성장하기
훌륭한 개발자로 성장하기
 
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
전형규, 프로젝트DH의 절차적 애니메이션 시스템, NDC2017
전형규, 프로젝트DH의 절차적 애니메이션 시스템, NDC2017전형규, 프로젝트DH의 절차적 애니메이션 시스템, NDC2017
전형규, 프로젝트DH의 절차적 애니메이션 시스템, NDC2017
 

Similar to 구글시트로 개발자 해방시키기

데이터가 흐르는 조직 만들기 - 마이리얼트립
데이터가 흐르는 조직 만들기 - 마이리얼트립데이터가 흐르는 조직 만들기 - 마이리얼트립
데이터가 흐르는 조직 만들기 - 마이리얼트립승화 양
 
학교에서는 배울 수 없는 스타트업 엔지니어링 (연세대 특강)
학교에서는 배울 수 없는 스타트업 엔지니어링 (연세대 특강)학교에서는 배울 수 없는 스타트업 엔지니어링 (연세대 특강)
학교에서는 배울 수 없는 스타트업 엔지니어링 (연세대 특강)Lab80
 
Node.js에서 공공API를 활용해서 개발하기
Node.js에서 공공API를 활용해서 개발하기Node.js에서 공공API를 활용해서 개발하기
Node.js에서 공공API를 활용해서 개발하기Inho Kwon
 
2021년 2월 6일 개발자 이야기
2021년 2월 6일 개발자 이야기2021년 2월 6일 개발자 이야기
2021년 2월 6일 개발자 이야기Jay Park
 
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기Miyu Park
 
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스Hee Jae Lee
 
201803 파이썬 세미나
201803 파이썬 세미나201803 파이썬 세미나
201803 파이썬 세미나JeongHwan Kim
 
Pycon2017 이성용 Dances with the Last Samurai
Pycon2017 이성용 Dances with the Last SamuraiPycon2017 이성용 Dances with the Last Samurai
Pycon2017 이성용 Dances with the Last SamuraiSungYong Lee
 
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017devCAT Studio, NEXON
 
2020년 10월 10일 개발자 이야기
2020년 10월 10일 개발자 이야기2020년 10월 10일 개발자 이야기
2020년 10월 10일 개발자 이야기Jay Park
 
2020년 9월 5일 개발 이야기 정리
2020년 9월 5일 개발 이야기 정리2020년 9월 5일 개발 이야기 정리
2020년 9월 5일 개발 이야기 정리Jay Park
 
애자일 스크럼과 JIRA
애자일 스크럼과 JIRA 애자일 스크럼과 JIRA
애자일 스크럼과 JIRA Terry Cho
 
Splunk 적용 검토
Splunk 적용 검토Splunk 적용 검토
Splunk 적용 검토Daeyong Shin
 
유니티3D 그리고 웹통신
유니티3D 그리고 웹통신유니티3D 그리고 웹통신
유니티3D 그리고 웹통신현욱 김
 
좌충우돌 Data Engineering 학습기
좌충우돌 Data Engineering 학습기좌충우돌 Data Engineering 학습기
좌충우돌 Data Engineering 학습기DONGMIN LEE
 
제14회 JCO Presentation - Build Your Big Data Platform
제14회 JCO Presentation - Build Your Big Data Platform제14회 JCO Presentation - Build Your Big Data Platform
제14회 JCO Presentation - Build Your Big Data PlatformBYOUNG GON KIM
 
2020년 12월 20일 개발자 이야기
2020년 12월 20일 개발자 이야기2020년 12월 20일 개발자 이야기
2020년 12월 20일 개발자 이야기Jay Park
 
DevOps는 원격근무를 추구하면 안되는 걸까?
DevOps는 원격근무를 추구하면 안되는 걸까?DevOps는 원격근무를 추구하면 안되는 걸까?
DevOps는 원격근무를 추구하면 안되는 걸까?Jesang Yoon
 
JIRA 업무 생산성 향상 및 프로젝트 관리
JIRA 업무 생산성 향상 및 프로젝트 관리JIRA 업무 생산성 향상 및 프로젝트 관리
JIRA 업무 생산성 향상 및 프로젝트 관리KwangSeob Jeong
 

Similar to 구글시트로 개발자 해방시키기 (20)

데이터가 흐르는 조직 만들기 - 마이리얼트립
데이터가 흐르는 조직 만들기 - 마이리얼트립데이터가 흐르는 조직 만들기 - 마이리얼트립
데이터가 흐르는 조직 만들기 - 마이리얼트립
 
학교에서는 배울 수 없는 스타트업 엔지니어링 (연세대 특강)
학교에서는 배울 수 없는 스타트업 엔지니어링 (연세대 특강)학교에서는 배울 수 없는 스타트업 엔지니어링 (연세대 특강)
학교에서는 배울 수 없는 스타트업 엔지니어링 (연세대 특강)
 
Node.js에서 공공API를 활용해서 개발하기
Node.js에서 공공API를 활용해서 개발하기Node.js에서 공공API를 활용해서 개발하기
Node.js에서 공공API를 활용해서 개발하기
 
2021년 2월 6일 개발자 이야기
2021년 2월 6일 개발자 이야기2021년 2월 6일 개발자 이야기
2021년 2월 6일 개발자 이야기
 
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
 
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
 
201803 파이썬 세미나
201803 파이썬 세미나201803 파이썬 세미나
201803 파이썬 세미나
 
Pycon2017 이성용 Dances with the Last Samurai
Pycon2017 이성용 Dances with the Last SamuraiPycon2017 이성용 Dances with the Last Samurai
Pycon2017 이성용 Dances with the Last Samurai
 
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
이승재, 박경재, NDC Replay 제작기: static website, static backoffice, NDC2017
 
2020년 10월 10일 개발자 이야기
2020년 10월 10일 개발자 이야기2020년 10월 10일 개발자 이야기
2020년 10월 10일 개발자 이야기
 
2020년 9월 5일 개발 이야기 정리
2020년 9월 5일 개발 이야기 정리2020년 9월 5일 개발 이야기 정리
2020년 9월 5일 개발 이야기 정리
 
dbt 101
dbt 101dbt 101
dbt 101
 
애자일 스크럼과 JIRA
애자일 스크럼과 JIRA 애자일 스크럼과 JIRA
애자일 스크럼과 JIRA
 
Splunk 적용 검토
Splunk 적용 검토Splunk 적용 검토
Splunk 적용 검토
 
유니티3D 그리고 웹통신
유니티3D 그리고 웹통신유니티3D 그리고 웹통신
유니티3D 그리고 웹통신
 
좌충우돌 Data Engineering 학습기
좌충우돌 Data Engineering 학습기좌충우돌 Data Engineering 학습기
좌충우돌 Data Engineering 학습기
 
제14회 JCO Presentation - Build Your Big Data Platform
제14회 JCO Presentation - Build Your Big Data Platform제14회 JCO Presentation - Build Your Big Data Platform
제14회 JCO Presentation - Build Your Big Data Platform
 
2020년 12월 20일 개발자 이야기
2020년 12월 20일 개발자 이야기2020년 12월 20일 개발자 이야기
2020년 12월 20일 개발자 이야기
 
DevOps는 원격근무를 추구하면 안되는 걸까?
DevOps는 원격근무를 추구하면 안되는 걸까?DevOps는 원격근무를 추구하면 안되는 걸까?
DevOps는 원격근무를 추구하면 안되는 걸까?
 
JIRA 업무 생산성 향상 및 프로젝트 관리
JIRA 업무 생산성 향상 및 프로젝트 관리JIRA 업무 생산성 향상 및 프로젝트 관리
JIRA 업무 생산성 향상 및 프로젝트 관리
 

구글시트로 개발자 해방시키기

  • 1. 구글시트로 개발자 해방 Redshift 데이터 추출 자동화가 회사에 불러온 변화 CFO
  • 2. 공인회계사 재무/회계/자금/총무 담당 멋사에서 파이썬 한 달 수강 후 4개월 경과 주요개발이력(fb.me/legacycoder): 냉장고 스티커 출력기/안마의자 사용 현황/ 옥상 화분 자동 물주기/트위터 크롤러/ 슬랙봇/구내식당 식단알림 Who am I?
  • 3. 데이터 업무의 목표는 데이터를 내려받아 일을 하는 것입니다. 데이터를 내려받아 일을 하자 개발 현업 SENDSENDSENDSENDSEND 주세요~주세요~주세요~주세요~주세요~ 아닌데요아닌데요아닌데요아닌데요아닌데요
  • 4. 자료요청을 줄이기 위해 DW를 구축하였으나 사람들은 게으릅니다. • 민감정보를 제외한 모든 데이터 • SQL로 맘대로 직접 뽑아서 써라! • 민감정보는 pbot 개발메일송부 안함
  • 5. • SQL에 익숙하지 않음 SELECT * FROM table WHERE dfjakdfjkdasfjldsjf 아아아악!! • Tableau도 구매했지만 계산이 불편함. 계산필드가 먹는 건가요 • 솔직히 내가 뽑으려면 10시간 고생해야 하는데 개발자들은 5분이면 뽑을 것 같음 현업들은 SQL을 통한 데이터 추출 과정이 너무 어렵습니다.
  • 6. • DB 클라이언트 실행  쿼리 수정  쿼리 실행  결과값 export  엑셀 오픈  복사/붙여넣기 형식 수정  함수 수정  이메일 전송 (9단계) • 쿼리를 열심히 짜놨는데, “어? 그 쿼리 왜 짰어요? 내가 이미 쓰고 있는데?” • 같은 목적의 쿼리인데, “어? 그 결과값이 왜 나랑 달라요?” • 아아아아아아아아악!! SQL을 배워도 딱히 더 편해지지 않습니다.
  • 7. • 결국 모든 데이터 요청에 대해 pbot을 만들어 줌 • 추가로 필요한 필드가 있거나 데이터구조가 바뀌면 프로그램 수정 요청 • 개발자: 왜 자꾸 빠졌다고 추가해 달래  다주자 • 현업: 왜 자꾸 빼먹고 줘  다받자 • 쓸데없이 덩치가 커진 민감정보 데이터 파일들이 이메일로 돌아다님 • pbot 개수 74개, 2019년 상반기 퀵픽스 67개 • 데이터 추출 시간을 줄이고 민감정보 유통을 막으려했던 DW 프로세스가 반대의 결과 초래 모두가 더 열심히 불행해졌습니다.
  • 8. 문제의 원인인 비효율적인 데이터 추출과 데이터의 가공 프로세스를 없애야 함. 마이리얼트립(데이터가 흐르는 조직 만들기) * 1. 데이터 추출 업무에 시간을 뺏기면서 분석에 쓰는 시간이 줄어듬 2. 한 번의 요청으로 추출 목적에 맞는 데이터를 뽑는 게 불가능함(반복 되는 변경을 진행하기 어려움) 3. 데이터 분석은 좋은 질문에서 시작되는데 현업과 도메인에 대한 인 사이트가 모두 필요함 추출 가공 현업이 SQL을 고민없이 쓰게 하자 • 가장 좋은 질문자는 데이터 요청자 • SQL은 진입장벽: 남이 만든 건 이해해도 처음부터는 못하겠다 • 추출 과정을 혁신해서 개발자들을 단순 데이터 요청에서 해방 데이터만 들어오면 자동으로 최종 결과물이 나오게 하자 • 가공에 드는 시간과 단계가 과도함 • 단순업무 삭제로 비효율적 근면성의 싹을 제거 * https://www.slideshare.net/leoyang991/ss-152175755
  • 9. 구글시트로 SQL을 쉽게 쓰고 리포트를 자동 생성합니다. 1 • SQL 쿼리를 구글 시트에 기재하여 공유/자동 수정 다른 사람의 쿼리를 볼 수 있고, 날짜 등 변동값에 따라 쿼리 자동 수정 2 • 쿼리 결과를 쿼리가 기재된 동일한 구글 시트로 전달 안 해봤는데 이걸 어떻게 할까? 3 • 갱신된 데이터로 리포트를 자동 생성* 구글 시트의 배열 함수로 해결 * “왜 내가 이제 와서 구글시트를 해야 합니다.” 참조 bit.ly/2mDD4vI
  • 10. Google Sheets와 Redshift를 연결하자.(쉽게 편) 안됨 - 접속IP 제한 - 안 풀어줌 Google Apps Script의 JDBC Service로 몇 줄 안되는 코딩으로도 아주 쉽게 Redshift의 DB를 긁어 올 수 있 음
  • 11. Google Sheets와 Redshift를 연결하자.(어렵게 편) • 사내 jombot* 서버에서 python으로 redshift 접근(psycopg2 모듈) * 방좀,밥좀,식권좀,랜런버,누규 등 CFO가 만든 쓸데없는 슬랙봇(slaccato 모듈 feat. N0rR) a.py 1.query 2.query3.data 4.data 0.execute 5.result b.py c.py d.py
  • 12. Google Sheets와 Redshift를 연결하자.(어렵게 편_2) • 모듈을 통합하고 슬랙으로 sqljom 시트 ID만 호출하면 실행되게 만듬 jom.py 1.query 2.query3.data 4.data 0.execute 5.result 안 씀
  • 13. TO-BE • 구글 시트를 연다 • 시트 주소를 복사한다 • 슬랙을 연다 • 슬랙봇 채널을 찾는다 • 명령어를 넣는다 • 구글 시트 아이디를 넣는다 • 엔터까지 때린다 외않되? AS-IS • DB클라이언트 실행 • 쿼리 수정/실행 • 결과값 export • 엑셀 오픈 • 복사  붙여 넣기 • 형식/함수 수정 • 이메일 전송 VS 되돌이키기에는 늦음  구글 시트에 모든 걸 때려 넣자
  • 14. • 구글 시트를 연다 • 시트 주소를 복사한다 • 슬랙을 연다 • 슬랙봇 채널을 찾는다 • 명령어를 넣는다 • 구글 시트 아이디를 넣는다 • 엔터까지 때린다 • 메뉴에서 JOM을 클릭• 메뉴에서 JOM을 클릭 매일 자동 실행 추가개선사항 • 유지보수 - 구글 시트는 템플릿으로 배포 - 앱스스크립트 라이브러리 작성 - 권한 자동 설정 • 쿼리공유 - 로그 시트를 만들어 독립시행횟수로 소팅 - 최초 작성자명과 함께 노출명예(멍에)의 전당 앱스스크립트로 키보드 한 방도 안 묻게 해 줄게 이제야 씀
  • 15. • 총 데이터 사용량의 급증, pbot호출 급감. 휴일에도 sqljom 사용 • 7월 4일 개시 이후 3개월 동안 5,654건의 sqljom 실행 변화1. pbot 호출 감소, 데이터 사용 증가
  • 16. • 데이터 변경/오류로 인한 퀵픽스 요청 급감(SQLJOM 사용이 본격화된 9월에는 연평균 대비 83% 감소) • 개발자가 드디어 단순 데이터 추출업무에서 해방 변화2. 개발자 호출 감소
  • 17. 변화3. 하던 일은 안 하고 안 하던 일을 하기 시작 • SQLJOM 2주 만에 2년 동안 못 만들던 대시보드들이 생성 • 좋은 쿼리에 대해 현업들이 논의 • 요청을 쳐내는데 바쁘던 개발자들은 왜 그런 요청이 발생하는지 같이 봐줄 여유가 생김
  • 18. 결론: 목표로 돌아가기 위해서 시간을 들여 시간을 찾아줘야 함 • 식기세척기, 로봇청소기, 건조기: - 단계를 줄여서 삶을 개선 기본수준이 유지되어야 개선에 쓸 시간이 생김 • SQLJOM: - 단계를 줄여서 전체 스콥 수행의 에너지 감소 - “질문>데이터추출>데이터분석까지 하나의 완결적인 cycle을 스스로 해보는” 경험으로 본인의 에너지 증가 개선에 쓸 에너지 확보 • 시간을 들여서라도 시간을 찾아줘야 변화가 생긴다. 데이터를 내려받아 일을 하자 개발 현업 (구글 IP만 열렸으면 한 시간만 들여도 됐을텐데...)
  • 19. Q&A