5P by GN⁺ | ★ favorite | 댓글 2개
  • VoidZero는 Vite, Vitest, Rolldown, Oxc, Vite+를 만든 회사이며, 이제 VoidZero 팀 전원이 Cloudflare에 합류
  • 하지만, 개발중인 프로젝트는 오픈소스·벤더 중립·커뮤니티 주도로 계속 유지될 것
  • Vite는 Vue, SvelteKit, Nuxt, Astro, Solid, Qwik, Angular, React Router, TanStack Start 등 여러 JavaScript 프레임워크의 기반이며, Cloudflare는 Vite 생태계 펀드에 100만 달러를 투입함
  • Environment API는 개발 중 서버 코드를 Node.js가 아닌 런타임에서 실행하게 하며, Cloudflare Vite plugin은 workerd로 Workers와 같은 런타임 모델을 로컬에서 제공함
  • AI 에이전트가 프로젝트 생성, 개발 서버 실행, 오류 읽기, 테스트·린트·포맷·프리뷰 배포를 반복하면서 빠른 빌드, 빠른 테스트, 구조화된 오류, 일관된 CLI의 중요성이 커짐
  • Cloudflare 도구는 Vite를 Cloudflare 방향으로 끌어오는 대신 Cloudflare 애플리케이션 도구를 Vite 위로 옮기는 흐름이며, 장기적으로 cf CLI, 풀스택·에이전트용 제공자 중립 프리미티브, Void 플랫폼 오픈소스로 이어질 계획임

합류와 유지되는 원칙

  • VoidZero는 Vite, Vitest, Rolldown, Oxc, Vite+를 만든 회사이며, 이번 변화로 VoidZero 팀 전원이 Cloudflare에 합류함
  • Vite, Vitest, Rolldown, Oxc, Vite+는 오픈소스, 벤더 중립, 커뮤니티 주도 방식을 유지함
  • Vite는 MIT 라이선스와 공개 개발 방식을 유지하고, Vite로 만든 애플리케이션은 어디서든 실행 가능해야 한다는 원칙을 이어감
  • Evan You와 VoidZero 팀은 Vite, Vitest, Rolldown, Oxc, Vite+를 계속 이끌며, Cloudflare는 해당 프로젝트에 엔지니어링과 자원을 투입함
  • Astro가 Cloudflare에 합류했을 때와 마찬가지로 Astro도 오픈소스와 어디서든 배포 가능한 성격을 유지하고 기존 로드맵을 계속 진행함

Vite 생태계와 100만 달러 펀드

  • Vite는 Vue, SvelteKit, Nuxt, Astro, Solid, Qwik, Angular, React Router, TanStack Start의 기반으로 쓰이며, Next.jsvinext에서 Vite 기반 구현을 갖게 됨
  • Cloudflare는 Vite의 채택을 만든 신뢰를 유지하는 것을 최우선 목표로 삼고, 그 신뢰를 프로젝트 지원과 개발 방식으로 증명해야 한다고 봄
  • Cloudflare는 Vite 핵심 팀이 운영하는 Vite 생태계 펀드에 100만 달러를 투입해 메인테이너와 기여자를 지원함
  • Vite는 VoidZero나 Cloudflare보다 큰 프로젝트이며, Vite를 만드는 데 기여한 사람들이 이후 과정에도 참여해야 한다는 방향임

Vite와 Cloudflare의 기술 접점

  • Vite와 Cloudflare의 협업은 2024년 Vite Environment API에서 시작됐으며, 이 API는 개발 중 서버 코드를 Node.js가 아닌 환경에서 실행하게 함
  • Cloudflare Vite plugin으로 vite dev를 실행하면 서버 코드는 Workers 프로덕션을 구동하는 오픈소스 런타임 workerd 안에서 실행됨
  • Durable Objects, D1, KV, R2, Workflows, Workers AI, Agents, Service Bindings, Workers RPC가 프로덕션과 같은 런타임 모델로 로컬에서 실행됨
  • Environment API는 Cloudflare 전용 개발 서버를 강제하지 않고, Vite 안의 일반 메커니즘과 제공자별 구현이라는 구조를 가능하게 함
  • Vite는 주간 다운로드 약 1억 2,900만 회, @cloudflare/vite-plugin은 주간 다운로드 약 1,400만 회에 도달함

