Outsider's Dev Story

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

기술 뉴스 #198 : 22-05-16

웹개발 관련

  • Lerna is dead — Long Live Lerna : 프로젝트 중단을 발표했던 모노레포 도구 Lerna의 소유권을 Nrwl이 넘겨받았다. Nwrl은 모노레포 도구 Nx를 만드는 회사로 Lerna와 Nx를 둘 다 유지보수 하면서 두 도구를 잘 통합할 수 있게 되었다. Lerna의 코드를 몇 주간 살펴본 뒤에 로드맵을 발표할 것이지만 많은 프로젝트가 아직 Lerna를 쓰고 있으므로 주요한 버그 수정과 보안 업데이트를 먼저 할 것이라고 한다.(영어)
  • GraphQL is a Trap? : 트위터에서 많이 돌아다닌 "GraphQL is a Trap"이라는 트윗의 내용을 반박한 글이다. 트위터 스레드에서 얘기한 내용을 사안마다 정리해서 반박하고 있다.(영어)

    • 주장 1: GraphQL은 공개 API를 일반적인 그래프 데이터베이스와 같게 만든다.

      • 가장 일반적인 오해로 공식 웹사이트에서도 클라이언트가 사용하는 방법을 설명하도록 GraphQL 스키마를 정의하고 데이터베이스 스키마를 미러링하지 말라고 하고 있다.
    • 주장 2: 유지 보수 작업량이 하늘을 찌른다.

      • GraphQL의 유지보수가 다른 API 형식보다 어렵다는 얘기는 들어보지 못했고 유지보수성은 특정 기술보다는 어떻게 소프트웨어를 작성했느냐에 더 영향을 받는다.
    • 주장 3: 쿼리 기능을 잠근다는 것은 일반적인 API라는 것을 의미하지만 잠그지 않는 다는 것은 무한 성능 작업을 의미한다.

      • 잘 설계되고 구현된 GraphQL API는 임의의 쿼리를 다른 공개 API처럼 적절한 시간에 수행할 수 있으며 쿼리를 잠근다고 하더라도 클라이언트에 유연성을 제공하고 새로운 쿼리마다 서버팀이 작업할 필요가 없게 된다.
  • State of CSS 2022 : Google I/O에서 2022년 CSS의 상황에 관한 발표를 정리한 글이다. 2021년의 호환성 문제를 제거하기 위해 sticky, aspect-ratio, flex, grid, transform 5가지 기능을 테스트할 수 있도록 compat 2021에서 개선했고 올해는 interop 2022에서 개발자의 경험을 개선하기 위해 @layer, 컬러스페이스, conatain, <dialog>, 폼 호환성, 스크롤, 서브그리드, 타이포그래피, 뷰포트 유닛, 웹 호환성 기능을 계획하고 있다. 글이 상당히 긴데 2022년의 새로운 기능과 그 이후에 나올 기능을 하나씩 설명해주고 있다.(영어)
  • Get to know your browser's performance profiler : 브라우저의 개발자 도구에서 Performance탭의 프로파일러를 돌린 후 결과를 어떻게 이해해야 하는지 설명하는 글이다. 1ms단위로 스냅샷을 찍기 때문에 함수의 호출 관계와 실행에 따라 데이터가 어떻게 표시되는지를 간단히 보여주고 이를 이용해서 개발자도구에서 오래걸린 함수(total시간과 self시간)를 어떻게 찾는지를 보여주는데 예제 코드를 직접 실행해 볼 수 있게 제공해서 개발자 도구에서 성능 프로파일링을 해볼 수 있다.(영어)
  • The next chapter for Cloudflare Workers: open source : Cloudflare에서 Worker를 5년 전 런칭한 이후 개발자가 Woker 사용을 주저하는 이유가 락인되는 것과 로컬에서 테스트가 가능한지 여부였다. 이는 런타임을 오픈소스로 공개할 계획이 있는지에 대한 질문으로 이어지는데 이제 Wokers 런타임을 Apache 2.0 라이센스로 공개하기로 발표했다. 아직 코드가 공개되진 않았다.(영어)

