Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.

기술 뉴스 #75 : 17-04-01

웹개발 관련

  • Pretty Printing : 서비스 워커 자바스크립트 라이브러리를 개발하면서 디버깅 목적의 로깅 메시지를 보기가 어려워서 console로 로깅을 더 보기 좋게 하는 방법을 연구한 글이다. console.group()console.groupCollapsed()로 로그 메시지를 그룹으로 묶어주고 보기 좋게 하고 색을 지정해서 읽기 쉽게 지정했다.(영어)
  • You don’t need a fancy framework to use GraphQL with React : React 애플리케이션에서 GraphQL을 이용할 때 Relay나 Apollo를 이용하지 않고 직접 구현해서 사용하는 방법을 설명하는 글이다. 프레임워크가 필요 없는 것은 아니지만, 보통은 필요 이상의 기능이 프레임워크에 포함되어 있으므로 간단한 기능은 직접 구현해서 사용할 수 있다고 설명하고 있다.(영어)
  • 10 React mini-patterns : React를 사용하면서
  • (React Router) v4로 마이그레이션 해보자! : React Router가 v4로 버전업이 올라가면서 기존과는 많이 달라졌는데 v3로 작성된 코드를 v4로 바꾼 과정을 설명한 글이다. v3를 쓰고 있어서 v4로 변경하려고 고민 중이라면 참고할 만하다. 참고로 React Router v4는 완전히 새로 작성되었으므로 프로젝트에 올라온 마이그레이션 문서 요청에 대해 커미터가 단순 마이그레이션으로 올릴 수 없고 새로 고민하면서 코드를 작성해야 한다고 댓글을 달기도 했다.(한국어)
  • Vue.js 살펴보기 : Vue.js의 구조와 간단한 DOM 작성과 컴포넌트 및 이벤트 바인딩을 간단하게 설명하는 글이다.(한국어)
  • (번역) 과연 Vue.js가 앵귤러나 리엑트보다 좋을까? : Vue.js Is Good, But Is It Better Than Angular Or React?의 번역 글로 Vue.js를 간단히 소개하며 특징적인 기능을 Angular나 React와 코드와 간단히 비교하면서 Vue.js가 어떻게 접근하는지를 보여주고 있다. Angular나 React를 해본 적이 있다면 간단히 보면서 Vue.js의 특징을 이해할 수 있다.(한국어)
  • Why WebAssembly is Faster Than asm.js : WebAssembly가 왜 asm.js보다 빠른지를 설명한 글이다. WebAssembly 코드의 사이즈가 작아서 다운로드 시간이 적게 걸리고 파싱 시간도 짧아지면서 asm.js보다 더 많은 CPU 기능을 지원하고 새로 만든 Binaryen 옵티마이저로 속도를 높였다는 설명이다.(영어)

그 밖의 프로그래밍 관련

  • Micro - a microservices toolkit : Go로 작성된 마이크로서비스 툴킷인 Micro를 소개하는 글이다. 마이크로서비스 아키텍처에서는 각 서비스 간의 호출이나 관리가 쉽지 않은데 RPC에 기반을 둔 Micro가 이를 어떻게 해결하는지 설명하고 있다. Sidecar라는 프로젝트로 HTTP 인터페이스도 제공해서 Go가 아닌 다른 언어로도 Micro를 이용할 수 있다.(영어)
  • Docker and OOM(Out Of Memory) Killer : Out of Memory로 Docker 컨테이너가 죽는 현상에 대해서 분석한 글이다. 어떤 과정을 통해서 커널이 Docker 컨테이너를 죽이게 되고 이를 방지하기 위해서는 어떤 옵션을 설정해야 하는지가 잘 나와 있다. 이런 메모리 오류는 추적하기가 쉽지 않은데 자세히 나와 있어서 비슷한 문제를 겪을 때 큰 도움이 될 거 같다.(한국어)

볼만한 링크

  • 회사에서 무엇을 배울 것인가? : 많이들 고민하는 "제너럴리스트가 맞나 스페셜리스트가 맞나"에 대한 주제를 논리적으로 잘 푼 글이다. 이제 T자형 인재보다는 주변 내용을 어느 정도는 알고 있어야 하지만 가장 중요한 것은 배움의 속도이고 그 배움의 속도를 높이기 위해서 별도의 공부도 필요하지만 회사 내에서도 다양한 공부가 필요하다고 설명하고 있다. 제너럴리스트를 원하는 경우 회사에서 직원을 제너럴리스트로 보고 있는지 스페셜리스트로 보고 있는지를 판단할 수 있는 요소까지 설명하고 있다.(한국어)
  • SaaS: 국내 도입이 시급합니다. : SaaS로 수익을 올리는 회사들이 국내에는 많지 않음을 지적하고 SaaS의 접근 방식과 장점을 설명한 글이다. 나는 국내에서 SaaS가 어려운 이유는 시장 규모와 인식 + SaaS가 지역적인 경계가 없는 경우가 많아서라고 생각하므로 도입의 문제라고는 생각하지 않지만, SaaS 업체들이 취하고 있는 접근방법에 대한 설명을 읽어볼 만하다.(한국어)

IT 업계 뉴스

프로젝트

  • guetzli : 구글이 공개한 JPEG로 libjpeg보다 20~30% 적은 용량의 이미지로 인코딩한다.
  • containerd : Docker에서 공개한 컨테이너 런타임
  • Open Arrow : Open color를 만든 heeyeun님이 만든 프로젝트로 폰트마다 다른 화살표의 글리프프때문에 통일된 화살표를 제공하기 위해 화살표 심폴 폰트를 제공하는 프로젝트다.
  • HTTP Status Code Badges : HTTP 상태 코드를 백지 형태로 제공하는 사이트로 Cloudflare를 통해 제공하고 있다.
  • git-standup : 전날 Git에서 어떤 작업을 했는지 모여주는 프로젝트로 멀티 프로젝트에서도 stadup 명령어를 사용하면 전날 커밋한 내역을 한꺼번에 볼 수 있다.
  • travis-watch : 현재 프로젝트의 커밋을 기준으로 Travis CI의 빌드 결과를 터미널에서 볼 수 있는 CLI 프로그램.
  • Reactide : Electron 기반으로 만들어진 React 전용 IDE

