mobile-development

9 개의 포스트

spotify원문

Spotify 앱을 출시하는 방법: 내부 (새 탭에서 열림)

스포티파이는 Jira 중심의 복잡하고 분절된 릴리스 관리 프로세스를 개선하기 위해 자체 개발 포털인 Backstage 기반의 '릴리스 매니저 대시보드(Release Manager Dashboard)'를 구축했습니다. 이 도구는 10개 이상의 시스템에서 데이터를 통합하여 릴리스 매니저의 인지 부하를 줄이고, 안드로이드, iOS, 데스크톱 등 각 플랫폼의 릴리스 상태를 한눈에 파악할 수 있게 합니다. 결과적으로 스포티파이는 데이터 중심의 빠른 의사결정 체계를 갖추게 되었으며, 릴리스 과정에서 발생할 수 있는 휴먼 에러를 최소화했습니다. ### Jira 중심 프로세스의 한계와 새로운 도구의 탄생 * 기존에는 모든 릴리스 정보가 Jira 티켓에 흩어져 있어, 릴리스 매니저가 수많은 탭을 오가며 상태를 확인해야 하는 컨텍스트 스위칭 문제가 심각했습니다. * 새로운 대시보드는 컨텍스트 스위칭 최소화, 인지 부하 감소, 빠르고 정확한 의사결정 지원을 목표로 설계되었습니다. * 이를 통해 모바일 릴리스 프로세스에 대한 기본 지식만 있다면 누구나 직관적으로 상황을 이해할 수 있는 환경을 조성했습니다. ### 통합된 데이터와 트랙 중심의 관리 * 플랫폼(Android, iOS, Desktop)과 버전의 조합을 '트랙(Track)'으로 정의하고, 각 트랙을 독립적이면서도 통합적으로 관리합니다. * **트랙별 필수 데이터:** 릴리스 상태(State), 릴리스 차단 버그(Blocking Bugs), 회귀 테스트 통과 여부(Sign-off), 최신 릴리스 후보(RC) 빌드 및 앱스토어 업로드 상태 등을 포함합니다. * **품질 및 사용량 지표:** Crash 발생률, ANR(응답 없는 앱), 곡당 CPU 예외 사항, DAU(일일 활성 사용자 수) 등 실시간 품질 지표를 함께 모니터링합니다. * **미할당 버그 관리:** 특정 버전에 할당되지 않았거나 우선순위가 없는 버그들을 별도로 표시하여, 릴리스를 방해할 수 있는 잠재적 요소를 사전에 분류하고 담당 팀을 지정합니다. ### Backstage 기반의 에코시스템과 직관적인 UI * 스포티파이의 내부 개발자 포털인 Backstage의 플러그인(React, TypeScript 기반)으로 개발되어 기존 개발 도구들과의 UI/데이터 일관성을 유지합니다. * **신호등 시스템:** 상태를 초록색(준비 완료), 노란색(대기/경고), 빨간색(오류/즉각 조치 필요)으로 시각화하여 즉각적인 상황 판단을 돕습니다. * 상세 정보가 필요한 경우 클릭 한 번으로 앱 빌드나 크래시 상세 리포트 등 관련 플러그인으로 바로 연결되는 드릴다운(Drill-down) 구조를 갖췄습니다. ### 백엔드 아키텍처 및 성능 최적화 * 약 10개의 기존 시스템으로부터 데이터를 수집하고 통합하는 API 게이트웨이 역할을 수행하는 백엔드 서비스를 구축했습니다. * 초기 버전은 매번 대규모 쿼리를 실행하여 속도가 느리고 비용이 높았으나, 5분 단위의 데이터 사전 집계(Pre-aggregation)와 캐싱 기술을 도입해 최적화했습니다. * 이를 통해 대시보드 로딩 시간을 8초로 단축하고, 운영 비용을 획기적으로 낮추면서도 높은 신뢰성을 확보했습니다. ### 단계별 릴리스 모니터링 상세 * **Production(운영):** 이미 배포된 버전의 크래시 지표와 지난 24시간 동안의 DAU 추이를 모니터링하여 배포 후 예기치 못한 문제를 감시합니다. * **Current(현재):** 배포 대기 중인 버전의 상태를 집중 관리합니다. ITGC(IT 일반 통제) 테스트 통과 여부와 데이터 손실 임계치 준수 여부 등을 확인하여 최종 배포 가능 여부를 결정합니다. * **Upcoming(차기):** 다음 릴리스 버전을 미리 준비하며, 해당 단계에서 불필요한 섹션은 비활성화하여 현재 집중해야 할 정보와 구분합니다. 복잡한 마이크로서비스 환경이나 멀티 플랫폼 앱을 운영하는 조직이라면, 흩어진 릴리스 데이터를 하나로 모으는 전용 대시보드 구축이 필수적입니다. 특히 Backstage와 같은 내부 개발 포털을 활용해 도구 간 데이터 일관성을 확보하고 시각적인 상태 지표(초록/노랑/빨강)를 도입하면, 릴리스 관리의 효율성을 극대화하고 배포 안정성을 크게 높일 수 있습니다.

