Outsider's Dev Story

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

기술 뉴스 #221 : 23-05-01

웹개발 관련

  • 'Can I Use...', but for ARIA! : bocoup에서 3년 전 스크린 리더부터 보조 기술의 상호운용성 테스트 시스템의 개발을 위해 ARIA-AT 프로그램을 발표했는데 이번에 ARIA-AT의 첫 테스트 결과ARIA Practices Guide(APG)에 등록되었다. 이를 통해 JAWS, NVDA, VoiceOver 등 보조 기술(AT)이 주요 브라우저에서 어디까지 지원하고 어떻게 동작할 수 있는지 결과를 볼 수 있게 되었다. ARIA 접근성을 위한 Can I Use..라고 할 정도로 편하진 않지만, 접근성 지원 여부를 확인할 수 있게 되었다는데 큰 의미가 있다.(영어)
  • Deno KV : Deno에서 JavaScript/TypeScript에 최적화된 키/밸류 Deno KV를 공개했다. DenoKV는 FoundationDB 기반으로 ACID 트랜잭션을 지원하고 특별한 설정 없이 32개 전 세계 데이터센터에서 바로 사용할 수 있다.(영어)
  • Ask Netlify : 프론트엔드 배포 플랫폼인 Netlify의 문서 사이트에서 채팅으로 질문하면 문서 내용에 맞게 AI가 답변하는 기능이 추가되었다. GPT에서 유용해 보여서 관심 많은 부분인데 Netlify에서 먼저 도입했고 한국어도 잘 지원하고 있다.(영어)
  • What's New in DevTools (Chrome 113) : Chrome 113의 개발자 도구에서는 로컬에서 응답 헤더를 조작할 수 있게 되고 Nuxt/Vite/Rollup에서 생성된 코드의 디버깅이 더 쉽게 스택 트레이스를 개선하고 인라인 스타일 중 유효하지 않은 CSS도 잘 표시하며 키 프레임 단축어에 링크도 추가된다.(영어)

그 밖의 개발 관련

  • Building a ChatGPT Plugin for Medium : Medium에서 ChatGPT 플러그인을 만들어 보면서 경험을 정리한 글이다. 참고로 이 플러그인은 아직 공개 여부는 정하지 않았다고 한다. 사이트에서 .well-known/ai-plugin.json를 노출해서 쉽게 플러그인을 구축할 수 있고 GraphQL로 된 API를 ChatGPT를 위해 RESTful API로 노출하도록 Go로 프로그램을 작성했지만 다양하게 테스트해 본 결과 API를 이용해서 꽤 괜찮은 결과를 조회하고 연관된 콘텐츠까지도 조회하는 등 ChatGPT의 이해도가 놀라웠다고 하고 있다.(영어)
  • 마틴 파울러가 알려주는 ChatGPT와 페어 프로그래밍 하는 법 : 리팩토링으로 유명한 Martin Fowler가 ThoughtWorks의 동료인 Xu Hao와 대화하다가 Xu Hao가 ChatGPT를 활용하는 방법을 듣고 정리한 글이다. 테스크 코드를 작성하는 과정인데 어떤 프로그램이 있고 어떤 테스트를 만들려고 하는지 아주 자세한 프롬프트를 제공하지만, 코드는 작성하지 않도록 하고 나온 대답에 관해서 추가적인 지시를 하거나 답변한 내용의 이유를 물어보면서 해야 할 작업 목록을 구체화한 뒤 맘에 들면 각 할 일마다 컴포넌트의 이름을 작성한 뒤에 테스트 코드를 작성하게 합니다. 토큰 제한 때문에 앞의 맥락을 잊어버리는 게 문제인데 할 일 목록을 만든 것을 다시 입력하면 새 세션에서도 다시 이야기를 이어 나갈 수 있다고 한다.(영어)
  • How to troubleshoot memory leaks in Go with Grafana Pyroscope : Grafana가 최근에 인수한 Continuous Profiling 회사 서비스 Pyroscope를 이용해서 Go 프로그램의 메모리 릭을 추적하는 과정을 설명한 글이다. 간단하게 메모리 릭이 있는 Go 프로그램을 작성하고 프로그램에 Pyroscope를 통합시킨 뒤 메모리 추적을 통해 프레임 그래프를 보면서 문제가 되는 부분을 찾고 있다.(영어)
  • Docker Compose Experiment: Sync Files and Automatically Rebuild Services with Watch Mode : Docker Compose가 v2에서 계속 개선이 되고 있는데 v2.17에 서비스를 자동으로 업데이트하는 Watch 명령이 실험적으로 도입되었다. Docker Compose의 YAML에서 x-develop 필드를 정의해서 특정 경로의 변경 사항이 생겼을 때 바로 컨테이너에 복사하는 sync와 이미지를 다시 빌드하는 rebuild 옵션을 정의할 수 있게 되었다.(영어)
  • One Click Into GitHub Codespaces : 프로젝트의 Codespace를 GitHub 외부에서 바로 열 수 있는 Deep 링크 기능이 추가되어 링크나 버튼을 외부에 공유할 수 있게 되었다. 추가로 Codespace를 실행할 때 추천 시크릿을 보여주는 기능이 추가되었고 Dev Container에 이름을 지정할 수 있게 되었다.(영어)

