[GN#35] Git-Flow 와 TBD, 하루에 1000번 배포하기

2020-03-02 ~ 2020-03-08 사이의 주요 뉴스들
Git은 이제 회사 업무에서는 빼놓을 수 없는 도구가 되었습니다. 회사별로 업무 프로세스에 따라 사용하는 방법은 다를 수 있는데, 그중에 가장 얘기가 많이 되었던 것이 Git-Flow입니다.
Git-flow가 나온 지 10년이 되었으니, 아무래도 현실과 맞지 않는 부분이 많겠죠. 이에 대한 지적글이 나오고 다시 이를 원 저자가 반영해서 코멘트를 달았습니다. 이와 관련해서 브랜치를 사용하지 않고 싱글 트렁크로 개발하는 TBD, 실제로 뱅크샐러드가 하루에 많은 배포를 하기 위해 Lightweight 브랜칭 모델을 적용한 내용을 추천해 드립니다.

지난주 Weekly 주제였던 "The Developer's Way - 모두가 코딩을 배울 필요는 없다" 에서 말씀드린 것처럼, B2B 도구에도 생산성과 효율성을 증대하려는 시도가 나오고 있는데요. CLUI는 쉘에서도 생산성 높은 도구를 만드는 시도입니다. 이렇게 단순히 메뉴에 기능을 나열 하는 것만이 아닌, 더 빠르게 작업을 수행할 수 있도록 웹을 넘어 쉘에서도 많은 고민과 아이디어가 나오고 있습니다. 웹에서는 "세상에서 가장 빠른 이메일 경험, 슈퍼휴먼" 을, 쉘에서는 fzf 를 이용한 "나만의 쉘 자동완성 만들기" 글을 엮어서 보시면 좋을 것 같습니다.

* 이 내용은 "단디 - 한국어 맞춤법 검사기 for VS Code"를 이용해서 한국어 맞춤법 검사 되었습니다.

매주 월요일 아침, 지난 일주일간의 GeekNews 중 엄선한 뉴스들을 이메일로 보내드립니다.


이제 Git-flow 좀 그만 추천하면 안될까요?

- Git-Flow는 지난10년간 여기저기서 써왔지만, 이제 없어져야 한다
- 너무 복잡함
- 짧게 써야 하는 브랜치 룰을 깬다
- Rebase를 포기하게 한다
- CD가 불가능
- 다수의 Repo작업 불가능, 그렇다고 모노Repo에도 어울리지 않다
- 월/분기별 릴리즈사이클에 여러 릴리즈를 동시에 작업하는 아마도 +20명 회사라면 좋은 선택,
10명이하의 스타트업이나 하루에 몇번씩 릴리즈 하는 웹 사이트/웹앱에는 어울리지 않다.

이 글이 이슈되었는지, Git-Flow의 원 저자가 글 앞에 업데이트를 추가했네요
https://nvie.com/posts/a-successful-git-branching-model/

- Git-Flow는 10년전에 나온 글이고 상황이 많이 변했음.
- 지금의 소프트웨어는 예전과 다르고, 특히나 Git 으로 만드는 소프트웨어들이 Web쪽으로 바뀌어왔음
- CD를 해야한다면 훨씬 간결한 GitHub Flow https://guides.github.com/introduction/flow/ 를 적용 고려
- 만병통치약은 없으니 자신의 상황을 고려해서 결정하세요.

 
하루에 1000번 배포하는 조직 되기

스타트업처럼 비즈니스 요구가 자주 변하는 상황에서 사용자에게 더 많은 가치를 빠르게 제공하려면, 배포는 자신감 있고 자연스럽게 이루어져야 합니다. 이런 일념하에서 “하루에도 1000번의 배포를 할 수 있도록” 배포 과정을 개선한 뱅크샐러드의 이야기를 소개합니다.

기존 배포 프로세스부터 거기서 느꼈던 고통, 뱅크샐러드만의 개발 조직 문화와 새로운 배포 프로세스까지 소개되어 있으니 가볍게 읽어보시면 좋겠습니다.

 
TBD:트렁크 기반 개발 - 소스코드 브랜칭 모델

- 트렁크라고 부르는 싱글 브랜치로 작업하는 모델 (Git 에서는 master)
- 큰팀에서는 짧은 피처 브랜치(1인, 몇일짜리)에서 작업후 PR&코드리뷰 후 머지
- CI&CD가 기본. 항상 릴리즈 가능한 상태로

 
구글 테크니컬 라이팅 for 엔지니어 [영문]

기술 문서 작성 관련 강의 와 자료들을 모아놓은 페이지
- 학생용 강의 (5h)
#1 기본 문법, 능동태, 간결하고 짧은 문장, 리스트와 테이블..
#2 대상 독자, 퇴고, 큰문서, 샘플코드
- 퍼실리테이터용 강의
- 구글의 테크니컬 라이터 직무에 대한 소개

엔지니어들 만을 위한게 아니라, 조직내에서 테크니컬 라이팅을 장려하도록 퍼실리테이팅 코스를 만들어준게 좋으네요.
퍼실리테이터용 슬라이드 자료가 보고싶은데, 구글그룹 가입이 필요합니다. 신청했는데 아직 인증전이라..

 
CLUI: Building a Graphical Command Line

오호 그래픽 CLI 를 어떻게 하면 좋을지를 보여주는 군요 :)

