web-development

11 개의 포스트

두 매개변수 구조 (새 탭에서 열림)

피그마는 디자인과 실제 구현물 사이의 해상도 차이를 극복하기 위해 디자인 캔버스 내에 실제 코드를 결합하는 '코드 레이어(Code layers)' 기술을 도입했습니다. 이를 통해 사용자는 피그마에서 디자인한 결과물을 별도의 변환 과정 없이 실제 웹사이트로 즉시 게시할 수 있는 'Figma Sites'를 구축할 수 있게 되었습니다. 이번 변화는 단순히 디자인을 코드로 내보내는 수준을 넘어, 디자인 환경 자체가 웹 엔진의 원리와 동일하게 작동하도록 캔버스의 근본적인 구조를 재설계했다는 점에 의의가 있습니다. ### 디자인 캔버스와 웹 브라우저의 기술적 통합 * 기존 피그마 캔버스는 C++로 작성된 고유의 렌더링 엔진을 통해 그래픽을 처리했지만, Figma Sites를 위해 이를 웹 표준인 HTML/CSS와 정렬시켰습니다. * 피그마의 오토 레이아웃(Auto Layout) 개념을 CSS Flexbox 및 Grid와 직접 매핑하여, 디자이너가 캔버스에서 작업하는 방식이 브라우저의 렌더링 방식과 1:1로 대응되도록 구현했습니다. * 웹 어셈블리(WASM)를 기반으로 작동하는 피그마 엔진 내부에 리액트(React) 기반의 렌더링 계층을 통합하여, 디자인 요소가 실제 코드 노드로 기능할 수 있게 했습니다. ### 코드 레이어의 핵심 메커니즘 * '코드 레이어'는 캔버스 위에서는 일반 디자인 객체처럼 보이지만, 내부적으로는 실제 HTML 요소와 그에 따른 스타일 속성을 보유합니다. * 디자인 속성(색상, 간격, 폰트 등)을 단순한 메타데이터가 아닌 '라이브 코드' 상태로 유지함으로써, 게시 버튼을 누르는 즉시 실제 웹 환경에서 동일하게 재현됩니다. * 정적 자산을 넘어서 비디오, 입력 폼(Forms), 인터랙티브 요소와 같은 동적 컴포넌트를 디자인 캔버스에서 직접 제어할 수 있는 구조를 갖추었습니다. ### AI를 활용한 시맨틱 구조화 및 최적화 * 전통적인 디자인 파일은 계층 구조가 복잡하거나 논리적이지 않은 경우가 많으나, 피그마는 AI를 활용해 이를 깨끗하고 의미 있는(Semantic) 코드 구조로 변환합니다. * AI 모델은 디자이너가 구성한 레이어의 시각적 배치를 분석하여 적절한 HTML 태그(header, nav, section 등)를 추천하고, 반응형 레이아웃을 위한 미디어 쿼리 설정을 자동화합니다. * 비정형적인 디자인 데이터를 웹 표준에 맞는 정제된 코드로 변환하는 과정에서 발생할 수 있는 오류를 AI가 사전에 검사하고 최적화하여 성능을 높였습니다. ### 실무적 가치와 전망 피그마의 이러한 변화는 디자인 '핸드오프(Hand-off)'라는 개념 자체를 사라지게 만들 수 있습니다. 디자이너가 캔버스에서 내린 결정이 곧 최종 코드가 되는 환경은 개발 주기를 획기적으로 단축하며, 디자인의 의도가 실제 제품에서 훼손되지 않도록 보장합니다. 이제 피그마는 단순한 드로잉 도구가 아니라, 코드를 시각적으로 조작하는 '비주얼 개발 환경'으로 진화하고 있습니다.

코드 레이어로 사이트를 인터랙티브 (새 탭에서 열림)

