[GN#23] 애플 입사 40주년에 대한 감상

2019-12-09 ~ 2019-12-15 사이의 주요 뉴스들
"파도의 앞쪽 끝에서 서핑하는 것이, 파도의 뒤쪽 끝에서 개헤엄 치는 것보다 얼마나 재미날지 생각해 보세요."

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


애플 입사 40주년에 대한 감상

애플의 51번째 직원이었던 빌 앳킨슨의 40년전 회고.
박사과정을 포기하고 애플에 입사하게 만든 잡스의 말.
"파도의 앞쪽 끝에서 서핑하는 것이, 파도의 뒤쪽 끝에서 개헤엄 치는 것보다 얼마나 재미날지 생각해 보세요."
"뭔가가 발명되고 대중이 사용하게 되기까지에는 지연시간이 있습니다. 세상을 바꾸고 싶다면 그 지연시간 보다 앞서야 합니다. 미래를 발명하고, 수백만명의 삶을 바꿀 애플로 오세요."

그외 UCSD Pascal 포팅, Lisa개발하면서 마우스를 넣어야 한다고 주장 한것,
애플II 의 화면을 하얀 바탕으로 만든 것. QuickDraw를 만든 것,
모자이크 웹 브라우저보다 6년이나 빨리 하이퍼링크 기반의 HyperCard 를 만든 것등.
예전 이야기를 재미나게 풀어놓습니다.
그가 애플에 근무한건 12년이지만, 우리가 쓰는 많은 것들에 영향을 주었네요.

 
AWS상에서 HTTPS API의 비용을 줄이는 방법

호출이 많은 API서버에서는 응답패킷의 크기도 꽤 큰 비용이 됨.
이를 줄이기 위한 방법들을 하나하나 정리.
- 불필요한 HTTP 헤더 줄이기 : OPTIONS외에서는 CORS헤더 몇개 제거하기 등.
- TLS 핸드쉐이크 줄이기
- 아마존 인증서를 다른것으로 교체.
- 그외 : ALB의 HTTP/2사용, RSA 인증서를 ECC로 교체 등

GameAnalytics 는 일 API 호출수가 50억회 정도인데 이를 통해 월 $8000 정도를 절약 했다고.

상세값은 서비스별로 다르니까, 이런것들도 줄일수 있구나 정도로 생각하면 될듯.

 
구글이 만든 머신러닝 단기집중과정 with TensorFlow [한국어]

동영상도 머신러닝 기술로 한국어 음성 더빙(약간 어색하네요)
약 10여시간의 비디오 강의, 설명문서, 실습 으로 구성되어있습니다.
- ML Concepts
- ML Engineering
- ML Systems in the Real World

 
Tetris로 Modern JavaScript 배우기

테트리스 개발을 통해 ES6의 컨셉들 이해하기
- Classes
- Arrow 함수
- Spread 연산자
- Let 과 Const
- Proxy
- Default 파라미터
- Array.from()

 
Pornhub에서 2019년 통계 발표

세계 최대의 야동 스트리밍 사이트인 Pornhub에서 2019년 통계를 발표하였습니다. 맨 처음 눈에 띄는 통계가 연간 데이터 전송량인데, 무려 6597페타바이트에 달한다는군요. 1초에 최소 200GB 이상(!)의 데이터를 끊임없이 전송한다는 것이니 정말 대단합니다.

위 사이트는 국내 사정으로 DNS 등을 바꾸지 않으면 URL 접속이 안되니까
구글번역으로 우회해서 보시면 되겠습니다. 우회도 하고 번역도 해주는 착한 구글..

https://translate.google.com/translate/…

 
BBC Sound Effects

BBC가 개인/교육/연구목적에 무료로 공개한 16,000개의 사운드 효과 Wav 파일.
상업용은 별도로 년간단위 유료 라이센스 옵션 존재.
카테고리 별 분류 와 간단한 설명이 붙어 있어서 검색 가능.

 
Fx - 커맨드라인 JSON 처리 도구

인자없이 JSON을 넘기면 인터랙티브하게 편집 가능.
인자가 있으면 JSON을 받아서 다양한 JS함수를 적용후 포매팅해서 출력하는 CLI 도구로 동작.
스트리밍 지원해서 각종 로그를 출력해서 보는데도 사용 가능

 
Docker-Slim : Docker 이미지를 Minify하는 오픈소스

내부의 것을 변경하지 않고, 약 30분의 1 사이즈로 줄이고,
보안 프로파일을 자동으로 적용하여 안전한 이미지를 만들어 줌.
도커내의 어플리케이션을 분석하여 필요 없는 것을 삭제하는 방법으로 크기를 줄이는 도구.
Node,Python,Ruby,Java,Golang,Rust,Elixir,PHP 를 사용하는 Ubuntu,Debian,ContOS,Alpine OS 이미지등에 적용가능

 
JavaScript 알고리즘 및 자료 구조

100개 이상의 많이 알려진 알고리즘 및 자료 구조의 JS기반 예제를 담고있는 저장소. 한국어로 번역된 README에서는 항목들 설명을 간단히 볼수 있고, 각 링크에서 더 자세한 설명을 만날 수 있음(내부는 아직 미 번역). 관련된 YouTube 영상도 포함

 
Plaid가 Node 병렬처리를 30배로 늘린 방법

Plaid는 은행으로부터 사용자의 잔고정보를 읽어서 통합뱅킹 API로 외부에 제공하는 서비스.
병렬화 없이 4000대의 Node워커를 운용하다가, 병렬 처리로 바꾸고 년간 $300K를 절약.
오류없이 변경을 적용하기 위해 단계별 시도한 접근들을 잘 정리.
- Prometheus에 메트릭 추가 : V8 Heap Size, GC, Task Latency
- 병렬처리 효과 측정용 Grafana 대쉬보드 생성
- LaunchDarkly 의 피쳐플래그를 이용해서 재디플로이 없이 병렬처리 효과를 튜닝
- CPU 시간을 측정하기 위해 프로덕션에 flamegraph 생성
실제 디플로이후 계속 조사하고 수정을 반복
- Node의 Max Heap Size 증가
- S3 보틀넥 제거 : S3클라이언트가 50으로 줄여버리는 maxSockets 를 20480으로 증가
- JSON Serialization 속도 향상 - bfj 를 JSONStream 으로 대치
- semi space 크기를 지정해서 GC 수행횟수를줄이기
- regex 가 많이 들어간 로깅 방식을 바꿔서 CPU 시간 최적화

 
Frontend,Backend,DevOps 개발자를 위한 로드맵 [한국어]

각 개발자 기술 로드맵을 한장의 그림으로 그린 Roadmap.sh 의 번역본

 
CSS Layout - 주로 쓰이는 레이아웃과 패턴을 CSS로 구현한 예제 모음

66개의 주요 패턴들
레이아웃: 다단,사이드바,그리드,분할,고정 헤더/푸터
네비게이션: 브레드크럼,메뉴,페이지네이션,탭,위저드,Dot,Circular
위젯:아코디언,아바타,아바타리스트,뱃지,카드,쿠키배너,코너리본,Drop영역,Drop Cap,피쳐리스트,구석고정바,오버레이플레이버튼,리본,가격표,타임라인
그외 다수의 Input 폼과 Feedback

 
Huginn - 나대신 모니터링하고 행동하는 오픈소스 에이전트

내 서버에서 동작하는 Hackable한 버전의 IFTTT 또는 Zapier.
날씨알림,트위터 키워드 모니터링,웹사이트 스크래핑하여 변화 감지,
JIRA/MQTT/RSS/Slack 등 연동.
다양한 에이전트의 내용들을 모아서 Digest 이메일로 발송 가능.
Javascript 또는 Coffeescript 실행 가능

 
db - MySQL DB내용을 버전콘트롤하는 오픈소스

특정시점의 DB를 스냅샷떠서 저장 및 복구 지원하는 CLI 도구. 커밋메시지를 기록해서 버전간에 쉽게 이동가능. 여러개의 DB(로컬,스테이징,프로덕션)간에 내용을 복사하거나 하는것을 편하게 할 수 있음. mysqldump를 마치 git처럼 쓰기 편하게 만든 것.

기존에 많은 도구들이 스키마를 저장/마이그레이션 하는거에 중점을 뒀는데, 이건 MySQL 자체 커맨드를 사용해서 데이터 덤프해서 저장하고 복원하는 것을 편하게 만들었네요.

기존의 스키마 이관 도구들
- https://github.com/flyway/flyway
- https://github.com/sqitchers/sqitch
- https://github.com/amacneil/dbmate
- https://github.com/liquibase/liquibase

구현을 살펴보니 /drivers/mysql/connectors/ 에 있는 것만 수정하면 postgres 용으로도 변경은 가능할듯 싶습니다.

 
Finala - 시밀러웹이 공개한 AWS 유휴자원 스캐너

RDS,EC2,DynamoDB,ElasticCache,DocumentDB,ELB등의 유휴자원이 있는지 조사해서 비용절감을 도와주는 CLI도구.
다양한 메트릭 지원으로, 특정 기간동안 접속이 없거나, CPU사용량이 특정치 이하거나,Read/Write가 얼마 이하인 서버들만 체크해서 리스팅 가능.
Go 언어로 개발됨.

 
2020년에 주목해야할 웹 퍼포먼스 기술들

6개 주요 항목과 그외 작은 몇가지를 언급하고,
해당 기술의 간단한 설명과 관련된 주요 트위터 계정을 정리.
- JAMstack
- Web Assembly
- Edge Compute
- Observability
- Platform Improvements
- Web Monetisation

 
Public APIs - 무료 API 리스트

800개 이상의 무료 API를 모아놓은 리파지토리.
분야별로 API 제목,간단한 설명,인증필요 여부,HTTPS / CORS 지원여부를 깔끔히 테이블로 정리.
이 API 리스트를 보는 API도 따로 존재 함 ( Public API for Public APIs )

 
구글과 페이스북, GlassDoor의 "일하기 좋은 회사 Top 10"에서 밀려나

10년간 순위에 들었던 페이스북이 #23,
8년간 들었던 구글은 #11.
항상 25위 안에 들었던 애플은 #84,
아마존은 12년째 탑100 진입 실패.
#1는 HubSpot

https://www.glassdoor.com/Award/Best-Places-to-Work-LST_KQ0,19.htm

#1 HubSpot
#2 Bain & Company
#3 DocuSign
#4 In-N-Out - 햄버거 !!!
#8 Ultimate Software - HCM(Human Capital Managerment) 소프트웨어 개발사
#9 VIP Kid - 어린이 대상 원어민 화상영어 회사..
#11 Google
#12 LinkedIn
#20 NVidia
#21 Microsoft
#22 Lululemon - 요가복으로 유명한 회사
#23 Facebook
#55 Costco
#61 Irvine Company - 남부 캘리포니아 Irvine 시를 만들고 운영하는 회사.
#69 Slack
#77 Cisco
#84 Apple
#90 ExtraSpace Storage - 개인용 차고 회사
#100 Intel

 
simplePARALLAX - 패럴랙스 스크롤링을 간단히 구현하게 해주는 라이브러리

백그라운드 이미지 없이 img태그에 바로 호출하는 방식의 바닐라JS 라이브러리.
Orientation,Scale,Delay,Overflow,Transition ( CSS 트랜지션 효과 모두 가능 ) 등을 손쉽게 설정 가능.