[GN#117] 2년만에 8조원 가치가 된 스타트업에서 배운 것

2021-09-27 ~ 2021-10-03 사이의 주요 뉴스들
스타트업 붐이 생긴 지 10년이 넘어가면서 초성장한 스타트업들의 성공사례가 많아졌고, 그들이 해온 방식을 따라 해 볼 수 있는 다양한 플레이북 들이 나오고 있습니다. Hopin은 만들어진 지 2년 만에 코로나 붐을 타고 급성장한 온라인 이벤트 플랫폼인데요. 초기 멤버인 Dave Schools가 자신들의 처음 6개월을 따라 할 수 있도록 19단계로 초성장 플레이북을 정리해서 간략히 옮겨봤습니다. 한국과는 상황이 다를 수 있지만, 참고할만합니다.

오큘러스 퀘스트 2를 통해서 VR기기가 꽤 많이 도입되고 있습니다. 지금까지는 VR은 주로 엔터테인먼트용으로 인식되는 상황이었거든요. Paul Tomlinson 이라는 개발자가 VR기기를 2.5년간 1주에 40~50시간씩 실제 근무 용도로 사용한 후기를 적었습니다. 이 글은 VR용 업무환경을 만들어주는 Immersed 사이트에 올라왔는데요. Immersed를 이용해서 어떻게 환경을 꾸미고, 일하는지를 자세하게 적어서 흥미롭습니다. 긱뉴스 댓글에도 실제로 해보신 분들의 솔직한 후기들이 적혀있으니 참고하시기 바랍니다. VR에 대한 관심도가 확실히 높은 거 같네요. 연결해서 Linux 기반의 작업용 VR 기기인 Simula One도 같이 봐주시면 좋을 것 같아요.

항상 뾰족한 제품과 거침없는 말투의 기술 블로그 글로 관심을 끄는 CloudFlare가 R2라는 객체 스토리지 서비스를 공개했습니다. AWS의 시작이 S3였던 것처럼 객체 스토리지는 클라우드 서비스에서 엄청 중요한 위치를 차지하고 있는데요. R2는 S3와 API 호환성을 유지하면서도, 가장 중요한 가격에서 Egress 비용(데이터 송신 수수료)이 없다고 선언하고, 1GB당 $0.015라는 엄청 공격적인 가격 모델을 내세우고 있습니다. S3에서 자동 마이그레이션을 지원하므로 전송 비용이 부담이었던 회사들에는 희소식이 될 듯합니다. 이런 경쟁을 통해서 가격이 더욱 저렴해지면 좋겠습니다.

성균관대학교 권석준 교수님이 페이스북에 엔비디아의 GPU 개발 역사를 시작으로 게임과 딥러닝으로 이어지는 반도체 시장을 정리한 글을 적어주셔서 "딥러닝 가속기가 이끄는 반도체 시장의 미래" 라는 제목으로 뉴스를 옮겨 봤습니다. 굉장히 길지만 재미나게 읽을 수 있으니 꼭 읽어보시기 바랍니다.

[ 금주의 Ask ]


[ 금주의 Show ]


GeekNews Ask 에 다양한 질문을 올려주세요.
GeekNews Show 에 직접 만드신 오픈소스나, 재직중인 스타트업의 제품/서비스를 소개해주세요.

✓ 사내 커뮤니케이션 도구들에 GeekNews Bot을 추가해서 편하게 새 글을 받아보시고, 멤버들에게도 공유해주세요. : Slack Bot, 잔디 Bot, MS Teams Bot, Discord Bot
✓ 주위분들께 긱뉴스 위클리 - https://news.hada.io/weekly 를 추천해 주세요.

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


2년만에 8조원 가치가 된 스타트업에서 배운 것

- 온라인 이벤트 플랫폼 Hopin 초기 멤버의 글
- 현재 8백명 직원, 5천억원 시리즈D 펀딩

초성장 플레이북 : Hopin의 첫 6개월 고성장을 반복하기 위한 19가지 단계
1. 제품 디자인에 집착하고, 엔지니어이면서, 타고난 세일즈맨인 비젼있는 창업자와 함께 시작할 것. 대부분의 기업은 이 첫번째 단계를 통과하지 못함. Hopin은 그런 창업자인 Johnny가 있었음
(똑똑하고 개방적이면서 야망과 호기심 많은 개발자)
2. "오직 엔지니어들만" 고용하고, 글을 쓰고 제품을 팔고 고객의 성공을 지원할수 있는 "한명의 제네럴리스트 기업가"만 고용할 것
3. 바이럴 성장 루프를 가진 훌륭한 제품을 만들 것
4. 주요 ICP(Ideal Customer Profile, 이상적인 고객 프로필)들과 긴밀히 협력해서 제품 로드맵 만들기. 당신이 서비스를 시작하는 시장이 최종적으로 지배하게 될 시장이 아닐 수도 있음을 명심할 것. Hopin 은 1인 기업가, 인플루언서등과 시작했지만, 빠르게 고급시장으로 가속화 했음.
5. 더 많은 엔지니어 고용하기
6. 바람직한 고객을 확보하기 위해 첫번째 연간 계약 사인하기
Sign your first annual contracts to anchor desirable customers
(문맥상 이해가 잘 안되네요.. 무슨 뜻일까요 ?)
7. 투자자들과 프리시드 또는 시드라운드 펀딩 논의 시작
8. 고객 성공 담당자, 지원 담당자, 운영쪽 성향이 있는 영업사원을 고용
9. 얼리 억세스로 제품 출시. 대기자 리스트를 만들고 고객들을 천천히 유입. Hubspot CRM, Zapier, Stripe, Typeform 과 같은 린 마케팅 스택 이용하기. 이 대기자 명단이 당신의 커뮤니티임. StreamYard는 열광적인 팬을 위한 커뮤니티를 구축하기 위한 놀라운 기능을 가지고 있음
10. 고객들 중에서 알아볼 수 있는 로고들을 서비스에서 사용하기 위해 허가를 얻을것. 좋은 로고와 숫자들로 케이스 스토리를 게시
11. Buzz 를 만들기 위해 PR회사 고용
12. 더 많은 엔지니어 고용할 것. 조직/제품 관리에 집중 시작. 고객친화적인 제품 출시 프로세스에 대해서 GTM(Go To Market)과 협력. 프로덕트 마케터 고용. ARWAG(Always Release With A GIF, 항상 GIF와 함께 릴리즈하기)
13. 영업팁을 확장하여 데모를 하게 하고, 더 많은 거래를 성사시키기. 비즈니스 운영 책임자(Biz Ops) 고용
14. (고객) 성공 및 지원팀을 확장. 제품이 좋을수록 작아야 함. 제품이 복잡할 수록 이 팀은 더 커야함. 초성장 중에는 지원콘텐츠가 빠르게 구식(outdated)되므로 이걸 최신 상태로 유지하는 프로세스를 구축.
15. 마케팅활동(브랜드, 크리에이티브, 유료 광고, ㄴEO, 콘텐츠, 이벤트, PR)을 아웃소싱 하려면 지금쯤은 5개 이상의 대행사와 협력 해야함. 그들을 슬랙에 조인시키고, 적합하지 않은 회사에선 빨리 다른 회사로 옮길 것
16. 가격 실험해 보기. 경쟁자와 비교해서 시장에서 어떤 위에 있으면 좋을까? 이상적으로는 어딘가 브랜드 워터마크가 붙어 있는 무료버전을 제공하는 것도 가능(바이럴 성장 루프에 끌어들이기 위해). 항상 다음 계획을 준비 할 것
17. 커뮤니티 피드백(페이스북 그룹도 괜찮음)과 사용자 설문조사(HotJar)등을 활용해서 고객들을 다음 계획으로 따라오게 만드는 필수 기능을 식별할 것
18. Product/Market Fit은 충분한 시간동안 계속 성장하면서도 WoW에 도달할 때 가능. 대기자 명단은 가득차야 하고, 고객들은 정기적으로 만족했다는 리뷰를 작성해야 함. 만약 그렇지 않다면 인센티브를 줘서 리뷰사이트의 맨 위에 표시되게 할 것
19. 시리즈 A 펀딩 발표와 제품 출시를 결합. 주요 기능을 발표하는 첫번째 고객 이벤트로 트래픽을 유도 할 것

글이 굉장히 긴데 플레이북 부분만 옮겨봤습니다.
정말 중요한거는 "엔지니어를 많이 고용하고 바이럴 가능한 훌륭한 제품을 만들기" 이고,
그러기 위해서 "맨땅에 헤딩하지 말고 다양한 최신 도구들과 기법을 이용하라" 정도 인것 같네요.

근데 플레이북 1번이 최근 제가 긱뉴스에 적은 글들과 일맥상통하네요.
"엔지니어이면서 비즈니스도 잘하는 창업자와 함께 할 것"
- Ask GN: 이직할 때 어떻게 회사를 고르시나요? https://news.hada.io/topic?id=5082
- Ask GN: 코더에서 CEO가 되는 것에 대한 리소스가 뭐가 있을까요? https://news.hada.io/topic?id=5054

 
2.5년간 1주에 40-50시간 업무용으로 VR을 사용한 사람의 후기

- 오큘러스 퀘스트 2와 Immersed(VR 업무환경 SW)를 이용
- 정보시스템 개발 같은 일반 프로그래밍 업무를 수행했음
- Immersed 로 가상 3-스크린 구성
ㅤ→ 메인 스크린 : 업무 (4k, 6m x 4.6m, 4:3)
ㅤ→ 레퍼런스 : 참고 자료 및 음악 (1080p, 2.5m x 3.6m, 9:16)
ㅤ→ 커뮤니케이션 : 하단에 작게 대화/캘린더.. (1.2m x 2.1m, 16:9)

- 표준 키보드 & 마우스(트랙볼) 사용
ㅤ→ 마이너리티 리포트 처럼 한다면 더 피곤 했을 것
ㅤ→ 음성인식/타블렛도 이용은 가능하지만 프로그래밍에는 적합하지 않음
- 사무실에는 실제 피지컬 디스플레이는 하나도 없음

- 팁
ㅤ→ 눈에 잘 맞는 지점을 찾을 것 : IPD(interpupillary distance, 동공사이 거리) 와 렌즈 조정
ㅤ→ 교정용 렌즈를 써야하면 렌즈 인서트를 쓸 것. 안경이나 콘택트렌즈 보다 나음
ㅤ→ 렌즈와 헤드셋을 청소할 것
ㅤ→ Pixel Parity를 맞추도록 노력. 퀘스트2는 각 눈에 1832x1920 이므로 1:1과 가까울수록 가장 잘 보임
ㅤ→ 피지컬 화면 구성을 에뮬레이팅 하려고 하지 말 것. 마음대로 구성 가능
ㅤ→ "크고 먼 것" 이 "작고 가까운 것" 보다 더 편안함
ㅤ→ 인체공학(Ergonomics)은 여전히 중요. 목을 오래 돌리고 있거나, 머리를 기울이거나, 고정된 자세를 취하지 말 것
ㅤ→ 좋은 WiFi가 중요. 가능하다면 컴퓨터랑 헤드셋간에 WiFi Direct로 구성
ㅤ→ Immersed 매뉴얼 필독

- 경험
ㅤ→ 코드가 IMAX 극장처럼 보임. 스크린샷으로 표현 불가
ㅤ→ 사용시 정말 편안하고, 생산성 좋고 효율적임.

- 오큘러스 퀘스트에는 얼굴에 닿는 부분은 폴리우레탄 가죽으로 교체하고, Halo Mount 를 추가했음
- tmux/vim 같은 예전 도구들이 더 큰화면과 함께 쓰기 편해짐
- Mural 같은 새로운 협업 도구들도 훌륭

왜 이렇게 까지?
- 실제 멀티 모니터 설정보다 비용은 더 저렴
- 집중도가 훨씬 높아짐 20~100%
- 스크린을 편하게 구성할수 있어서 더 유연함(인체공학적으로)
- 접근성도 더 좋음

주료 사용하는 도구들
- 생산성 : Immersed
- 협업 : BigScreen, Walkabout Mini Golf, MultiBrush
- 명상 : Calm Place, Supernatural, MultiBrush
- 운동 : Supernatural, Beatsaber, Pistol Whip, Synth Riders, The Thrill of the Fight
- 창작 : Gravity Sketch, MultiBrush
- 엔터테인먼트 : 엄청 많지만 최고는 Onward

저도 재택시에는 immersed로 사용합니다
장점이 잘 나와있는것 같아서 단점을 써보자면

- 오큘러스 땀 차고 갑갑함
- 키보드만 사용한다면 괜찮지만 마우스가 필요한 경우에는 마우스찾느라 허우적허우적
- 충전을 위한 케이블이 방해됨
정도네요

무게 문제는 제 경추가 단련되서인지 괜찮았습니다 :D 고마워 경추양...

 
Simula One - Linux기반 사무실용 VR 기기

- 실제 업무를 하는 용도로 제작된 스탠드얼론형 VR 헤드셋
- Persistent "Always On" 컴퓨팅 : 계속 쓴채로 걷고 생각하기
- 헤드셋 카메라 뷰 지원(키보드 및 주변을 보기)
- 10x 많은 스크린과 집중도
- Ultraleap 을 이용한 6DOF 핸드 트래킹
ㅤ→ 6 자유도(Degrees of Freedom) : 3개의 방향축과 3개의 회전축
- 블루투스 키보드/마우스 연결
- Highly Customizable한 오픈소스 OS인 SimulaOS를 사용
ㅤ→ 리눅스 데스크탑에서 실행되는 앱들과 호환(Firefox, LibreOffice, Emacs, Vim..)
ㅤ→ 선명한 텍스트 품질
ㅤ→ Godot 게임 엔진 기반
ㅤ→ HTC Vive, VivePro, Valve Index 와도 동작
- 현재 대기자리스트에 등록 가능

아직 공개하기엔 이른 단계라고 창업자들이 직접 댓글을 적었네요. 몇주내에 실 사용 영상들 및 프로토타입을 공개할 것이라고
- https://news.ycombinator.com/item?id=28695455

- 2.5년간 1주에 40-50시간 업무용으로 VR을 사용한 사람의 후기 https://news.hada.io/topic?id=5099
이 글과 연결지어 보면 되겠네요. VR을 업무에 적용하려는 시도들이 점차 많아질 듯

- 6 DoF 가 무슨 뜻이죠? https://www.inven.co.kr/webzine/news/?news=219448&site=vr

리누스 토발즈가 자서전에서 말하길 모든건 생존-소셜-오락의 단계를 거친다고 하는데요. 인터넷도 정보를 얻는 도구에서, 페이스북 같은 소셜 서비스가 나타났다가, 이젠 틱톡같은 오락성 강한 숏폼 서비스가 나타난것처럼요.
역으로 보면, 무언가가 오락의 도구로 대중화되려면 생존-소셜의 단계를 거쳐야 된다고 생각해요. 그래서 오락도구로써 vr이 대중화되려면 우선 비즈니스 도구같은 생존도구로 정착을 하는 과정이 필요하지 않을까? 하는 생각을 했었는데, 그래서 그런지 이런 vr을 업무에 도입하는 뉴스들이 재밌게 느껴지네요.

 
CloudFlare R2 Object Storage 공개

- AWS S3 API와 완벽 호환
- "Egress 비용 무료"
ㅤ→ $0.015/GB 로 월 저장 비용도 저렴
ㅤ→ Storage Size 와 Operation 에만 비용을 받음
- S3에서 마이그레이션 지원
ㅤ→ 버켓 지정후 엔드포인트 교체하면 필요시마다 S3에서 복사해서 서빙
- 현재 개발중이고 대기리스트 조인 가능. 곧 오픈베타 발표 예정

R2 means
ㅤ→ “Really Requestable”
ㅤ→ “Repositioning Records”
ㅤ→ “Ridiculously Reliable”
ㅤ→ “Radically Reprogrammable”

- AWS의 어처구니 없는(Egregious) Egress 비용 https://news.hada.io/topic?id=4693

AWS가 Egress 비용을 일부러 비싸게 받고 있다고 Cloudflare 가 저격 글을 작성한 적이 있는데요.
이 R2 서비스를 위한 빌드업 이었나 보군요.

Corey Quinn 이 S3 랑 가격 비교를 했네요.

https://twitter.com/QuinnyPig/status/1443028078196711426

결론적으로 1GB 를 저장해두고 1백만명한테 서빙할 경우
R2쓰면 13¢ 이면 되고, AWS S3 를 쓰면 $53,891 이라는 얘기

서빙이 많은 파일이라면 R2가 무조건 우위에 있겠네요.

 
시계열DB를 밑바닥부터 만들어보기

- Go로 작성되어 있지만 거의 언어 무관
- 시계열 데이터는 타임스탬프가 붙은 여러 값의 컬렉션. 각 항목은 데이터 포인트
ㅤ→ 양이 많음. 많아야 의미를 가짐. 초당 백만번씩 캡쳐링 되는 경우도 많음
ㅤ→ Append-only, 시간순 정렬, 최근 데이터 우선
ㅤ→ 특정 시간단위 벌크 리딩
ㅤ→ High Cardinality (집합의 단위가 매우 큼)
ㅤ→ 대부분 최근 데이터를 읽어서 사용
- 시계열 데이터는 주로 쓰기가 많은 것을 반영한 TStorage DB엔진 라이브러리를 Go 언어로 개발
- 데이터 모델
ㅤ→ 선형 데이터 모델
ㅤ→ 데이터 포인트를 시간단위로 파티셔닝
ㅤ→ 각 파티션은 해당 시간내의 모든 데이터를 가진 별도의 독립적인 DB처럼 동작
ㅤ→ 헤드 와 그 다음 파티션만 Heap에 저장되는 메모리 파티션으로 수정 가능
ㅤ→ 데이터 손실을 막기 위해 쓰기전에 WAL(Write Ahead Log)에 작성
ㅤ→ 그 이전 파티션 데이터들은 디스크에 싱글 파일로 저장. 디스크 파티션들은 읽기 전용
- 메모리 파티션
ㅤ→ 데이터 포인트들의 리스트가 힙상에 배열로 표시 (Go 의 Slice 와 비슷)
ㅤ→ 레이턴시 및 동기화 때문에 Out-of-order 가 자주 발생. 같은 파티션 내라면 버퍼링을 통해서 저장할때 재 정렬, 다른 파티션이라면 헤드가 아닌 이전 파티션 뒤에 추가하는 것으로 가능
ㅤ→ WAL 에 실제로 기록되는 것과 똑같은 데이터를 저장해서, 오류시에도 복구 가능하게
- 디스크 파티션
ㅤ→ 파티션당 한개의 디렉토리에 메타 데이터와 압축된 실제 데이터를 저장 (Prometheus V3 Storage 의 축소판)
ㅤ→ Memory-Mapped 데이터 형식(커널에서 mmap 으로 캐쉬가능)
ㅤ→ 메타데이터는 JSON 형식으로 인덱스를 형성
- 타임스탬프와 밸류 튜플로 표현되는 데이터 인코딩은 페이스북의 Gorilla 논문에서 제안된 인코딩 방식을 사용
ㅤ→ 타임스탬프와 밸류를 서로 다른 메소드로 인코딩
ㅤ→ timestamp 는 unsigned 64-bit integer 값으로 Delta-of-delta 인코딩을 이용
ㅤㅤ✓ Delta 인코딩 : 기존값과 현재값의 차이만 기록하는 방식
ㅤㅤ✓ Delta-of-Delta 인코딩 : 일반적으로 특정 시간당 생기므로 델타의 델타만 기록
ㅤㅤ✓ 가변 길이로 인코딩 되므로 Delta-of-Delta 가 가장 작은 공간을 사용
ㅤ→ values 는 signed 64-bit floating-point 값으로 XOR 인코딩 을 사용
ㅤㅤ✓ 처음 값은 그냥 저장
ㅤㅤ✓ 다음 값을 XOR 해서 0이면 기존 값과 같으므로 0 비트 하나만 저장
ㅤㅤ✓ 0이 아니면 다른 비트들 기반으로 계산(Meaningful Bit)
ㅤㅤ✓ 앞/뒤의 0들을 계산해서, 0의 갯수가 같다면 0과 의미있는 비트만 저장, 다르면 리딩 제로 갯수, Meaningful Bit의 갯수과 그 자체를 저장

 
프로그래머를 위한 이름 짓는 원리

컴퓨터 프로그래머는 '이름 짓기'를 가장 전문적으로 다루는 직업일지도 모릅니다
- 이름은 프로그래머들이 생각하는 것만큼 실제로 중요한 것일까요?
- 어떤 이름이 좋다 나쁘다 판단할 수 있는 기준은 무엇일까요?

이름 짓는 원리 from 책 "클로저 기본원리(Elements of Clojure)"
- 이름이 중요한 이유
- 좋은 이름을 어떻게 찾을 수 있을까?
- 프레게의 의미이론
- 코드에서의 의미이론
- 의미를 기준으로 이름을 붙여야 하는 이유
- 협의성과 일관성
- 의도적 비일관성
- 자연 이름, 인공 이름
- 그 외의 팁들

 
Rust로 라즈베리 Pi용 임베디드OS 만들어보기

- ARM64에 익숙하지않은 취미 OS 개발자들을 위한 튜토리얼
- 단계별로 Monolithic OS 커널을 밑바닥부터 작성해보기
- 시리얼 콘솔, 가상메모리, HW예외 처리등 일반적인 OS기능들을 Rust의 특징을 이용해서 작성해보기
- 16단계로 구성. 각 단계당 부팅 가능한 커널 바이너리 포함
- 이전 단계를 계속 확장해가는 형태
- Raspberry Pi 3과 4가 메인 타겟이지만 다른 CPU로도 충분히 포팅 가능

튜토리얼
1. Wait Forever
2. Runtime Init
3. Hacky Hello World
4. Safe Globals
5. Drivers: GPIO and UART
6. UART Chainloader
7. Timestamps
8. HW Debugging using JTAG
9. Privilege Level
10. Virtual Memory Part 1: Identity Map All The Things!
11. Exceptions Part 1: Groundwork
12. Integrated Testing
13. Exceptions Part 2: Peripheral IRQs
14. Virtual Memory Part 2: MMIO Remap
15. Virtual Memory Part 3: Precomputed Translation Tables
16. Virtual Memory Part 4: Higher-Half Kernel

 
Tidy Viewer (tv) - CSV를 깔끔하게 보는 CLI

"CSV Pretty Printer"
- 크로스 플랫폼 지원. Rust 오픈소스
- 컬럼 스타일링을 통해서 CSV를 예쁘게 출력
- 숫자 표시에 R의 Pillar 패키지와 같은 Significant Figure(sigfig) 룰을 사용
- xsv, q, miller 등과 잘 연동

- xsv - CLI용 CSV파일 처리도구 https://news.hada.io/topic?id=1197
- q - CSV 파일에 SQL쿼리 하기 https://news.hada.io/topic?id=3000
- Miller - CSV/JSON 데이터 처리용 CLI 도구 https://news.hada.io/topic?id=4888

 
GitHub의 RDB 파티셔닝 후기

- 10여년 전에 RoR과 싱글 MySQL 인스턴스로 시작한 GitHub
- 2019년에 파티셔닝 시작해서 2년간 다양한 작업들을 수행한 후기
ㅤ→ 2021년 현재 DB의 로드가 50% 감소했다고

1. 가상 파티션
- 실제 테이블을 옮기기 전에 어플리케이션 레이어 단에서 가상으로 분리
- 테이블들을 그룹핑 하여 스키마 도메인으로 묶고, SQL Linter를 이용해서 경계를 두도록 강제
ㅤ→ 나중에 파티셔닝 할 때 안전하도록
- Query Linter 와 Transaction Linter 로 가상 경계 확인

2. 다운타임 없이 데이터 옮기기
- Vitess 의 Vertical Sharding 기능을 이용
ㅤ→ VTGate를 쿠버네티스 클러스터에 배포후 연결 포인트로 변경
- Write-cutover 프로세스 도입
ㅤ→ MySQL의 Replication 기능을 이용해서 데이터를 다른 클러스터로 피딩
ㅤ→ ProxySQL 을 이용해서 MySQL 클라이언트 연결을 Multiplex

결과
- 2019년에는 싱글 클러스터였던 mysql1은 초당 평균 95만 쿼리 응답
- 2021년에는 멀티 클러스터로 분산되었고, 초당 평균 120만 쿼리 응답 하면서 호스트 부하는 절반

 
2021년, 엔터테인먼트 업의 본질은 무엇일까요? (번역)

본질적으로 ‘엔터테인먼트 사업’이란 다음의 세 가지로 정의됨
#1. 스토리 – 스토리를 만들고 전하는 것
#2. 사랑 – 그 스토리를 사랑하게 만드는 것
#3. 수익화 – 그 사랑을 수익화하는 것
그리고 이걸 잘 배울 수 있는 방법은, 디즈니를 살펴보는 것
// 디즈니는 업계를 선도합니다. 1-2-3 모두 최고이기 때문입니다.
// 가장 큰 열쇠는 팬덤과 사랑
// 하지만 사랑은 변해요. 언제나 그렇듯.
ㅤ→ 사랑의 첫 번째 변화 – 새로운 개척지, 게임
ㅤ→ 사랑의 두 번째 변화 – 궁극의 개척지, 트랜스 미디어
// 그래서 이게 왜 그렇게 중요한 걸까요?

"엔터테인먼트와 IP 산업은 훌륭한 스토리(#1), 팬덤의 사랑(#2), 수익화(#3)의 루프로 움직입니다. 이를 가장 잘하고, 가장 많이 하는 쪽이 이길 겁니다. 당연하게도, 그건 점점 더 어려워지고 있습니다."

 
파일을 보관하는 방식과 세대 차이

- 지금 대학생들응 디렉토리나 폴더 같은 개념 자체를 잘 모른다.
- "그러니까 젊은 학생들은 살면서 주어진 일을 하는 데 폴더나 디렉토리가 필요했던 적이 없던 거죠. 검색하면 다 찾을 수 있었으니까요."
- 자신이 구축한 디렉토리 체계에서도 찾지 못했던 중요한 문서나 약속 일정을 컴퓨터의 검색 기능을 통해 찾게 된 경험을 하고 나서 그런 생각은 확신이 됐습니다. “와, 이 모든 하위 폴더들이 다 소용없는 것일 수도 있겠다고 생각하게 됐어요.”

---
3줄 요약이 어려워서 포탈 연예 뉴스면 마냥, 눈에 들어오는 문장들로만 가져왔습니다.

오늘 얼핏 보다가 제 다운로드 폴더에 파일 1200개 있는 걸 알게 되었는데, 저도 점점 정리를 안하고 검색하는 쪽으로 가는 듯 한거 같긴 하데, 다들 어떠신가요? 정리 하시는 편이신가요? 아니면 검색 하는 편이신가요?

 
nginx playground

- nginx 설정을 맘대로 바꿔서 테스트 가능한 플레이 그라운드
ㅤ→ config 와 curl/http 명령을 입력하고 Run을 눌러서 실행
ㅤ→ 실행한 명령의 결과와 nginx 에러 로그를 보여줌
- Vue.js 프론트 + Go 백엔드(Gist로 서버코드만 공개)
- 실행 버튼을 누르면 Go 백엔드가 다음의 일들을 수행
ㅤ→ 설정파일을 temp 파일로 저장
ㅤ→ 새로운 네트워크 네임스페이스 생성
ㅤㅤㅤip netns add $RANDOM_NAMESPACE_NAME
ㅤ→ go-httpbin 을 777 포트로 실행
ㅤ→ nginx 시작
ㅤ→ nginx 제대로 실행될때까지 100ms 대기. 실패하면 nginx 에러로그 리턴
ㅤ→ 사용자가 입력한 명령 실행 (curl / http 로 되어있는지 확인)
ㅤ→ 요청의 출력 리턴
- 1대의 공유 서버로 모든 요청을 처리

- 보안 적인 접근 : 약간의 isolation, 약간의 YOLO
ㅤ→ 프론트엔드는 CDN에서 호스트
ㅤ→ DB 사용안함. 브라우저 로컬 스토리지만 사용
ㅤ→ 모든 nginx는 자신의 네트워크 네임스페이스에 두기. 인터넷 접속 못하게 막음
ㅤ→ fly.io 의 무료티어 사용
ㅤ→ 사람들한테 nice 하게 행동하도록 FAQ에 넣기

- 성능
ㅤ→ 아주 작은 인스턴스(1 shared CPU, 256MB 램)
ㅤ→ 프론트엔드는 CDN이어서 백엔드는 실제 사용할때만 가동
ㅤ→ 요청 하나는 400ms 정도 걸림. 나쁘지 않음
ㅤ→ Go 버전 httpbin 이 오리지널 파이썬 버전 보다 가벼움
ㅤ→ 프론트엔드 성능은 그다지 좋지는 않음

 
500줄의 코드로 셀프파킹 자동차 만들기

- 유전 알고리듬(Genetic Algorithm) 기반으로 자동차가 셀프 파킹 가능하도록 훈련 시키기
ㅤ→ 세대(Gen)를 진화해 갈수록 똑똑해짐
- 시뮬레이터를 통해서 진화 과정을 보고, 파라미터 조정해서 테스트 가능
- TypeScript로 구현된 오픈소스
ㅤ→ 단계별로 코드를 상세히 설명

 
VSCode의 Bracket Pair 색상화를 1만배 빠르게 만들기

- 2016년에 개발된 Bracket Pair Colorizer 확장은 6백만회 설치
- 성능을 개선한 2버전도 3백만회 설치
- 하지만 VS Code Decoration API의 한계 및 토큰 정보에 접근이 불가능해서, 아직도 큰파일에서는 느림
ㅤ→ 42k 짜리 파일은 10초간 CPU를 100% 사용해서 다른 모든 동작들이 동작 안됨
- 1.60 부터는 이 확장 자체를 VS Code 코어에서 구현해서 1만배 빠르게 개선(특정 예제에서)
ㅤ→ "editor.bracketPairColorization.enabled": true
- VS Code for Web 과 Monaco 에도 적용
* 이 기능 자체가 대대적인 API변경 없이, 확장에서는 빠르게 구현하기 힘들다는 것
* (원 글에는 알고리듬 상세 내용 포함되어 있으나 너무 길어서 옮기지 않습니다.)

얼핏 봐서는, 유명한 확장을 VSCode가 내부에 구현해서 문제가 되는 것 처럼 보이지만
https://github.com/microsoft/vscode/…

Bracket Pair Colorizer 의 원작자가 이 성능 이슈를 같이 팔로윙하고 있고,
정작 자신도 이 확장이 이제 자신이 손대기 어려울 정도가 되어서 유지보수 하기 어렵다고 얘기하고 있습니다.
즉, VS Code가 내부에서 빠르게 구현해주면 차라리 서로 좋다는 것

업데이트 된 것은 알았지만
1. 성능이 이정도로 향상된 것인줄은 몰랐네요
2. 저는 확장 프로그램 1을 사용중이었군요
3. 확장프로그램 지우고 설정에서 이 기능을 enable 했습니다. :)