피그마(Figma)는 디자인 환경 내에서 커스텀 리액트(React) 코드를 활용해 역동적인 상호작용을 구현할 수 있는 ‘코드 레이어(Code Layers)’ 기능을 출시했습니다. 이 기능을 통해 디자이너는 복잡한 개발 지식 없이도 AI 채팅이나 직접적인 코드 수정을 통해 정적인 디자인을 실제 작동하는 웹 요소로 변환하고 실험할 수 있습니다. 결과적으로 디자인과 실제 제품 구현 사이의 장벽을 허물어, 별도의 개발 전달 과정 없이도 고도화된 애니메이션이나 기능적 컴포넌트를 피그마 사이츠(Figma Sites)에서 즉시 빌드할 수 있게 되었습니다. **코드 레이어를 활용한 인터랙션 구현** * 코드 레이어는 리액트 코드를 기반으로 구동되는 상호작용 요소로, 피그마 사이츠 내에서 기존 컴포넌트를 코드로 변환하거나 새롭게 생성할 수 있습니다. * 피그마 메이크(Figma Make)의 AI 기술을 활용하여 "꽃 이미지를 무한히 복제해서 드래그할 수 있게 해줘"와 같은 자연어 프롬프트만으로 복잡한 로직을 생성합니다. * 캔버스 위에서 바로 코드 레이어를 복제(Cmd + D)하여 여러 버전의 상호작용을 나란히 비교하고 실험하는 유연한 워크플로우를 제공합니다. **기존 디자인의 동적 변환 및 제작 방식** * 작업 중인 요소에 애니메이션(회전, 바운스 등)을 추가하거나, 마우스 호버 시 색상이 변하는 리플 효과 등 정적 이미지에 생명력을 불어넣을 수 있습니다. * 대출 계산기, 가격 추정기, 실시간 통계 카운터와 같이 단순한 프로토타입을 넘어 실제 로직이 작동하는 유틸리티 컴포넌트를 제작할 수 있습니다. * 단축키(E)를 사용하여 캔버스에 즉석에서 코드 레이어를 그려 넣고, AI에게 이모지 파티클 생성이나 이미지 갤러리 구축 등을 요청하여 빠르게 아이디어를 시각화합니다. **개발자 수준의 확장성과 재사용성** * **커스텀 속성 편집:** AI가 코드 기반의 속성(문자열, 숫자 등)을 자동으로 생성하며, 사용자는 코드 수정 없이도 패널에서 직접 값을 조정해 레이어의 동작을 변경할 수 있습니다. * **컴포넌트화:** 일반적인 피그마 프레임처럼 코드 레이어도 재사용 가능한 컴포넌트로 전환하여 여러 페이지나 팀 프로젝트에 공유할 수 있습니다. * **npm 패키지 지원:** `motion`이나 `@react-three/fiber`와 같은 외부 노드 패키지 매니저(npm) 라이브러리를 임포트하여 고난도의 3D 렌더링이나 정교한 모션 그래픽을 구현할 수 있습니다. 웹 디자인의 한계를 넓히고자 하는 디자이너라면 피그마 사이츠에서 제공되는 코드 레이어를 적극적으로 활용해 보시기 바랍니다. 특히 AI 프롬프트를 통해 기초 코드를 생성한 뒤, npm 패키지를 결합해 시중의 템플릿으로는 불가능했던 독창적인 사용자 경험을 직접 구축해 보는 것을 추천합니다.

Payload의 Figma 팀 합류를 (새 탭에서 열림)

피그마(Figma)는 오픈소스 헤드리스 CMS이자 애플리케이션 프레임워크인 페이로드(Payload) 팀을 인수하여 디자인과 개발의 경계를 허무는 행보를 가속화합니다. 이번 인수는 최근 발표된 '피그마 사이트(Figma Sites)'와 시너지를 내어 개발자들에게 더욱 강력하고 유연한 도구를 제공하는 데 목적이 있습니다. 피그마는 이를 통해 디자인뿐만 아니라 실제 제품의 빌드와 배포까지 생태계 내에서 직접 수행할 수 있는 중앙 허브로 거듭날 계획입니다. **Figma Sites와 Payload의 기술적 시너지** - Config 2025에서 발표된 '피그마 사이트'와 결합하여, 디자인에서 실제 프로덕션 웹사이트 제작까지의 과정을 비약적으로 단축합니다. - Payload가 제공하는 높은 커스터마이징 자유도와 확장성을 활용해, 개발자들이 기존의 제한적인 CMS 환경에서 벗어나 더 나은 DX(개발자 경험)를 누릴 수 있도록 지원합니다. - 포춘 100대 기업들이 이미 도입하여 신뢰성을 검증받은 Payload의 기술력을 피그마 플랫폼에 이식함으로써 엔터프라이즈급 개발 환경을 구축합니다. **오픈소스 생태계 유지와 커뮤니티 협업** - Payload는 인수 후에도 오픈소스 프로젝트로 유지되며, 기존 사용자들은 현재와 동일하게 서비스를 이용할 수 있도록 독립성을 보장합니다. - 피그마의 협업 중심 철학과 Payload의 오픈소스 커뮤니티 지향점이 결합되어, 사용자 피드백을 기반으로 한 제품 로드맵을 투명하게 공유할 예정입니다. - 피그마는 오픈소스 프로젝트에 지속적으로 투자하여 개발자들이 지식을 공유하고 기술을 발전시킬 수 있는 생태계를 확장하는 데 집중할 계획입니다. **디자인-개발 통합을 통한 제품 제작 가속화** - AI의 발전으로 코드와 콘텐츠 생성이 쉬워진 환경에 발맞추어, 배포 채널을 직접 제어하고 사용자 경험을 세밀하게 튜닝할 수 있는 제어권을 강화합니다. - 단순히 디자인 결과물을 공유하는 단계를 넘어, 피그마 생태계 내에서 직접 디지털 제품을 구축하고 배포할 수 있는 환경을 조성합니다. - 디자인과 개발 사이에 전통적으로 존재해 왔던 간극을 좁힘으로써 제품 제작 팀의 전체적인 생산성을 높이는 것을 최종 목표로 삼고 있습니다. 디자이너와 개발자가 긴밀하게 협업해야 하는 조직이라면 향후 피그마 사이트와 페이로드의 통합 기능을 주목할 필요가 있습니다. 디자인 시스템을 기반으로 실제 웹 서비스를 신속하게 배포하고 관리하려는 팀에게 이번 인수는 매우 강력한 생산성 도구의 탄생을 예고합니다.

