Outsider's Dev Story

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

기술 뉴스 #197 : 22-05-01

웹개발 관련

  • RFC 9116 A File Format to Aid in Security Vulnerability Disclosure : 취약점을 발견했을 때 보고 할 수 있는 공식 경로를 명시할 수 있는 security.txt가 RFC 9116으로 등록되었다. /.well-known/security.txt에 위치하게 되고 보고용 이메일과 PGP 키 등을 명시할 수 있다.(영어)
  • 자바스크립트에서 객체 지향을 하는 게 맞나요? : 자바스크립트 얘기를 하는 게 글의 목적이지만 객체 지향 얘기이기도 하다. 프로그래밍이 발전하면서 구조체, 클래스, 객체가 생기게 된 흐름과 객체지향 프로그래밍의 캡슐화, 추상화, 다형성, S.O.L.I.D까지 간단한 예제로 쉽게 읽히게 잘 설명했다. 뒷부분에서는 JavaScript는 브랜든 아이크가 객체지향을 좋아하지 않았기 때문에 다른 방법으로 객체지향을 할 수 있게 설계하면서 지금의 구조가 된 과정을 설명하면서 그 특성이 잘 풀어쓴 글이다.(한국어)
  • URL, URI, URN: What's the Difference? : 많이 얘기되지만, 항상 헷갈리는 URL, URI, URN의 차이점을 설명한 글이다. URL은 Uniform Resource Locator인데 일반적으로 우리가 말하는 링크이지만 링크는 브라우저에서 URL를 연결하는 역할을 하기에 기술적으로 URL과 링크가 같은 것은 아니다. 글에서 URL이 scheme, authority(dmoin, port), path, parameters, anchor로 이뤄진 것을 구분해 볼 수 있다. URI는 Uniform Resource Identifier의 약자로 URL과 URI가 모두 RFC 3986을 따르지만, URL은 리소스의 위치를 나타내고 URI는 리소스를 식별해주기 때문에 거의 같다고 느낄 수 있지만 실제로는 URL이 URI의 서브셋이다. URN은 Uniform Resource Name의 약자로 리소스가 존재하지 않더라고 리소스를 식별하는 역할을 한다.(영어)
  • 모던 프론트엔드 프로젝트 구성 기법 - 모노레포 도구 편 : 모노레포에 사용할 수 있는 도구인 Yarn(v1, v2), Lerna, Nx, Turborepo의 사용법을 살펴보고 어떤 특징이 있는지를 설명해서 모노레포 도구에 관심 있다면 각 도구의 차이점을 쉽게 알 수 있다.(한국어)
  • Announcing the General Availability of AWS Amplify Studio : 개발자와 디자이너가 협업할 수 있도록 Figma의 디자인 컴포넌트를 Amlify Studio 로 가져와 React 코드로 변환해 주는 Amplify Sutio의 공식 공개 버전(GA)가 발표되었다.(영어)