예전부터 Bracket Pair Colorizer 2를 사용했었는데 다시 확장페이지에 들어갔더니 유지보수가 끝났었네요.
확장을 지우고 editor.bracketPairColorization.enabled 옵션을 켰습니다.

 
내 엔지니어링 매니저는 하루종일 뭘 할까?

- 리드 프론트 엔지니어에서 시니어 엔지니어링 매니저가 된 사람의 후기
- 각종 미팅이 빼곡한 본인의 월요일~금요일 아웃룩 시간표를 쭉 나열
ㅤ→ 그중 오전9시 ~ 오후5시 사이의 빈 "자유 시간"들을 다 합치면 일주일에 "일"하는 시간은 4시간 이라고
ㅤ→ 시간 관리에 실패한 걸까? 이중 짤라낼수 있는 미팅은 뭘까 ?

제목이 재미나서 본 글인데, 작성자가 Target 에서 일하는 한국분이신가 보네요.
미팅들 리스트가 다른 초급 매니저 분들께는 도움이 될듯 해서 가져와 봅니다.

 
chezmoi - 여러 머신의 dotfile 통합 관리

- 여러 환경(리눅스/맥/윈), 여러 장소(집/사무실)의 dotfile을 동기화해서 관리
- GitHub/GitLab Repo 에서 파일들을 관리하고 curl/wget/scp등으로 쉽게 한번에 설치
- 템플릿 지원해서 OS/아키텍처/호스트 이름별로 커스터마이즈 가능
- 1Password, Bitwarden, LastPass 등과 연동 지원
- 뭐가 변경되는지 확인하는 Dry Run 모드 지원

 
Bain의 기술 보고서 2021 [92p PDF]

