[GN#97] 구글의 소프트웨어 엔지니어링과 파이썬 배우기

2021-05-10 ~ 2021-05-16 사이의 주요 뉴스들
구글이 어떻게 효율적인 엔지니어링 조직을 만들었는지를 보여주는 책인 "Software Engineering at Google" 이 무료 e북으로 공개되었습니다. 팀 단위 일하기, 지식 공유, 엔지니어링 생산성 평가하기, 코드리뷰, 유닛테스트부터 대규모 테스팅, CI/CD 등등 목차만 훑어봐도 읽고 싶게 만드는 책이네요. 꼭 구글 같은 규모가 아니라 스타트업에서도 개발 조직을 꾸리고 개발 문화를 잡을 때 충분히 참고할 만한 내용인 것 같습니다.

대학에서 배우는 전산학개론(CS101, Computer Science 101)은 컴퓨터의 기초와 계산적인 사고, 프로그래밍 기초를 가르치는 과목인데요. 제가 배울 때만 해도 C 언어로 배웠었는데, 요즘은 거의 Python으로 정착이 된 것 같습니다. "How to Think Like a Computer Scientist" 는 컴퓨터 과학자 처럼 생각하기 위해 파이썬을 설명하는 책인데요. 나온지 꽤 오래된 책이라, 최신 파이썬을 실제 프로젝트 기반으로 웹에서 배워볼 수 있도록 개정한 "Learn Python the Right Way" 와 "Code With Replit" 두 권의 무료 e북이 공개되었습니다. 파이썬 공부하실 때 참고하세요.


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

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


Software Engineering at Google [602p PDF]

- O'Reilly에서 출간된 책을 무료 이북으로 공개
- 구글의 유니크한 엔지니어링 문화, 프로세스, 도구를 통해서 어떻게 효율적인 엔지니어링 조직을 만드는지를 보여주는 책
* 소프트웨어 조직이 코드를 설계,아키텍팅,작성,유지보수할 때 염두에 두어야 하는 세가지 기본원칙
1. "시간(Time)"이 소프트웨어의 지속 가능성에 미치는 영향과 탄력적으로 만드는 방법
2. "규모(Scale)"가 엔지니어링 조직내의 소프트웨어 프랙티스 실행가능성에 미치는 영향
3. 설계 평가나 개발 결정시 엔지니어가 만들어야 하는 "절충안(Trade-off)"

목차가 훌륭하네요 ;)
1. What is Software Engineering ?
2. How to Work Well on Teams
3. Knowledge Sharing
4. Engineering for Equity
5. How to Lead a Team
6. Leading at Scale
7. Measuring Engineering Productivity
8. Style Guides and Rules
9. Code Review
10. Documentation
11. Testing Overview
12. Unit Testing
13. Test Doubles
14. Larger Testing
15. Deprecation
16. Version Control and Branch Management
17. Code Search
18. Build Systems and Build Philosophy
19. Critique: Google’s Code Review Tool
20. Static Analysis
21. Dependency Management
22. Large-Scale Changes
23. Continuous Integration
24. Continuous Delivery
25. Compute as a Service

 
올바른 방법으로 Python 배우기 [무료 E북]

- 유명한 책인 "컴퓨터 과학자처럼 생각하며 배우는 파이썬"의 최신 개정판
- 2권으로 구성
ㅤ→ Learn Python the Right Way : 446p PDF
ㅤ→ Code With Replit : 313p PDF
- 전산(Computer Science) 기초 부터 실제(Real World) 프로젝트를 구현하며 파이썬 배우기
- 파이썬 설치하지 않고 온라인에서 Repl.it 을 이용해서 진행
- 발표자료와 소스코드를 마크다운으로 해서 독자들이 쉽게 기여 가능
- 온라인 PythonTutor.com 을 이용해서 단계별로 시각화 & 코드 실행
- GNU Free Documentation License

 
Creator Economy 가이드