인프라 관련

  • Terraform Cloud no-code provisioning is now GA with new features : Terraform Cloud Business에서 사용할 수 있는 No-code 프로비저닝이 GA가 되었다. Terraform으로 프로비저닝 하려면 HCL을 사용해야 하는데 모듈을 제공하면 HCL을 사용하지 못해도 프로비저닝 할 수 있는 워크플로우를 지원할 수 있다.(영어)
  • Announcing GitHub Actions Deployment Protection Rules, now in public beta : GitHub Actions의 배포 기능을 사용할 때 Deployment protection rules가 추가되었다. 이를 통해 Datadog, Honeycomb, New Relic, NodeSource, Sentry, ServiceNow 등 GitHub과 파트너쉽을 맺은 회사가 이미 앱을 제공하고 있고 이 앱을 통해 배포 시 안전한 배포만 나가도록 추가적인 보호 정책을 적용할 수 있고 직접 Deployment protection rules을 만들어서 공유하는 것도 가능하다.(영어)
  • Cilium Mesh – One Mesh to Connect Them All : Cilium에서 범용 네트워킹 레이어인 Cilium Mesh를 공개했다. Cilium 기반 네트워크와 보안을 확장하기 위해 Cilium Mesh가 도입되었으며 기존 Cilium 구성 요소와 연결되어 Kubernetes를 넘어서 멀티 클라우드 혹은 하이브리드 클라우드에 걸쳐서 제로 트러스트 보안을 적용하고 네트워크 가시성을 얻을 수 있다.(영어)
  • Monitor OpenAI GPT application usage in New Relic : New Relic에서 OpenAI의 GPT 모델을 서비스에서 사용하는 사용자가 GPT 모델의 성능을 모니터링 할 수 있는 기능을 공개했다. OpenAI의 API를 사용할 때 New Relic의 모니터링 코드를 추가하면 사용량과 모델의 응답 속도를 측정해서 비용과 성능을 모니터링할 수 있다.(영어)
  • Azure Kubernetes upgrades and Long Term Support : Azure의 매니지드 Kubernetes 서비스인 AKS에서 LTS(장기지원)를 도입했다. Kubernetes는 매년 3번의 릴리스를 하고 각 릴리즈는 1년간 지원되므로 매번 Kubernetes 버전을 따라가는 것이 인프라팀에는 꽤 부담인데 5월에 출시된 1.27부터 LTS를 지원하고 2년 동안 Azure에서 포크에서 지원 및 보안 업데이트를 제공할 예정이다.(영어)
  • Inside Envoy: The Proxy for the Future : CNCF에서 Speakeasy 프로덕션과 파트너쉽을 맺고 Envoy 프록시가 만들어지고 성장한 과정을 담은 다큐멘터리를 공개했다. 이 다큐멘터리의 분량은 31분이다.(영어)

볼만한 링크

  • 당신이 성장하지 못하는 이유 : 어떻게 하면 성장할 수 있는지를 정리한 글인데 적절한 비유와 함께 다양한 관점으로 설명하고 있다. 본인 능력에 맞게 적절한 난이도를 조절해야 하고 더 큰 성장을 위해 피드백을 받을 수 있는 환경을 만들거나 그런 환경으로 이동해야 한다. 그래서 정체된다고 느끼면 이런 부분을 고민해서 시도해 봐야 하고 잘못 알고 있는 것을 빨리 인지할 수 있도록 작고 빠르게 실패하기를 권하고 있다.(영어)