버전 업데이트

2017/04/01 22:44 2017/04/01 22:44

[Book] 팀을 위한 Git

팀을 위한 Git

팀을 위한 Git - 6점
엠마 제인 호그빈 웨스트비 지음
최병현 옮김
한빛미디어


나는 Git에는 꽤 익숙한 편이다. Git을 사용한 지도 꽤 오래되었고 오픈 소스 프로젝트에 관심이 많아서 GitHub에서도 많이 놀다 보니 협업하면서 Git을 사용하고 히스토리를 정렬하고 충돌을 해결하는데도 큰 문제가 없다. GitHub에서 소규모의 오픈소스 프로젝트를 운영하면서 PR을 받기도 했지만 아주 큰 규모의 팀에서 Git으로 협업해보지는 않았지만, 소규모로는 꽤 많이 해보았다.

이 책은 제목이 맘에 들어서 집어 들었다. Git을 쓰고 있긴 하지만 어느 정도 익숙해지니 사용하는 패턴이 고정화되고 그 패턴 내에서 대부분 문제를 해결할 수 있으므로 더 새로운 방법을 찾거나 하진 않게 된다. 주변 개발자들과 얘기해보아도 큰 흐름은 비슷하지만, 세부적인 부분에서는 간단하게는 명령어부터 자잘한 정책까지 다르게 사용하는 것을 알고 있다.

나는 GitHub Flow를 선호하는 편이지만 막상 팀원들과 협업할 때는 불편하거나 생산성을 헤치는 부분도 있고 애매해서 이렇게 하는 게 맞나 하는 생각이 드는 부분도 있었다. 꼭 특정 Flow를 따르게 중요한 건 아니고 예전에는 gitflow를 사용했지만, 나한테는 맞지 않는다고 생각해서 이젠 전혀 쓰지 않지만 gitflow에서 설명한 브랜치에 대한 접근 방법은 꽤 도움이 되었다.

제목이 아무래도 "팀을 위한 Git"이라서 실제로 협업에 대한 다양한 접근이나 해결책에 대한 도움을 좀 얻고 싶었다. 책이 나쁘다고 생각은 안 하지만 나한테는 큰 도움은 안 되었다. 읽고 나서 느낌은 다른 책들이 Git의 명령어 위주로 설명하고 있다면(Git 책을 많이 보진 않았지만...) 이 책은 협업 설명하면서 필요한 Git 명령어를 설명하는 느낌이다. 협업 자체에 아주 비중을 둔다기 보다는 기초적인 접근에서 협업을 설명하면서 그 가운데 Git 명령어를 설명하는 책이다. 난 Git 명령어가 어느 정도 익숙하므로 이해하는데 어렵지 않았지만, 협업과 같이 설명하다 보니 아무래도 초심자한테는 이해하기 어렵지 않나 하는 느낌이 들었다. 실제로 설명 자체가 친절한 느낌은 아니었다.

특히 친절하지 않다고 느껴지는 부분은 명령어를 보여줄 때 git checkout commitgit add -patch filename처럼 나오는 부분이다. 여기서 commit이나 filename은 사용자가 입력하는 부분이 아니라 여기에 커밋이나 파일을 입력하라는 건데 다른 표시 없이 명령어처럼 같이 쓰여 있기 때문에 git에 익숙하지 않은 사람이라면 저 명령어 그대로 따라 해보면서 헤매지 않을까 싶다.

다루는 내용은 꽤 많기는 하다. 개발할 때 협업이라는 관점을 설명하면서 프로젝트의 거버넌스 모델을 설명하고 이를 브랜치로 어떻게 접근해서 같이 개발하는지를 설명한다. 사실 QA나 문서화 같은 얘기는 굳이 이 책에 나올 필요가 있나 싶기는 하지만 1부에서는 아주 기초적인 Git 명령어와 협업에서 중요시 해야 하는 일반적인 얘기를 하고 있다.

2부에서는 본격적으로 프로젝트에서 Git을 사용하는 법을 설명하는데 1인 팀으로 사용할 때의 브랜치 사용방법을 설명하고 진행하면서 작업을 롤백하거나 리베이스하는 과정을 설명한다. 1인 이상의 팀에서의 작업을 설명하면서 입장별로 어떻게 Git을 써야 하는지를 보여주고 검토를 하는 과정까지도 설명한다. 여기서 각 플로별로 약간의 브랜치 전략이나 머지 등을 설명하지만 그렇게 유용한 정보는 아니었다 생각한다. 3부에서는 Git을 호스팅하는 GitHub, Bitbucket, GitLab의 사용법을 화면을 보여주면서 하나하나 보여주는데 너무 친절해서 지루한 부분이다. "create 눌러서 프로젝트 창 나오면 제목 입력하고 완료 누르면 만들어진다." 이런 식으로 하나하나 다 설명한다.

Git의 간단한 명령어는 배워서 commit, pull, push 등은 하고 있지만, 실제 사용패턴을 좀 더 알고 싶어한다거나 팀에서 Git을 잘 다루는 사람이 없어서 Git 도입에 어려움을 겪고 있다면 어느 정도 도움이 될 책이라고 생각한다.

2017/03/27 22:43 2017/03/27 22:43