kakao원문

초경량 클래식 형태소 분석기 개발기 (새 탭에서 열림)

카카오는 모바일 환경의 엄격한 리소스 제한을 극복하기 위해 C++20 기반의 초경량 형태소 분석기를 직접 개발했습니다. 최신 딥러닝 방식 대신 전통적인 Viterbi 알고리즘과 LOUDS 기반의 Trie 압축 기술을 결합하여, 바이너리 크기를 200KB 수준으로 최소화하면서도 효율적인 사전 탐색 성능을 확보하는 데 성공했습니다. ### Rust 대신 C++20을 선택한 이유 * **바이너리 크기 최적화**: Rust는 현대적인 기능을 제공하지만 표준 라이브러리 포함 시 바이너리 크기가 MB 단위로 커지는 경향이 있어, KB 단위의 관리가 필요한 모바일 환경에는 부적합했습니다. * **기존 인프라 활용**: 모바일 OS 환경에 이미 포함된 C++ 표준 라이브러리를 활용함으로써 최종 결과물 크기를 약 200KB 수준으로 억제했습니다. * **현대적 문법 적용**: C++20의 `Concepts`를 사용하여 템플릿 제약을 명확히 하고, `std::span`과 `std::ranges` 등을 통해 메모리 안전성과 코드 가독성을 동시에 높였습니다. ### LOUDS 알고리즘을 통한 사전 데이터 압축 * **비트 시퀀스 기반 트리**: 트리 구조를 포인터 대신 비트열로 표현하는 LOUDS(Level-Order Unary Degree Sequence)를 채택하여 메모리 사용량을 정보 이론적 하한에 가깝게 줄였습니다. * **높은 압축률 달성**: 약 76만 개의 노드를 가진 방대한 사전 데이터를 단 9.4MB로 압축했으며, 이는 일반적인 CSV 방식 대비 훨씬 효율적인 수치입니다. * **한글 최적화 인코딩**: 한글을 2바이트로 처리하고 외국어는 플래그로 구분하는 등 별도의 내부 인코딩 방식을 적용하여 사전의 물리적 크기를 추가로 절감했습니다. ### Select 비트 연산 최적화와 성능 개선 * **병목 지점 파악**: LOUDS 구조에서 특정 노드의 위치를 찾는 `select0` 연산이 전체 사전 탐색 시간의 약 90%를 점유하는 성능 병목임을 확인했습니다. * **인덱싱 기반 탐색**: 비트 시퀀스를 64비트 청크로 나누고 각 구간까지의 '0의 누적 개수'를 미리 기록하여, 바이너리 서치를 통해 탐색 범위를 획기적으로 좁혔습니다. * **비트 병렬 처리**: 청크 내부에서는 비트 연산과 시프트를 조합한 병렬 카운팅 기법을 활용하여 하드웨어 수준에서 연산 속도를 극대화했습니다. ### 실용적인 결론 모바일 클라이언트 환경처럼 리소스가 극도로 제한된 곳에서는 무거운 딥러닝 모델보다 최적화된 클래식 알고리즘이 더 강력한 대안이 될 수 있습니다. 특히 LOUDS와 같은 정적 트리 압축 기법과 비트 수준의 연산 최적화를 결합하면, 성능 손실 없이도 극적인 용량 절감이 가능함을 이 개발 사례가 증명하고 있습니다.

discord원문

디스코드 업데이트: 2 (새 탭에서 열림)