AI가 바꾸는 개발 루프

  • 에이전트는 개발 서버, 번들러, 린터, 포매터, CLI를 사용하며, 프로젝트를 만들고 개발 서버를 실행하고 오류를 읽고 테스트를 작성하고 린트·포맷·프리뷰 배포를 반복함
  • AI 생성 애플리케이션 다수는 빠르고 널리 이해되며 학습 데이터와 폭넓게 호환되는 Vite 앱으로 시작함
  • 에이전트 기반 개발에서는 사람보다 더 많이 반복하기 때문에 빠른 빌드, 빠른 테스트, 빠른 린트·포맷, 명확하고 구조화된 오류, 일관된 CLI가 더 중요해짐
  • Vitest, Rolldown, Oxc, Oxlint, Oxfmt는 각 범주에서 빠른 도구로 설계됐고, Vite+는 이를 하나의 CLI, 하나의 설정 모델, 더 적은 구성요소로 묶음
  • Cloudflare 대시보드는 Vite로 만들어졌고, Oxlint는 Cloudflare 코드베이스에서 엔지니어링 시간을 며칠 단위로 절약하고 있으며, Astro 팀의 에이전트 하네스(harness) 프레임워크 Flue도 Vite를 기반으로 옮겨가고 있음

풀스택 Vite와 Cloudflare CLI

  • 현대 애플리케이션은 서버 렌더링 라우트, API, 백그라운드 작업, 큐, 데이터베이스, 객체 스토리지, 실시간 기능, 인증, 에이전트와 AI 기능까지 다루므로 빌드 도구의 역할이 번들 생성만으로 충분하지 않음
  • Vite는 속도, 단순성, 이식성을 유지하면서 애플리케이션의 더 많은 부분을 이해해야 하는 방향으로 확장됨
  • Vite용 배포 플랫폼 Void는 현대 애플리케이션 프레임워크가 무엇을 맡아야 하는지, 배포가 어떤 경험이어야 하는지, 전체 애플리케이션 생명주기를 하나의 도구체인으로 얼마나 통합할 수 있는지 실험하는 공간이었음
  • 일부 교훈은 백엔드, API, 에이전트, 배포를 위한 제공자 중립 추상화와 훅으로 Vite 자체에 들어가고, Cloudflare는 Workers와 Developer Platform 위에서 그 훅의 1급 구현을 제공함
  • Vite 자체 변경은 기존과 같은 공개 기여 절차를 따르며, Vite에 추가되는 기능은 Cloudflare 전용이 아니라 Vite가 동작하는 모든 곳에서 작동해야 함
  • Cloudflare는 Vite를 Cloudflare 쪽으로 옮기기보다 Cloudflare 애플리케이션 도구를 Vite 위에 올리는 방향을 택함
  • 새 통합 CLI cf의 기술 프리뷰가 나왔고, 애플리케이션용 CLI 경험의 기반은 Vite가 될 예정임
  • cf devvite dev의 상위 집합으로 같은 속도, 같은 핫 모듈 교체, 같은 플러그인 모델에 Cloudflare 런타임과 바인딩을 더하는 방향임
  • cf build는 어댑터 절차 없이 Vite 프로젝트를 네이티브로 이해하고, cf deploy는 Vite 앱을 Cloudflare에 배포하기 쉽게 만드는 목표임

다음 단계

  • 단기적으로 Vite, Vitest, Rolldown, Oxc, Vite+는 계속 출시되고 VoidZero 팀은 기여와 리드를 이어감
  • Cloudflare Vite plugin은 계속 개선되고, 서버 코드를 올바른 런타임에서 로컬로 실행하는 Environment API 흐름은 Cloudflare가 아닌 런타임까지 포함해 계속 좋아지는 방향임
  • 장기적으로 Cloudflare CLI는 Vite 위에 직접 구축된 경험으로 이동하고, Vite는 풀스택 앱과 에이전트를 위한 제공자 중립 프리미티브를 갖게 될 예정임
  • 시간이 지나면 Void platform을 오픈소스로 공개해 다른 사람들이 Vite와 Cloudflare 위에서 자체 플랫폼을 만들 수 있게 하려는 계획임
  • 지금 Cloudflare에서 Vite를 시도하려면 npm create vite@latestnpx wrangler deploy를 실행하면 됨