"The '20s Roar"
- 신기술 경제에 온 것을 환영합니다
- 가치의 진화
ㅤ→ Tech-Tonic Shifts : 기술이 세계 경제를 재편 하는 중
ㅤ→ 신중한 규제 : 빅 테크 M&A 사례
ㅤ→ VC들이 기술 투자를 두배로 늘리는 이유
ㅤ→ SaaS가 소프트웨어 Superperformance 의 다음 주기에 박차를 가하는 중
- Competetive Battlegrounds
ㅤ→ 하이브리드 클라우드의 혼돈에 질서를
ㅤ→ 클라우드 회사들이 유럽에서 승리할 수 있는 방법
ㅤ→ 반도체 균형이 이동 중
ㅤ→ 인공지능 : 누가 다음 시대를 이끌 것인가
ㅤ→ 미국과 중국이 디커플링 중이고, 다른 나라들이 따라가는 중
- Operational Advantage
ㅤ→ 기술 인재 전쟁은 글로벌, 산업간 그리고 생존의 문제
ㅤ→ 거친 DevOps 길들이기
ㅤ→ "Hello" 단계에서 B2B 기술 구매자를 붙잡고 "GoodBye"라고 말하지 않는 방법
ㅤ→ 칩 부족이 공급망에 대해 우리에게 가르쳐 준 두가지 교훈

 
CSS 미디어 쿼리는 가고 컨테이너 쿼리가 온다

