Outsider's Dev Story

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

기술 뉴스 #172 : 21-04-16

웹개발 관련

  • CSS 변수 합성의 강력함 : The Power of Composition with CSS Variables의 번역 글로 CSS 변수와 HSLA를 사용해서 JavaScript나 테마 프로바이더에 의존하지 않고 CSS만으로 색상을 관리하는 방법을 소개한다. HEX나 RGBA를 사용할 때는 비슷한 색이 코드상으로 비슷하게 보이지 않았지만 HSLA는 사용하면 비슷한 색의 채도 명도, 투명도가 얼마나 다른지를 쉽게 파악할 수 있고 이를 이용해서 --base-blue 같은 CSS 변수를 사용하고 이를 var(--base-blue)로 합성해서 투명도만 다른 색을 만든다거나 하는 합성 방법으로 쉽게 색을 관리하고 메인 컬러를 바꾸는 방법을 소개하고 있다.(한국어)
  • Debug Web Vitals in the field : CrUX(Chrome User Experience Report) 데이터는 더 정확한 데이터를 보여주지만 어떻게 개선해야 할지는 보여주지 않는다. 이를 LayoutShiftAttribution를 이용해서 Web Vitals에 영향을 주는 레이아웃이나 요소의 변경을 추적해서 리포팅받는 방법을 설명한다.(영어)
  • Dev.to처럼 포스팅 제목을 이미지로 만들어서 링크 미리보기(Link Preview) 이미지에 넣어보자 : Dev.to에서 하면서 인기가 생긴 방식인 Facebook이나 트위터 등에 링크를 공유할 때 해당 글의 제목 등의 글 정보를 같이 넣어서 보여주어서 쉽게 인지하게 이미지를 만드는 서버를 직접 만드는 과정이다. SVG를 이용해서 템플릿을 만들고 글의 정보를 가져와서 채워주어 기능을 구현했지만, SVG는 Facebook이 프리뷰로 사용 안 한다는 것을 알게 되어 sharp 라이브러리를 이용해서 SVG를 이미지로 변환해서 내려주었고 완성한 소스를 GitHub에 올려두었다.(한국어)

그 밖의 개발 관련

  • Breaking GitHub Private Pages for $35k : 고3 학생이 온라인 수업으로 시간이 남자 GitHub 페이지의 버그 바운티로 35,000달러를 번 이야기이다. GitHub의 private 페이지의 인증 흐름을 분석해서 XSS로 JavaScript를 실행할 수 있다는 것을 찾은 뒤 이를 이용해서 검증으로 사용하는 nonce를 고정해서 공격에 성공하고 추가 보너스를 얻으려고 pivate 페이지의 저장소를 public으로 바꾸는 설정을 이용해서 조직 외부의 사람한테도 해당 공격을 할 수 있음을 보여주어서 상금을 받는다. 더 자세한 요약은 GeekNews에 올려두었다.(영어)
  • Announcing Preview of Microsoft Build of OpenJDK : Microsoft에서 무료로 이용할 수 있는 OpenJDK의 Microsoft 빌드 버전을 발표했다. OpenJDK 11.0.10+9에 기반을 둔 Java 11은 LTS로 macOS, Linux, Windows를 지원하고 2024년까지 MS에서 지원할 예정이다. x64와 ARM의 Windows에서 사용할 수 있는 OpenJDK 16+36에 기반을 둔 Java 16도 early access로 배포했다.(영어)
  • Work with GitHub Actions in your terminal with GitHub CLI : GitHub의 공식 CLI인 gh의 최신 버전인 1.9.0에서 GitHub Actions도 관리할 수 있게 되었다. gh run 명령어로 액션의 명령어나 실행 중인 작업과 로그를 바로 볼 수 있고 gh workflow를 이용해서 액션을 실행하거나 관리하는 기능도 추가되었다.(영어)
  • 고언어(Golang) HACKING.md 내용 정리 : Go 언어의 런타임 구조와 동시성 처리 방식 등에 관해 정리해 놓은 HACKING.md문서를 정리한 글이다. Go 언어의 스케쥴러 구조, 에러 핸들링, 동기화 메커니즘, 메모리 관리 등에 관해 나와 있다.(한국어)