- 창작자들을 위한 220+개 플랫폼 지도
- 개인 취미에서 프로 창작자로 가기 위한 다양한 서비스들을 카테고리 별 정리
ㅤ→ Audience Curation : Content, Audio & Chat, Event, Live Streaming
ㅤ→ Audience Monetization : NFT & Social Token, Courses & Monetizing Knowledge, Fashion Marketplaces, Fan Interactions, Live Shopping
ㅤ→ Vertical Platforms : Fitness, Music, Podcasting, Art & Photography, Gaming
ㅤ→ Community Management : Tools, Membership & Donations, Link in Bio
ㅤ→ Creator Tools : Web Builders, Audio & Video, FinTEch, Tools in a Box, CRM, Design

창작자들을 위한 시장은 들여다 볼수록 재미난듯 합니다.

Link in Bio 에만 7개나 되는 서비스들이 있는데요.
인스타그램등의 플랫폼에서 여러개의 링크들을 주루룩 나열하는게 보기도 안좋고 기능도 없으니까,
Bio에 한개의 링크만 걸면 거기서 위의 Audience Monetization 나 Community Management 관련 다양한 링크로 보내주는 역할을 합니다.

인스타그램 계정을 보다가, 이 계정은 왜 이렇게 운영하는거지? 싶을때 Bio 링크를 눌러보면 참 다양한 것들을 발견하게 됩니다.

Stir 같은 도구들도 재미나구요
- Stir - 창작자 비즈니스를 돕는 도구 https://news.hada.io/topic?id=3718

 
Excalidraw - 오픈소스 가상 칠판 협업도구

- 손으로 그린 듯한 다이어그램을 그려주는 Virtual Whiteboard
- Rough.js + TypeScript + React + Virgil(폰트)
- 사각/마름모/원/화살표/직선/커브
- 공개 라이브러리에서 다양한 컴포넌트들 가져와서 사용
- Excel/CSV 데이터로 차트 생성 지원
- React 컴포넌트로 자신의 앱에 임베드 가능

오픈소스로 공개한지는 1년 정도 되었습니다.
- One Year of Excalidraw https://blog.excalidraw.com/one-year-of-excalidraw/

공개 Library에 다른 사람들이 그린 다양한 컴포넌트 들이 있어서 바로 가져다 사용 가능합니다.
- https://libraries.excalidraw.com/

이번에 유료인 Excalidraw+ 버전을 공개했습니다. 워크스페이스 에서 그린 것들을 관리, 실시간 협업기능을 강화
- https://blog.excalidraw.com/introducing-excalidraw-plus/

 
Skribbl - 손으로 그린 무료 일러스트 모음

- 저작자 표시 없이 개인/상용 어디든 사용 가능한 일러스트들
- PNG들은 무료로 다운로드 가능
- 작가별 SVG 묶음은 개당 $1+ 이상 내면 구입 가능
ㅤ→ 작가들은 가입해서 자신의 작품 판매 및 프로필을 통해 커미션 수주, 아트 클래스 진행 가능

 
Slidev - 개발자를 위한 발표자료 작성 도구

- 마크다운 기반 슬라이드
- Syntax Highlighting
- Windi CSS 및 테마 지원
- Vue 컴포넌트 임베딩
- 프리젠터 모드
- 자체 에디터 또는 VS Code 확장으로 편집 가능
- 레코딩 기능 및 카메라 뷰 지원
- PDF/PNG 및 SPA로 Export 지원
- Vite로 핫 리로딩 및 플러그인 지원

* MarkShow - 마크다운으로 슬라이드쇼 만들기 https://news.hada.io/topic?id=4136

DeckSet과 비슷해보이지만 Slidev가 조금 더 강한 것 같네요.
https://www.deckset.com/

 
10+PB 데이터를 저장하는 스타트업이라면 어떤 저장소 옵션이 좋을까 ?