Config 2025: (새 탭에서 열림)

피그마는 Config 2025를 통해 단순한 디자인 도구를 넘어 아이디어 구상부터 실제 제품 구현까지 전 과정을 아우르는 통합 플랫폼으로의 확장을 선언했습니다. AI 기술을 전면에 배치한 4개의 신규 제품과 강력해진 디자인 기능을 도입하여, 디자인과 개발 사이의 경계를 허물고 팀 전체의 생산성을 극대화하는 데 집중하고 있습니다. 이는 디자인이 비즈니스 차별화의 핵심이 되는 시대에 발맞추어, 모든 팀원이 제품 개발 프로세스에 더욱 깊이 기여할 수 있는 환경을 구축하려는 전략적 움직임으로 풀이됩니다. **AI 기반의 앱 및 웹 제작 솔루션** * **Figma Make**: 텍스트 프롬프트를 코드로 변환하거나 기존 디자인을 실제 작동하는 프로토타입 및 앱으로 제작해 주는 AI 도구로, 숙련도와 상관없이 아이디어를 빠르게 시각화하고 반복 수정할 수 있도록 돕습니다. * **Figma Sites**: 디자이너가 AI와 코드의 도움을 받아 역동적인 상호작용과 맞춤 설정이 가능한 웹사이트를 직접 구축하고 즉시 배포할 수 있는 환경을 제공합니다. **디자인 표현력과 브랜드 일관성 강화** * **Figma Draw**: 더욱 정교해진 벡터 편집 및 일러스트레이션 도구 세트를 통해 디자이너가 높은 수준의 공예적 완성도를 가진 시각 결과물을 만들 수 있도록 지원합니다. * **Figma Buzz**: 마케팅 및 브랜드 팀이 브랜드 가이드라인을 준수하면서도 AI를 활용해 대규모로 시각적 자산을 생성하고 관리할 수 있도록 설계된 전용 제품입니다. **개발 협업 및 AI 워크플로우 고도화** * **Grid**: 반응형 레이아웃 설정을 돕는 새로운 옵션으로, Dev Mode에서 즉시 활용 가능한 CSS 코드를 생성하여 디자인에서 개발로 이어지는 핸드오프 과정을 획기적으로 개선합니다. * **지능형 AI 기능**: 이미지 생성 및 편집 기능이 고도화되었으며, 작업 맥락을 이해해 다음 단계를 제안하는 자동 제안 기능과 FigJam 내 AI 보조 도구가 추가되어 워크플로우 속도를 높였습니다. **사용자 저변 확대와 글로벌 시장 최적화** * **사용자 구성의 변화**: 현재 피그마 사용자의 약 2/3가 비디자인 직군이며 그중 30%가 개발자인 점을 반영하여, 직군 간의 협업 효율을 높이는 도구(Dev Mode, Slides 등)를 지속적으로 강화하고 있습니다. * **글로벌 현지화**: 전체 사용자의 85%가 미국 외 지역에 거주하는 상황에 맞춰 브라질 시장을 위한 포르투갈어 전면 지원 및 UI 현지화를 진행하며 글로벌 확장세를 이어가고 있습니다. 이제 피그마는 디자이너만을 위한 도구를 넘어, 기획자, 개발자, 마케터가 하나의 캔버스에서 제품을 완성하는 '제품 개발 운영 체제'로 진화하고 있습니다. 팀 내 협업 효율을 높이고 AI를 통해 제작 단계를 단축하고자 한다면, 순차적으로 출시될 이번 신규 기능들을 워크플로우에 적극적으로 도입해 볼 것을 권장합니다.

FigPals를 위한 영원한 (새 탭에서 열림)