이거 비슷한 걸 어디서 본 것 같은데…라고 생각하다가 문득 떠올랐습니다. AutoCAD의 명령어 입력 인터페이스가 이것과 유사하지 않나 싶습니다.
https://www.youtube.com/watch?v=lSVhWsGU6DQ
https://www.youtube.com/watch?v=P8hgnurpPBM

오 CLUI 으로 제시한 1번, 2번은 쉘에서 구현해주면 괜찮을것 같네요. (3번은 차라리 더 복잡해 보여서.. )
fish 쉘이 좀더 확장하면 저런 모습이 되지 않을까 하는데 ㅎ
https://fishshell.com/

 
id Software의 프로그래밍 철학

id Software는 Wolfenstein 3D, Doom, Quake등의 게임을 만든 유명한 회사.
이 회사의 공동 창업자인 John Romero가 말한 프로그래밍 철학을 정리한 글입니다.

1. 일단 하라, 그리고 잘해라.
2. 항상 코드가 작동하게 관리하라.
3. 간단하게 만들라.
4. 좋은 툴을 만드는데에 시간을 투자해라.
5. 코드를 철저하게 테스트하라.
6. 버그는 최대한 빠르게 고쳐라.
7. 타겟층보다 고사양의 개발 시스템을 사용하라.
8. 지금 작업하는 버전에 맞춰 코드를 작성하라.
9. 컴포넌트 추상화를 잘 사용하라.
10. 피어리뷰를 활용하라.
11. 창의적일 수 있도록 프로그래머에게 자유를 주라.

아 참, 위의 철학을 적용함으로써 5.5년에 10명 이하의 개발자들이 28개의 게임을 출시했다고 합니다.

 
REST API 가이드 라인

stackoverflow에서 말하는 REST API의 좋은 예시
총 9가지의 rule로 구성되어 있고, Node.js로 예시를 들었습니다.
- JSON으로 응답할 것
- endpoint 경로에 동사 대신 명사를 쓸 것
- Collections의 이름은 복수명사로 지을 것
- 표준 error code를 활용해 에러를 처리할 것
등이 있습니다.

 
프로젝트 LightSpeed : 페이스북 메신저앱을 작고 빠르게 재개발

- 크기는 1/4, 속도는 두배 빠른 iOS 메신저앱 배포시작
- 가능한 Native OS의 것들을 사용
- SQLite에 모든것을 저장하는 방식으로 변경. 작업은 다 DB에서 일어나고, UI는 이를 표시만 하는 형태로
- 앱과 서버가 기능별 통신을 하는것보다, DB와 서버브로커가 통신하게 해서 로직을 단순화