HN에 올라온 질문과 다양한 대답들. 현재는 S3에 저장중이고 점차 커진다고
- HW비용면에서는 자체 호스팅이 당연히 저렴 : HP Apollo 나 RackMountPro 등
ㅤ→ 하지만 숨겨진 비용들이 있음 : 스토리지 엔지니어 고용, 장비 외의 장소 비용, 재해복구, 하드웨어 교체, CAPEX/OPEX 등등
ㅤ→ 파일시스템 구성 및 관리도 문제 : Ceph, MinIO, ZFS
- Backblaze B2 / Wasabi / Scaleway 등 다른 전용 클라우드 저장소 서비스
- Cloudian / Scality / NetApp Storagegrid 등의 On-Prem S3 들
- AWS Direct Connect
- 그 정도 규모면 AWS/Azure/GCP 와 협의해서 가격을 다운
- 대규모 데이터 저장하는 사람들이 모이는 서브레딧 https://www.reddit.com/r/DataHoarder/

- MinIO - 고성능 K8S 기반 객체 저장소 오픈소스 https://news.hada.io/topic?id=4211
- Backblaze B2, S3 호환 API 공개 https://news.hada.io/topic?id=2020

 
Kobra - 머신러닝을 위한 비쥬얼 프로그래밍 언어

- 스크래치 와 같은 비쥬얼 UI : 블럭을 끌어다 조합하는 방식
- ML을 코드 작성 없이 쉽게 배우고 사용할 수 있도록 만든 도구
- GraphQL & Dataset API 제공
- TypeScript + React + Blockly (구글의 비쥬얼 프로그래밍 에디터용 JS라이브러리) 기반 오픈소스

메인 개발자가 16세 고등학생 이라는게 놀랍네요. 개인 웹페이지 - https://pt5.dev/
공교육 시스템내에 있지만 지원을 받은 형태의 마그넷 스쿨인 Tesla STEM High School 재학중

- 미국의 마그넷스쿨 : https://m.blog.naver.com/PostView.nhn/…

 
Hurl - 웹기반 HTTP Req 테스트 도구

- HTTP 메소드/헤더/파라미터 수정, Basic 인증/OAuth, Redirect 팔로윙등 지원
- 2009년에 깃헙 공동창업자인 Chris Wanstrath 와 유명 개발자 Leah Culver 가 같이 만들었던 도구
- Twilio, Runscope 등으로 인수되었다가 올해 Pipedream이 인수하면서 재 오픈

* Pipedream - 개발자를 위한 Integration 플랫폼 https://news.hada.io/topic?id=734

- Hoppscotch - API 리퀘스트 빌더 https://news.hada.io/topic?id=3973
- HTTPie - 쓰기 쉬운 코맨드라인 HTTP 클라이언트 https://news.hada.io/topic?id=998
- wuzz - CLI용 인터랙티브 HTTP 도구 https://news.hada.io/topic?id=3655

 
코더

- '코더'라는 단어에 담긴 편견과 그것을 다루는 언론 기사들의 문제점
- 프로그래머는 설계만 하는 건축가가 아니라 직접 무대에 올라서 노래를 부르는 연예인에 가까움
- 고급 개발자의 조건은 뛰어난 코딩 실력뿐만 아니라 겸손함과 좋은 커뮤니케이션 능력을 가지고 있는 사람

어떤 사람은 프로그래머의 일을 요리사에 빗대기도 하더군요.
https://twitter.com/_Akamig/status/1392180067606745088

겸손은 모든 업종의 고급인력이 갖춰야할 필수 소양 같아요. 코딩도 언어를 이용한 작업이라 문학과 같다는 생각이 드네요. ㅎㅎ

 
Screen Sizes - 애플 기기들의 화면크기 완벽 가이드

- 아이폰, 아이패드, 아이팟 터치, 애플워치, 애플TV, CarPlay
- 모델별 해상도, 지원OS버전, PPI, Aspect Ratio, Contrast Ratio, True Tone 여부, Display Type
- Safe Area Size : Status Bar / Home Indicator 등 (상단/하단, Portrait/Landscape), Notch 와 Ear 의 크기 등
- Widget 의 크기 : Small, Medium, Large

 
osmos::feed - GitHub을 이용하는 웹 RSS리더

