Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

기술 뉴스 #189 : 22-01-02

웹개발 관련

  • HTTP/3 is Fast : 벤치마크 환경을 만들어서 HTTP/3의 속도를 테스트한 글이다.(영어)

    • HTTP/1.1에서는 한번에 한개의 파일을 TCP 연결로 받는다. 이를 Head-of-line Blocking이라고 부른다. 이를 피하려고 브라우저는 여러. TCP 커넥션을 연다.
    • HTTP/2에서는 멀티플랙싱을 통해 애플리케이션 레벨에서 head-of-line 블러킹 이슈를 해결했다. 즉 하나의 TCP 연결로 여러 파일을 병렬로. 받을 수 있다.
    • HTTP/2에서도 head-of-line 블러킹 이슈가 있었는데 패킷 로스가 일어났을대 패킷이 재전송될때까지 기다려야 했다. 그래서 패킷 로스가 많은 환경에서는 오히려 HTTP/1.1이 더 나은 성능을 보여주었다.
    • HTTP/3에서는 TCP 대신 QUIC 프로토콜을 사용해서 멀티플랙싱을 구현했다.
    • 벤치마크 환경은 600kb 의 작은 사이트와 10MB의 컨텐츠 사이트, 15MB의 SPA를 비교하자 HTTP/3가 빠른 것으로 나타났다.
    • 이는 HTTP/3에서는 head-of-line 블러킹 이슈r가 없고 0-RTT 지원으로 서버와 TLS 연결을 하면서 라운드 트립이 적기 때문이다.
  • COBE : WebGL로 구현한 지구로 자세한 구현과정은 트위터 스레드에 잘 나와 있다. 기존에 Three.js로 지구를 구현했지만, 최적화를 잘하지는 못했는데 GitHub이 구현한 글을 보고 아이디어를 얻어서 점으로 구성된 세계 지도를 구성하고 극점 부분의 표현을 최적화했다고 한다.(영어)
  • 로그인할 때 패스워드를 해싱해서 보내는 것은 보안에 아무런 도움이 안됩니다 : 이유는 모르겠지만 HTTPS에서 패스워드를 그대로 보내면 안 되고 해싱해야 한다는 얘기가 연말에 돌아다닌 것 같고 그에 대한 의경을 정리한 글이다. HTTPS에서 패스워드 전송은 평문이 아니며 서버 관리자가 패스워드를 알 수 있으므로 해싱을 해야 한다는 얘기도 잘못된 얘기라면 브라우저에서 해싱하지 말아야 한다고 정리한 글이다. 세세한 부분은 의견이 다를 수 있어도 클라이언트 해싱을 하지 말아야 하고 의미도 없다는 데 동의한다.(한국어)
  • 리액트 라우터 v6 튜토리얼 : 작년 말에 나온 React Router v6의 튜토리얼을 velopert님이 작성해 주셨다. 라우팅의 개념부터 React Router 사용법과 복잡한 상황에 대한 처리까지 잘 정리되어 있다.(한국어)

그 밖의 개발 관련

  • 산타파이브 : 역사에 남을 사이드 프로젝트가 등장했다. 회원 가입해서 자신의 트리를 만들면 사람들이 메시지 남기고 크리스마스 때 볼 수 있게 하는 내 트리를 꾸며줘를 만들기 위해 12월에 5명이 모여서 만들었는데 이 프로젝트가 대박이 나면서 서버 비를 걱정할 정도로 트래픽이 몰려서 산타파이브팀은 크리스마스까지 서버 최적화와 기능 추가 등으로 잠을 못 잘 정도가 되었다. 뉴스에도 나오는 등 엄청난 인기를 끌면서 성장하는 서비스가 몇 년에 걸쳐서 경험할 일을 일주일도 안 되는 시간 만에 다 경험했다.(한국어)
  • 카카오 AI추천 : 카카오의 콘텐츠 기반 필터링 (Content-based Filtering in Kakao) : 카카오 웹툰에서 콘텐츠 기반 필터링으로 관련 있는 다른 콘텐츠를 추천하는 방법을 설명한다. 콘텐츠의 유사도를 측정하기 위해서 아이템의 벡터를 만들기 위해 One-hot encoding과 Embedding이 있는데 됴현할 데이터 범주의 영역이 넓거나 데이터가 복잡하다면 Embedding을 더 많이 사용한다고 한다. 콘텐츠 기반 필터링은 소비 이력이 없어도 아이템 정보만 있으면 추천할 수 있다는 장점이 있지만, 소비 이력 데이터가 충분하다면 협업 필터링보다 추천 성능이 밀린다고 한다.(한국어)
  • Django 4.0 릴리스와 주요 변경 사항 : 지난달에 릴리스 된 Django 프레임워크의 4.0의 릴리스 내용을 정리한 글이다. 새로운 메이저 버전에서 추가된 기능과 하위 호환이 깨진 기능들이 정리되어 있다.(한국어)