그 밖의 개발 관련

  • JavaScript Containers : JavaScript가 브라우저에서 쓰이고 있기 때문에 가장 보편적인 스크립트 언어라고 볼 수 있고 브라우저처럼 추상화된 샌드박스로 서버에서 컨테이너가 유행했듯이 JavaScript 컨테이너 개념을 주장하는 글로 Node.j를 만들었던 Ryan Dahl이 쓴 글로 현재 만드는 Deno 지지에 치우친 글이긴 하다. "The Network Is the Computer"라는 개념을 구현한 것이 Cloudflare Workers와 Deno Deploy이다. Shell의 역할을 JavaScript가 대체하고 JavaScript 샌드박스는 Wasm을 호출하게 될 것이고 Deno가 그렇게 했듯이 브라우저 API를 그대로 따르고 있어서 JavaScript에 익숙한 개발자가 쉽게 사용할 수 있다.(영어)
  • A Community Group for Web-interoperable JavaScript runtimes : Cloudflare에서 Verce, Shopify, Node.js/Deno의 개인 기여자와 협업해서 브라우저가 아닌 JavaScript 기반 개발 환경에서 표준화된 웹 API의 상호 운용할 수 있는 구현체를 만드는 커뮤니티 그룹을 만들었다. W3C에서 표준 API를 만들고 있지만 브라우저 환경만 고려하고 있기 때문에 브라우저가 아닌 환경에 맞지 않거나 따라잡는데 오래걸리고 있었다. 이 Web-interoperable Runtimes Community Group(WinterCG)은 W3C 하에서 운영되며 W3C와 WHATWG는 계속해서 웹 브라우저의 요구사항을 고려하고 WinterCG에서 그 외 환경의 요구사항을 해결하는 데 집중할 것이다. WinterCG가 자체적인 API를 발행하진 않을 것이고 W3C와 WHATWG의 작업에 WinterCG의 고려사항을 제안하는 방식이 될 것이라고 한다.(영어)
  • Clean Node.js Architecture —With NestJs and TypeScript : NestJS 웹 프레임워크와 TypeScript로 클린 아키텍처를 구현하는 방법을 설명하는 글이다. Framework, Controller, Use Cases, Entities의 각 계층에서 담당해야 할 부분과 어떻게 구현하고 관심사를 분리해야 하는지를 설명하고 전체 예시 코드와 함께 설명하고 있다. NestJS를 설명하는 글은 아니지만, NestJS로 구현했기 때문에 NestJS가 해주는 기능을 사용하는 부분이 어느 정도 포함되어 있다.(영어)

인프라 관련

  • Understandable Terraform projects : Terraform으로 인프라를 관리할 때 이해하기 쉽게 YAMNL 파일을 설정 파일로 이용하는 방법을 설명한 글이다. 참조해서 사용하는 값은 모두 YAML 파일에 작성해서 HCL로 작성하는 것보다 훨씬 읽기 쉽게 만들고 이를 HCL에서 yamldecode로 읽어서 값으로 설정한다. dev, live 같은 폴더에서는 복잡성 제어와 복사 붙이기가 쉽도록 resource 블록은 절대 가지지 않고 공통 모듈을 가져와서 쓰도록 작성한다.(영어)
  • Stop using Alpine Docker images : 가벼운 이미지를 위해 Alpine을 많이 사용하지만 distroless 이미지가 더 안전하고 작기 때문에 더는 Alpine 이미지를 쓸 필요가 없고 Docker에서는 scratch라는 아주 작은 이미지도 제공하기 때문에 이를 이용해서 distroless 이미지를 직접 만들 수도 있다. distroless는 애플리케이션 외에 일반적으로 Linux에 있는 패키지 매니저나 셸 등이 포함되지 않은 이미지를 말한다.(영어)
  • Prometheus LTS : API 안정성을 보장하기 위해 7월 Promethues 2.37부터 LTS(장기지원)을 도입하기로 하고 2.37은 23년 1월까지 지원할 예정이다.(영어)
  • Announcing D1: our first SQL database : Cloudflare에 기존에 KV, Durable Objects, R2의 스토리지가 있었지만 이번에 첫 SQL 데이터베이스 D1을 발표했다. SQLite 위에 만들어진 D1은 Cloudflare Workers에 맞게 설계되었다.(영어)
  • AWS Lambda adds support for Node.js 16 : AWS Lambda에서 Node.js 16 런타임과 베이스 컨테이너 이미지를 지원하기 시작했다.(영어)
  • Terraform Cloud Run Tasks are Now Generally Available : Terraform Cloud에서 서드파티 도구를 실행할 수 있는 run tasks가 모두 이용할 수 있도록 열렸다. 이를 통해run, apply에서 보안 검사나, 비용 제어, 컴플라이언스를 통합시킬 수 있다.(영어)