이번 디스코드 업데이트는 사용자 경험을 직관적으로 개선하고 개별 서버에서의 개성 표현 자유도를 높이는 데 주력했습니다. 특히 번거로웠던 이모지 제작 과정을 앱 내에서 직접 해결할 수 있도록 간소화했으며, 데스크톱 UI 개편과 서버별 프로필 설정 기능을 통해 더욱 쾌적하고 개인화된 소통 환경을 구축했습니다. **이모지 제작 및 관리의 편의성 강화** - 새로운 이모지 편집 도구가 추가되어 별도의 외부 사진 편집 앱 없이도 이미지 크기 조절과 크롭(자르기) 작업을 앱 내에서 즉시 수행할 수 있습니다. - 이모지 선택창(Emoji Picker)에서 직접 '이모지 추가' 버튼을 눌러 이미지를 업로드할 수 있으며, 업로드 과정에서 추가할 서버를 바로 선택할 수 있습니다. - 과거 128x128 해상도 준수나 특정 파일 형식 제한 등 사용자를 번거롭게 했던 업로드 규격 제한이 사라져, 이미지 규격에 상관없이 자유로운 업로드가 가능해졌습니다. **데스크톱 UI 개선 및 음성 채널 기능** - 데스크톱 설정 화면이 디스코드의 최신 디자인 언어에 맞춰 더욱 깔끔하게 재구성되고 있으며, 원하는 설정을 빠르게 찾을 수 있는 검색바 기능은 그대로 유지됩니다. - 음성 채널(VC)에 새로운 타이머 기능이 도입되어 현재 통화가 얼마나 오랫동안 진행 중인지 실시간으로 확인할 수 있습니다. - 설정 메뉴 하단의 'More' 섹션을 통해 최신 업데이트 내역(Changelog)을 언제든 다시 확인할 수 있도록 경로가 조정되었습니다. **개인화 프로필 및 모바일 상점 확장** - 이제 서버별로 각기 다른 '네임플레이트(Nameplates)'를 설정할 수 있어, 전문적인 서버와 친목 위주의 서버 등 커뮤니티 성격에 맞게 프로필을 다르게 꾸밀 수 있습니다. - 모바일 환경에서도 상점(Shop) 기능을 전면 지원하여, 스마트폰이나 태블릿에서 직접 선물하기를 이용하거나 네임플레이트 및 각종 번들을 구매할 수 있습니다. - 학부모나 보호자가 청소년의 안전한 온라인 활동을 돕는 '가족 센터(Family Center)' 기능을 강화하여 보호자의 관리 역할을 더욱 세밀하게 지원합니다. 이번 업데이트를 통해 복잡한 편집 과정 없이 자신만의 독특한 이모지를 즉시 제작해 보세요. 또한, 서버별 네임플레이트 기능을 활용해 각 커뮤니티의 분위기에 어울리는 맞춤형 프로필을 구성해 보는 것을 추천합니다.

line원문

PD1 AI 해커톤, 그 뜨거웠던 열기 속으로! (새 탭에서 열림)

PD1 해커톤 2025는 LINE 앱의 핵심 개발 조직인 PD1이 주관하여 AI 기술을 서비스에 접목할 혁신적인 아이디어를 발굴하고 기술적 가능성을 실험한 자리였습니다. 약 60명의 개발자가 참여해 48시간 동안 대화 경험 개선부터 업무 자동화까지 다양한 영역에서 AI 활용 방안을 제시하며 LINE 앱의 미래를 탐색했습니다. 이번 행사는 단순한 이벤트의 차원을 넘어 실제 서비스에 즉각 적용 가능한 수준 높은 기술적 성취를 확인했다는 점에서 큰 의미를 가집니다. **PD1 해커톤의 지향점과 조직적 배경** * LINE 앱의 iOS, Android 메신저 기능과 내부 플랫폼 개선을 담당하는 PD1 조직이 주도하여 실질적인 사용자 경험 변화를 목표로 삼았습니다. * AI 기술을 메시징, 콘텐츠, 업무 자동화에 필수적으로 도입해야 하는 산업 흐름에 발맞추어 기획되었습니다. * 혁신적인 AI 기술 확보, 일상적인 문제 해결, 그리고 내부 개발 생산성 향상이라는 세 가지 핵심 과제를 탐구했습니다. **AI 기반의 커뮤니케이션 및 콘텐츠 혁신** * **NextVoIP 팀 (VoIP x AI):** 1:1 및 그룹 통화의 음성 데이터를 실시간으로 텍스트로 변환(STT)한 뒤, AI 모델을 통해 보이스피싱 등 사고 예방, 대화 보조, 관련 콘텐츠 제안 기능을 구현했습니다. * **MELODY LINE 팀 (Music from Conversation):** 대화의 맥락과 감정을 AI로 분석하여 그 분위기에 맞는 멜로디를 자동으로 생성하는 '음악 기반 대화'라는 독특한 사용자 경험을 제시하여 최우수상을 수상했습니다. * 서비스 내 메시지 데이터를 AI로 분석해 즉석에서 해커톤 주제가를 작곡하는 등 기술과 예술을 융합한 창의적인 시도들이 돋보였습니다. **실무 직결형 AI 테스트 자동화 솔루션** * **IPD 팀 (AI 테스트 자동화 - 대상 수상):** 반복적인 QA 업무를 효율화하기 위해 AI가 테스트 케이스를 생성·관리하고, 자동 실행 및 실패 원인 분석까지 수행하는 시스템을 시연했습니다. * 현업에 즉시 투입 가능한 수준의 실용성과 완성도를 보여주었으며, 개발 이후 단계인 테스트 과정의 비용 절감 및 품질 향상 가능성을 입증했습니다. * 단순한 아이디어 제시에 그치지 않고 실제 프로젝트에 적용 가능한 구체적인 기술적 프레임워크를 선보여 참가자들의 높은 평가를 받았습니다. 이번 해커톤에서 도출된 QA 자동화나 VoIP 보안 강화와 같은 아이디어들은 실제 서비스의 안정성과 편의성을 높이는 데 중요한 이정표가 될 것입니다. 개발자들이 짧은 시간 내에 몰입하여 AI의 실용적 가치를 증명해낸 만큼, 여기서 얻은 기술적 자산들을 실제 LINE 앱 고도화 과정에 적극적으로 반영하고 지속적인 실험 환경을 구축하는 것을 추천합니다.