- GitHub Pages로 여러개의 Feed를 모아서 정적 호스팅
- GitHub Actions 로 주기적으로 Feed를 리빌드
ㅤ→ 빌드할때 이전 데이터 캐쉬로 해서 새 콘텐츠만 다운로드
- yaml 파일에 피드 추가해서 구독 관리
- 속도에 최적화된 node.js 스크립트로 콘텐츠 가져오기 & 정적 사이트 생성

챙겨보는 기술 블로그 모음 같은 거를 만들면 좋겠네요

- 기업 기술블로그 모음 https://news.hada.io/topic?id=3646
- 특정 기술 스택에 대한 최고의 개발자 블로그 찾기 https://news.hada.io/topic?id=3638
- 기술 & 스타트업 뉴스레터 및 블로그 모음 https://news.hada.io/topic?id=2505

 
AWS SaaS Boost 오픈소스 공개

- SaaS 솔루션을 쉽게 만들수 있게 도와주는 도구
- 개발자가 코어 기능에 집중할 수 있도록 다른 기능들을 기본 제공
ㅤ→ 하나의 서비스를 여러 사용자(Tenant)에게 제공하고 사용량/구독모델에 따라 비용을 받을수 있게 해줌
ㅤ→ 코어 기능은 도커이미지로 만들어서 등록(ECR)
ㅤ→ 기본 제공 : Onboarding, Metrics, User, Settings, Tenant, Quota 등
ㅤ→ React Admin 제공 : Lambda + Cognito + S3
- 동작
ㅤ→ Onboarding Tenant : SaaS 에 새로 가입하면 Onboarding & Setting 마이크로서비스 실행 (CloudFormation을 이용한 자동화)
ㅤ→ Tenant 환경 : 각각의 VPC 구성하고 Route 53으로 라우팅, 각 Tenant는 ECS 클러스터에 배포
ㅤ→ Stripe API 키 추가해서 SaaS 빌링 구성
ㅤ→ QuickSight 로 운영 통계 제공
* re:invent 2020 에서 프리뷰 공개

 
PostgreSQL을 데이터 웨어하우스로 사용하기

데이터분석을 통한 의사결정 지원시스템 Narrative가 경험을 통해 정리한 주요 트윅들
- 프로덕션 시스템과 같은 서버 사용하지 말 것
- PG 12+로 업그레이드(CTE 사용하지 말 것)
- 인덱스는 가능한 작게
- 테이블 파티셔닝(range/list)
- 디스크 I/O 최소화
- 벌크 인서트 후 Vacuum
- 병렬 쿼리 사용하기
- 통계 샘플링을 증가시키기 (컬럼별 또는 DB 전체. 기본값 100 이지만 500)
- 더 적은 컬럼 사용하기 (row 기반 저장이기 때문)

* 5천만~1억로우 테이블에서는 Postgres가 훌륭하게 동작
* 10억단위로 스케일하게 될때는 Citus 를 추천
ㅤ→ https://www.citusdata.com : Postgres를 분산 DB로 바꿔주는 오픈소스

 
sql.js-httpvfs - GitHub Pages에서 SQLite DB 호스팅 하기

- 백엔드 없는 스태틱 웹페이지에서 풀버전 SQLite DB 사용하는 방법
- SQLite를 emscripten 이용해서 WASM으로 컴파일하고 sql.js를 JS Wrapper로 사용
ㅤ→ sql.js는 메모리 기반이어서 HTTP Range 요청으로 DB를 읽어오도록 변경(httpvfs)
ㅤ→ 요청을 작게 하기 위해 page를 1 KiB로 설정(기본 4 KiB)
- DB가 브라우저 에서 실행되므로, DOM을 DB처럼 사용도 가능
- GitHub 외에 GitLab Pages, Netlify 등 어떤 스태틱 페이지에서도 가능