Figma는 디자이너의 고독한 작업 환경에 즐거움을 더하기 위해 커서를 따라다니는 디지털 컴패니언인 'FigPals'를 기간 한정으로 도입했습니다. 90년대 다마고치와 네오펫에서 영감을 받은 이 프로젝트는 사내 해커톤인 '메이커 위크'를 통해 탄생했으며, 단순한 장식 요소를 넘어 사용자와 정서적 교감을 나누는 인터랙티브 요소로 기능했습니다. 짧은 운영 기간에도 불구하고 150만 개 이상의 캐릭터가 생성되는 등 폭발적인 반응을 얻었으며, Figma는 커뮤니티의 요청에 부응해 이를 영구적으로 간직할 수 있는 스티커 팩을 출시하며 프로젝트를 마무리했습니다. ### FigPals의 탄생 배경과 노스탤지어 * 디자이너들이 Figma 파일 내에서 느끼는 반복적이고 고독한 작업 경험을 개선하기 위해 기획된 커서 추적형 디지털 동반자입니다. * 70년대의 '펫 락(Pet Rock)'과 90년대의 '다마고치' 같은 복고풍 장난감 문화에서 영감을 받아, 업무 도구에 장난기 가득한 요소를 결합했습니다. * 9,000가지 이상의 조합(색상, 형태, 액세서리 등)을 제공하여 사용자가 자신만의 개성 있는 캐릭터를 만들고 이름을 붙일 수 있도록 설계했습니다. ### '메이커 위크'를 통한 창의적 실험과 구현 * Figma의 연례 사내 행사인 '메이커 위크(Maker Week)'에서 인턴의 아이디어로 시작된 'Figmagotchi'가 프로젝트의 모태가 되었습니다. * 엔지니어링, 제품, 디자인 팀이 협업하여 캐릭터가 레이어나 노드를 '먹이'로 섭취하거나, 컴포넌트를 해제할 때 놀라는 반응을 보이는 등 다양한 이스터 에그와 상호작용 기능을 구현했습니다. * 업무용 소프트웨어에서도 '놀이(Play)'라는 핵심 가치를 실현할 수 있음을 증명하며, 개발 과정에서 엔지니어들조차 캐릭터에 정서적 애착을 느낄 만큼 몰입도 높은 경험을 구축했습니다. ### 커뮤니티의 열광적인 반응과 데이터 * 출시 일주일 만에 150만 개 이상의 FigPal이 생성되었으며, 사용자들이 캐릭터에게 먹이를 준 횟수만 25만 회를 상회했습니다. * 사용자들은 자신의 실제 반려동물을 모델로 FigPal을 제작하거나, 서비스 종료를 앞두고 영구 도입을 촉구하는 서명 운동(2,000명 이상 참여)을 벌이는 등 강력한 유대감을 보여주었습니다. * 단순한 픽셀의 조합을 넘어 사용자의 업무 공간에 활력을 불어넣는 정서적 매개체로서의 가치를 입증했습니다. 현재 FigPals의 인터랙티브 기능은 종료되었지만, Figma 커뮤니티에서 제공하는 **'FigPal 스티커 팩'**을 활용하면 작업 파일에 이들을 영구적으로 배치하고 추억할 수 있습니다. 또한, 다가오는 Figma의 컨퍼런스 'Config'에서 FigPal과 관련된 추가적인 소식이 있을 예정이므로 관련 업데이트를 주목해 보시기 바랍니다.

새로운 경쟁 해자는 감정이다 (새 탭에서 열림)

제공해주신 제목과 카테고리를 바탕으로, 해당 주제(PostHog 등의 기술 블로그에서 다뤄지는 'Making space for a handmade web')의 핵심 내용을 요약해 드립니다. 현대 웹은 거대 프레임워크와 SEO 중심의 정형화된 디자인으로 인해 개성을 잃고 지나치게 비대해졌습니다. 이 글은 기술적 효율성과 창의성을 결합한 '핸드메이드 웹(Handmade Web)'으로의 회귀를 제안하며, 개발자가 웹의 본질적인 구성 요소인 HTML과 CSS에 직접 관여함으로써 더 빠르고 인간적인 인터넷 환경을 구축할 수 있음을 강조합니다. 결국 성능 최적화와 독창적인 사용자 경험은 도구의 편리함에 의존하기보다 개발자의 의도적인 설계에서 비롯된다는 것이 핵심 결론입니다. **현대 웹의 획일화와 비대함** * 수많은 웹사이트가 부트스트랩(Bootstrap)이나 테일윈드(Tailwind) 같은 프레임워크의 기본 설정을 그대로 사용하면서 디자인의 다양성이 사라지고 '어디서 본 듯한' UI가 양산되고 있습니다. * 자바스크립트 라이브러리에 대한 과도한 의존은 불필요한 번들 크기를 키워 초기 로딩 속도를 저하시키고 저사양 기기에서의 사용자 경험을 해칩니다. * 검색 엔진 최적화(SEO)와 전환율에만 매몰된 설계는 웹을 정보의 장이 아닌, 알고리즘을 만족시키기 위한 데이터의 나열로 변질시키고 있습니다. **핸드메이드 웹의 철학적 가치** * 핸드메이드 웹은 단순히 '옛날 방식'으로 돌아가는 것이 아니라, 대규모 자동화와 표준화 사이에서 제작자의 의도와 '인간적인 흔적'을 남기는 것을 의미합니다. * 확장성(Scalability)만을 최우선으로 두는 대신, 특정 커뮤니티나 목적에 최적화된 '작은 웹'의 가치를 지향합니다. * 디지털 환경에서도 장인 정신을 발휘하여, 코드 한 줄 한 줄이 성능과 심미성에 미치는 영향을 깊이 고민하는 태도를 강조합니다. **브라우저 기본 기능을 활용한 기술적 구현** * **현대적 CSS 활용:** 자바스크립트로 구현하던 복잡한 레이아웃과 애니메이션을 CSS Grid, Flexbox, CSS 변수(Custom Properties) 및 Container Queries를 통해 대체하여 런타임 오버헤드를 줄입니다. * **경량화된 그래픽:** 무거운 이미지 파일 대신 인라인 SVG나 CSS 그라디언트를 활용하여 해상도에 독립적이면서도 극도로 가벼운 시각 요소들을 구축합니다. * **점진적 향상 기법(Progressive Enhancement):** 자바스크립트가 로드되지 않은 상태에서도 핵심 콘텐츠를 확인할 수 있도록 설계하여 웹의 접근성과 견고함을 높입니다. **창의적 실험을 위한 공간 확보** * 시스템 디자인의 규격에서 벗어나 실험적인 레이아웃이나 인터랙션을 시도함으로써 사용자에게 즐거움과 놀라움을 주는 인터페이스를 제공해야 합니다. * 코드의 효율성만큼이나 '재미(Fun)'와 '불완전함의 미학'을 수용하여, 기계가 만든 듯한 매끄러움 대신 사람이 만든 듯한 질감을 웹에 부여합니다. 효율성이라는 명목하에 가두어 두었던 창의성을 다시 깨워야 합니다. 모든 프로젝트를 프레임워크로 시작하기보다, 순수 HTML과 CSS만으로 어디까지 구현할 수 있는지 실험해보는 것부터 시작하시길 권장합니다. 기술적 제약 안에서 해결책을 찾는 과정이 오히려 더 독창적이고 성능이 뛰어난 결과물을 만들어낼 것입니다.