discord원문

디스코드 업데이트: (새 탭에서 열림)

디스코드는 사용자 개성을 표현하는 프로필 기능과 커뮤니티 가시성을 높이는 '서버 태그'를 도입하며 사용자 경험을 한층 강화했습니다. 이와 더불어 퀵 스위처 알고리즘 개선, 모바일 이미지 품질 향상 등 기술적 최적화를 통해 소통의 효율성을 높이는 데 집중하고 있습니다. 이번 업데이트는 단순한 기능 추가를 넘어 사용자들이 소속감을 더 직관적으로 드러내고 편리하게 대화할 수 있는 환경을 구축하는 데 결론을 두고 있습니다. ### 서버 태그를 통한 커뮤니티 정체성 강화 * 사용자 이름 옆에 자신이 소속된 서버나 좋아하는 게임 커뮤니티를 나타내는 '서버 태그(Server Tags)' 기능이 추가되었습니다. * 다른 사용자가 태그를 클릭하면 해당 서버의 상세 정보를 확인할 수 있으며, 관리자 설정에 따라 즉시 가입하거나 가입 신청을 보낼 수 있습니다. * 서버 부스트 3단계를 달성하면 커뮤니티 관리자가 서버 태그 기능을 활성화하여 구성원들이 이를 프로필 설정에서 사용할 수 있게 됩니다. ### 프로필 개인화 및 시각적 요소 업데이트 * 데스크톱 앱에서 최근에 사용한 프로필 이미지(Avatar) 6개를 저장하여, 매번 이미지를 새로 업로드할 필요 없이 이전 이미지로 빠르게 교체할 수 있습니다. * Nitro 멤버는 퀘스트를 통해 획득한 한정판 아바타 장식을 기존 2개월 제한을 넘어 훨씬 더 오랜 기간 유지할 수 있게 되었습니다. * 상점에 새로운 네임플레이트가 대거 추가되었으며, 서버 부스트를 통해 역할(Role) 이름에 화려한 그라데이션 효과를 주는 '향상된 역할 스타일' 기능을 사용할 수 있습니다. ### 메시징 편의성 및 성능 최적화 * **퀵 스위처(Quick Switcher) 개선:** 사용자가 실제로 이동하고자 하는 채널이나 DM을 더 정확하게 예측하여 보여주도록 알고리즘이 고도화되었습니다. * **이메일 마크다운 지원:** 이메일 주소를 `<example@email.com>`과 같이 괄호 안에 넣으면 클릭 시 즉시 메일 작성 화면으로 연결되는 하이퍼링크가 생성됩니다. * **모바일 이미지 품질 향상:** 모바일 앱의 이미지 압축 방식을 개선하여 저화질 이미지의 임베드 품질을 높였으며, 전반적인 이미지 업로드 및 렌더링 속도가 향상되었습니다. ### Discord 내 액티비티: Wordle 도입 * 채팅창에 `/wordle` 명령어를 입력하면 New York Times의 Wordle 게임을 Discord 내에서 바로 플레이할 수 있는 액티비티 기능이 추가되었습니다. * 게임 결과를 `/share` 명령어로 다른 채널이나 DM에 공유하여 친구들과 정답 맞히기 기록을 비교하고 경쟁할 수 있습니다. 커뮤니티를 운영 중인 관리자라면 서버 부스트를 활용해 '서버 태그'와 '역할 그라데이션'을 활성화하여 멤버들에게 소속감과 시각적 즐거움을 제공해 보시기 바랍니다. 또한, 평소 채널 이동이 잦은 사용자라면 개선된 퀵 스위처를 통해 더 빠르게 대화에 참여할 수 있습니다.

discord4분 읽기큐레이션 요약

디스코드 패치 노트