인프라 관련

  • Introducing OpenSearch : 올 초에 예고된 대로 AWS가 Elasticsearch를 포크해서 OpenSearch라는 프로젝트를 공개했다. OpenSearch는 Elasticsearch 7.10.2를 포크한 버전이고 OpenSearch Dashboards는 Kibana 7.10.2를 포크한 버전으로 둘 다 Apache 2.0 라이센스로 공개했다.(영어)
  • Intro to exemplars, which enable Grafana Tempo’s distributed tracing at massive scale : Prometheus가 모니터링에 혁신을 가져오고 같은 방식을 Grafana Loki에 도입하고 이를 다시 트레이싱에도 도입하려고 했던 시도인 OpenMetrics을 설명한다. 과거 OpenMetrics과 OpenCensus을 합치려는 회의가 있었지만 합치지 못하게 되었지만 결국 이 회의에서 트레이싱 백엔드인 Grafana Tempo로 이어지게 되었다. examplars는 트레이스를 다른 관측 데이터와 연결하고 트레이스에는 관심 있는 ID로만 접근할 수 있게 해준다.(영어)
  • Introducing the ApplicationSet Controller for Argo CD : Argo CD 2.0에 새로 추가된 ApplicationSet 커스텀 리소스를 소개하는 글이다. ApplicationSet이 템플릿의 역할을 하므로 하나의 저장소에서 여러 클러스터에 한 번에 배포할 수 있게 된다. 클러스터 제너레이터, Git 디렉터리 제너레이터, Git 파일 제너레이터, 리스트 제너레이터를 통해서 여러 클러스터나 앱으로 원하는 설정을 만들어서 배포할 수 있고 템플릿 오버 라이드 기능을 이용해서 spec 수준에서 값을 덮어쓸 수 있다.(영어)
  • Cloudflare Pages is now Generally Available : 작년에 발표했던 Cloudflare Page가 누구나 이용할 수 있게 열렸다. 이는 Netlify처럼 프론트엔드 개발자들이 Cloudflare에 Jamstack 사이트를 배포할 수 있는 기능이다. Git 저장소를 연결해서 빌드해서 바로 배포할 수 있고 웹 분석, 내장 리다이렉트, 프리뷰, 이미지 최적화 등의 기능이 포함되어 있다.(영어)

볼만한 링크

  • Open Source Contributor Index : GitHub의 활동을 기준으로 오픈소스에 기여하는 회사의 순위를 매겨준 사이트로 2021년 3월 기준으로는 Microsoft가 1위이고 Google이 2위다.(영어)
  • 개발자 부업, 어디까지 해봤니? : 김태곤 님이 20년 동안 개발하면서 그동안 했던 부업들을 정리한 글이다. 부업 관련해서 이렇게 모아놓은 글은 못 본 것 같아서 재미있게 보았다. 책 저술, 번역, 컨설팅, 개발, 강의까지 생각할 수 있는 부업은 대부분 나와 있는 것 같고 개발자 부업이 대부분 수익은 많지 않은데 대부분 받은 보상도 나와 있어서 관심이 있다면 참고할만하다.(한국어)
  • 잘 정리된 이력서보다 중요한 것 : 팀장으로서 작년 500개의 이력서를 검토하면서 만들게 된 이력서 평가 기준을 정리한 글이다. 잘 작성된 많은 이력서 중에서 골라야 하다 보니 더 명확하고 엄격한 기준을 세웠는데 모든. 사람이 똑같이 보긴 어렵겠지만 이력서를 포함해서 실제로 일할 때도 참고할 부분이 많다.(한국어)

    1. 지원동기가 명확한가
    2. 어떻게 일하는가
    3. 퍼포먼스를 내는가
    4. 어려움을 겪었는가
    5. 본인에 대해 잘 이해하는가