그 밖의 개발 관련

  • Node.js 18 Introduces Prefix-Only Core Modules : Node.js 16에서 Node.js에 내장된 코어 모듈에는 node: 접두사를 붙일 수 있게 되었다. 즉, import fs from 'fs'로 할 수도 있고 import fs from 'node:fs'로도 할 수 있다. 이는 node: 접두사로 사용자 모듈이 아닌 코어 모듈이라는 것을 명시적으로 나타낼 수 있는데 Node.js 18부터는 node:접두사를 붙여야만 사용할 수 있는 node:test 테스트 러너 모듈이 추가되어서 다른 코어 모듈과 사용법이 다른 첫 모듈이 생기게 되었다. 이는 앞으로 Node 코어에 새로운 모듈을 만들 때 npm에 있는 기존 모듈과 충돌 나지 않게 해준다.(영어)
  • 뱅크샐러드 iOS팀이 숨쉬듯이 테스트코드 짜는 방식 1편 - 통합 UI테스트, 2편 - 화면 단위 통합 테스트 : 뱅크샐러드 iOS 팀에서 그동안 테스트를 작성하면서 쌓은 경험을 정리한 글로 총 3편의 글인데 지금은 2편까지만 공개되었다. 테스트가 없는 상황에서 처음 테스트를 작성하는 것은 어려우므로 통합 UI 테스트를 먼저 작성하는데 테스트에서는 접근성 트리를 이용하기 때문에 접근성이 확보 안 되어 있으면 테스트가 안 될 수 있다. 이때는 VoiceOver 기능을 먼저 사용해 보길 권하고 있고 팀의 온보딩 과정에 로컬에서 테스트를 작성해서 XCUITest와 익숙해질 수 있는 경험을 제공하고 있다. 테스트는 4시간마다 돌면서 실패한 테스트는 슬랙으로 알림을 받고 테스트를 돌리는 김에 로그도 제대로 남겨지는지도 확인하고 있다고 한다. 2편에서는 스냅샷 테스트를 다루고 있는데 스냅샷 테스트는 미리 만들어 놓은 이미지와 현재 이미지를 비교하는 것인데 이때 1px만 틀려도 오류가 나기 때문에 관리가 어려운 편인데 이를 보조수단으로 사용한다고 한다. 테스트가 만든 이미지를 폴더에 저장해 두고 모든 시나리오를 일일이 해볼 필요 없이 이 결과 이미지를 QA하고 QA가 끝나면 이를 레퍼런스 이미지로 저장해서 다음 스냅샷 테스트에 사용한다고 한다. 추가로 테스트가 문서의 역할도 하기 위해 접근성 속성을 검사해서 화면에 원하는 정보가 제대로 나오는지 테스트할 수 있도록 AXSnapshot을 만들어서 쓰고 있다고 한다.(한국어)
  • Codespaces for multi-repository and monorepo scenarios : GitHub의 클라우드 개발환경이 코드스페이스에서 마이크로서비스로 인해 개발할 때 다른 저장소가 필요한 상황이 많아서 이를 지원하기 위해 devcontainer.json에서 customizations.codespaces.repositories 키로 다른 저장소 권한을 설정할 수 있게 되어 저장소를 클론하기 위해 개인 엑세스 키를 설정할 필요가 없게 되었다. 또한 모노레포 프로젝트에서는 팀마다 다른 코드스페이스 환경이 필요하기 때문에 여러 devcontainer.json를 지정할 수 있게 되어 .devcontainer/${DIR}/devcontainer.json 형식으로 지정할 수 있게 되었다.(영어)

인프라 관련

  • Secret Management with HashiCorp Vault :
    SaltStack을 이용해서 Salt Master에서 시크릿을 암호화해서 관리하다가 Salt Minion에서 복호화해서 사용하거나 Kuberentes에서는 Lockbox를 이용해서 암호화된 Lockbox 리소스를 Lockbox 컨트롤러가 복화화해서 쿠버네티스 Secret 리소스로 생성해서 사용했다. 하지만 이런 방법을 사용해서 시크릿의 범위를 제한할 수 없고 같은 GPG 키를 여러 서비스에서 공통으로 사용하게 되고 정적 시크릿을 로테이션할 수도 없고 세션 관리나 Audit 로그도 남기기 어려웠다. 이러한 문제를 HashiCorp Vault에서는 해결해 주고 있기 때문에 SaltStack이나 Kubernetes 오퍼레이터로 Vault와 연동하는 방법을 설명한다.(영어)
  • Deployment-time testing with Grafana k6 and Flagger : 성능 테스트 도구인 Grafana k6와 Kubernetes의 블루/그린, 카나리 배포를 지원하는 Flagger를 조합해서 카나리 배포에서 트래픽을 받기 전에 k6로 성능 테스트하는 방법을 보여준다.(영어)
  • Scaling containers on AWS in 2022 : AWS Lambda, ECS와 EKS에서 컨테이너를 3,500개까지 띄우는 데 걸리는 시간을 테스트한 글이다. 2020년, 2021년에 이어 2022년에도 테스트해서 AWS가 내부적으로 얼마나 빨라졌는지를 알 수 있다. EKS나 ECS나 EC2보다는 Fargete가 빠르다. 그리고 ECS on Fargete의 경우는 2020년에는 70분가량, 2021년에는 20분이 걸렸는데 2022년에는 3,500개 컨테이너를 띄우는데 8분 정도로 줄어들어서 이러한 엔지니어링 노력을 AWS 맡기는 게 얼마나 좋은지 보여주는 예시가 되었다. EKS on ECS에서는 cluster-autoscaler보다 karpenter가 더 빠르고 IPv6를 썼을 때 약간 더 빨라진다. 각 실험의 비교데이터가 아주 자세히 나와 있다.(영어)
  • Istio has applied to become a CNCF project : Istio가 5년을 맞이해 이제 성숙기에 들어가기 시작했다고 판단하고 벤더 중립적인 CNCF 프로젝트가 되기 위해 지원서를 제출했다.(영어)
  • Amazon Aurora Serverless v2 정식 출시 – 워크로드 요구 사항에 따른 즉각적인 DB 크기 조정 : Aurora PostgreSQL/MySQL의 Serverless V2가 공개되었다. v2는 기존 Aurora 클러스터 내에 공존해서 만들 수 있다.(한국어)