웹에서 돌릴 수 있는 SQL 데이터베이스 구현체로는 Rust로 작성된 GlueSQL도 있습니다. :)

GlueSQL - https://github.com/gluesql/gluesql
SQLite와 같이 임베디드 SQL 데이터베이스처럼 사용하는 것도 가능하구요.
새로운 SQL 데이터베이스를 만들기 위해 라이브러리 형태로 GlueSQL를 사용하는 것도 가능합니다. 이 경우 GlueSQL 에서 제공하는 몇 가지 스토리지 trait 만 구현하면 됩니다.

현재 기본 레퍼런스 스토리지 외에 몇 가지 사용 사례가 있습니다.

1. GlueSQL.js - https://github.com/gluesql/gluesql-js
WASM 으로 컴파일되어 웹에서 직접 돌릴 수 있는 SQL 데이터베이스 입니다.
현재는 3가지 서로 다른 스토리지를 지원하고 있습니다.
* 메모리
* HTML5 로컬스토리지
* HTML5 세션스토리지
(현재 조금 예전 버전의 GlueSQL을 사용하고 있긴 합니다.)

2. GlueSQL Sheets - https://sheets.gluesql.com
커스텀 스토리지에 어떤 것이든 붙일 수 있다는 장점을 살려서, GlueSQL Sheets는 구글 스프레드시트를 스토리지로 사용하는 SQL 데이터베이스 서비스 입니다.
제공하는 API를 통해 SQL을 실행하면, 모든 데이터는 해당되는 구글 스프레드시트에서 읽고, 쓰여집니다.

 
Permafrost - C & OpenGL 기반 RTS 게임 엔진

- 1인 개발자가 혼자 만든 실시간 전략 시뮬레이션 게임 엔진 오픈소스
- OpenGL 3.3 과 C 언어 사용
- 타일 기반 맵렌더링, 맵/씬 에디터
- RTS/FPS 카메라
- 물 렌더링(반사,굴절,소프트 엣지등)
- Nuklear 기반 UI 프레임워크
- 엔진 내부는 Python 2.7 로 스크립팅 가능
- 대형맵 빠른 렌더링
- 여러 종류/크기 유닛들의 경로찾기(Navigation Layer 이용)
- 충돌 회피
- RTS 용 기능들 : 미니맵, 유닛 선택, 유닛 전투, Fog-of-War, 기지 구축 메커닉, 자원 채집 및 이동 메커니즘
- 발사체의 물리 시뮬레이션을 이용한 원거리 전투
- 다양한 해상도 및 화면 비율 지원
- 전체 파이썬 인터프리터 상태의 Serialization/deserialization 지원
- 크로스 플랫폼 : 리눅스/윈도우

* 엔진을 이용한 데모게임 Evergloly는 스팀에서 다운로드 가능 또는 Itch.io 에서 구입가능
* 엔진 구현 및 게임 개발 기록은 YouTube 로 공개

 
Coinbase의 React Native 도입기