단순히 메신저가 빨라졌어요! 라는 글일줄 알았는데, 많은 인사이트를 주네요.
- 다양한 UI 프레임워크들이 나오지만, 최상의 사용자 경험을 위해서는 Native가 답
- UI 재사용을 위해서 SQLite DB를 선택
- 심지어 이를 더 확장해서, SQLite를 모든 기능들을 지원하는 유니버설 시스템으로 사용. 모든 기능이 다 DB에서 일어나고 UI는 표시만 하게
- 모든 기능을 지원하는 통합 스키마를 만들고, 스토어드 프로시져로 비즈니스 로직들을 만들수 있는 플랫폼을 별도 개발 (MSYS)
- 앱이 서버와 통신하는 방식도 개별 프로토콜에서 통합방식으로 전환
- 서버 브로커가 게이트웨이로 서버의 각 기능과 통신하고, 서버브로커와 앱의 DB가 싱크하게 해서 커뮤니케이션 로직을 단순화

 
깃허브에서 1만 스타 받은 한국의 오픈소스들

- fzf
- vim-plug
- pytorch-tutorial
- tui.editor
- Awesome-CV
곧 1만개
- pinpoint
- summernote
- awesome-deep-vision

 
InventHub - GitHub for 전자 회로 설계

- 다양한 Electrical CAD 파일을 Layer 별로 스위칭하면서 직접 볼 수 있는 Visual VCS
- 변경에 대한 주석달기 및 토론
- 업데이트 오버뷰 기능으로 최종 수정을 비쥬얼하게 확인
- KiCad, AutoDesk Eagle 포맷 지원, Altium 지원 예정

결과물이 기판인 회로 설계에 Git을 적용하면 코드Diff 가 이런 모습이 되는군요

버전컨트롤 개념을 코드가 아닌 다른 작업에 적용한 솔루션들이 많이 나오고 있네요.
"The Developer's Way - 모두가 코딩을 배울 필요는 없다." https://news.hada.io/topic?id=1593
여기 발표에도 보면 이제 기업용 SaaS에도 버전컨트롤시스템 개념이 필요하다고 얘기하면서,
회사 조직도에도 버전관리를 도입한 https://www.charthop.com/ 이 나옵니다.

혹시나 이런 걸 구현하거나 기능을 가져와야 한다면, 처음부터 다 구현하기 보다는
GitLab https://gitlab.com/ ( 얘는 솔직히 넘 무겁고 )
가벼운 Gitea https://gitea.io/ 나 Gogs https://gogs.io/
등을 참고하거나 확장하는 것도 가능할 듯 합니다.

 
지암일기(支菴日記): 데이터로 다시 읽는 조선시대 양반의 생활

고산 윤선도(尹善道, 1587~1671)의 손자인 지암 윤이후(尹爾厚, 1636~1699)가 말년에 세상을 뜨기 직전까지 약 8년 가까이 쓴 일기가 최근 현대 한국어로 완역되었습니다. 주목할 만한 것은, 이 작업이 단지 책 출판으로 끝난 것이 아니라 번역 내용에 [인물], [사건], [공간]을 중심으로 온톨로지를 부여하여 시맨틱 데이터베이스로 만들어 공개하는 작업이 포함되었다는 점입니다. 따라서 그래프 탐색을 통한 인물 관계 시각화 분석 등이 가능합니다.

데이터셋의 온톨로지:
http://jiamdiary.info/data/datasets

Neo4j 그래프 데이터베이스 브라우저:
http://neo4j.jiamdiary.info/browser/

Github:
https://github.com/dhjad/jiamdiary.info

와 여러모로 훌륭하네요. 사이트 정말 맘에 듭니다.

Visualization 재미나네요. 일기를 필터링해서 보게 되어있습니다. http://jiamdiary.info/viz/lifestyle/

교육자료 가 PPT 와 영상으로 올라와있어서 디지털인문학 교육자료로 쓰일수 있다는게 정말 훌륭한 시도인듯 합니다.
http://jiamdiary.info/doc/edu

본문 링크도 클릭가능하게 복사해 둡니다.

데이터셋의 온톨로지:
http://jiamdiary.info/data/datasets

Neo4j 그래프 데이터베이스 브라우저:
http://neo4j.jiamdiary.info/browser/

Github:
https://github.com/dhjad/jiamdiary.info

 
Aleph - 대규모 문서 색인 및 상호검색 도구

