Outsider's Dev Story

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

기술 뉴스 #167 : 21-02-01

웹개발 관련

  • Blogged Answers: Why React Context is Not a "State Management" Tool (and Why It Doesn't Replace Redux) : Redux의 메인테이너인 Mark Erikson이 그동안 "Context를 써야 하냐 Redux를 써야 하냐"는 질문에 수백 번 대답했지만 오해가 해소되지 않는다며 정리하는 글을 작성했다. 이 오해를 풀기 위해 두 도구의 목적과 차이점 등을 자세히 적었다. 둘은 다른 일은 하는 다른 도구이고 목적도 다르다. Context는 prop 전파를 피하고 데이터를 전달하는 역할을 한다. React는 상태를 관리하는 도구이고 Redux로 prop 전파를 피할 수 있고 초기에 Redux를 사용한 이유이기도 하지만 Redux에는 상태 관리 로직 분리나 다른 레이어와의 상태 공유 등 여러 목적이 있고 상태관리의 관점으로 봤을 때 Context는 아무것도 저장하지 않기 때문에 상태관리 도구가 아니라고 하고 있다. 글의 뒷부분에서는 어떤 도구를 쓰는 것이 더 적합한지 다양한 사용사례로 설명하고 있다.(영어)
  • [JS] 한글도 지원하는 퍼지 문자열 검색 : 코딩할 때 일부 문자만으로도 검색할 수 있는 퍼지 검색을 한글로 구현하는 과정을 설명한다. 한글은 특성상 영어와 달리 글자의 모음이나 일부만 입력해서 관련된 글자가 나와야 하는데 이를 위해서 한글의 유니코드 패턴을 계산해서 정규표현식을 이용해서 한글로 퍼지 검색을 구현하고 매칭된 글자를 강조하고 결과에서 매칭된 문자의 간격을 기준으로 우선순위를 매기면서 개선한 과정이 나와 있다.(한국어)
  • WebRTC is now a W3C and IETF standard : WebRTC가 이제 W3C와 IETF의 표준이 되었다.(영어)
  • How to use HTTPS for local development : 브라우저가 localhost는 HTTP라고 하더라도 HTTPS처럼 동작하지만, 특별히 로컬 개발도 HTTPS로 해야 하는 경우 mkcert를 사용해서 localhost의 인증서를 생성해서 브라우저가 검증한 인증서로 서버를 실행하는 방법을 설명한다. 셀프 사인 인증서를 사용하는 방법도 있지만, 대부분의 브라우저가 위험한 사이트로 경고한다.(영어)
  • 6 CSS Properties Nobody Is Talking About : 잘 알려지지 않은 CSS 프로퍼티를 소개한다. 각 항목에 !important를 붙이는 대신 all 프로퍼티로 엘리먼트의 모든 프로퍼티를 리셋할 수 있고 writing-mode로 텍스트의 진행 방향을 지정할 수 있다. background-clip은 엘리먼트의 백그라운드에 커스텀 그래픽을 설정할 수 있고 border-image를 사용하면 외곽선에 이미지를 지정할 수 있다.(영어)
  • Hello Tailwind CSS! | 장점, 단점, 사용법 : Tailwind CSS 프로젝트 발전 과정이 흥미로워서 관심이 있었는데 이글에서 간단히 Tailwind CSS를 소개하고 있다. 유틸리티 퍼스트라서 클래스명 고민 없이 쉽게 가져다 사용할 수 있고 커스텀을 쉽게 할 수 있으며 로우 레벨 스타일을 제공하고 쉽게 작성할 수 있도록 Intelli Sense 플러그인을 사용할 수 있다. 대신 보기 어려운(?) 클래스명이 붙어야 하고 이 클래스명을 배워야 하는 문제점 등이 있다.(한국어)

그 밖의 개발 관련

  • 오픈(개방형) 강화를 위한 변화, Part II : Elastic에서 Elasticserch와 Kibana의 소스코드를 Apache 2.0 라이센스에서 SSPL(Server Side Public License)와 Elastic 라이센스의 듀얼 라이센스로 바꾸겠다고 발표했다. 이를 통해 사용자는 계속해서 무료로 사용하고 수정하고 재배포할 수 있지만, Cloud 서비스 제공자가 Elasticsearch와 Kibana를 서비스로 제공하지 못하도록 보호한다고 한다. 이 라이센스 변경은 7.11 릴리스 변경 전에 이뤄질 것이다.(한국어)
  • Stepping up for a truly open source Elasticsearch : 위 Elastic의 라이센스 변경 발표에 대해 AWS는 이제 Elasticsearch와 Kibana는 더는 오픈소스가 아니리 때문에 Apache 라이센스 버전을 포크해서 조만간 공개하고 직접 유지보수 하겠다고 발표했다. 기존 Open Distro for Elasticsearch는 도 이 포크 버전에 합쳐질 것이고 Amazone Elasticsearch 서비스에도 영향이 없을 것이라고 했다.(영어)
  • Access control for GitHub Pages : GitHub 페이지 기능이 지금까지는 항상 공개용으로만 쓸 수 있었지만, 접근 제어 기능이 추가되어서 GitHub 페이지를 private로 만들어서 볼 수 있는 사람을 지정할 수 있다.(영어)
  • 그린랩스가 ReasonML에서 리스크립트로 바꾸는 이유 : 얼마 전에 ReasonML을 살펴보면서 BuckleScript와 ReaonMl, rescript의 관계가 헷갈려서 헤맸던 기억이 있는데 이 부분을 잘 정리한 글이다. BuckleScript의 생태계 위에 Reason이 있지만 배우기 어렵다는 문제 등이 있어서 버클스크립트 팀은 rescript로 리브랜딩하고 rescript만 알면 되는 되도록 만든다고 한다. 그린랩스에서 rescript 공식 문서도 한국어로 번역해서 공개했다.(한국어)
  • Big O Notation - explained as easily as possible : Big O 노테이션이 무엇을 의미하고 각 Big O 이 어떻게 복잡도가 다른지를 쉽게 비교해서 보여주는 글이다.(영어)

인프라 관련

  • Kubernetes-NGINX Ingress 인증 - OAuth : nginx ingress에 인증을 연결해서 인증이 안된 요청이 경우 oauth2-proxy 서비스를 이용해서 OpenID Connect로 GitHub 등의 OAuth 인증을 연결하는 방법을 설정하는 방법을 설명한다. nginx ingress는 인증된 요청만 서비스에 연결해 주무로 각 서비스에서 인증을 처리하지 않게 할 수 있다.(영어)
  • Cloudflare Waiting Room : Cloudflare가 엣지 네트워크와 Worker에서 사용자 요청의 대기열을 관리할 수 있게 하는 Waiting Room을 발표했다. 사용자 트래픽의 상황에 따라 오리진 서버에 요청을 보내거나 오리진 서버에 문제가 생기지 않도록 대기열에 추가해서 관리할 수 있게 해준다. 현재는 COVID-19 관련 일부 고객들에게만 먼저 열렸고 전체에 기능이 공개되는 일정은 아직 발표되지 않았다.(영어)
  • Improving how we deploy GitHub : GitHub의 메인 서비스인 GitHub.com의 참여하는 개발자가 늘어나면서 기존에 배포 시스템에 문제가 생기기 시작했다. 기존에는 ChatOps로 모든 배포가 Slack에 메시지로 오고 개발자들이 명령어를 내리면 다음 단계의 배포로 진행되었는데 너무 많은 배포가 동시에 일어나다 보니 추적도 어렵고 혼란스러워졌다. 기존 2%의 카나리 스테이지도 문제 파악을 제대로 하지 못했기 때문에 2% -> 20% -> 100%로 카나리 스테이지를 늘리고 배포 단계별로 Slack에서 다른 명령어를 쓰고 있었는데 한 번만 명령어를 쓰면 이어지는 과정은 자동으로 진행되도록 만들었다. 슬랙 메시지는 그대로 두었지만, 배포 단계를 모아서 볼 수 있는 통합 UI를 만들어서 제공했다고 한다.(영어)
  • Open Sourcing the Docker Hub CLI Tool : 작년 말에 공개했던 Docker Hub CLI 도구인 hub-tool을 0.3.0 버전 릴리스와 함께 오픈소스로 공개했다 Docker Desktop을 사용하는 Windows와 mac 사용자라면 이미 사용할 수 있다.(영어)
  • Terraform Mono Repo vs. Multi Repo: The Great Debate : 테라폼을 구성할 때 모노 레포에 모든 코드와 모듈을 넣는 방법과 각 모듈과 코드를 각각의 레포로 나누는 멀티레포를 비교한 글이다. 모노 레포는 한 곳에서 모든 것을 볼 수 있고 테스트나 디버깅 등도 모두 한곳에서 할 수 있다는 장점이 있지만, 모듈의 버전을 따로 관리하기가 어렵고 빌드 시스템에서 폴더마다 환경을 설정해야 하는 어려움이 있고 세세한 보안이나 소유권 관리가 어렵다는 단점이 있다. 멀티 레포는 팀이 각자 관리하고 레포별로 독립된 테스트나 보안을 추가할 수 있고 태그도 각자 사용할 수 있지만. 여러 리모트 모듈을 사용하면 다운로드하는데 시간이 더 걸릴 것이다.(영어)

볼만한 링크

  • Morning Brew : Morning Brew 뉴스레터가 어떻게 150만 명의 구독자를 모았는지를 단계별로 설명한다.(영어)

    • 3개월간 0명에서 2,000명의 구독자: 학생 때 Alex는 금융 전공의 학생들이 인터뷰를 준비할 수 있도록 일일 정보 요약을 제공하기로 하고 대학교 내에서 3분 스피치를 하면서 수동으로 이름과 이메일 주소를 받았다.
    • 2천 명에서 10만 명의 구독자: 오픈율이 업계 평균(42%)보다 두 배 가까이 높았고 학생들이 활발하게 구독하는 걸 알게 되었다. 하지만 대학마다 방문해서 홍보할 수는 없음으로 앰배서더 프로그램을 도입해서 학생들이 전국에 학교에서 홍보하게 했고 비슷한 규모의 다른 뉴스레터와 교환 홍보를 진행했다.
    • 10만 명에서 150만 명의 구독자: 레퍼럴 프로그램을 만들어서 구독자를 늘렸으며 수익을 유료 광고에 재투입해서 현재 신규 구독자의 30% 정도가 유료 광고를 통해서 유입된다고 한다.

IT 업계 뉴스

프로젝트

  • Pyre : Facebook에서 만든 Python 3의 빠른 타입 검사기.
  • be my eyes : 시각 장애인/저시력자를 돕는 무료 모바일 앱으로 실시간 영상통화를 통해 자원봉사자들이 도움을 줄 수 있게 해준다.
  • ssgo : Deno를 사용한 정적 사이트 생성기.
  • Low-power Kindle dashboard : 구형 Kindle을 대시보드로 사용할 수 있게 해주는 프로젝트.
  • Blogging for Devs trends : 개발 블로그의 트윗, 리트윗, 답글 등을 점수화해서 기술 분야별 주요 블로그를 순위별로 보여주는 사이트.
  • .new shortcuts : .new TLD로 특정 서비스의 new 액션, 예를 들면 이슈를 만들거나 글을 올리는 등의 숏컷을 모아놓은 사이트
  • dyff : YAML diff 도구.
  • Twitter Text Editor : Twitter가 iOS에서 사용 중인 텍스트 에디터를 오픈소스로 공개했다.

버전 업데이트

2021/02/01 09:33 2021/02/01 09:33