IT 업계 뉴스

  • Apple wins antitrust court battle with Epic Games, appeals court rules : Apple이 포트나이트 게임의 개발자인 Epic Games와의 앱스토어 정책의 반독점 관련 소송에서 승소했다. Epic Games는 iOS의 앱 배포를 앱 스토어에서만 가능하게 하며 다른 결제 방법을 쓰지 못하게 했다고 2020년 소송했지만 10건의 청구 중 Apple이 9건을 승소했다. iOS 앱에서 다른 결제 수단 안내를 금지하지 못하게 하는 판결은 여전히 유효하며 애플과 에픽게임즈는 진 소송 건에 관해 항소하기로 했다.(영어)
  • A message from our CEO : Dropbox의 CEO인 Drew Houston은 Dropbox 전 세계 직원 중 16%인 500명을 감축하기로 하고 직원들에게 이메일을 보냈다. Dropbox는 수익성이 좋지만, 성장세는 둔화하고 있으며 AI 시대가 도래했기 때문에 새로운 투자가 필요해졌고 이러한 투자 여력을 확보하기 위해 인력 감축을 결정했다고 한다.(영어)
  • 세가, 앵그리버드 개발사 로비오 1조원에 인수 : Sega가 Angry Birds를 만든 게임 개발사 Rovio를 약 1조 179억 원(7억 6백만 유로)에 인수하기로 했다. Sega는 이번 인수가 모바일게임 포트폴리오를 강화하기 위해서라고 밝혔다.(영어)
  • Microsoft’s Phone Link app is now available for iOS so you can use iMessage from a PC : Microsoft에서 Phone Link 앱의 새 버전에서 iOS를 지원한다. Phone Link 앱을 Windows 11 PC에 연결하면 iMessage를 사용할 수 있으며 이 업데이트는 5월 중순에 지원될 예정이다.(영어)

프로젝트

  • AI Playground : Vercel에서 프롬프트를 하나 입력하면 다양한 GPT 모델의 결과를 비교해서 볼 수 있는 플레이그라운드를 오픈했다
  • WebGPT : WebGPU를 이용해서 브라우저에서 GPT 모델을 실행하는 프로젝트
  • Kargo : Argo 프로젝트의 Akuity에서 만든 프로젝트로 GitOps로 지속적 배포를 할 수 있게 하는 애플리케이션 라이프사이클 오케스트레이션. 프로젝트는 아주 초기 단계이다.
  • MRSK : 리버스 프록시 Traefik을 이용해서 다운타임 없이 Docker로 앱을 배포하는 도구, 복잡한 구성없이 컨테이너를 운영할 수 있게 해주며 컨테이너를 위한 Capistrano라고 생각하면 Rails의 DHH가 rails를 위해 만들었으나 다른 앱에서도 사용할 수 있다.
  • ContainerSSH : Kubernetes, Podman, Docker에 SSH 연결마다 새로운 컨테이너를 실행해 주는 프로젝트로 SSH 연결이 끊기면 컨테이너도 제거된다.
  • timoni : Helm에 영감을 받아 CUE로 만든 Kuberentes 패키지 매니저.
  • StableLM: Stability AI Language Models : Stable Diffusion의 Stability AI에서 오픈 소스로 공개한 언어 모델