볼만한 링크

  • [번역] 빅테크의 프로젝트 관리 방식, 그리고 스크럼의 기이한 부재 : 미국 빅테크 기업에서 프로젝트를 어떻게 관리하는지를 정리한 How Big Tech Runs Tech Projects and the Curious Absence of Scrum의 요약 번역 글이다. 회사마다 프로젝트를 관리하는 방식이 다른데 빅테크 기업은 주로 엔지니어가 프로젝트를 주도하고 전문 프로젝트 관리자가 없어서 관리방식을 스스로 정할 수 있다. 이에 따라 자율성이 높아지고 더 큰 영향력을 발휘할 수 있다고 한다.(한국어)
  • Preventing burnout: A manager's toolkit : GitLab의 CEO인 Sid Sijbrandij가 팀이 번아웃에 빠지지 않도록 매니저가 지원할 수 있는 12가지 전략을 정리했다.(영어)

    1. 휴식 장려: 반차도 도움이 되고 다음 휴가가 언제인지 물어보고 계획 세우도록 하기.
    2. 압박 낮추기: 번아웃이 다가왔다고 느끼면 목표나 OKR에 압박을 낮추고 목표도 덜 자주 물어본다.
    3. 더 긍정적으로 되기: 관리자가 스트레스의 원인이 될 수 있으므로 팀원에 대해 더 긍정적으로 되도록 해야 한다.
    4. 팀원 늘리기: 적은 수가 많은 일을 하고 있으므로 인원을 늘리는 걸 고려해 보고 다른 팀에서 빌려오는 임시적인 방법도 가능하다.
    5. 코칭 제안하기: 외부 코칭이 팀원을 도와줄 수 있다.
    6. 멘탈케어 프로그램이 있다는 걸 알려주기: GitLab에는 모든 직원을 위해 멘탈케어 프로그램을 제공한다.
    7. 감사 표현하기: 감사의 의미로 집에 선물을 보내준다.
    8. 진척 사항 축하하기: 번아웃은 종종 정체감 때문에 발생하고 매니저가 매일 진행되는 진척 사항을 파악하기는 쉽지 않다.
    9. 공감하기: 일은 힘들므로 이에 관해 대화해라.
    10. 솔선수범해라: 매니저가 일하는 시간을 정해놓고 유지해야 한다.
    11. 노력을 줄이는 데 동의해서 일하는 시간을 줄인다: 팀원이 실패할 것으로 보이는 일을 구분하도록 매니저가 요청할 수 있다.
    12. 번아웃 문제를 다른 사람과 공유해라
  • 내가 구글을 떠난 이유: 균형 (번역) : 구글에서 일하던 스캇 케네디라는 사람이 Replit이라는 스타트업으로 이직한 회고를 번역한 글이다. 2011년 구글에 합류해서 너무 좋았고 재정 상태도 좋아졌지만, 시간이 지나면서 인생의 균형이 깨졌다는 것을 깨달았고 구글이 너무 큰 조직이 되다 보니 업무 시간이 많지 않음에도 번아웃이 오는 것을 느끼고 큰 조직의 걱정이 없는 작은 스타트업으로 옮겼다고 한다.(한국어)
  • One step closer to a passwordless future : 피싱이나 스캠, 간단한 비밀번호 등으로 비밀번호가 취약한 문제를 해결하기 위해 password가 필요 없도록 넘어가기 위한 계획을 Google이 발표했다. Android와 Chrome에서 FIDO 로그인 표준을 패스워드 없이 지원하도록 구현하는 계획을 발표했고 Apple과 Microsoft도 마찬가지로 발표했다. passwordless는 핸드폰에서 FIDO 인증을 하면 passkey를 저장하고 이 passkey를 이용해서 온라인 계정을 로그인할 수 있게 된다. 컴퓨터에서는 근처에 있는 폰을 이용해서 로그인할 수 있고 한번 로그인하고 나면 이후부터는 컴퓨터의 잠금만 풀면 핸드폰이 없어도 로그인할 수 있고 폰에 저장된 passkey는 클라우드 백업으로 새 폰에서도 이용할 수 있다.(영어)
  • Roboto … But Make It Flex : Google에서 Roboto 폰트를 가변 폰트로 만든 Roboto Flex를 공개했다.(영어)
  • What’s new at Config 2022 : Figma의 디자인 콘퍼런스 Config에서 다크모드, 가변 폰트, 오토 레이아웃 지원 등을 발표했다.(영어)

IT 업계 뉴스

프로젝트

  • Wireit : Google에서 만드는 npm 스크립트를 강화해 주는 프로그램으로 현재 알파 단계이다.
  • EpubPress : 웹사이트를 이북으로 만들어주는 Chrome/Firefox 익스텐션
  • Vector : Datadog에서 Rust로 만든 옵저버빌리티 파이프라인 도구로 로그나 메트릭을 수집해서 변환하고 라우팅할 수 있다.
  • Markdoc : Stripe에서 공개한 Markdown 기반 저작 시스템
  • puppeteer-extra-plugin-stealth : Puppeteer로 웹사이트에 접근할 때 웹사이트에서 차단을 위해 탐지하는 것을 막아주는 플러그인

버전 업데이트

2022/05/16 09:08 2022/05/16 09:08