마이크로소프트에서 접근성을 (새 탭에서 열림)

마이크로소프트는 '세계 접근성 인식의 날(GAAD)'을 맞아 모든 개발자가 장애 여부와 상관없이 누구나 기술을 누릴 수 있도록 돕는 접근성 도구와 방법론을 제안합니다. 개발자는 복잡한 전문 지식 없이도 'Accessibility Insights'와 'Visual Studio'의 통합 도구를 활용해 개발 수명 주기 내에서 접근성 테스트를 손쉽게 수행할 수 있습니다. 궁극적으로 이러한 도구들은 단순히 규정을 준수하는 것을 넘어, 모든 사용자에게 공평하고 만족스러운 디지털 경험을 제공하는 것을 목표로 합니다. **FastPass를 통한 신속한 고부하 이슈 탐지** * Accessibility Insights for Web의 'FastPass' 기능을 활용하면 5분 이내에 사용자 경험에 큰 영향을 미치는 핵심 접근성 문제를 식별할 수 있습니다. * 오픈소스 엔진인 axe-core를 기반으로 한 자동화 체크를 통해 UI 코드를 작성하는 과정에서 즉각적인 피드백을 제공합니다. * 탭 정지(Tab Stops)와 같은 키보드 내비게이션 테스트를 포함하여, 스크린 리더나 확대 도구 사용자에게 혼란을 줄 수 있는 잘못된 포커스 순서를 바로잡도록 돕습니다. **Visual Studio 통합 접근성 검사기 활용** * Visual Studio 2022(버전 17.5 이상)에 내장된 접근성 검사기를 통해 별도의 도구 이동 없이 IDE 내에서 직접 문제를 발견하고 수정할 수 있습니다. * Accessibility Insights for Windows와 동일한 'Axe-Windows' 엔진을 사용하여 데스크톱 애플리케이션의 일반적인 접근성 오류를 정밀하게 감지합니다. * 개발 흐름을 유지하면서 동시에 접근성 스캐닝을 병행할 수 있어 개발 생산성과 포용성을 동시에 확보할 수 있습니다. **Quick Assess를 통한 정밀한 보조 테스트** * 자동화 도구로 감지하기 어려운 심층적인 이슈를 해결하기 위해 30분 이내로 수행 가능한 10가지 보조 테스트(Assisted tests)를 제공합니다. * 최근 업데이트를 통해 최신 웹 접근성 표준인 WCAG 2.2 기준에 대한 테스트 지원 및 안내 가이드를 도입했습니다. * 헤딩 레벨(Heading Levels) 검사 등 각 테스트 항목마다 해당 이슈가 왜 중요한지(Why It Matters)에 대한 설명과 함께 구체적인 수정 사례 및 리소스를 연결해 줍니다. 접근성 개선은 단순히 체크리스트의 항목을 지우는 작업이 아니라, 기술을 통해 모든 사람에게 평등한 기회를 제공하는 혁신의 과정입니다. 지금 바로 Accessibility Insights와 Visual Studio의 최신 기능을 개발 프로세스에 도입하여, 작은 단계부터 사용자 경험의 질을 높여보시길 권장합니다.

디자인 시스템의 미래는 (새 탭에서 열림)