버전 업데이트

  • Ubuntu 23.04 Lunar Lobster : Linux 배포판, 릴리스 공지
  • Node.js v20.0.0 (Current) : 자바스크립트 런타임, 릴리스 공지

    • 파일 읽기/쓰기, 자식 프로세스, 워커 스레드 등 권한을 조정할 수 있는 퍼미션 모델의 도입
    • 커스턴 ES 모듈 라이프사이클 훅이 별도의 스레드에서 실행되어 교차 오염이 방지되어 안정 버전에 거의 다가옴
    • V8 11.3 버전 적용
    • Test 러너가 안정 버전이 됨
    • 단독 실행할 수 있는 애플리케이션(Single Executable Applications, SEA)을 1년 이상 준비 중이며 실험 플래그를 통해 초기 지원이 시작됨
  • QEMU 8.0.0 : 프로세스 에뮬레이터, 릴리스 공지
  • Linux Kernel v6.3 : 리눅스 커널, 릴리스 공지
  • Rust 1.69.0 : 프로그래밍 언어, 릴리스 공지
  • Wasmer v3.2 : WebAssembly 런타임, 릴리스 공지

    • RISC-V 칩셋 지원
    • WASI 리팩토링으로 속도 및 안정성 개선
    • WebAssembly의 강력한 성능과 CGI의 다양성/단순성을 합친 새 표준 WCGI 지원
    • 새로운 러너 아키텍처 도입
  • Deno v1.33.0 : TypeScript 런타임, 릴리스 공지

    • 빌트인 KV 데이터베이스
    • 간결해진 deno.json 형식
  • webpack v5.81.0 : JavaScript 번들러, 변경사항
  • Vite v4.3.0 : 프론트엔드 빌드 도구, 릴리스 공지

    • 개발 서버의 성능 개선
  • Grafana v9.5 : 매트릭 대쉬보드, 릴리스 공지

    • 노이지한 알림을 줄이기 위한 알림 규칙 설정, 알림 정책 개선
    • 서비스 어카운트 지원으로 조직 내 접근 제어 관리 개선
  • Crossplane v1.12.0: 외부 인프라 관리용 Kubernetes 애드온, 릴리스 공지

    • 많은 사용자가 요청하던 Observe-only Resources(OOR)가 추가되었다.

      • Crossplane은 프로비저닝부터 삭제까지 전체 라이프사이클을 관리하도록 만들어졌지만 OOR을 사용하면 쓰기나 삭제 작업을 수행하지 않고 외부 리소스의 상태를 관찰하고 노출할 수 있다.
      • OOR을 사용해서 다른 방법으로 만든 리소스의 일부 상태를 참조할 수 있고 점진적으로 Crossplane을 도입할 수 있게 되었다.
    • Compositions을 컨트롤 플레인에 추가할 때 유효성을 검사해서 문제를 미리 확인할 수 있게 됨.
  • GitLab v15.11 : 오픈소스 설치형 Git 플랫폼, 릴리스 공지

    • Ultimate/Premium 사용자에게 Code Suggestions 제공
    • self-managed 인스턴스에서 기본적으로 Web IDE 베타 활성화
    • 사용자의 업적을 프로필에 표시할 수 있는 Award achievements 지원
    • Google Play Store 통합
    • 그룹 레벨에서 컴플라이언스 프레임워크 리포트 관리 가능
  • Harbor v2.8 : 컨테이너 이미지 저장소, 릴리스 공지
  • Prisma v4.13.0 : TypeScript/Node.js 데이터베이스 툴킷, 릴리스 공지
  • CDK for Terraform v0.16.0 : Terraform Cloud Development Kit, 릴리스 공지

    • HCL 코드를 CDKTF 호환 언어로 자동 변환하는 convert 명령어 추가
  • k6 v0.44.0 : 부하 테스트 도구, 릴리스 공지
  • React Router v6.11.0 : React의 라우팅 라이브러리, 릴리스 공지
  • Ionic CLI v7.0 : 하이브리드 모바일 앱 프레임워크 Ionic의 CLI, 릴리스 공지
  • Fastify v4.17.0 : Node.js 웹 프레임워크, 릴리스 공지
  • Mikro ORM v5.7.0 : TypeScript ORM, 릴리스 공지
  • Traefik Proxy v2.10 : HTTP 리버스 프락시/로드 밸런서, 릴리스 공지

    • Kubernetes Ingress와 Kubernetes IngressRoute 지원으로 서비스 로드밸런싱 개선
    • 새로운 Prometheus 매트릭 지원으로 헤더 기반으로 클라이언트 정보 수집 가능
    • 새로운 traefik.io CRD API 그룹 도입
  • MicroK8S v1.27.0 : 경량 Kubernetes, 릴리스 공지
  • ESLint v8.39.0 : JavaScript 코드 분석 도구, 릴리스 공지
2023/05/01 18:57 2023/05/01 18:57