[GN#59] ADR을 써야 하는 이유 와 슈퍼셀의 10가지 교훈

2020-08-17 ~ 2020-08-23 사이의 주요 뉴스들
"선택과 집중"은 스타트업, 중견기업, 대기업, 크기에 상관없이 모든 비즈니스의 핵심 키워드입니다. 특히나 초기 스타트업이라면 어떤 것을 선택하고 집중하느냐에 따라 성패가 좌우된다고 얘기합니다. 그런데 우리가 어떤 걸 선택하는 결정을 내렸을 때 그 시절에 왜 그렇게 결정을 했는지는 잘 기억을 하지 못합니다. 회의록을 뒤져서 찾아보면 얼추 따라갈 수는 있겠지만, 그게 말처럼 쉽지 않죠. 비즈니스뿐만 아니라 개발할 때도 미래에 영향을 미치는 다양한 결정을 해야할 것들이 있습니다. 개발 언어를 선택하고, 어떤 아키텍처로 갈 것인가, 프레임워크와 DB는 뭐로 할까 등등.. 우리는 현재의 기술/비즈니스 및 멤버나 조직의 상황에 맞게 하나하나 신중히 결정하고 그대로 진행하게 됩니다. 그리고 6개월에서 1년쯤 지나 새로운 개발팀 멤버가 들어와서 묻는 거죠. '왜 이런 결정을 한 건가요?' 아니면 미래의 내가 묻기도 합니다. '난 그때 왜 그랬을까 ?' 이를 위해서 장황한 설명을 하기도 하고, 온보딩 세션을 만들기도 하고, 과거의 나를 옹호하기 위해 다투기도 하면서 시간을 허비하게 됩니다. 이 때 효율적인 방법중 하나가 ADR ( Architecture Decision Records ) 을 이용하는 것입니다.

ADR은 우리가 어떤 아키텍처적인 결정을 내렸을 때 그걸 기록해 두는 문서를 말하는데요. 뭘 결정했다만 적는 게 아니라, 왜 그런 결정을 내렸는지에 대한 컨텍스트를 다 같이 기록해두어서 차후에 우리가 다시 이슈를 떠올릴 때, 결정하던 시점의 기억을 다시 머리에 넣어주는 용도라고 보시면 될거 같아요. 결정 내용, 고민한 이유, 그 외 고려한 대안들, 회의록, 슬랙에서의 대화 내역, 참고한 링크들 등을 다 포함하는 거죠. 어디 별도로 두는게 아니라, 개발자들이 보는 코드베이스 안에 텍스트 파일로 아예 같이 넣어두는 겁니다. 언제라도 참고 할 수 있게요. 보통은 새 멤버가 들어왔을 때 보여주기 좋겠죠. GitHub에서는 모바일팀이 ADR을 적용하고 있다고 하는데요. 왜 필요한지를 설명하며 이렇게 얘기합니다. "ADR은 당신을 위한 게 아니라, 미래의 당신 / 당신의 동료 / 미래의 동료를 위한 것입니다." 관련해서 예제로 작성된 ADR 들도 간단히 번역해 두었으니 한번 살펴보시기 바랍니다. 프로그래밍 언어 결정을 기록해둔 ADR에서는 현재의 다양한 언어들을 다 비교하고 있어서 재미삼아 읽어보실만 합니다.

2010년에 창업한 슈퍼셀이 10주년을 맞이하며 자신들의 그간 경험을 정리해서 10가지 교훈이라는 제목으로 블로그에 올린 글이 번역되었습니다. 제가 가장 중요하게 생각하는 건 10번째 교훈인 "기업의 가치와 문화를 명문화하세요. 그리고 회사가 배우고 성장하면 지속적으로 개정하세요" 인 것 같습니다. 그래야 앞에서 얘기하는 9가지 교훈이 실천 가능 한거 같아요. 회사가 추구하는 가치와 그걸 뒷받침하는 문화가 명문화되어야 사람들이 어떤 결정을 할 때 행동하는 기반이 되고, 실패해도 시도할 수 있고, 멤버들간에 신뢰할 수 있게 됩니다.

★ 긱뉴스에 올라온 뉴스들을 좀 더 쉽게 말로 설명하는 팟캐스트를 시작했습니다. 이동중에나 운동/운전 하실 때 편하게 들어보세요.

ㅤ → 애플 Podcast로 듣기
ㅤ → 팟티에서 듣기
ㅤ → 팟빵에서 듣기
ㅤ → 구글 Podcast로 듣기


✓ 사내에서 슬랙을 쓰신다면 뉴스채널에 GeekNews SlackBot 을 추가하여 편하게 새 글을 받아보시고, 멤버들에게도 공유해주세요.
✓ 주위분들께 긱뉴스 위클리 - https://news.hada.io/weekly 를 추천해 주세요.
✓ 스팸함에 들어가지 않게 news@hada.io 를 주소록에 추가해주세요.
Twitter , Facebook 에서도 긱뉴스를 받아 보실 수 있습니다.

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


ADR을 써야 하는 이유
10년간 슈퍼셀을 경영하며 배운 10가지 교훈 [번역글]
소프트웨어 학습 태도
isoflow - Isometric 클라우드 다이어그램 그리기 도구
Rust의 미래를 위한 재단의 토대 마련
eBPF 공식 사이트 오픈
QRPicture - 사진처럼 보이는 QR코드 만들기
Karate - 오픈소스 테스트 자동화 도구
umami - 셀프호스팅 가능한 Google Analytics 대체제
그림으로 비교한 Apple vs. Google
소셜미디어 이미지 사이즈 2020 인포그래픽
그냥 우클릭 하면 안 되나요?
Embla Carousel - 유연한 캐러셀 라이브러리
Chromium이 Root DNS에 끼치는 영향
QA Wolf- 브라우저 동작을 Playwright/Jest 기반 코드로 자동 생성
개인정보를 수집하지 않는 검색 엔진 DuckDuckGo 사용 팁 모음
Puppeteer Recorder - 브라우저 동작을 퍼펫티어 스크립트로 녹화하기
ct.js - 오픈소스 2D 게임 엔진 & 에디터
TypeScript 4.0 발표
Google Apps 위에서 React 앱 만들기
Kinesis 키보드 3년 사용 후기
GitHub, The ReadME 프로젝트 공개
Headless Dev - Puppeteer & Playwright 지식 창고
Layout Shift GIF Generator
페이스북, 인스타그램 DM을 페이스북 메신저로 통합 시작
AWS Kinesis vs. Kafka 성능비교
RustConf 2020 전체 세션 비디오/자막/발표자료 및 링크 모음
2020 네이버 테크 콘서트 온라인
IBM, 7nm 공정 POWER10 프로세서 공개
BootBot - 페이스북 메신저 챗봇 프레임워크
Ventoy - 새로운 USB 부팅 솔루션