Discord의 2024년 11월 1일 패치 노트는 폴더블 기기와 멀티태스킹 지원, macOS 화면 공유 단축키, 웹 성능 개선을 주요 변화로 소개합니다. Discord.com의 평균 페이지 로딩 시간이 최대 4초 단축됐고, 데스크톱·모바일 전반에서 수많은 UI, 렌더링, 입력, 알림 관련 버그가 수정됐습니다. 이번 패치는 기능 추가보다는 다양한 플랫폼에서의 안정성·반응성·사용성 개선에 초점을 맞췄습니다. ## 폴더블·멀티태스킹 지원 강화 - 폴더블 기기에서 Discord의 화면 구성과 프로필 배너 렌더링이 개선됐습니다. - 모바일 앱의 크기나 화면 비율이 바뀌면 사이드카·분할 화면 등 상황에 맞는 보기 방식으로 자동 전환됩니다. - 향후 폴더블 기기별로 별도 대응하지 않아도 동작하도록 코드 기반을 개선했습니다. - 문제 발생 시 DiscordApp 커뮤니티의 버그 메가스레드나 고객지원 티켓을 통해 신고할 수 있습니다. ## 데스크톱·웹 성능 개선 - Windows, macOS, Linux의 Electron 버전을 e30에서 e32로 업데이트했습니다. - Discord.com의 페이지 로딩 시간이 사용자에 따라 평균 최대 4초 단축됐습니다. - 핵심 웹 성능 지표와 전반적인 반응성도 개선됐습니다. - 실행 중인 데스크톱 클라이언트가 있을 때 브라우저에서 친구 링크를 열면 클라이언트와 정상적으로 연동됩니다. - macOS 15 이상에서 “Toggle Screen Share” 키바인드를 설정할 수 있게 됐습니다. ## 프로필·서버 관리 UI 수정 - 큰 프로필 화면에서 사라졌던 메시지 보내기·친구 추가 버튼을 복구했습니다. - 프로필 배너 저장 후 확대 비율이 잘못 적용되던 문제를 해결했습니다. - 모바일에서 아바타 장식이 읽지 않은 메시지의 상태 표시와 겹치던 문제를 수정했습니다. - 모바일 프로필 입력란 선택 시 프로필이 아래로 밀리던 문제를 해결했습니다. - 프로필에서 Mod View를 여는 기능이 정상적으로 동작합니다. - Nitro 비사용자의 Profile Effect 변경 버튼이 사라지던 문제를 복구했습니다. - 프로필 장식 상품의 구매 버튼 문구를 더 정확하게 수정했습니다. - iOS의 프로필 “About Me” 영역에서 이모지 정렬 문제를 해결했습니다. - 간소화된 프로필에서 역할을 추가할 때 이미 보유한 역할이 목록에 나타나지 않도록 했습니다. - 역할이 없는 사용자에게 역할을 추가해도 역할 목록이 자동으로 접히지 않습니다. ## 채널·권한·알림 관련 수정 - 채널 설정에서 권한을 업데이트할 때 화면이 크게 깜빡이던 문제를 해결했습니다. - Slow Mode 설정을 초기화한 뒤 화면에 이전 상태가 남아 보이던 문제를 수정했습니다. - 모바일 채널 설정의 카테고리 선택기가 긴 카테고리 이름을 올바르게 처리합니다. - 모바일 하단 내비게이션 바가 드물게 표시되지 않던 문제를 해결했습니다. - 특정 상황에서 오프라인 상태인데도 API 호출을 반복하던 문제를 수정했습니다. - 모바일에서 DM에 잘못된 알림 설정이 표시되던 문제를 해결했습니다. - “Show Members in Channel List” 배너의 테마별 글자 색상을 수정했습니다. - 키바인드 화살표 아이콘의 테마 색상 문제를 해결했습니다. ## 채팅·스레드·메시지 기능 개선 - 채팅에서 이모지가 지나치게 크게 표시되던 문제를 수정했습니다. - 모바일 음성 메시지의 “Hold to record” 툴팁 애니메이션을 고쳤습니다. - 삭제된 메시지가 모바일 DM 미리보기에서 잠시 계속 나타나던 문제를 해결했습니다. - iOS에서 채널 간 초안이 잘못 유지되던 문제를 수정했습니다. - 답글 위의 메시지 미리보기에서 사용자 이름을 클릭해 프로필을 열 수 있습니다. - iOS에서 키보드가 닫힌 뒤 메시지 기록의 글자 크기가 잘못 변하던 문제를 해결했습니다. - 스레드를 만든 직후 너무 빠르게 이름을 변경하면 두 개가 생성되던 문제를 수정했습니다. - 스레드 생성 화면의 테마 적용 문제를 해결했습니다. - 채팅 애니메이션 중 스와이프 동작이 제대로 작동하지 않던 문제를 수정했습니다. - 모바일 음성 메시지 UI가 텍스트 입력란과 겹치던 문제를 해결했습니다. - iOS 메시지에서 이모지가 잘못 정렬되던 문제를 수정했습니다. ## 이모지·검색·쇼핑 및 기타 UI 수정 - 첫 시도부터 이모지 선택기가 원하는 카테고리로 이동하도록 수정했습니다. - 오버레이에서 사용자 지정 이모지가 표시되지 않던 문제를 해결했습니다. - 투표 UI에서 답변을 선택하고 복사할 수 있게 됐습니다. - 포럼 게시물의 React 버튼 크기를 수정했습니다. - X.com 게시물 임베드가 콘텐츠를 Markdown으로 잘못 처리하지 않도록 했습니다. - Shop에서 잘못된 카테고리 배너가 표시되거나 첫 클릭 시 페이지 하단으로 스크롤되는 문제를 해결했습니다. - 컬렉션 타일의 둥근 UI 요소가 정확한 원형으로 표시됩니다. - Nitro 선물 화면의 여백 문제를 수정했습니다. - 모바일 사용자 프로필의 Nitro 아이콘 위치와 크기를 조정했습니다. - Compact Mode에서 앱 명령어에 사용되는 “/” 아이콘의 정렬을 수정했습니다. - Shop이 열려 있을 때 채널·DM 목록 아래의 음소거 버튼을 눌러도 Shop이 스크롤되지 않습니다. - iOS에서 역할 추가 중 표현식 선택기가 잘못 확장되던 문제를 해결했습니다. - 봇 프로필의 “Add App” 버튼에 있는 플러스 아이콘 색상을 수정했습니다. 이번 업데이트는 Discord를 여러 기기에서 사용하는 사용자에게 특히 유용합니다. 폴더블·분할 화면·macOS 화면 공유 단축키를 사용하는 경우 최신 버전으로 업데이트하고, 모바일에서는 채팅·프로필·채널 설정과 관련된 기존 문제도 함께 개선됐는지 확인하는 것이 좋습니다.