- 반응형 페이지 만들때 스크린 사이즈가 아닌 컨테이너의 사이즈에 따라 변경하는 방식
- 아직 스펙 초기 단계
- 크롬에서는 플래그 설정시에만 지원되지만, CQFill 폴리필로 모든 브라우저에서 미리 적용 가능

@container (min-width: 600px) {
ㅤ.card {
ㅤㅤdisplay: flex;
ㅤ}
}

 
Youki - Rust로 작성된 컨테이너 런타임

- OCI 런타임 스펙을 Rust 로 구현한 오픈소스
- Go로 구현된 runc와 비슷
ㅤ→ OCI 스펙은 Go로 구현하기엔 약간 까다로움(namespace, fork 등 때문에)
ㅤ→ 하지만 Rust에서는 쉽고 안전함
- runc 보다 더 빠르고 적은 메모리 사용
- 오라클이 Rust로 만들던 OCI 런타임 Railcar 는 개발이 중단되었음

 
PostgreSQL 14 릴리즈

- JSON 내부 데이터 접근 지원 :
ㅤ→ SELECT ('{"a": 1}'::jsonb)['a'];
ㅤ→ UPDATE tb SET jsonb_field['a']['b'] = '1';
- Multirange 타입 지원
ㅤ→ SELECT '{[1,9), [20,30)}'::int4multirange;
- 분산 워크로드 성능 향상
ㅤ→ 논리 리플리케이션에 트랜잭션 스트리밍 지원
- 어드민, 모니터링 & 옵저버블리티 관련 기능 추가
- 병렬 쿼리, SQL 성능 향상 및 편의성 증대
- CTE에 SEARCH/CYCLE 옵션 구현