- 조직범죄와 부패 전문 탐사를 전문으로 하는 OCCRP가 만든 탐사보도용 데이터조사 분석 도구
- 정형(DB)/비정형(PDF,XLS,DOC등) 데이터를 통합 상호 검색
- 데이터 구획화 및 접근관리 기능. 다국적 팀간에 유연한 공유를 지원
- 수백개의 공공데이터 소스로 부터 지속적인 크롤링
- 비주얼한 조사 분석 제공
- 데이터 임포트 지원
* HTML/XML 부터, PDF, RTF, Epub 외 대부분의 오피스(Doc, PPT) 문서
* XLS/CSV 및 DBF, SQLite, Access 등 테이블 포맷
* RFC822 MIME 이메일, Outlook PST/OLM 같은 메일박스, Mbox, Vcard
* Zip,Rar,Tar,7Zip,Gzip
* JPEG,PNG,GIF,TIFF,SVG 는 Tesseract 4 또는 Google Vision API로 OCR 해서 텍스트 추출

만든곳인 OCCRP 는 이런곳입니다.
"조직범죄와 부패 전문 탐사매체, OCCRP" https://newstapa.org/article/_DNLi

https://aleph.occrp.org/ 에서 실제 데이터로 사용해 보실수 있습니다.

OpenOil 이 만든 트레일러 동영상이 Aleph에 대해서 쉽게 설명해 줍니다.
( OpenOil은 전세계의 가스,기름,석탄등 천연자원들을 관리하기 위한 개방형 데이터 프레임워크를 만드는 회사입니다. )
https://www.youtube.com/watch?v=bg96HcR_2Jc

"부패" 전문 탐사조직이 만든거다 보니 기본 데이터 모델이 "Follow the Money" 입니다.
돈이 어떤 회사/ 어떤 사람 사이에서 흘러다니는지를 잘 추적합니다.
그러다 보니 기본 지원하는 데이터셋 개체 종류가 이렇습니다.
- Airplane, Assessment, Asset, Bank Account, Company, Contract, Court case, Customs Declaration, Land, Legal Entity

 
심리학 전공자가 Lazada의 데이터 사이언스VP가 된 방법

- 동남아의 아마존, Lazada의 VP였던 Eugene Yan의 이야기
- Coursera/EdX 온라인 데이터사이언스 강의 들으며 시작
- Python/Spark 등 계속 공부
- "난 아이폰이후 Kaggle이 최고라고 생각한다"
- Kaggle "Otto Product Classification challenge" 도전 : top 3%에 들음
- 초기 전자상거래 스타트업이던 Lazada도 제품 분류를 고민하고 있었기에, 얘기나 하자고 초대 받아서 간후 다음날 잡 오퍼 받음 (2015)

- 들어간후 첫 일은 Kaggle 에서 했던것과 비슷하지만 조금 다르게
* 수억개의 제품과 수천개의 카테고리에/내,외부 사용자를 위한 API형태로/속도 제약조건하에/지속적인 재훈련과 검증을 하는 일
- 그 다음엔 이메일로 상품 추천. 콜드스타트를 위해 기존 데이터 분석하고자 했다가 빅데이터 문제로 허덕이다가 Spark 선택하고 AB 테스트도 하고..

- 계속적으로 "What" 과 "How" 를 배우기 위해 다양한 방법을 시도
- 커뮤니케이션 능력을 키우기 위해 노력하고, 연습을 위해 여러 프로젝트에 자원

성공의 3가지 키포인트

1. "지속적인 자기 학습"
2. "Get Shit Done"
3. "커뮤니케이션 잘하기"

 
세상에서 가장 빠른 이메일 경험, 슈퍼휴먼

- ‘합격’해야만 하는 쓸 수 있는 월$30짜리 이메일, 당신이라면 ?
- 인박스제로에 도달하는 가장 빠른 도구
- 예쁜 UI, 강력한 단축키 시스템
- 수신자 확인
- 멀티 캘린더 연동
- 스니펫으로 자주보내는 메일 템플릿화

다른분 댓글달다 슈퍼휴먼 자체를 긱뉴스에는 소개 안 한듯 하여 올려봅니다.
슈퍼휴먼은 다른 소개글들을 통해서 몇번 언급 되었습니다.