Figma는 브랜드 정체성을 더욱 강력하게 표현하고 웹사이트의 성능과 확장성을 근본적으로 개선하기 위해 기존의 웹 시스템을 전면적으로 개편했습니다. 단순히 시각적 디자인을 바꾸는 것을 넘어, React Server Components와 Tailwind CSS 같은 최신 기술 스택으로 전환하여 개발 효율성과 사용자 경험을 동시에 강화했습니다. 결과적으로 디자인 시스템과 엔지니어링 간의 간극을 줄이고, 변화하는 브랜드 요구사항에 유연하게 대응할 수 있는 지속 가능한 웹 인프라를 구축하는 데 성공했습니다. **새로운 브랜드 표현을 위한 'Web UI' 시스템 구축** - 제품 UI와는 별개로 마케팅 웹사이트의 고유한 요구사항을 충족하기 위한 전용 컴포넌트 라이브러리인 'Web UI'를 구축했습니다. - 웹사이트만의 풍부한 표현력(대담한 타이포그래피, 복잡한 애니메이션 등)을 지원하기 위해 디자인 토큰 체계를 고도화하고 유연성을 확보했습니다. - Figma 디자인 파일의 변경 사항이 코드로 즉각 반영될 수 있도록 디자인과 개발 간의 워크플로우를 동기화하여 일관성을 유지했습니다. **성능 최적화를 위한 Next.js와 RSC 도입** - 런타임 성능을 극대화하고 개발자 경험을 개선하기 위해 Next.js의 App Router와 React Server Components(RSC)를 전면 도입했습니다. - 가능한 많은 로직을 서버 측에서 처리함으로써 클라이언트가 다운로드해야 하는 자바스크립트 번들 크기를 획기적으로 줄였습니다. - 이를 통해 초기 로딩 속도를 높이고 LCP(Largest Contentful Paint)를 비롯한 핵심 웹 지표(Core Web Vitals)를 크게 개선했습니다. **스타일링 효율성을 위한 Tailwind CSS로의 전환** - 기존 Styled Components 방식에서 발생하던 런타임 오버헤드와 복잡성을 제거하기 위해 Tailwind CSS로 전환했습니다. - 유틸리티 우선(Utility-first) 접근 방식을 통해 CSS 파일 크기를 최소화하고, 전역 스타일 충돌 문제를 방지하여 유지보수성을 높였습니다. - 디자인 시스템의 토큰을 Tailwind 설정에 직접 매핑하여 디자이너의 의도가 코드에 정확하고 빠르게 반영될 수 있는 구조를 마련했습니다. **유연한 콘텐츠 관리를 위한 아키텍처 개선** - 정적인 하드코딩 방식에서 벗어나 콘텐츠 관리 시스템(CMS)과의 연동을 강화하여 마케팅 팀이 엔지니어링의 도움 없이도 페이지를 구성할 수 있도록 했습니다. - 모듈형 컴포넌트 설계를 통해 새로운 페이지를 구축할 때 기존 요소를 재사용함으로써 제작 시간을 단축했습니다. Figma의 이번 개편 사례는 고성능 웹사이트가 단순히 빠른 로딩을 넘어 브랜드의 가치를 어떻게 효과적으로 전달할 수 있는지를 잘 보여줍니다. 성능을 타협하지 않으면서도 풍부한 시각적 경험을 제공하고자 한다면, 서버 중심의 렌더링 전략과 유틸리티 기반의 스타일링 시스템을 결합하여 디자인과 개발의 경계를 허무는 기술적 선택이 필수적입니다.

딥 서치 심층 분석 | 피 (새 탭에서 열림)

피그마(Figma)는 웹 브라우저라는 제한된 환경에서 복합적인 그래픽 작업과 실시간 협업을 동시에 구현하기 위해 독자적인 인프라 아키텍처를 구축했습니다. 이들은 성능 한계를 극복하기 위해 C++ 엔진을 웹어셈블리(WebAssembly)로 컴파일하여 사용하며, 모든 사용자가 동일한 상태를 공유할 수 있도록 '파일별 단일 프로세스' 모델 기반의 멀티플레이어 서버를 운영합니다. 결과적으로 피그마는 웹의 접근성과 데이티브 앱의 고성능, 그리고 실시간 동기화라는 세 가지 요소를 성공적으로 결합해냈습니다. ### 웹 기반 고성능 렌더링을 위한 C++와 WebAssembly 활용 * 피그마의 핵심 편집기 엔진은 자바스크립트가 아닌 C++로 작성되었으며, 이를 웹어셈블리(Wasm)로 컴파일하여 브라우저에서 실행합니다. * 이는 복잡한 벡터 계산과 대용량 그래픽 데이터 처리를 네이티브 앱에 가까운 속도로 수행하기 위함이며, 브라우저의 가비지 컬렉션으로 인한 성능 저하 문제를 방지합니다. * 단일 코드베이스를 유지함으로써 웹, 데스크톱 앱(Electron), 모바일 앱 등 다양한 플랫폼에서 동일한 렌더링 결과와 비즈니스 로직을 보장합니다. ### 멀티플레이어 서버와 실시간 상태 동기화 * 피그마의 실시간 협업 엔진은 '중앙 집중식 권한 서버' 모델을 따릅니다. 각 피그마 파일은 멀티플레이어 서버의 특정 프로세스에 할당되어 해당 파일의 유일한 진실 공급원(Source of Truth) 역할을 합니다. * 사용자가 수정을 하면 클라이언트는 변경 사항(Operation)을 서버로 보내고, 서버는 이를 검증한 뒤 파일의 현재 상태에 적용하고 다른 사용자들에게 즉시 전파합니다. * 일반적인 CRDT(Conflict-free Replicated Data Type) 방식의 복잡성을 피하기 위해, 서버가 작업 순서를 결정하는 방식을 채택하여 데이터 정합성을 엄격하게 유지합니다. ### LiveGraph를 통한 효율적인 데이터 구독 * 기존의 REST API 방식은 빈번하게 변하는 디자인 데이터의 업데이트를 실시간으로 반영하기에 비효율적이었습니다. * 이를 해결하기 위해 피그마는 'LiveGraph'라는 커스텀 리액티브 데이터 시스템을 구축했습니다. * 클라이언트가 필요한 데이터의 쿼리를 서버에 등록하면, 데이터베이스에 변경이 발생할 때마다 LiveGraph가 해당 변경 사항을 감지하여 관련 클라이언트에만 실시간으로 업데이트를 푸시합니다. ### 안정성과 확장성을 위한 인프라 계층 구조 * 피그마의 백엔드는 초기 Ruby on Rails 모놀리스에서 시작하여, 현재는 성능이 중요한 서비스들을 Go와 Rust 기반의 마이크로서비스로 점진적으로 분리하고 있습니다. * 데이터 저장소로는 AWS RDS(PostgreSQL)와 S3를 주로 사용하며, 전 세계 사용자에게 낮은 지연 시간을 제공하기 위해 에지 로케이션(PoP)을 활용하여 네트워크 경로를 최적화합니다. * 대규모 트래픽과 복잡한 파일 처리를 위해 수천 개의 멀티플레이어 서버 노드를 동적으로 스케일링하며, 특정 노드 장애 시에도 사용자의 작업을 보호할 수 있는 복구 메커니즘을 갖추고 있습니다. 피그마의 사례는 웹 기술의 한계를 넘기 위해 표준 기술(JS/HTML)에 안주하지 않고, 문제의 본질에 맞는 맞춤형 엔진과 프로토콜을 직접 설계하는 것이 중요하다는 것을 보여줍니다. 고성능 실시간 협업 서비스를 설계한다면 피그마처럼 "단일 소유권 기반의 동기화"와 "플랫폼 중립적인 고성능 코어 엔진"의 조합을 고려해 보는 것이 좋습니다.