인프라 관련

  • Kubernetes 운영을 위한 etcd 기본 동작 원리의 이해 : Kubernetes의 기반 스토리지인 etcd의 동작 방식을 설명한 글이다. 카카오에서는 마스터 노드를 직접 운영하면서 Kubernetes 업그레이드 시 마스터 노드를 교체하면서 직접 etcd 서버를 추가/삭제하므로 이 과정에서 얻는 경험을 토대로 설명한 글이다. Raft를 구현한 etcd가 리더를 선출하고 로그를 복제하는 과정과 이때 멤버를 추가/삭제하면 어떤 일이 벌어지는지 자세히 보여주고 있어서 이 부분만 알아도 etcd를 이해하는데 꽤 도움이 될 것 같다. 글의 뒷부분에는 etcd를 유지보수 하기 위해 백업/복구를 하는 방법을 설명하고 있다.(한국어)
  • 모두의 MLOps : MLOps를 공부하고자 하는 사람들의 지침서로 만든 프로젝트라고 한다. MLOps는 머신러닝을 서비스에 적용하기 더 쉽도록 파이프라인을 통해 머신러닝 엔지니어와 소프트웨어 엔지니어가 소통할 수 있게 한다. 개념 설명뿐 아니라 설정 방법과 Kubeflow에 대한 설명이 포함되어 있어서 MLOps에 관심 있거나 공부해 보고자 하면 아주 좋은 문서가 될 것 같다.(한국어)
  • Practical Kafka Intro (1), Concept (2) : AWS에서 Kafka를 사용하기 위해 필요한 내용을 정리한 시리즈 글이다. 1편에서는 Kafka의 아키텍처와 Broker, Producer, Consumer 등의 요소를 설명하고 Broker 간에 Topic을 이용해서 파티셔닝과 리플리케이션을 어떻게 하는지 설명한다. 2편에서는 Consumer가 어떤 Partition을 가져가는지 결정하는 파티션 할당과 재할당이 이뤄지는 과정을 설명한다. 새로 추가된 재할당 개선 기능으로 재할당을 삭제 후 추가되어도 진행하지 않는 Static Membership과 재할당이 필요한 Consumer만 진행하는 Incremental Rebalancing Protocol을 설명하고 있다.(한국어)

볼만한 링크

  • 2021_회고 글 모음 : 해가 바뀌다 보니 많은 분이 회고 글을 써주셨는데 mysetting에서 회고 글을 모아져 있어서 쉽게 찾아볼 수 있다.(한국어)
  • 실리콘밸리는 웹 3.0 논쟁 중이래요! : 최근 웹 3.0과 관련해서 마크 안데르센과 잭 도시가 벌인 논쟁을 정리한 글이다. 넷스케이프를 만들고 a16z 벤처투자 회사를 만든 마크 안데르센이 플랫폼을 사용자와도 같이 소유할 수 있는 웹 3.0을 지지하자 잭 도시는 웹 3.0을 해도 어차피 돈을 버는 것은 벤처캐피탈과 투자자뿐이라고 비판하면서 트위터 계정을 차단하는 등 논쟁이 벌어졌다.(한국어)
  • 탈중앙 게임, 그리고 블록체인과 NFT : 수년간 "블록체인 게임" 혹은 탈중앙 게임을 만들면서 생각을 정리한 글이다. 보통 같은 용어로 쓰지만, 이 글에서는 블록체인 게임, 탈중앙 게임, NFT 게임을 구분해서 얘기하고 있으며 모든 게임이 탈중앙화될 필요는 없고 탈중앙하더라도 일부만 되어서는 이득이 별로 없다. 그래서 블록체인의 특성이 게임 디자인에 침투되어야 한다고 하고 있다. "맨 처음 가장 중요한 것은 블록체인이나 NFT가 필요 없는 게임에 블록체인을 억지로 끼워 넣으려고 하지 말아야 한다는 것이다."라는 부분에 공감한다.(한국어)
  • ‘망이용료’ 논쟁 팩트체크 2.0 : 국내 망사업자들이 요구하는 망 이용료에 대한 의견을 반박하고 망 이용료 요구는 인터넷 접속에 대한 국제기준에 반하고 망 중립성을 헤친다는 팩트를 정리해 놓았다. 복잡한 사안이라 어렵긴 하지만 한번 읽어볼 만하다.(한국어)

프로젝트

  • PromLens : Prometheus의 PromQL 쿼리 빌더.
  • Open Subscription Platforms : 구독 플랫폼이 개방형인지 폐쇄형인지 비교해 주는 사이트이다. Substack, Ghost, Revue, Medium 등 플랫폼을 비교해서 어떤 데이터를 export할 수 있는지 비교해서 보여준다.
  • TrailScraper : AWS CloudTrail에서 이벤트를 쉽게 조회할 수 있는 CLI 도구
  • PrinceJS : 고전 게임인 페르시아의 왕자를 웹으로 구현한 버전으로 소스코드는 GitHub에 공개되어 있다.
  • hyperfine : CLI 명령어를 벤치마크할 수 있는 CLI 도구.

버전 업데이트

2022/01/02 21:06 2022/01/02 21:06