IT 업계 뉴스

  • 구글, '10년 자바전쟁' 오라클에 최종 승리 : 구글이 안드로이드에서 Java의 API 저작권을 침해했다며 2010년에 썬 마이크로시스템즈를 인수한 오라클이 소송을 걸면서 시작된 재판이 6:2로 구글의 사용이 공정 이용에 해당한다며 구글의 손을 들어주었다. 208년 항소심에서는 오라클이 이겼으나 파기환송심을 맡은 캘리포니아 법원에서 구글이 다시 이겼다.(한국어)
  • Coursera Prices IPO at Top of Range to Raise $519 Million : 온라인 교육 서비스인 Coursera가 지난 31일 뉴욕증권거래소에 상장했다. 5억 1,900만 달러를 공모하려고 33달러로 시작했고 심볼은 COUR이다.(영어)
  • Statement of FSF board on election of Richard Stallman : 업계 사람들의 많은 반대가 있었지만, FSF 보드는 리차드 스톨만(RMS)의 조언이 FSF에 중요하고 절차상의 문제 등을 더 보완하겠다는 등 무의미한 변명을 하며 RMS가 재단에 남을 것임을 공지했고 RMS도 직접 변명을 남겼다.(영어)

프로젝트

버전 업데이트

  • Kubernetes v1.21 : 컨테이너 오케스트레이션 도구, 릴리스 공지

    • 1.8에서 베타로 도입된 CronJobs가 stable이 됨
    • 불변 SecretsConfigMaps가 stable이 됨
    • IPv4/IPv6 듀얼 스택 지원
    • Graceful 노드 셧다운이 beta가 됨
  • Argo CD v2.0 : Kubernetes 배포 도구, 릴리스 공지

    • Argo CD Notifications 프로젝트를 통한 알림 기능 추가
    • 수천 개의 앱을 관리하는 경우 유용한 Argo CD Application Set 추가
    • 이미지 태그를 자동으로 업데이트해주는 Argo CD Image Updater 추가
    • Pod 뷰 추가
    • 로그 뷰어 추가
  • Argo Events v1.3 : Kubernetes용 이벤트 기반 워크플로우 프레임워크, 릴리스 공지
  • Argo CD Notifications v1.1.0 : Argo CD의 모니터링 및 알림 시스템, 릴리스 공지
  • Terraform v0.15 GA : 서버 인프라 설정 도구, 릴리스 공지

    • Terraform 버전을 올릴 때 코드를 수정하지 않아도 되도록 원격 상태 데이터소스의 파서 요구사항을 낮춤(이는 0.13.6, 0.12.30에도 백포트됨)
    • 상태 파일 안정성을 높여서 0.14.x, 0.15.x, (나중에 릴리스 될) 1.0.x에서 상호 호환성을 유지
    • 프로바이더 기반 sensitive, nonsensitive 추가
  • Deno v1.9.0 : TypeScript 런타임, 릴리스 공지

    • 네이티브 HTTP/2 웹서버 추가
  • Waypoint v0.3.0 : 빌드, 배포, 릴리스 워크플로우, 릴리스 공지

    • GitOps 지원으로 Git 저장소를 모니터링하다가 변경사항이 생기면 waypoint up을 실행할 수 있다.
    • AWS Lambda 지원
    • Waypoint를 원격으로 실행하려면 Runner 사용
  • Django v3.2 : Python 웹 프레임워크, 릴리스 공지
  • sbt v1.5.0 : Scala 빌드 도구, 릴리스 공지
  • Gradle v7.40 : Java 빌드 도구, 릴리스 공지
  • pnpm v6.0.0 : Node.js 패키지 매니저, 릴리스 공지
  • billboard.js v3.0 : JavaScript 차트 라이브러리, 릴리스 공지
  • Verdaccio 5.0 : private npm 프록시 레지스트리, 릴리스 공지

    • 새로운 로거로 Pino.js 사용
  • NativeScript v8.0 : JavaScript 모바일 프레임워크, 릴리스 공지
  • Gatsby v3.3.0 : 정적 웹사이트 생성기, 릴리스 공지
  • Storybook v6.2.0 : React, Vue3, Angular UI 컴포넌트 개발 도구, 릴리스 공지
  • webpack v5.33.0 : JavaScript 번들러, 변경사항
  • ESLint v7.24.0 : JavaScript 코드 분석 도구, 릴리스 공지
  • Rollup v2.45.0 : JavaScript 번들러, 변경 사항
  • FFmpeg 4.4 "Rao" : 오디도/비디오 변환 프레임워크, 릴리스 공지
  • Falco 0.28.0 : 클라우드 네이티브 런타임 보안, 릴리스 공지
2021/04/16 09:28 2021/04/16 09:28