플러그인 보안 업데이트 (새 탭에서 열림)

Figma는 사용자의 생산성을 높이기 위해 서드파티 개발자가 기능을 확장할 수 있는 플러그인 시스템을 구축하면서, 보안과 성능이라는 두 마리 토끼를 잡는 것을 최우선 과제로 삼았습니다. 단순히 외부 코드를 실행하는 것을 넘어, 메인 애플리케이션의 안정성을 해치지 않으면서도 네이티브 기능처럼 매끄럽게 작동하는 환경을 만드는 것이 핵심입니다. 이를 위해 Figma는 브라우저의 기본 보안 모델을 넘어 WebAssembly와 가상화된 JavaScript 엔진을 결합한 독창적인 샌드박스 구조를 설계했습니다. ### 기존 격리 방식의 한계와 도전 * **Iframe의 제약:** 초기에 고려된 Iframe 방식은 보안상 이점이 있지만, 렌더링 오버헤드가 크고 메인 스레드와의 통신(postMessage)이 비동기적으로만 이루어져 성능 병목 현상이 발생했습니다. * **Web Worker의 부재:** Worker는 별도 스레드에서 실행되어 메인 UI를 차단하지 않지만, DOM에 직접 접근할 수 없고 데이터 복사 비용이 커서 복잡한 그래픽 작업이 많은 Figma에는 부적합했습니다. * **신뢰할 수 없는 코드:** 누구나 플러그인을 올릴 수 있는 환경에서 사용자의 비공개 디자인 데이터와 액세스 토큰을 보호하기 위해서는 완벽한 코드 격리가 필수적이었습니다. ### WebAssembly와 QuickJS를 이용한 보안 샌드박스 * **QuickJS의 도입:** Figma는 매우 가볍고 표준을 잘 준수하는 JavaScript 엔진인 QuickJS를 WebAssembly(Wasm)로 컴파일하여 브라우저 내부에서 실행했습니다. * **가상 머신 기반 격리:** 플러그인 코드는 메인 브라우저 엔진이 아닌, Wasm 위에서 돌아가는 QuickJS 엔진 안에서만 실행됩니다. 이를 통해 플러그인은 브라우저 API나 메인 앱의 메모리에 직접 접근하는 것이 원천적으로 차단됩니다. * **자원 제어:** Wasm 기반 샌드박스를 사용하면 플러그인이 사용하는 메모리 양을 제한하거나, 무한 루프에 빠진 플러그인을 강제로 종료하는 등의 세밀한 제어가 가능해져 앱 전체의 안정성을 보장합니다. ### 효율적인 통신을 위한 API 설계 * **프록시를 통한 간접 접근:** 플러그인이 Figma의 문서 객체 모델(SceneGraph)을 다룰 때, 직접적인 객체 참조 대신 프록시(Proxy)를 거쳐 필요한 데이터만 선별적으로 전달합니다. * **동기적 인터페이스의 구현:** 개발자 경험을 위해 비동기 통신 구조 위에서도 마치 동기적으로 코드를 작성하는 것과 같은 직관적인 API를 제공하여 플러그인 제작의 진입장벽을 낮췄습니다. * **성능 최적화:** 메인 앱과 샌드박스 간의 데이터 교환을 최소화하기 위해 변경 사항을 배치(Batch)로 처리하거나 필요한 시점에만 데이터를 가져오는 지연 평가(Lazy evaluation) 방식을 도입했습니다. ### 안전하고 지속 가능한 확장성 웹 환경에서 외부 코드를 실행해야 한다면 브라우저가 제공하는 기본 격리 기능에만 의존하기보다, WebAssembly와 같은 기술을 활용해 자체적인 샌드박스 계층을 구축하는 것이 보안과 성능을 모두 지키는 가장 확실한 방법입니다. Figma의 사례는 사용자 데이터 보호라는 엄격한 기준을 유지하면서도 개발자 생태계를 성공적으로 확장할 수 있는 기술적 청사진을 제시합니다.