원문 읽기(새 탭에서 열림)
figma원문

피그마의 TypeScript (새 탭에서 열림)

피그마(Figma)는 자사의 모바일 렌더링 엔진의 핵심 언어였던 자체 개발 언어 'Skew'를 산업 표준인 TypeScript로 완전히 전환하는 데 성공했습니다. 과거 성능 최적화를 위해 도입했던 Skew가 팀 규모 확장에 따라 생산성 저해와 생태계 부재라는 한계에 부딪히자, 피그마는 일상적인 개발 흐름을 방해하지 않으면서도 자동화된 마이그레이션을 완수했습니다. 결과적으로 피그마는 성능 손실 없이 더 나은 개발 환경과 최신 JavaScript 생태계의 이점을 누릴 수 있게 되었습니다. ### 자체 개발 언어 Skew의 도입과 한계 * **성능 중심의 탄생:** 초기 피그마는 웹과 모바일 모두에서 프로토타입 뷰어를 구현하기 위해 Skew를 개발했습니다. 당시 Skew는 정적 타이핑과 더불어 상수 폴딩(constant folding), 가상 함수 호출 최적화(devirtualization) 등 고급 컴파일러 최적화를 통해 JavaScript보다 뛰어난 성능을 제공했습니다. * **확장의 걸림돌:** 하지만 팀이 커지면서 Skew는 신규 입사자의 적응을 어렵게 만들고, 린터(linter)나 정적 분석기 같은 현대적인 개발 도구 생태계를 활용할 수 없다는 단점이 부각되었습니다. * **기능의 부재:** async/await와 같은 현대적인 JavaScript 기능이 부족했고, 피그마 내부의 다른 코드베이스와 통합하는 데에도 높은 비용이 발생했습니다. ### TypeScript 전환이 가능해진 기술적 배경 * **WebAssembly(Wasm)의 보편화:** 2018년 이후 모바일 브라우저에서 WebAssembly 지원이 확대되었고, 2020년경에는 모바일에서도 안정적인 성능을 발휘하게 되었습니다. * **C++ 엔진으로의 교체:** Skew로 작성되었던 파일 로딩 등 핵심 성능 경로를 WebAssembly로 컴파일되는 C++ 엔진으로 대체함으로써, 나머지 로직을 TypeScript로 전환하더라도 전체 성능에 미치는 영향이 미미해졌습니다. * **팀 규모의 성장:** 개발 경험(DX) 개선에 전념할 수 있는 리소스를 확보할 만큼 팀이 성장하면서 자동화된 마이그레이션 도구 개발이 가능해졌습니다. ### 안전한 전환을 위한 3단계 자동화 프로세스 * **1단계 (Skew 작성, Skew 빌드):** 기존 빌드 프로세스를 유지하면서 Skew 코드를 TypeScript로 변환하는 트랜스파일러를 개발했습니다. 변환된 TypeScript 코드를 깃허브에 체크인하여 개발자들이 미래의 코드 모습을 확인할 수 있게 했습니다. * **2단계 (Skew 작성, TypeScript 빌드):** 개발자는 여전히 Skew로 코드를 짜지만, 실제 프로덕션 빌드는 트랜스파일러를 거친 TypeScript 코드로 진행했습니다. 이 과정에서 유닛 테스트를 통과시키고 타입 오류를 점진적으로 수정하며 안정성을 확보했습니다. * **3단계 (TypeScript 작성, TypeScript 빌드):** 특정 시점에 Skew 코드 생성을 중단하고 모든 Skew 소스 파일을 삭제했습니다. 이후 모든 개발자는 TypeScript를 직접 작성하게 되었으며, CI/CD 파이프라인도 TypeScript 기반으로 완전히 전환되었습니다. ### 실용적인 결론 및 시사점 피그마의 사례는 서비스 초기 성능을 위해 도입한 커스텀 기술이 성숙기에는 오히려 부채가 될 수 있음을 보여줍니다. 특히 대규모 코드베이스를 전환할 때는 **'점진적인 롤아웃'**과 **'자동화된 트랜스파일링'**이 핵심입니다. Skew와 TypeScript 간의 시맨틱 차이(예: 네임스페이스 초기화 순서 등)로 발생할 수 있는 런타임 오류를 방지하기 위해, 자체 컴파일러를 수정하여 제어권을 확보한 점은 기술적 난관을 극복한 훌륭한 전략으로 평가됩니다.