댓글과 토론

인프라와 개발이 만났다!

Hacker News 의견들
  • 2014년 2월 3일 글 “Vue.js: JavaScript MVVM made simple (vuejs.org)”가 있었음: https://news.ycombinator.com/item?id=7169288
    Evan You는 미술사와 스튜디오 아트 전공이었고, Parsons School에서 작업을 빠르게 보여주기 위해 JavaScript를 배워야 했던 듯함
    Google Creative Lab 5에 있을 때 AngularJS 경험을 개선하고 싶다는 영감을 받아 Vue를 만들었고, 이후는 잘 알려진 역사임
    이번 Cloudflare 인수가 최종적으로 무엇을 뜻할지는 모르겠지만, Evan과 팀이 수년간 만들어 온 아름다운 프레임워크와 도구들에는 정말 감사함

    • 여기서 배울 점은 사람들이 프레임워크를 만들기 전에 먼저 우아함과 미감을 알아보는 훈련을 해야 한다는 것일지도 모름
    • Evan은 정말 훌륭한 일을 해왔음. Vue를 많이 쓰지는 않았지만 회사 스택이 아니라서 그렇고, Vite의 열렬한 팬이며 React 파이프라인에도 큰 도움이 됐음
      최근 Cloudflare Pages와 Workers도 만져보기 시작했는데, 기본 앱을 띄우는 과정이 이미 매우 고통이 적어서 이번 협업이 내 삶을 더 편하게 만들 것 같음
    • Svelte의 Rich Harris도 비슷함. 기술 배경은 없었지만, 저널리즘 업무에서 데이터 시각화를 구현하려고 JavaScript를 배웠음
    • 이 내용을 다루는 정말 좋은 대화가 있음: https://corecursive.com/vue-with-evan-you/
      들어볼 가치가 충분함
  • 이런 프로젝트들의 사업 모델이 결국 1. 인기 있는 개발자 도구를 만들고 2. 자금을 받고 3. 뛰어난 인재를 고용한 뒤 4. 초기 투자금을 정당화할 인재 인수(acqui-hire) 를 기도하는 건가 싶음
    초기 투자자들이 이런 인재 인수 경로를 어떻게 느끼는지도 궁금함. 동의할 만큼 꽤 좋은 금액이었거나, 매출로 가는 길이 거의 불가능하거나 존재하지 않는다고 봤을 것 같음

    • 많은 경우 인수하는 회사와 인수되는 회사가 투자자나 이사회 구성원을 공유함
      중립적으로 말하면, 벤처캐피털 파트너들이 같은 포트폴리오의 일부처럼 다루는 셈이라 한 팀이 독립적으로 잘 안 풀리면 목표나 시장이 어느 정도 비슷한 다른 곳에 합쳐질 수 있음
      더 직설적으로 말하면, 결국 누구를 아느냐와 모두가 성공적인 엑시트 이야기를 할 수 있게 만드는 일이기도 함
    • 투자자들이 합리적인 금액에 동의하지 않으면, 인수하려는 쪽은 그냥 팀 전체를 두둑한 입사 보너스로 채용할 수 있고 투자자들은 껍데기 회사만 남게 됨
      이 경우 핵심 제품은 MIT 라이선스라서, 팀이 금요일에 그만두고 월요일에 새 조직 아래에서 정확히 이어서 일할 수 있음
    • 인수는 보통 세 가지 이유로 일어남: 제품, 인재, 사업/성장
      인공지능 시대에는 이 분야 일부 인수가 인재와 제품을 위한 것으로 보임
      이번도 그런 경우처럼 보임. Vite는 훌륭한 제품이고, 그들은 훌륭한 팀을 만들 수 있었음
      기업들이 인재에 얼마나 큰 프리미엄을 지불할 수 있는지 알면 놀랄 수 있음
    • 투자자들은 좋은 투자 수익률을 얻고 있을 테니 아마 꽤 만족할 것 같음
    • 라이브러리, 프레임워크, 엔진, 런타임 사용자 입장에서는 지난 10년쯤 벤처캐피털 투자가 닿은 것은 거의 피했음
      결국 도구가 열화되거나 너무 비싸지거나 아예 사라질 수 있고, 새 소유자가 나쁜 결정을 해서 리팩터링하고 옮겨야 하는 일에 지쳤음
  • 이런 인수 발표는 늘 불안하게 만듦. “아무것도 바뀌지 않고 로드맵도 그대로다”라는 식의 말이 많지만, 기본적인 계산만 해도 사업은 그렇게 돌아가지 않음을 알 수 있음
    별개로 직장에서 Cloudflare를 써야 하는데, 내가 있는 중간 규모 조직에는 꽤 끔찍한 경험임. “적대적인 사용자 경험”이라는 불평이 흔함
    오픈소스 프로젝트를 인수하기보다 Vercel과 사용자/개발자 경험에서 경쟁하는 데 돈을 쓰는 게 낫지 않나 싶음

    • 그런 경험을 했다니 유감임. 나는 약 1년 전 인수를 통해 합류했고, 우리가 집중해 온 핵심 중 하나가 대시보드와 전반적인 개발자 경험
      안타깝게도 “적대적인 사용자 경험”이라는 표현을 여러 번 들었고, 개선하려고 열심히 작업 중임. 괜찮다면 어떤 문제를 겪고 있는지 더 듣고 싶음
    • 그게 바로 지금 하고 있는 일임
    • Vite는 훌륭하고 Vite 8은 엄청난 속도 향상이어서 그들에게 확실히 좋은 성과임
      독립으로 남는 것도 항상 좋지만, 동시에 더 나쁜 “새 집”도 있을 수 있으니 잘 풀리길 바라며 지켜보자는 쪽임
    • 최근 Cloudflare의 신뢰성도 크게 떨어졌음. 사고가 너무 많았고, 나는 이미 CF에 대한 신뢰를 오래전에 잃었음
  • Vite를 좋아함. 내 프로젝트에 존재한다는 걸 잊지만 않는다면 말임. 사람을 멍청하게 느끼게 만들던 것들을 거의 무설정으로 만들어 줬음
    하지만 이 소식은 기쁘지 않음
    올해 초 Astro 관련 소식도 마찬가지였음
    프로젝트를 만든 사람들에게는 분명 좋은 일일 테지만, 이런 인수에는 나를 불안하게 만드는 무언가가 있음

    • 나도 비슷하게 복잡한 감정임. 관련된 개인들에게는 기쁘고, 그들은 충분히 받을 자격이 있을 것 같음
      다만 다음에 올 일이 조금 슬픔. 우리 둘 다 이런 일이 너무 많이 반복되는 걸 봤고, 항상 반복되는 “아무것도 바뀌지 않고 모든 게 영원히 좋을 것”이라는 말을 넘겨 읽는 법을 배웠음
    • 2016년부터 Webpack을 써왔는데, Vite는 놀라웠음
      몇 년 전 꽤 복잡한 프로젝트, Rust WebAssembly 바인딩이 있는 모노레포를 Webpack에서 Vite로 옮겼고, 개발 빌드와 실제 빌드가 분 단위에서 초 단위로 줄었음. 그 뒤로 Webpack은 다시 쳐다보지 않았음
      이 소식에 어떤 감정을 가져야 할지 모르겠음. 특히 Vite 7에서 Vite 8로 이전할 때 문서화되지 않은 방식으로 프로젝트가 깨졌지만, 조심스럽게 낙관하는 중임
      그래도 Evan에게는 축하함
    • Vite가 공개된 순간부터 좋아했음. 예전에는 Snowpack도 써봤음
      재미있는 이야기를 덧붙이면 Fred “fks”가 Snowpack이 traction을 얻지 못한 뒤 Astro를 만들었음
      “그 존재를 그냥 잊을 수 있다”는 사실이 내게는 큰 승리임. Webpack은 Grunt/Gulp보다 나았을 수는 있지만, 엄청나게 복잡했음
      나도 조금 불안함. 항상 그런 건 아니지만, 기업에 흡수되는 곳은 멋진 프로젝트가 죽으러 가는 곳이 되곤 함
      다행히 오픈소스에는 Terraform→OpenTofu, Redis→Valkey 같은 이야기가 충분히 있음
    • 이번은 특히 흥미로운데, Vercel 제품인 Nuxt가 이제 경쟁사의 도구인 Vite에 의존하게 됐기 때문임
    • 어떤 대안적 결말을 더 선호하는지 궁금함. 개인적으로는 자금 부족으로 개발자가 번아웃되거나, 다른 회사들의 착취적 관행에 시달리는 것보다 인수가 낫다고 봄
  • Cloudflare 입장에서 이게 가치 있는 이유는 인공지능이 Cloudflare를 더 많이 추천하게 만들 수 있기 때문임
    에이전트들은 이미 Vite를 찾고 있음. Vite를 찾으면 그다음 기본값으로 Cloudflare를 택하는 게 매우 자연스러움. Next.js에 대해 사용자를 Vercel 설정으로 안내하는 것과 비슷함
    이건 2천만 달러짜리 인수일 수 있지만, 에이전트판 검색엔진 최적화 증가로 수십억 달러를 만들어낼 수도 있음

    • 추가 매출 수십억 달러를 만들어내지는 않을 것임. 그건 큰 과장임
      다만 바탕에 깔린 논지에는 동의함. 대규모 언어 모델 사용이 늘어나면서 웹 애플리케이션 호스팅 시장 점유율을 얻는 데 도움이 될 가능성은 큼
    • Lovable도 방금 기본 프로젝트 프레임워크를 TanStack으로 바꿨고, TanStack은 내부적으로 Vite를 씀
      Lovable은 Cloudflare를 사용하니 아마 Cloudflare Workers로 배포하고 있을 것임
  • 순수하게 빌드 단계 관점만 보면, Vite나 Bun 같은 도구들은 의미 있게 달성할 수 있는 것은 이미 다 달성한 듯함
    내가 이런 도구의 창작자였다면 나도 다음으로 넘어갔을 것임. 행운을 빌고, 그동안 고마웠음

    • 그중 어느 하나라도, 정말 단 하나라도, 1985년처럼 명령줄로 프로젝트를 빌드하지 않아도 되는 제대로 된 사용자 인터페이스를 만들 수 있었음
      또는 불필요한 “컴포넌트” 라이브러리 몇 개 중 하나를 쓸 거라고 가정하거나 컴포넌트를 아예 안 쓸 거라고 가정하는 대신, 사용자 정의 HTML 요소 패키징에 투자할 수도 있었음
      이런 도구들이 갈 수 있는 곳은 많지만, 그쪽으로 가려는 의지가 없음. 이미 “충분히 좋다”는 무언가가 있어서 “더 나을 수 있는 것”을 찾지도 않기 때문일 가능성이 큼
      여기에 개발 조직의 관리 계층이 개발자가 더는 코드베이스를 만지면 안 된다고 보고, 실제 작업은 대규모 언어 모델이 하게 하려는 흐름도 더해짐. 그래서 “에이전트”를 만족시키려고 온갖 수상한 것들을 만들고 있음
      이게 반드시 개발자를 더 어렵게 만들지는 않지만, 추세는 그래 보임. 대규모 언어 모델에게 고통스럽고 난해한, 문자 하나까지 정확한 문자열 연결을 따르게 하는 것이 더러운 인간처럼 무언가를 탐색하게 하는 것보다 훨씬 쉽기 때문임
      실제 결과는 인간에게 덜 친절하고 로봇에게 더 친절한 도구가 되는 것임
      그래서 동의하지 않음. 인간을 위해 의미 있게 달성할 수 있는 것들이 아직 있고, 그들은 그런 일에 깊이 관심이 없어 보임
    • 이 관점은 도구를 너무 좁게 봄
      Vite, Bun, uv가 단지 “빌드를 더 빠르게” 하는 프로젝트라면 수확 체감이 있을 수 있음. 하지만 Cloudflare, Anthropic, OpenAI의 인수는 이 계층이 덜 중요해지는 게 아니라 더 전략적이 되고 있음을 보여줌
      이 도구들은 소프트웨어 공급망 위에 있음. 의존성 해석, 프로젝트 구조, 테스트, 빌드, 런타임, 배포 경로, 그리고 점점 더 인공지능 에이전트 실행 루프까지 걸쳐 있음
      소프트웨어를 만드는 기본 경로를 정의하고, 인공지능이 생성한 코드가 실제 의존성, 빌드, 테스트, 배포 제약과 맞붙어 검증되는 위치이기도 함
      그래서 의미 있게 할 수 있는 일을 모두 끝냈다고 보지 않음. 가치는 순수 빌드 속도에서 소프트웨어가 조립되는 워크플로 계층의 통제권으로 이동하고 있음
  • “Vite, Vitest, Rolldown, Oxc, Vite+는 오픈소스이고, 특정 벤더에 종속되지 않으며, 커뮤니티 주도로 남는다. 이 점은 바뀌지 않는다”라고 가장 중요한 점을 먼저 명확히 한 것은 고마움
    다만 과거에 너무 많이 데였기 때문에 이제 인수에는 매우 회의적임. 시간이 지나야 이 말이 지켜지는지 알 수 있겠지만, 적어도 공식 기록으로는 명확히 남았음
    이게 인수 계약이나 문서 어딘가에 들어가 있는지도 알고 싶음

    • Cloudflare가 그런 조항을 계약서나 인수 문서에 넣도록 허용했다면 제정신이 아닐 것임
      그래서 그 약속은 “당분간은 오픈소스이고 어쩌고저쩌고로 남는다” 정도로 받아들이겠음
  • Vite를 좋아하지만, 돈을 어떻게 벌 수 있을지 명확하지 않아서 항상 안쓰럽게 느껴졌음. VoidZero 전체도 좀 무리수처럼 느껴졌음
    이것이 늘 내가 멋진 도구를 만드는 일을 망설이게 한 이유 중 하나임. 어떻게든 생계를 유지해야 하니까
    그래서 만든 팀이 마땅히 받을 보상과 지속 가능성을 얻을 수 있게 된 것은 기쁨

    • 이런 매우 인기 있는 자유 오픈소스 제품/프레임워크 상당수는 돈 벌기에 가장 나쁜 방식에 가까움
      도구와 가치에 돈을 내고 싶어 하지 않는 층에게 팔아야 함. 결국 약간의 인공지능 에이전트 세션으로 수정해 기능 동등성을 맞출 수 있는 자기 자신의 무료 버전과 경쟁하게 됨
  • 기록 차원에서 보면 이렇음
    NPM → Microsoft
    Vite → Cloudflare
    Bun → Anthropic
    Turbopack → Vercel
    Remix → Shopify, 이건 거의 기억도 안 남
    Biome, 예전 Rome → 독립이지만 Depot의 지원을 많이 받음
    SWC → 독립
    esBuild → 독립
    나는 ByteDance가 지원하는 RsBuild/RsPack을 씀

    • Nuxt와 Nitro → Vercel
      Svelte → Vercel
      Astro → Cloudflare
    • esbuild는 Figma 공동창업자 Evan Wallace의 부업 프로젝트라서, 완전한 독립이라고 하기는 애매함
    • Python 쪽까지 더하면 uv → OpenAI도 있음
  • 꿈은 항상 Cloudflare Workers용 일급 프레임워크였음
    가장 초기에는, 말 그대로 블로그 글과 GitHub 저장소를 보면, 소소한 데모만 만들었음
    그 뒤 오랫동안 서버 사이드 렌더링 가능한 기능으로 “풀스택”이 됐다고 주장했지만, 당시에는 너무 형편없었고 Workers 플랫폼 도구와도 잘 통합되지 않았음
    이건 개발자들이 원하는 의미의 풀스택이 아니었던 Pages 메시지와도 이상하게 섞여 있었음
    개발 환경에서 이걸 작동시키기도 매우 어려웠고, 당시 wrangler dev는 매우 제한적이었음. 참고로 지금의 wrangler는 아주 좋아졌음
    Vercel이 이 영역에서 Cloudflare의 점심을 먹어치운 셈임. 부끄러운 일은 아니고, 그냥 개발자 대상으로 제대로 맞추지 못했음
    그러다 아주 조용히 어댑터가 등장했고 사실상 판을 바꿨음. 코드베이스가 마침내 Workers로 이식 가능하게 느껴졌고, 거의 완전한 CF 플랫폼 지원도 따라왔음
    이제 우리는 인공지능 시대에 살고 있고, Cloudflare는 Astro를 샀고, WordPress 복제품을 내려고 했고, Next.js를 vibe coding으로 만든 듯함
    이 모든 흐름은 크고 오래 기다려 온 일임. Workers에 더 많은 개선이 들어올 가능성이 보이는 건 정말 신선함
    게다가 Evan은 사람들이 사랑하는 도구를 꾸준히 전달해 온 전설적인 인물이라 더 좋음