Figma 데이터의 안전한 보호 및 (새 탭에서 열림)

Figma는 사용자가 직접 도구를 확장할 수 있는 플러그인 시스템을 구축하면서, 서드파티 코드가 메인 앱의 성능을 저하시키거나 보안 위협이 되지 않도록 하는 데 집중했습니다. 이를 위해 기존의 웹 샌드박싱 기술인 `<iframe>`이나 Web Worker의 한계를 넘어서는 새로운 구조를 설계했습니다. 최종적으로 Figma는 WebAssembly를 통해 QuickJS라는 경량 자바스크립트 엔진을 브라우저 내에서 실행함으로써, 안전하면서도 고성능을 유지하는 독자적인 플러그인 실행 환경을 구현해냈습니다. **기존 웹 기술 기반 샌드박싱의 한계** * **iframe 샌드박스:** 보안을 위해 `sandbox` 속성을 사용할 수 있지만, 동일한 메인 스레드를 공유하기 때문에 플러그인의 무거운 연산이 Figma 전체 UI를 멈추게 할 위험이 있습니다. 또한, 수백 개의 플러그인을 동시에 실행할 경우 메모리 오버헤드가 급증합니다. * **Web Worker:** 별도의 스레드에서 실행되므로 메인 UI를 방해하지 않지만, DOM에 직접 접근할 수 없고 메인 스레드와의 통신(postMessage)이 비동기적으로 이루어져야 하므로 성능 병목 현상이 발생합니다. * **보안과 성능의 트레이드오프:** 기존 방식들은 보안을 강화하면 성능이 떨어지고, 성능을 올리면 보안이나 구현 복잡도가 높아지는 딜레마가 있었습니다. **QuickJS와 WebAssembly를 활용한 격리 환경** * **Sandboxing inside Sandbox:** Figma는 C 언어로 작성된 경량 자바스크립트 엔진인 QuickJS를 WebAssembly(Wasm)로 컴파일하여 브라우저 위에서 실행했습니다. * **메모리 및 자원 제어:** Wasm 환경은 호스트 시스템(브라우저)과 완전히 격리된 선형 메모리 공간을 사용하므로, 플러그인 코드가 Figma의 내부 데이터나 브라우저 API에 직접 접근하는 것을 원천 차단합니다. * **결정론적 실행:** 플러그인이 사용할 수 있는 CPU 시간과 메모리 할당량을 세밀하게 제어할 수 있어, 악성 코드나 무한 루프에 빠진 플러그인이 전체 앱의 가용성을 해치지 않도록 방어합니다. **효율적인 플러그인 API 설계** * **가상 API 브릿지:** 플러그인이 Figma의 문서 구조(Scene graph)에 접근할 때, 실제 데이터를 복사하는 대신 프록시(Proxy) 객체를 통해 필요한 데이터만 동기적으로 가져오도록 설계하여 통신 비용을 최소화했습니다. * **로직과 UI의 분리:** 플러그인의 비즈니스 로직은 QuickJS-Wasm 환경에서 실행되지만, 사용자 인터페이스(UI)는 별도의 `<iframe>`에서 실행되도록 분리했습니다. 이를 통해 안전한 UI 렌더링과 강력한 로직 격리를 동시에 달성했습니다. **시스템 안정성과 확장성 확보** * **동기적 실행 모델:** 개발자들에게 익숙한 동기 방식의 프로그래밍 모델을 제공하면서도, 내부적으로는 Wasm 기반의 격리 계층을 두어 복잡한 플러그인도 안정적으로 구동되게 했습니다. * **브라우저 독립성:** 특정 브라우저의 보안 버그나 패치에 의존하지 않고, Figma가 직접 제어하는 런타임 엔진을 통해 일관된 보안 수준을 유지합니다. 웹 환경에서 신뢰할 수 없는 외부 코드를 실행해야 한다면, 브라우저가 제공하는 기본 기능을 넘어 WebAssembly를 활용한 자체 런타임 환경 구축을 고려해야 합니다. 이는 구현 난이도가 높지만, 사용자 보안과 애플리케이션의 성능이라는 두 마리 토끼를 잡을 수 있는 가장 확실한 방법입니다. 특히 대규모 협업 툴이나 확장성이 중요한 플랫폼 서비스라면 Figma와 같은 "계층화된 샌드박스" 접근 방식이 훌륭한 레퍼런스가 될 것입니다.