figma3분 읽기큐레이션 요약

지원자 인터뷰부터 개발자 크

Figma Engineering은 원격·하이브리드 환경에서 FigJam을 협업의 중심 도구로 활용해 팀 규모 확장과 구성원 간 연결을 동시에 해결하고 있다. 스탠드업, 채용 인터뷰, 기술 논의처럼 기존에는 물리적 화이트보드나 회의에 의존하던 활동을 디지털 캔버스로 옮겨 비동기 협업과 참여를 강화했다. FigJam은 업무 도구를 넘어 팀 문화를 유지하고 새로운 구성원의 적응을 돕는 공간으로도 사용된다. ## 원격 환경에서 팀 문화 유지 - Zoom 기반 스탠드업은 팀 규모가 커지면서 형식적이고 시간이 오래 걸리는 회의가 되었다. - Figma는 FigJam 보드에 각자 업무 업데이트를 비동기적으로 작성하는 방식으로 스탠드업을 운영한다. - 구성원은 스티키 노트, 사진, 댓글, 리액션 등을 활용해 업무뿐 아니라 주말 활동 같은 개인적인 이야기도 공유한다. - 모두가 순서대로 발언하지 않아도 다른 사람의 게시물에 반응하고 대화할 수 있어 자연스러운 교류가 가능하다. - 회의가 끝난 뒤에도 보드에서 팀 게임을 진행한다. 예를 들어 ‘20초 동물 그리기’처럼 짧은 활동으로 회의를 즐겁게 마무리한다. ## 빠르게 성장하는 엔지니어링 조직의 과제 - FigJam 팀의 엔지니어링 매니저는 새로운 기능을 협력적으로 개발하도록 돕는 동시에 원격 근무 중 팀 연결을 유지하는 역할을 맡는다. - 모바일 팀은 20명 이상으로 성장하면서 팀 프로세스를 확장하고, 신규 구성원이 인프라와 기술 스택을 빠르게 익히도록 하는 일이 중요해졌다. - Android 엔지니어링 팀은 신규 앱의 베타 테스트와 버그 피드백 수집을 진행하는 한편, 급증하는 채용 수요에도 대응하고 있다. - 팀이 커질수록 단순히 인원을 늘리는 것보다 지식 공유, 온보딩, 협업 방식의 표준화가 필요하다는 점을 보여준다. ## FigJam을 활용한 원격 기술 면접 - Figma는 아키텍처나 시스템 설계 면접에서 지원자가 문제를 어떻게 사고하고 협업하는지 확인하기 위해 화이트보드 방식을 선호한다. - 원격 근무 전환 이후 물리적인 화이트보드를 FigJam의 디지털 캔버스로 대체했다. - 면접관은 문제를 제시하고, 지원자가 설계를 시각화하며 해결 과정을 설명하도록 한다. - 지원자가 FigJam을 처음 사용하는 경우를 고려해 면접 시작 전에 1~2분 정도 사용법을 안내한다. - 계정 생성 없이 참여할 수 있는 ‘오픈 세션’을 활용해 지원자가 쉽게 면접 보드에 들어오도록 했다. - 이를 통해 대면 면접의 화이트보드 협업 경험을 원격 환경에서도 유지하면서, 면접 과정 자체를 기록하고 공유하기 쉬워졌다. ## 협업 도구를 통한 개발 프로세스 확장 - FigJam은 단순한 회의용 메모장이 아니라 아이디어 정리, 시스템 설계, 피드백 수집을 한 공간에서 수행하는 협업 환경으로 활용된다. - 비동기 작성과 실시간 대화를 함께 지원해 회의 시간을 줄이고 구성원의 참여 방식을 다양화한다. - 시각적 자료를 남길 수 있어 팀의 논의 내용과 의사결정을 이후에도 참고하기 쉽다. - 채용, 온보딩, 팀 문화 활동까지 동일한 도구를 사용함으로써 조직이 커져도 일관된 협업 경험을 제공한다. 조직이 원격 또는 하이브리드 방식으로 확장될 때는 회의 도구만 도입하기보다, 스탠드업·채용·기술 리뷰·팀 친목 활동을 연결하는 공용 협업 공간을 마련하는 것이 효과적이다. FigJam 사례처럼 비동기 업데이트와 짧은 실시간 활동을 조합하면 생산성과 팀 소속감을 함께 높일 수 있다.