볼만한 링크

  • 이제는 달라져야 하는 코딩 테스트 : 코팅 테스트를 많은 회사에서 진행하고 있지만 제한된 시간에 정답을 맞추어야 하므로 결과에만 집중하게 되어 코드 품질이 나빠지게 된다. 코딩 테스트를 공부하므로 회사도 점점 어려운 문제를 내게 되지만 어려운 문제가 실력을 검증하진 못하게 되는 문제가 발생한다. 글의 내용대로 코딩 테스트는 최상을 뽑는 게 아니라 최하를 걸러내는 수단이 되어야 해서 코딩 테스트의 허들을 낮추어야 한다는 데 동의한다.(한국어)
  • Notion 유저에서 파트너가 된 이야기: ① 실리콘밸리 프로덕트에 기여하기, ② 실리콘밸리 스타트업 한국에 성공적으로 수입하기, ③ 할 수 있을 때, 할 수 있는 만큼 : 2017년 Notion을 처음 알게 되어 관심을 가지다가 노션팀에 연락해서 가이드 번역을 하게 되고 이를 기회로 출판사와 연결되어 가이드북을 한국어로 출간하게 된다. Notion 같은 SaaS 기업이 한국 시장에 진출할 때, 제품, 커뮤니티, 로컬 매체를 활용해야 하는데 강력한 로컬 커뮤니티와 대행사 등을 통해서 한국 론칭을 하게 되고 현재는 한국 리드 및 컨설턴트와 일하면서 한국 HQ와 협업을 하고 있다고 한다.(영어)

IT 업계 뉴스

  • Git.io deprecation : GitHub에서 제공하던 단축 URL 서비스 git.io를 4월 29일 중단할 예정이나 많은 문서와 논문에서 git.io를 사용하고 있다고 피드백을 받고 새로운 URL은 만들지 못하는 읽기 전용 상태로 유지하기로 했다.(영어)
  • 일론 머스크, 트위터 삼켰다…55조 원에 인수 : 일론 머스크가 주당 54.20달러에 트위터를 인수하기로 합의했다. 약 55조 원(440억 달러)에 인수해서 상장을 폐지하고 개인회사로 운영할 계획이라고 한다.(한국어)

프로젝트

  • JSON Hero : JSON을 컬럼이나 코드, 트리 뷰로 볼 수 있으면서 이미지나 날짜 등의 데이터로 미리보기로 볼 수 있게 제공해 주는 사이트.
  • cal.com : 일정을 예약할 수 있는 Calendly의 오픈소스 대체제.
  • Podman desktop companion : 도커의 대체제 중 하나인 podman의 데스크탑 앱으로 podman의 공식 앱은 아니다.

버전 업데이트

2022/05/01 02:17 2022/05/01 02:17