최근 Coinbase 개발자가 새로운 Coinbase 앱이 RN 으로 작성되었음을 트위터에서 공유해서 소소한 화제가 되었는데(https://twitter.com/htormey/status/1392161714250993667), 그에 대한 자세한 내용이 Medium 글로 공유되었네요. 관련 트윗 타래에 의하면 일부 네이티브 모듈이 있긴 하지만, 앱 코드베이스의 97% 정도가 TypeScript 라고 합니다.

이하 원문 내용 요약 번역:

- iOS, Android 네이티브 앱이 이미 있는 상황에서 RN 으로 마이그레이션. 마이그레이션 과정에서 200개 이상의 화면 규모의 거대한 네이티브 앱을 다시 구현해야 했고, 30명 이상의 기존 네이티브 엔지니어들에겐 전환을 위한 사내 RN 강의도 제공.

- 많은 노력 끝에 네이티브 시절에 비해 퍼포먼스 지표, 비즈니스 지표, 앱 평점, 7 day crash free 유저 퍼센트, Cold Start 에 걸리는 시간, 탭 전환 시간 등 주요 지표가 모두 유지 혹은 개선되었음.

- 2013년에 첫 앱이 출시되고, 2017년쯤 되었을 때 Android/iOS 각각 작은 규모의 팀이 있었는데 채용이 웹 개발자에 비해 너무 어려웠고, 웹 플랫폼 기술의 발전 속도로 인한 생산성을 네이티브 플랫폼 기술이 못 따라온다고 느낌. 몇 번의 시도 실패 이후 2018년에는 모바일 플랫폼의 이터레이션 속도 및 성장율의 개선이 필요함이 명백해짐.

- Coinbase 가 제품을 어떻게 만드는지 바닥부터 다시 생각해보기로 함. 주요 피쳐는 기능 조직으로 백엔드 2명 + 각 플랫폼 (Web, Android, iOS) 마다 클라이언트 2명이 존재해, 하나의 버티컬을 위해 너무 많은 인력이 필요했음. 한 기능 팀의 최소 개발자 수를 8명을 5명 정도로 줄이고, 클라 개발자가 여러 플랫폼을 다 커버할 수는 없을까 라고 생각하게 됨.

- 이로 인해 팀 구성 최소 요건이 완화되고, 더 효율적인 개발이 가능해지고, 클라이언트 개발자끼리의 접점이 늘어날 것을 기대함. 물론 효율만으로는 충분하지 않고, 그 과정에서 고객이 느끼는 성능과 퀄리티 또한 개선이 되어야만 그 투자가 정당화 가능하다고 생각.

- 당시 이미 React 기반의 꽤 성숙한 웹 플랫폼 팀이 존재했음. 여러 크로스 플랫폼 검토 후에, 기존에 사용 중인 익숙한 기술에 기반하고, 웹과 모바일의 통합을 위한 경로가 클리어해 보이는 RN을 선택함. 이미 돌아가고 있는 네이티브 앱도 마이그레이션 해야 했기 때문에, 점진적이고 충격 없는 마이그레이션을 위해 몇 달의 사전 기술 검토 및 전략 수립 기간을 거침

- 일단 RN과 네이티브가 연동될 필요가 없는 greenfield 부터 시작하는게 좋겠다고 생각함. Coinbase 내에서도 복잡하고 실시간 가격 차트나 depth chart 등의 성능이 중요한 기능이 많은, 당시 모바일 제공하지 않던 Pro 라는 웹 제품을 앱으로 먼저 만들어 보기로 결정함. Pro 를 RN 으로 잘 만들 수 있다면 나머지 (덜 복잡하고 성능 요구사항도 덜 빡센) 기능도 무난하고 옮겨올 수 있을거라고 가정.

- 그 다음으로는 Pro와 기존 앱이 공유하는 온보딩 플로우를 RN으로 구현한 걸 기존 네이티브 앱에 붙여봄. 서비스 지역이 다양하다보니 온보딩 파트가 앱에서 가장 복잡한 부분 중 하나여서, 기존에 손대기가 너무 어려운 부분이었음. Pro 에서 새로 만들면서 기존 앱의 리팩토링도 겸할 것을 기대.

- 마지막으로 앞의 두 과정에서 얻은 경험과 지식을 바탕으로 기존 네이티브 앱을 RN으로 재작성. 일단 계획을 세울 때는 full rewrite 가 될지 네이티브 앱에 점진적으로 RN 비중을 늘리는 형태가 될지는 물음표였고, 앞선 두 단계의 결과에 따라 결정하기로 함.

- 전략을 세우고, 2019년 10월에 Pro 모바일 앱 출시했고, 결과는 기대 이상이었음. 비즈니스 성과도 좋고, 성능 문제가 되는 지점과 해결책에 대해 배웠으며, RN이 제공하는 생산성에 매우 만족했고, 짧은 시간 내에 웹 엔지니어가 RN 에서 생산성 낼 수 있다는 것도 확인함.

- 고무된 채로 온보딩 플로우 재작성도 시작, 마찬가지로 비즈니스, 앱 퀄리티 모두 목표 달성
온보딩 플로우 재작성 자체의 결과는 좋았지만, 기존 앱에 RN을 붙이는 게 어렵다는 걸 깨달음.
웹만 하거나 네이티브만 하는 것에 비해 생산성도 안 좋아서 양 쪽 모두에서 ‘이럴거면 RN 왜 쓰냐’ 싶은 엔지니어들이 나옴. (Airbnb 의 사례와 매우 비슷하고, 실제로 Airbnb 엔지니어들이랑 얘기하면서 많이 배움)

- 결과적으로 위의 교훈들을 통해 네이티브와 RN을 함께 가져가는 brownfield 접근이 모든 문제의 근원이라 판단하고, 기존 앱 전체를 RN으로 재작성하기로 결정.

- 두 플랫폼 중 안드로이드 앱 마이그레이션이 성능, 퍼포먼스, 생산성 등에서 더 어려울 것 같아서 안드로이드를 먼저 재작성 타겟으로 잡음. 앞선 경험으로 full rewrite는 6개월 정도 걸릴 거라고 예상했지만, 결과가 가져다 주는 이득이 비용을 상회할 거라고 예상.

- 2020년 3월에 안드로이드 앱 재작성을 시작해 실제로 6개월 정도 걸림. 이후 이어진 iOS 재작성도 2021년 1월에 끝남. 양 플랫폼 모두에서 핵심 지표가 좋은 성과를 보임.

- 2020년 중순에 코인베이스에는 18명의 iOS 엔지니어, 7명의 안드로이드 엔지니어가 있었음. 2021년 5월 현재 코인베이스 RN 저장소에는 113명의 컨트리뷰터가 있고, 그 중 그 전까지는 모바일에 기여할 수 없던 웹 엔지니어도 다수.

- 네이티브 엔지니어의 RN 엔지니어로의 전환을 위한 트레이닝은 큰 마찰 없이 진행되었고, 기존 네이티브 백그라운드 엔지니어들은 현재 RN 앱에서 높은 성과를 내는 중. 아직 완벽하진 않지만, 처음 기대했던 대로 각 기능 조직에서는 하나의 ‘클라이언트 팀’ 이 모든 클라이언트 플랫폼을 커버하는 형태가 되어가고 있음.

- 세 개 (React, iOS, Android) 이던 플랫폼이 두 개 (React, RN) 가 되었지만 다음 스텝으론 그걸 1.5개로 줄여보려고 함. 웹과 RN 에서 공유하는 디자인 시스템, GraphQL 기반의 공용 데이터 레이어, 인프라적인 툴링 등의 공유를 계획 중. 한 엔지니어가 최소한의 컨텍스트 스위칭만으로 웹과 모바일 모든 플랫폼에서 기능을 배포할 수 있는 그림을 그리고 있음.

- 앞으로 기술적인 난관과 그 과정에서 얻은 경험 등 RN 관련 더 많은 아티클 공유할 예정.

 
Babel은 수백만명이 사용하는데, 왜 돈이 부족할까요?

- 2018 : Henry를 풀타임으로 고용하는 펀딩실험을 시작 (월 $11,000)
- 2019 : 3명의 추가 컨트리뷰터를 파트타임 고용 (월 $2,000)
- 현재 바벨은 월 1.1억회 다운로드되며 전세계에서 사용중
- 하지만 2020년엔 도네이션이 감소
- 지금부터 Henry 및 다른 두명에게 월 $6,000 정도를 지불하기 시작하고, 현재 기부금으로는 올해 말까지 버틸 수 있을 것
- 전체팀을 모두 풀타임 지급하려면 $333,000 이 필요하고 현재보다 두배의 기부를 받아야 가능
- Open Collective 또는 GitHub Sponsors 로 기부를 요청

오픈소스와 급여 얘기라 조금 민감하기도 한데, 풀타임 기여자들의 상황에 대해서 알아 볼 수 있는 글인듯 해서 올려봅니다.
월 $11000 이면 1200만원 인데 넘 많은거 아냐? 라는 생각이 들수도 있지만 실리콘 밸리 상황에서는 맞는거 같기도 합니다.

해커뉴스에서 가장 많은 득표를 한 댓글(최상위에 올라온)은..
"$11000은 너무 많이 주는거 아냐? 난 그래서 기부하다 중단했어"라는 거네요.
- https://news.ycombinator.com/item?id=27114718

그리고.. 처음에 Babel을 만들었던 Sebastian McKenzie(지금은 Rome Tools를 만들고 있죠)가
$11000 을 받는 Henry 가 2020년에 12개의 이슈 생성, 코멘트 25개 달고, 29개의 PR만 만들었다고 트윗을 해서, 한바탕 난리가 났네요.
(해당 트윗은 지워졌습니다. 해커뉴스 댓글에만 남아있네요.)
- Rome Tools, Inc 회사 설립 https://news.hada.io/topic?id=4193

 
ZX - Javascript로 쉘스크립트 작성하기

- child_process 에 대한 편리한 래퍼(Wrapper)를 제공
- $`명령` 으로 쉘커맨드 실행
ㅤ→ exitCode,stdout,stderr 포함한 ProcessOutput 리턴
ㅤ→ await, Promise 이용
- fetch() : node-fetch 래퍼
- question() : 입력받는 readline 래퍼
- chalk,fs,os 등의 패지키 지원
- 스크립트내에서 외부 스크립트 임포트 지원
- https로 시작하는 원격 스크립트 실행 가능
- 구글에서 만들었으나 공식 지원 오픈소스는 아님

 
eBPF on Windows

- 리눅스의 eBPF를 MS가 직접 윈도우에 구현하는 프로젝트 (WIP)
- 기존 eBPF 툴체인(Clang등)으로 생성한 바이트코드를
ㅤ→ 유저모드에서 PREVAIL Verifier를 이용해서 검증하고 IOVisor uBPF로 JIT 컴파일
ㅤ→ 커널모드에서 uBPF 인터프리터 또는 JIT컴파일된 코드를 실행
ㅤ→ TCP/IP 및 NDIS에 대한 eBPF Shim을 제공
- 기존 eBPF가 그대로 실행되도록 소스코드 호환수준을 목표로 하지만, Linux 특정된 것들은 어려울 것
ㅤ→ libbpf API를 호환되게 노출

요즘 리눅스에서 가장 뜨고 있는 기술중에 하나인데, MS의 행보는 정말 놀랍네요.

eBPF설명은 제가 예전에 긱뉴스 팟캐스트에서 설명한게 있습니다.
- https://www.youtube.com/watch?v=aCw0YwEHpCU&t=1892s

- eBPF rethinking the Linux Kernel - https://news.hada.io/topic?id=1958
- BPF : 새로운 타입의 소프트웨어 - https://news.hada.io/topic?id=1011
- bpf를 이용한 성능분석 - https://news.hada.io/topic?id=88
- eBPF 공식 사이트 오픈 https://news.hada.io/topic?id=2661
- eBPF Summit Recap https://news.hada.io/topic?id=3117
- New Relic, eBPF 회사 Pixie 인수하고 오픈소스로 공개 https://news.hada.io/topic?id=3371

 
한국의 프로덕트 헌트(Product Hunt) 디스콰이엇을 소개드려요~

IT 서비스 메이커들이 자신이 만들고 있거나 발견한 프로덕트를 올리고 이에 대해 의견을 나누는 플랫폼이에요. 미국의 프로덕트 헌트(Product Hunt)를 벤치마킹 했어요.

들어오셔서 프로덕트 공유하기를 통해 유용한 프로덕트를 사람들에게 소개도 해보고 다른 분들이 만드신 프로덕트도 구경해보세요 :)

사용해보시다가 불편한 점이나 있었으면 좋겠는 기능이 있으면 피드백도 부탁드려요~!