훌륭한 제품을 위해서는 Gamification 이 아니라 Game Design 을 해야한다 https://news.hada.io/topic?id=1301
- 슈퍼휴먼 창업자의 발표입니다.

The Developer's Way - 모두가 코딩을 배울 필요는 없다. https://news.hada.io/topic?id=1593

 
나만의 쉘 자동완성 만들기

- 직접 만든 도구나 쉘스크립트의 명령어 리스트를 보고, 선택하고, 히스토리에 남기면서 실행하게 만드는 법
- fzf 의 CTRL-T 동작을 차용해서, 자동완성을 CLUI 스타일로 개인화
- git 외에 다양한 명령어로 확장가능

어제 올라왔던 "CLUI: Building a Graphical Command Line" https://news.hada.io/topic?id=1651
개념과 아주 잘 맞는 구현이네요. 이 fzf 동작을 차용하는 방식은 두고두고 써먹을데가 있을듯 합니다.

fzf - command-line fuzzy finder 는
카카오의 최준건님이 만든 깃헙 별이 27500개가 넘는 해외에서도 유명한 오픈소스 입니다.

https://github.com/junegunn/fzf

 
WaveGuide - 검색가능한 UI/UX/CX 디자인 가이드

- 특정 기능을 각 서비스들이 어떻게 구현했는지 편하게 화면 캡쳐로 보고, 검색 및 브라우징 가능
- 데스크탑/모바일 랜딩페이지들의 구성 및 단계별 스크린샷 보기
- 이커머스 서비스들의 내부 화면들
- 모바일 앱들의 기능별 화면 보기
- iOS/Android 앱스토어 스크린샷

랜딩페이지는 정말 중요합니다.
온라인 광고 캠페인을 실행하기 전에, 내 서비스의 랜딩페이지가 어떤지를 먼저 살펴봐야.
모바일도 안되는 홈화면에 뚝 떨어뜨리는 광고들 보면 한숨이..

약 8000개의 사이트/앱 스크린샷이 등록되어 있습니다.
실제로 이런 데스크탑/모바일의 랜딩페이지들은 세부까지 찾아서 보기가 어려웠는데 다 캡쳐해놔서 편하게 볼수 있습니다.
이런 UX패턴 모음 사이트들 꽤 많이 봤는데, 실제로 가장 쓸모있을듯 하네요. 사이트 구성도 잘해놔서 보기가 편합니다.

다만, 검색은 태그별 검색하다 보니 결과가 조금 아쉽습니다.
( 예를 들어 Login 창들만 다 보여줘! 같은거가 잘 안되네요 ㅠ)
그나마 필터 및 카테고리로 찾아들어가는게 있어서 상호 보완은 가능합니다.

 
모두가 크리에이터인 세상, 열정 이코노미(Passion economy) (번역)

- 개성의 수익화
1. 기업이나 전문직이 아니어도 누구나 돈을 벌 수 있습니다.
2. 개성은 버그가 아닌 기능이 됩니다.
3. 디지털 상품 및 온라인 서비스가 메인입니다.
4. 사업을 운영하고 성장시키기 위한 통합 솔루션을 제공합니다.
5. 새로운 형태의 직업에 대한 기회를 제공합니다.
- 플랫폼 방법론 : 마켓플레이스 vs SaaS
- 열정 이코노미의 미래

 
단디 - 한국어 맞춤법 검사기 for VS Code

- Visual Studio Code 용 한국어 맞춤법 검사기 확장
- 명령어 창에서 DANDY 선택하여 실행
- 틀린 문장에 밑줄, 마우스 올리면 왜 틀렸는지를 보여주고 Quick Fix
- 단축키 Ctrl + . 으로 바로 대치어들 보고 선택 가능

 
Node.js 모범 사례 [번역]

- 계속 추가중인 50개 이상의 모범사례 모음집
1. 프로젝트 구조 설계
2. 에러 처리 방법
3. 코드 스타일
4. 테스트 및 전체 품질 관리
5. 운영 환경으로 전환하기
6. 보안
7. 성능