원문 읽기(새 탭에서 열림)
figma3분 읽기큐레이션 요약

Figma + Lambda School

Lambda School은 실시간 온라인 수업에 Figma를 결합해 대면 교실의 상호작용성과 협업성을 재현하고자 했다. Figma를 통해 학생들은 수업 자료를 함께 탐색하고, 작업 과정을 공유하며, 실시간·비동기 피드백을 주고받을 수 있었다. 또한 수업 중 생성된 작업물이 포트폴리오로 축적되어 학습과 취업 준비를 자연스럽게 연결했다. ## 온라인 수업을 위한 협업형 학습 환경 - Lambda School은 선불 학비 없이 9개월 동안 진행되는 온라인 실시간 교육 프로그램이다. - 웹 개발, 모바일 개발, 데이터 과학, UX 디자인 등을 가르치며, 기술 분야 취업에 필요한 실무 역량과 지원을 제공한다. - 핵심 과제는 원격 환경에서도 대면 수업처럼 연결되고, 직접 참여하며, 함께 작업할 수 있는 교실을 만드는 것이었다. - Figma는 브라우저 기반 공동 편집 기능을 통해 이 목표를 지원했다. ## 발표 자료를 함께 탐색하는 인터랙티브 수업 - 강사가 화면을 공유하고 학생들이 수동적으로 슬라이드를 보는 방식과 달리, Figma에서는 발표 자료 자체를 함께 조작할 수 있다. - 학생들은 다음과 같은 방식으로 수업 내용을 능동적으로 탐색한다. - 화면을 확대해 세부적인 곡선이나 디자인 요소 확인 - 캔버스를 스크롤하며 특정 로고나 사례 살펴보기 - 참가자들의 포인터를 통해 강사가 설명하는 위치를 실시간으로 파악 - 발표가 일방적인 전달이 아니라 강사와 학생이 같은 자료를 함께 살펴보는 활동이 된다. ## 작업 과정을 공유하는 디자인 실습 - 학생들은 처음부터 Figma에서 직접 디자인하고, 같은 파일 안에서 결과물을 반복적으로 발전시킨다. - 디자인의 변화 과정이 그대로 남기 때문에 학생들은 다음을 수행할 수 있다. - 다른 학생의 작업 과정을 관찰 - 진행 중인 결과물에 피드백 제공 - 동료의 디자인을 리믹스해 새로운 아이디어 실험 - 이러한 방식은 단순히 완성된 결과만 평가하는 것이 아니라, 디자인이 발전하는 과정 자체를 학습 대상으로 만든다. - 여러 디자이너가 하나의 프로젝트를 함께 완성하는 실제 업무 환경에도 익숙해질 수 있다. ## 실시간 피드백과 비동기 지원 - Figma의 댓글, 브라우저 편집 기능, 실시간 공동 작업을 활용해 학생과 강사가 작업 중인 디자인에 바로 의견을 남길 수 있다. - 학생들은 서로의 디자인에 별표를 남겨 좋은 작업을 투표하거나, 작업 파일을 보며 의견을 교환한다. - 동시에 작업하더라도 각자 파일의 영역에서 독립적으로 디자인할 수 있어, 서로의 작업을 방해하지 않는다. - 즉시 피드백이 필요할 때는 강사나 동료를 불러 같은 파일에서 직접 픽셀을 수정하며 논의할 수 있다. - 반대로 집중이 필요한 경우에는 다른 사람의 작업을 관찰만 하거나, 나중에 댓글을 남기는 비동기 방식도 가능하다. - 이 구조는 참여자 모두가 아이디어를 제공하면서도 학습자의 작업 자율성을 보장한다. ## 학습 결과물을 포트폴리오로 축적 - Lambda School은 수업뿐 아니라 취업까지 지원하며, 학생들이 자신의 역량을 고용주에게 보여줄 포트폴리오를 만들도록 돕는다. - Figma에서는 학생들의 디자인이 생성, 수정, 저장되는 과정이 지속적으로 기록된다. - 따라서 학생들은 오래된 파일을 찾아 정리하지 않아도 학습 과정과 최종 결과물을 포트폴리오에 활용할 수 있다. - 동료들의 작업에도 계속 접근할 수 있어 수업이 끝난 뒤에도 서로의 디자인에서 학습할 수 있다. - 결과적으로 학습 기록, 협업 과정, 최종 산출물이 하나의 작업 공간에 함께 남는다. ## 실용적인 결론 원격 디자인 교육에서는 화상회의만 제공하는 것보다 공동 편집, 실시간 피드백, 비동기 댓글, 작업 이력 보존 기능을 함께 구성하는 것이 효과적이다. 특히 학습자가 결과물뿐 아니라 제작 과정까지 기록할 수 있는 도구를 사용하면 수업 참여와 포트폴리오 준비를 동시에 달성할 수 있다.

원문 읽기(새 탭에서 열림)