우리는 코드처럼 문화도 리팩토링한다 (새 탭에서 열림)

배달의민족 커머스웹프론트개발팀은 조직 규모 확대에 따른 복잡도와 비효율을 해결하기 위해 문화를 코드처럼 리팩토링하며 '경계 없는 파트' 구조를 도입했습니다. 특정 도메인이나 서비스에 갇히지 않고 책임을 확장하는 R&E(Responsibility & Expandability) 원칙을 통해 기술적 통합과 조직의 유연성을 동시에 확보했습니다. 이러한 시도는 서비스 간 장벽을 허물고 구성원들이 커머스 전반을 조망하는 엔지니어로 성장하며, 비즈니스 요구에 기민하게 대응하는 결과로 이어졌습니다. ### 경계 없는 파트와 R&E 중심의 조직 구성 * **전통적 분할 방식의 탈피**: 프로젝트, 페이지, 서비스(B마트/배민스토어) 단위로 조직을 나눌 경우 발생하는 리소스 불균형과 도메인 파편화 문제를 해결하기 위해 고정된 경계를 제거했습니다. * **R&E(Responsibility & Expandability) 도입**: 단순히 주어진 역할만 수행하는 R&R을 넘어, 문제 해결을 위해 업무 영역을 스스로 확장하고 동료를 돕는 'Own It' 정신을 조직 구조에 이식했습니다. * **유연한 리소스 배분**: 약 20명의 프론트엔드 개발자를 3개 파트로 나누되, 특정 도메인에 종속시키지 않고 팀 상황에 따라 업무를 배분하여 병목 현상을 최소화했습니다. ### 기술적 통합을 통한 도메인 확장성 확보 * **통합 아키텍처 구축**: B마트와 배민스토어의 상품 카드 및 상세 화면 등 유사한 UI/UX를 공통 모듈로 추상화하고 API 구조를 맞춤으로써 코드 베이스의 일관성을 확보했습니다. * **엔지니어링 역량 강화**: 개발자들이 고객 서비스의 UX부터 어드민의 데이터 흐름까지 전방위적인 도메인을 학습하게 하여, 특정 기능 담당자가 아닌 커머스 전체를 이해하는 전문가로 성장하도록 유도했습니다. * **리스크 관리(Bus Factor 개선)**: 특정 인원이 부재하더라도 다른 팀원이 맥락을 즉시 이어받을 수 있는 구조를 만들어 프로젝트 중단 위험인 '버스 팩터'를 획기적으로 낮췄습니다. ### 지속적인 개선을 위한 소통과 기록의 리팩토링 * **의사결정 자산화(ADR)**: 단순한 기획 공유인 1Pager 방식에서 나아가, 기술적 결정의 배경과 맥락을 기록하는 ADR(Architecture Decision Record)을 도입해 팀의 지식을 체계적으로 관리합니다. * **루틴의 재설계와 자동화**: 반복적인 업무나 귀찮은 과정을 레거시로 남기지 않고, 자동화와 프로세스 개선을 통해 개발 효율성을 지속적으로 높입니다. * **심리적 안전감 기반의 협업**: '불판'과 같은 자유로운 논의 문화를 통해 실패를 과정으로 수용하고, 질문이 스터디로 이어지는 선순환 구조를 구축했습니다. 성장하는 조직에서 발생하는 비효율을 방치하지 않고, 코드 리팩토링과 같은 관점에서 구조와 문화를 끊임없이 개선하는 태도가 중요합니다. 특히 도메인 간 경계를 허무는 시도는 대규모 서비스 통합이라는 복잡한 비즈니스 과제를 해결하는 데 매우 강력한 전략이 될 수 있습니다.

당근 데이터 지도를 그리다: 컬럼 레벨 리니지 구축기 (새 탭에서 열림)

당근마켓(당근) 데이터 가치화팀은 데이터의 흐름을 투명하게 파악하여 신뢰성을 높이기 위해 SQL 파싱 기반의 **컬럼 레벨 데이터 리니지(Column-level Lineage)** 시스템을 구축했습니다. 기존의 테이블 단위 추적으로는 해결하기 어려웠던 연쇄 장애 대응과 민감 정보(PII) 관리 문제를 해결하기 위해, 모든 BigQuery 쿼리 로그를 분석하여 데이터 간의 세부 의존 관계를 시각화했습니다. 이를 통해 당근의 복잡한 데이터 생태계에서 변경 영향도를 정교하게 분석하고 장애 복구 시간을 단축하는 성과를 거두었습니다. ### 데이터 흐름의 불투명성으로 인한 문제점 * **연쇄 실패 대응의 어려움**: 특정 테이블의 파이프라인이 실패했을 때 이를 참조하는 하위 테이블들을 즉각 파악할 수 없어, 수동으로 쿼리를 전수 조사하며 문제를 해결해야 했습니다. * **스키마 변경의 불확실성**: 원천 데이터(MySQL 등)의 컬럼을 삭제하거나 타입을 변경할 때, 해당 컬럼을 사용하는 수많은 파생 테이블 중 어떤 곳에 장애가 발생할지 예측하기 어려웠습니다. * **민감 정보 추적 불가**: PII(개인정보)가 여러 가공 단계를 거치며 어떤 테이블의 어떤 컬럼으로 흘러가는지 파악되지 않아 보안 관리 측면에서 한계가 있었습니다. ### 컬럼 레벨 리니지 도입의 기술적 의사결정 * **테이블 레벨의 한계**: BigQuery의 기본 기능을 통한 테이블 단위 추적은 뷰(View)의 기저 테이블을 정확히 파악하기 어렵고, 세부 컬럼의 변화를 감지하지 못하는 단점이 있었습니다. * **오픈소스(OpenLineage) 대비 효율성**: 다양한 조직이 각기 다른 환경(Airflow, 노트북 등)에서 쿼리를 실행하는 당근의 특성상, 모든 환경에 계측 코드를 심는 방식보다는 중앙화된 BigQuery 로그를 분석하는 방식이 운영 부담이 적다고 판단했습니다. * **SQL 파싱 접근법**: 실행된 모든 SQL의 이력이 남는 `INFORMATION_SCHEMA.JOBS` 뷰를 활용하여, 실행 환경과 관계없이 모든 쿼리로부터 의존성을 추출하는 방식을 채택했습니다. ### 시스템 아키텍처 및 추출 프로세스 * **기술 스택**: 대량의 쿼리 병렬 처리를 위해 **Spark**를 활용하고, SQL 파싱 및 AST(Abstract Syntax Tree) 분석을 위해 **sqlglot** 라이브러리를 사용하며, **Airflow**로 주기적인 추출 프로세스를 자동화했습니다. * **데이터 수집 및 분석**: 모든 GCP 프로젝트에서 쿼리 로그를 수집한 뒤, sqlglot으로 쿼리 구조를 분석하여 `Source Column -> Target Column` 관계를 도출합니다. * **엣지 케이스 처리**: `SELECT *`와 같은 와일드카드 쿼리는 테이블 메타데이터를 결합해 실제 컬럼명으로 확장하고, 복잡한 CTE(Common Table Expressions)나 서브쿼리 내의 의존성도 AST 탐색을 통해 정확하게 추적합니다. ### 데이터 지도를 통한 실질적 변화 * **정교한 영향도 분석**: 특정 컬럼 수정 시 다운스트림에서 이를 참조하는 모든 컬럼을 즉시 확인하여 사전에 장애를 예방할 수 있게 되었습니다. * **거버넌스 강화**: 데이터의 원천부터 최종 활용 단계까지의 흐름을 시각화함으로써 데이터 가계도(Data Genealogy)를 완성하고, 데이터 보안 및 품질 관리 수준을 한 단계 높였습니다. * **운영 효율화**: 장애 발생 시 영향 범위를 데이터 지도를 통해 한눈에 파악함으로써 원인 파악과 복구에 소요되는 리소스를 획기적으로 줄였습니다. 데이터 플랫폼의 규모가 커질수록 수동 관리는 불가능해지므로, 초기부터 SQL 로그를 활용한 자동화된 리니지 체계를 구축하는 것이 중요합니다. 특히 실행 환경이 파편화된 조직일수록 애플리케이션 계측보다는 쿼리 엔진의 로그를 파싱하는 접근법이 빠른 도입과 높은 커버리지를 확보하는 데 유리합니다.

핀터레스트 검색 (새 탭에서 열림)

핀터레스트(Pinterest)는 검색 결과의 관련성을 측정하기 위해 기존의 고비용 휴먼 레이블링(Human Labeling) 방식 대신 미세 조정된 대규모 언어 모델(LLM)을 도입했습니다. 이를 통해 관련성 평가의 비용과 시간을 대폭 절감하는 동시에, 측정 가능한 최소 탐지 효과(MDE)를 1.5%에서 0.25% 이하로 낮추어 정밀한 A/B 테스트 분석이 가능해졌습니다. 결과적으로 핀터레스트는 LLM의 확장성을 활용해 더욱 정교한 샘플링 설계를 구현하고 검색 품질을 지속적으로 개선할 수 있는 기반을 마련했습니다. ### 미세 조정된 LLM 기반의 관련성 예측 모델링 * **모델 구조 및 학습**: 다국어 지원이 가능한 오픈소스 LLM(XLM-RoBERTa-large 등)을 교차 인코더(Cross-encoder) 구조로 활용하여 쿼리와 핀(Pin) 사이의 의미론적 관련성을 5단계(L1~L5)로 분류하도록 미세 조정했습니다. * **풍부한 특징량(Features) 활용**: 관련성 평가의 정확도를 높이기 위해 핀의 제목과 설명뿐만 아니라 BLIP 이미지 캡션, 링크된 페이지의 제목, 사용자가 저장한 보드 이름, 그리고 해당 핀에 대해 높은 참여도를 보인 쿼리 토큰 등을 텍스트 특징으로 사용합니다. * **효율성과 성능의 균형**: Llama-3-8B 모델이 정확도는 소폭 높았으나, 추론 비용과 속도를 고려하여 30분 내에 15만 건의 데이터를 처리할 수 있는 XLM-RoBERTa-large를 최종 모델로 선택했습니다. ### 계층화된 샘플링(Stratified Sampling)을 통한 측정 민감도 개선 * **샘플링 설계의 진화**: 과거에는 휴먼 레이블링의 비용 문제로 단순 무작위 샘플링(SRS)을 사용했으나, LLM 도입 후에는 쿼리의 인기도와 관심사(Interest)를 기준으로 한 계층화된 샘플링을 도입했습니다. * **분산 감소 및 MDE 최적화**: 쿼리 간의 변동성을 통제하는 계층화된 샘플링과 표본 크기 확대를 통해 MDE를 0.25% 이하로 크게 줄였으며, 이는 실험 시스템의 민감도를 6배 이상 향상시킨 결과로 이어졌습니다. * **이질적 처치 효과(Heterogeneous Treatment Effects) 측정**: 인기도나 특정 주제별로 샘플을 나누어 분석함으로써, 전체 평균 지표에 가려질 수 있는 특정 세그먼트의 검색 품질 변화를 정밀하게 파악합니다. ### 온라인 A/B 테스트와 실험 지표 산출 방식 * **페어링된 쿼리 샘플링**: 대조군(Control)과 실험군(Treatment)에서 동일하게 발생한 쿼리를 페어링하여 샘플링함으로써 쿼리 간의 차이로 인한 변동성을 차단합니다. * **sDCG@K 지표 활용**: 관련성 레이블을 기반으로 sDCG(Scaled Discounted Cumulative Gain)를 계산합니다. 이때 관련성이 높은 문서(L5)가 무한히 공급된다고 가정하는 sDCG 방식을 사용하여 상위 25개 결과의 품질을 측정합니다. * **휴먼 레이블과의 정렬성 검증**: 검증 결과 LLM 레이블과 휴먼 레이블의 완전 일치율은 73.7%에 달하며, 1점 이내 오차 범위까지 포함하면 91.7%의 높은 일치 수준을 보여 모델의 신뢰성을 확보했습니다. 성공적인 검색 시스템 운영을 위해서는 정밀한 측정 도구가 필수적입니다. 핀터레스트의 사례처럼 LLM을 활용해 관련성 평가를 자동화하면, 기존의 비용 한계를 극복하고 더 큰 표본과 정교한 통계적 설계를 통해 미세한 순위 모델의 개선 사항까지도 정확하게 포착할 수 있습니다.

Athenz 엔지니어는 왜 Kubestronaut에 도전했는가? (새 탭에서 열림)

보안 플랫폼 Athenz를 담당하는 엔지니어가 쿠버네티스 전문가의 상징인 'Kubestronaut' 칭호를 얻기까지의 도전과 성장을 다루고 있습니다. 실무에서 마주한 기술적 한계를 극복하기 위해 시작된 이 여정은 단순한 자격증 취득을 넘어 클러스터 운영, 보안, 그리고 오픈소스 거버넌스에 대한 깊은 통찰로 이어졌습니다. 결국 체계적인 학습으로 쌓은 전문 지식은 더 견고한 아키텍처를 설계하고 팀의 기술적 역량을 끌어올리는 핵심 자산이 되었습니다. **Kubestronaut과 5단계 인증 체계** * Kubestronaut은 CNCF(Cloud Native Computing Foundation)에서 수여하는 칭호로, 쿠버네티스 관련 5가지 핵심 자격증을 모두 보유한 전문가를 의미합니다. * 인증 자격은 실무 능력을 평가하는 실습형 시험인 CKA(관리자), CKAD(개발자), CKS(보안)와 지식 수준을 측정하는 KCSA, KCNA로 구성됩니다. * 특히 CKA, CKAD, CKS는 실제 터미널 환경에서 제한 시간 내에 문제를 해결해야 하므로 국제적으로 실무 역량을 입증하는 지표가 됩니다. **역할에 따른 단계별 역량 확장** * **CKAD(Application Developer):** Athenz라는 애플리케이션을 쿠버네티스에 안정적으로 배포하기 위해 가장 먼저 취득했으며, 상황 파악 및 대응 속도를 높이는 데 집중했습니다. * **CKA(Administrator):** 여러 클러스터를 관리하고 매니페스트 파일을 분석하는 능력을 배양했습니다. 쿠버네티스 내부 컴포넌트 간의 유기적인 연동 원리를 파악하여 대규모 시스템 설계의 기초를 다졌습니다. * **CKS(Security Specialist):** 보안 플랫폼 담당자로서 클러스터 자체의 보안을 책임지기 위해 도전했습니다. 취약점 분석, 네트워크 정책 설정 등 실무적인 클러스터 강화 기술을 습득한 가장 난도 높은 과정이었습니다. **전문 지식이 실무에 미친 영향** * 오픈소스 거버넌스 이해: SIG(Special Interest Groups)나 PR 규칙 등 거대 프로젝트의 운영 방식을 체계적으로 이해하게 되었으며, 이는 Athenz 프로젝트의 성장 전략 수립에 영감을 주었습니다. * 아키텍처 설계 역량: 최근 진행 중인 'BMaaS(Bare Metal as a Service) 환경에 Athenz 제공' 프로젝트에서 더 안정적이고 효율적인 구조를 설계하고 동료들을 설득하는 근거가 되었습니다. * 문제 해결 속도 향상: 실습 위주의 준비 과정을 통해 실무 환경에서 발생하는 기술적 난제를 더 빠르고 정확하게 진단할 수 있게 되었습니다. **지속 가능한 성장을 돕는 환경과 철학** * '우보천리(牛步千里)'의 자세로 매일 새벽 공부와 GitHub 커밋을 실천하며 꾸준함을 유지했습니다. * 회사의 Udemy Business 지원, 하이브리드 근무 환경, 그리고 자격 취득 비용 지원 제도 등을 적극적으로 활용하여 학습 효율을 높였습니다. * 단순 작업을 넘어 시스템 전체의 이상적인 아키텍처를 고민하고 토론하는 팀 문화가 성장의 강력한 동기부여가 되었습니다. 쿠버네티스의 방대한 생태계 앞에서 망설이고 있다면, 자격증 취득을 하나의 이정표로 삼아 도전해 보길 권장합니다. 단계별 학습을 통해 얻는 넓은 시야와 깊은 기술적 디테일은 엔지니어로서 한 단계 더 도약할 수 있는 확실한 발판이 되어줄 것입니다.

Figma의 정밀한 (새 탭에서 열림)

Figma의 AI 기반 디자인 도구인 'Figma Make'에 최신 모델인 Gemini 3 Pro가 탑재되었습니다. 이번 업데이트는 더욱 정교한 자연어 이해와 추론 능력을 바탕으로, 디자이너가 구상하는 복잡한 아이디어를 즉각적인 디자인 결과물로 시각화하는 데 중점을 둡니다. 이를 통해 디자인 워크플로우의 병목 현상을 해결하고, 프로토타이핑 단계에서의 생산성을 획기적으로 높일 수 있게 되었습니다. **Gemini 3 Pro 기반의 디자인 생성 기능 고도화** * **프롬프트 해석 정밀도 향상:** Gemini 3 Pro의 강력한 언어 모델링을 통해 모호한 자연어 명령에서도 디자이너의 의도를 정확히 파악하여 레이아웃과 컴포넌트를 구성합니다. * **문맥 인지형 디자인:** 기존 디자인 시스템과 가이드라인을 학습하여, 현재 작업 중인 프로젝트의 맥락에 어울리는 일관성 있는 디자인 에셋을 제안합니다. * **다양한 변주 생성:** 단일 프롬프트로부터 여러 개의 시각적 대안을 신속하게 생성하여, A/B 테스트나 아이디어 발산 단계에서 시간을 크게 단축합니다. **지능형 프로토타이핑과 논리적 설계** * **상호작용 자동화:** 정적인 화면 설계를 분석하여 버튼 클릭, 화면 전환 등 복잡한 프로토타입 상호작용(Interaction)을 자동으로 설정합니다. * **논리적 흐름 검증:** 유저 플로우 설계 시 Gemini 3 Pro의 추론 능력을 활용해 누락된 화면이나 논리적 오류를 찾아내고 최적의 사용자 경험(UX) 경로를 추천합니다. * **멀티모달 데이터 활용:** 텍스트뿐만 아니라 이미지와 기존 디자인 데이터를 동시에 처리하여, 시각적 단서로부터 기능적인 프로토타입을 도출하는 능력이 강화되었습니다. 디자이너들은 이제 단순 반복적인 레이아웃 작업에서 벗어나 더 고차원적인 제품 전략과 창의적 기획에 집중할 수 있습니다. Gemini 3 Pro가 적용된 Figma Make를 활용해 초기 아이데이션 단계에서 다양한 프로토타입을 빠르게 검증하고, 디자인 시스템과의 정렬을 자동화함으로써 제품 출시 주기를 단축해 보시기 바랍니다.

업무 효율화, 작은 단계부터 다시 보기 (새 탭에서 열림)

토스 리서치 플랫폼 팀은 업무 효율화를 거창한 시스템 구축이 아닌, 개별 액션 단위의 세밀한 분석과 점진적인 개선 과정으로 정의합니다. 프로세스를 잘게 쪼개어 불필요한 단계를 제거하고 반복되는 작은 작업을 자동화함으로써, 팀 전체의 리소스를 절약하고 더 본질적인 리서치 업무에 집중할 수 있는 환경을 구축했습니다. 이를 통해 효율화는 완벽한 결과물을 한 번에 만드는 것이 아니라, 사소한 불편함을 꾸준히 덜어내는 과정임을 증명했습니다. ### 액션 단위의 정밀한 현황 파악 * 프로세스를 단순히 단계별로 나열하는 '겉핥기식 정리'에서 벗어나, '누가, 어디서(툴/채널), 무엇을, 왜' 하는지 구체적인 개별 액션으로 쪼개어 분석합니다. * 시간, 담당자, 도구 등 일관된 기준을 적용하여 과정을 정리해야 예외 상황을 명확히 파악하고 읽는 사람이 오해 없이 이해할 수 있습니다. * 가끔 발생하는 예외 케이스까지 함께 정리함으로써 기존 프로세스의 부족한 점을 보완하는 힌트를 얻습니다. ### 본질적인 질문을 통한 문제 정의 * 각 액션에 대해 "이 작업이 왜 필요한가?"라는 질문을 던져, 목적이 불분명한 단계는 과감히 삭제하고 꼭 필요한 단계는 더 쉬운 방법을 모색합니다. * 예를 들어, 인터뷰 일정 생성은 자동화하되 팀원들이 이미 캘린더를 잘 확인한다면 별도의 메시지 전송 단계는 생략하는 식의 의사결정을 내립니다. * 개별적으로는 몇 초 걸리지 않는 사소한 업무라도 여러 사람이 반복하면 큰 비효율이 되므로, 반복되는 작은 액션을 줄이는 데 집중합니다. ### 이해관계자 중심의 우선순위 선정 * 우선순위를 정할 때는 자신의 리소스나 시급성뿐만 아니라 '많은 사람에게 영향을 미치는지', '다른 업무에 연관되는지', '소요 시간이 얼마나 긴지'를 종합적으로 판단합니다. * 내 업무에는 큰 영향이 없더라도 운영 담당자나 협업자의 더블 체크 시간을 줄여줄 수 있다면 해당 업무를 우선 개선 대상으로 삼습니다. * '내 기준'이 아닌 이 일에 영향을 받는 '모든 이해관계자'의 관점에서 임팩트를 측정하는 것이 핵심입니다. ### 리스크를 최소화하는 점진적 해결책 적용 * 처음부터 모든 과정을 완벽하게 자동화하려 하기보다, 현재 기술로 가능한 작은 부분부터 개선을 시작합니다. * 새로운 방식 도입이 우려될 경우 전체에 바로 적용하기보다 일부 케이스에만 테스트 기간을 두어 점진적으로 적용하며 피드백을 수렴합니다. * 완벽한 준비보다는 '언제든 이전 방식으로 돌아갈 수 있다'는 유연한 사고를 바탕으로 작은 실험을 반복하며 해결책을 정교화합니다. 업무 효율화가 막막하게 느껴진다면 지금 하고 있는 일을 클릭, 입력, 공유와 같은 최소 단위로 쪼개보세요. 거대한 시스템을 새로 만들지 않아도, 매일 반복되는 자잘한 수고를 덜어내는 것만으로도 팀 전체에 체감되는 큰 변화를 만들어낼 수 있습니다.

AI 챗봇 사용 인사 (새 탭에서 열림)

Google Research가 발표한 'Urania' 프레임워크는 차분 프라이버시(Differential Privacy, DP)를 활용하여 사용자 대화의 비밀을 엄격하게 보호하면서도 AI 챗봇 사용 패턴에 대한 고차원적인 인사이트를 도출합니다. 기존의 휴리스틱한 개인정보 제거 방식과 달리, 이 모델은 수학적으로 증명된 프라이버시 보장을 제공하여 특정 개인의 데이터가 분석 결과에 노출되는 것을 원천적으로 차단합니다. 이를 통해 플랫폼 운영자는 프라이버시 침해 우려 없이 서비스 개선 및 안전 정책 준수를 위한 대규모 언어 모델(LLM) 사용 트렌드를 분석할 수 있습니다. **기존 방식의 한계와 수학적 프라이버시의 도입** * 기존의 CLIO와 같은 프레임워크는 LLM이 대화에서 개인식별정보(PII)를 스스로 제거하도록 유도하는 휴리스틱 방식에 의존하여, 모델 진화에 따른 보안 유지나 엄격한 감사가 어려웠습니다. * Urania는 차분 프라이버시의 '사후 처리(Post-processing)'와 '합성(Composition)' 속성을 활용하여, 파이프라인의 각 단계에서 발생하는 프라이버시 손실을 수학적 예산(ε) 내에서 관리합니다. * 이러한 접근법은 프롬프트 주입 공격(Prompt Injection)과 같은 위협으로부터 자유로우며, LLM이 원본 대화 내용을 직접 보지 못하게 설계되어 보안성을 극대화합니다. **3단계 데이터 보호 파이프라인 구성** * **DP 클러스터링**: 대화 내용을 수치적 임베딩으로 변환한 뒤, 특정 대화가 클러스터 중심에 과도한 영향을 미치지 않도록 제한하는 알고리즘을 사용하여 유사한 대화들을 그룹화합니다. * **DP 키워드 추출**: 클러스터 내에서 빈번하게 등장하는 키워드를 집계할 때 노이즈를 추가하는 히스토그램 메커니즘을 적용하여, 여러 사용자에게 공통된 키워드만 추출하고 고유한 민감 정보는 걸러냅니다. * LLM 가이드 선택: LLM이 대화별로 상위 5개 키워드를 생성하게 함. * DP TF-IDF: 단어 빈도와 문서 역빈도를 계산하여 가중치를 부여하는 전통적 방식의 DP 버전. * 사전 정의 목록 활용: 공개 데이터를 통해 구축된 키워드 후보군 중에서 LLM이 적합한 항목을 선택하게 함. * **LLM 기반 요약**: 요약 단계의 LLM은 원본 대화가 아닌 익명화된 '키워드 리스트'만을 입력받아 최종 인사이트를 생성하며, 이는 프라이버시 보존 결과물에 대한 안전한 사후 처리에 해당합니다. **프라이버시와 분석 유용성의 균형** * 성능 평가 결과, 프라이버시 보호 강도(낮은 ε 값)가 높을수록 요약의 구체성은 다소 하락하는 트레이드오프 관계가 관찰되었습니다. * 그럼에도 불구하고 Urania는 단순한 비공개 방식(Simple-CLIO)과 비교했을 때, 수학적 안전성을 담보하면서도 실무에 적용 가능한 수준의 고차원적 사용 패턴 요약을 제공함을 입증했습니다. * 이 프레임워크는 데이터 분석의 품질을 유지하면서도 사용자의 신뢰를 보장해야 하는 기술 기업들에게 표준화된 개인정보 보호 분석 가이드라인을 제시합니다. 조직에서 대규모 챗봇 데이터를 분석해야 한다면, 단순히 LLM의 필터링 능력에 의존하기보다 Urania와 같이 수학적으로 증명된 차분 프라이버시 파이프라인을 구축하는 것이 장기적인 보안 및 규제 대응 측면에서 권장됩니다.

AWS 주간 요약: AWS re (새 탭에서 열림)

AWS re:Invent 2025는 단순한 기술 발표를 넘어 AI 어시스턴트가 자율적인 'AI 에이전트'로 진화하는 중대한 변곡점을 시사했습니다. AWS는 개발자들에게 발명의 자유를 제공한다는 핵심 미션을 재확인하며, 자연어로 복잡한 작업을 수행하고 코드를 실행하는 에이전트 중심의 미래 비전을 제시했습니다. 이번 행사는 AI 투자가 실질적인 비즈니스 가치로 전환되는 시점에서 보안, 가용성, 성능이라는 클라우드의 본질적 가치를 다시 한번 강조했습니다. **AI 에이전트 중심의 비즈니스 혁신** * **어시스턴트에서 에이전트로의 진화:** 단순한 답변 제공을 넘어 스스로 계획을 세우고, 코드를 작성하며, 필요한 도구를 호출해 작업을 완수하는 자율형 에이전트가 핵심 기술로 부상했습니다. * **실질적 비즈니스 수익 창출:** AI가 단순한 실험 단계를 지나 기업의 업무를 자동화하고 효율성을 높임으로써 구체적인 재무적 성과를 내기 시작하는 단계에 진입했습니다. * **비결정적 특성에 최적화된 인프라:** 결과가 매번 다를 수 있는 AI 에이전트의 특성(Non-deterministic)을 고려하여, 안전하고 신뢰할 수 있으며 확장이 용이한 전용 인프라를 구축하고 있습니다. **아키텍트의 르네상스와 개발자 생태계** * **설계 역량의 재발견:** 기술적 세부 사항에 매몰되기보다 시스템 전체를 조망하고 설계하는 고수준 아키텍처 역량이 중요해진 '아키텍트의 르네상스' 시대가 도래했습니다. * **커뮤니티 기여의 가치:** 필리핀의 AWS 히어로 라피(Rafi)가 'Now Go Build' 상을 수상한 사례를 통해, 기술 혁신만큼이나 커뮤니티 빌딩과 개발자 역량 강화가 중요함을 강조했습니다. * **발명의 자유(Freedom to Invent):** 지난 20년간 AWS의 중심이었던 개발자들이 창의성을 발휘할 수 있도록 도구와 환경을 제공하는 것이 AWS의 변함없는 목표임을 천명했습니다. **클라우드 기반 기술의 지속적 고도화** * **커스텀 실리콘과 인프라:** 보안, 가용성, 성능이라는 클라우드의 기본 속성을 유지하면서도 AI 워크로드에 최적화된 하드웨어 혁신을 지속하고 있습니다. * **자연어 기반 솔루션 구현:** 사용자가 달성하고자 하는 목적을 자연어로 설명하면 시스템이 실행 가능한 솔루션으로 변환하는 인터페이스의 혁신이 가속화되고 있습니다. AI 에이전트가 주도하는 기술 환경 변화에 대응하기 위해, 기업들은 단순한 챗봇 도입을 넘어 비즈니스 프로세스 자체를 자동화할 수 있는 에이전트 활용 전략을 수립해야 합니다. AWS re:Invent 2025의 주요 세션 영상과 발표 자료가 온디맨드로 제공되고 있으므로, 조직의 요구 사항에 맞는 AI 아키텍처를 재설계하고 새로운 기술 도구들을 선제적으로 검토해 보시길 권장합니다.

Figma AI 크레 (새 탭에서 열림)

Figma가 텍스트 프롬프트를 통해 디자인 초안과 프로토타입을 생성하는 'Figma Make' 기능을 모든 사용자에게 공식 출시했습니다. 이 도구는 디자이너가 아이디어 단계에서 실제 작동하는 결과물까지 도달하는 시간을 획기적으로 단축하여, 반복적인 초기 작업을 줄이고 창의적인 문제 해결에 집중할 수 있도록 돕습니다. 결과적으로 AI를 디자인 워크플로우의 핵심 파트너로 통합함으로써 제품 설계의 진입 장벽을 낮추고 협업의 효율성을 극대화하는 것을 지향합니다. ### 프롬프트 기반의 UI 생성 (Make Designs) * 자연어 설명을 입력하는 것만으로 모바일 앱이나 웹 인터페이스의 레이아웃과 컴포넌트 구성을 즉시 생성할 수 있습니다. * 단순한 정적 이미지를 생성하는 것이 아니라, Figma 내에서 즉시 수정 가능한 레이어, 프레임, 오토 레이아웃 구조로 결과물을 제공합니다. * 디자인 시스템의 구성 요소를 이해하고 이를 바탕으로 초안을 작성하므로, 디자이너는 백지상태에서 시작하는 수고를 덜고 생성된 결과물을 바탕으로 세부적인 커스터마이징을 진행할 수 있습니다. ### 원클릭 프로토타이핑 (Make Prototype) * 여러 개의 정적인 화면 디자인을 지능적으로 분석하여, 화면 간의 흐름(Flow)과 상호작용을 자동으로 연결해 줍니다. * 버튼 클릭이나 화면 전환에 필요한 인터랙션 설정을 AI가 판단하여 구성하므로, 수동으로 수많은 연결선을 그리는 번거로운 작업을 대체합니다. * 아이디어를 실제 작동하는 모델로 빠르게 시각화하여 사용자 테스트나 이해관계자 리뷰에 즉각 활용할 수 있는 속도를 제공합니다. ### 지능적인 콘텐츠 채우기 및 편집 * 'Lorem Ipsum' 같은 의미 없는 텍스트 대신, 디자인 문맥에 맞는 실제적인 카피와 이미지를 자동으로 삽입하여 디자인의 완성도를 높입니다. * 작성된 텍스트의 톤앤매너를 변경하거나, 긴 문장을 요약하고, 디자인 내의 데이터를 실제 서비스 환경과 유사하게 시뮬레이션할 수 있습니다. * 이미지의 배경을 제거하거나 특정 개체를 수정하는 등 디자인 에셋 편집 과정에도 AI가 개입하여 작업 흐름의 끊김을 방지합니다. Figma Make는 디자인의 자동화를 넘어 디자이너의 사고 과정을 가속화하는 도구입니다. 초보 디자이너는 복잡한 도구 사용법을 익히기 전에도 아이디어를 시각화할 수 있고, 숙련된 디자이너는 단순 반복 업무에서 벗어나 전략적인 설계에 더 많은 시간을 할애할 수 있습니다. 생성된 결과물을 브랜드 가이드라인에 맞춰 세밀하게 조정하는 최종 검토 과정을 거친다면, 생산성을 수 배 이상 높일 수 있는 강력한 무기가 될 것입니다.

사업자 데이터 리터러시 높이기: BC Monthly Report 발행기 (새 탭에서 열림)

토스는 각 사업부별로 흩어져 있던 사업자(Business Customer, BC) 데이터를 통합하여 '단일 진실의 근원(SSOT)'인 데이터 마트를 구축하고, 이를 기반으로 전사적인 월간 리포트를 발행하여 비즈니스 의사결정 구조를 혁신했습니다. 이 과정에서 파편화된 지표 정의를 하나로 모으고 현업의 니즈를 반영한 결과, 전사 구성원들이 동일한 기준으로 사업 현황을 파악하고 데이터에 기반해 실질적인 액션 아이템을 도출할 수 있는 환경이 마련되었습니다. 이러한 여정은 단순한 데이터 정리를 넘어 토스 전반의 데이터 리터러시를 높이고 비즈니스 성장을 가속화하는 기폭제가 되었습니다. **단일 진실의 근원(SSOT)을 위한 데이터 마트 구축** * 쇼핑, 광고, 페이 등 각 사업부별로 분산되어 관리되던 사업자 데이터를 통합하여 전사적으로 공통된 언어를 사용하는 'BC 데이터 마트'를 설계했습니다. * 사업부별로 상이했던 매출과 비용 발생 기준을 표준화하기 위해 도메인 담당자들과의 소통을 거쳐 '토스에서 활동하는 사업자'에 대한 명확한 정의를 수립했습니다. * 이를 통해 "이번 달 매출을 발생시킨 사업자가 몇 명인가?"라는 기초적인 질문에 대해 전사가 동일한 숫자로 답변할 수 있는 기술적 기반을 마련했습니다. **통찰을 제공하는 Monthly BC Report 설계 및 자동화** * 데이터의 전파력을 높이기 위해 신규(New), 이탈(Churn), 유지(Retained) 트렌드와 매출 규모별 티어(Tier) 분석을 포함한 월간 리포트를 기획했습니다. * 단순 지표 나열이 아닌, 코호트 리텐션(Cohort Retention) 분석을 통해 플랫폼 만족도를 확인하고, 이탈 가맹점 리스트 등 실무자가 즉시 활용 가능한 로우 데이터(Raw Data)를 함께 제공했습니다. * 데이터 파이프라인은 Airflow를 통해 마트를 구축하고 Jenkins로 배치 작업을 수행하며, 최종적으로 태블로(Tableau)와 SQL을 연동해 매달 자동으로 업데이트되는 환경을 구현했습니다. **현업 피드백을 통한 리포트의 고도화와 데이터 리터러시 확산** * PO, 세일즈 팀장 등 실제 사용자의 니즈를 파악하기 위해 심층 인터뷰를 진행하고, 이를 바탕으로 '회원 가입' 단계 분석이나 도메인 간 활성화 순서 등 구체적인 지표를 리포트에 추가했습니다. * 리포트 발행 이후 사업자 데이터에 대한 전사적 관심이 급증하며, 이탈 가맹점 상세 분석이나 데일리 트래킹 등 후속 심화 분석 프로젝트로 이어지는 성과를 거두었습니다. * 고정된 포맷에 안주하지 않고 매달 현업의 피드백을 반영하여 지표를 개선함으로써, 조직 전체의 데이터 이해도와 활용 능력을 점진적으로 상향 평준화했습니다. 데이터 마트 구축과 리포트 발행은 끝이 아닌 시작이며, 현업과의 지속적인 피드백 루프를 통해 리포트를 ' 살아있는 문서'로 관리하는 것이 중요합니다. 조직 내 데이터 리터러시를 높이고 싶다면 표준화된 지표 정의부터 시작해 구성원들이 실제 업무에 바로 적용할 수 있는 액션 중심의 데이터를 제공하는 단계적 접근이 필요합니다.

디자인시스템이 AI를 만났을 때: FE 개발 패러다임의 변화 (새 탭에서 열림)

디자인 시스템과 AI의 결합은 단순한 도구의 조합을 넘어 프론트엔드(FE) 개발의 마크업 작업 방식을 근본적으로 혁신하고 있습니다. 네이버파이낸셜은 체계적으로 구축된 디자인 시스템을 기반으로 AI를 활용해 마크업 과정을 자동화함으로써 반복적인 코딩 시간을 단축하고 개발 효율성을 극대화했습니다. 다만, AI가 생성한 결과물을 실무에 즉시 투입하기 위해서는 디자인 토큰의 정교한 관리와 개발자의 세밀한 조정 작업이 반드시 병행되어야 한다는 점을 시사합니다. **네이버파이낸셜 디자인시스템의 근간: 토큰과 컴포넌트** * 디자인 시스템의 핵심인 '디자인 토큰'을 통해 색상, 간격, 폰트 등의 시각적 요소를 정의하고 디자이너와 개발자가 동일한 언어를 사용하도록 환경을 구축했습니다. * 재사용 가능한 UI 컴포넌트 단위를 명확히 정의하여, AI가 일관성 있는 코드를 생성할 수 있는 구조적 토대를 마련했습니다. * 단순한 UI 라이브러리를 넘어, 디자인 시스템 자체가 AI가 학습하고 참조할 수 있는 '신뢰할 수 있는 단일 소스(Single Source of Truth)' 역할을 수행합니다. **AI 마크업 효율을 극대화하는 Code Connect와 인스트럭션** * Figma의 'Code Connect' 기능을 활용해 디자인 도구 내의 컴포넌트와 실제 리액트(React) 코드를 직접 연결하여 AI가 맥락에 맞는 코드를 제안하도록 설계했습니다. * 디자인 시스템의 고유한 규칙과 코딩 컨벤션을 담은 상세한 '인스트럭션(Instruction)'을 AI에게 제공함으로써, 범용적인 코드가 아닌 팀의 표준에 부합하는 결과물을 얻어냈습니다. * 이 과정을 통해 개발자는 빈 화면에서 시작하는 대신, AI가 생성한 초안을 바탕으로 비즈니스 로직 구현에 더 집중할 수 있게 되었습니다. **현실적인 개발 도입 과정에서의 한계와 극복** * AI가 존재하지 않는 컴포넌트를 만들어내거나 잘못된 속성을 사용하는 '할루시네이션(환각)' 현상이 여전히 발생하여 개발자의 검토 과정이 필수적입니다. * 복잡한 레이아웃이나 고도의 인터랙션이 포함된 화면의 경우, AI가 단번에 완벽한 마크업을 생성하기 어렵다는 점을 확인했습니다. * 마크업 자동화가 성공하기 위해서는 단순히 AI 툴을 쓰는 것을 넘어, 디자인 시스템의 코드 품질과 문서화 수준이 먼저 뒷받침되어야 함을 실증했습니다. **마크업 자동화 이후의 FE 개발자 역할 변화** * 과거에 직접 태그를 입력하고 스타일을 잡던 수동적인 마크업 작업의 비중이 줄어들고, 생성된 코드를 조립하고 검증하는 '오케스트레이터'로서의 역할이 강조됩니다. * 단순 반복 작업에서 벗어나 더 복잡한 비즈니스 문제 해결과 사용자 경험(UX) 고도화에 개발 자원을 투입할 수 있는 환경이 조성되었습니다. * 결과적으로 AI는 개발자의 대체제가 아니라, 디자인 시스템이라는 약속된 규칙 위에서 함께 협업하는 강력한 동료로서 기능하게 됩니다. 성공적인 AI 기반 개발 환경을 구축하려면 디자인 시스템을 단순한 가이드가 아니라 **AI가 읽을 수 있는 데이터 구조**로 정교화하는 선행 작업이 가장 중요합니다. AI에게 맡길 영역과 개발자가 직접 제어할 영역을 명확히 구분하고, 코드 리뷰 단계를 강화하여 코드 품질을 유지하는 전략이 권장됩니다.

핀터레스트가 AI를 (새 탭에서 열림)

핀터레스트는 플랫폼 내 유해 콘텐츠 노출 정도를 실시간으로 파악하기 위해 사용자 신고 중심의 지표를 넘어선 '유포율(Prevalence)' 측정 시스템을 구축했습니다. 머신러닝 기반의 가중치 샘플링과 멀티모달 LLM을 결합한 이 시스템은 기존 인적 검토 방식보다 15배 빠른 속도와 낮은 비용으로 매일 노출 위반 사례를 통계적으로 산출합니다. 이를 통해 핀터레스트는 정책 위반 콘텐츠가 사용자에게 미치는 실제 영향력을 정밀하게 모니터링하고 즉각적인 개선 조치를 취할 수 있는 기술적 토대를 마련했습니다. ## 유해 콘텐츠 유포율(Prevalence) 측정의 필요성 * **신고 데이터의 한계 극복:** 자해 콘텐츠와 같이 낙인이 찍힌 분야는 사용자가 신고를 꺼리는 경향이 있으며, 유해 콘텐츠를 직접 찾아보는 사용자는 신고를 하지 않으므로 신고 데이터만으로는 플랫폼의 안전성을 정확히 측정할 수 없습니다. * **노출 중심의 지표 수립:** 콘텐츠의 절대적인 개수보다 해당 콘텐츠가 사용자에게 몇 번 노출되었는지가 중요하므로, '전체 조회수 대비 정책 위반 콘텐츠의 조회수'를 핵심 지표로 정의했습니다. * **기존 인적 검토의 제약 해결:** 과거에는 수동 검토 비용 문제로 6개월마다 간헐적인 조사를 수행했으나, 이는 대응 속도가 느리고 통계적 일관성을 유지하기 어려웠습니다. ## 효율적이고 정교한 ML 기반 샘플링 기법 * **가중치 부여 저수조 샘플링(Weighted Reservoir Sampling):** 일일 노출 스트림에서 위험 점수(Risk Score)와 노출 수가 높은 콘텐츠를 우선적으로 샘플링하여 효율성을 높였습니다. * **편향 없는 통계 추정:** 샘플링 과정에서 발생하는 편향을 제거하기 위해 역확률 가중치(Inverse-probability weighting)를 적용했으며, Hansen–Hurwitz 및 Horvitz–Thompson 비율을 활용해 통계적 일관성을 확보했습니다. * **결측치 처리:** 위험 점수가 없는 신규 콘텐츠의 경우 당일의 중앙값을 할당하여 측정 범위에서 누락되지 않도록 방지하는 안전장치를 마련했습니다. ## 멀티모달 LLM을 통한 대규모 레이블링 자동화 * **속도와 비용의 획기적 개선:** 이미지와 텍스트를 동시에 이해하는 멀티모달 LLM을 활용해 판독 프로세스를 자동화함으로써 인적 검토 대비 15배 빠른 처리 속도와 수십 배 낮은 운영 비용을 달성했습니다. * **전문가 가이드라인 반영:** 정책 전문가(SME)가 검토한 프롬프트를 사용하며, 모델이 내린 결정의 근거와 정책 버전, 모델 ID 등 전체 계보(Lineage)를 기록하여 감사 가능성을 높였습니다. * **지속적인 보정 및 검증:** LLM의 판독 결과가 전문가의 기준(Gold Sets)에서 벗어나지 않도록 주기적인 인간 검증을 수행하며, 모델 드리프트(Drift)를 감시하여 측정의 신뢰도를 유지합니다. ## 시스템 운영 및 가시화 * **대시보드와 알림:** 매일 산출되는 유포율을 95% 신뢰구간(CI)과 함께 시각화하며, 정책 영역별(성인물, 자해, 폭력 등), 서비스 영역별(홈피드, 검색 등)로 세분화하여 분석할 수 있는 기능을 제공합니다. * **확장성 있는 구조:** 특정 LLM에 종속되지 않는 모델 불가지론적(Model-agnostic) 구조를 채택하여 향후 더 성능이 좋은 AI 모델로 손쉽게 교체할 수 있도록 설계했습니다. 이 시스템은 대규모 플랫폼이 AI를 활용하여 정책 위반 콘텐츠를 단순히 차단하는 것을 넘어, 플랫폼 전체의 안전 수준을 어떻게 데이터화하고 관리할 수 있는지에 대한 실질적인 방법론을 제시합니다. 특히 통계적 샘플링과 최신 AI 모델을 결합하여 비용 효율성과 정확성을 동시에 잡은 점이 돋보입니다.

매번 다 퍼올 필요 없잖아? 당근의 MongoDB CDC 구축기 (새 탭에서 열림)

당근 데이터 가치화 팀은 서비스 성장에 따른 데이터 규모 증가로 기존 MongoDB 전체 덤프 방식이 유발하던 DB 부하와 데이터 적재 지연 문제를 해결하기 위해 Flink CDC를 도입했습니다. 이를 통해 전체 데이터를 매번 조회하지 않고 변경된 로그만 캡처하여 BigQuery로 적재함으로써 DB CPU 부하를 60% 이하로 안정화하고, 2시간 이내 데이터 전달이라는 서비스 수준 목표(SLO)를 달성했습니다. 결과적으로 운영 효율성과 데이터 분석의 실시간성을 동시에 확보하는 파이프라인을 구축할 수 있었습니다. **기술 스택 선정: 왜 Flink CDC인가?** * **MongoDB Change Stream 네이티브 지원**: 별도의 커넥터 개발 없이 MongoDB의 고수준 변경 이벤트 API인 Change Stream을 안정적으로 구독할 수 있으며, resume token과 Flink의 체크포인트 기능을 연동해 장애 시에도 정확한 시점부터 재시작이 가능합니다. * **Exactly-Once 처리 보장**: 분산 파일 시스템에 상태를 주기적으로 저장하는 체크포인트 전략을 통해 장애가 발생하더라도 데이터 중복이나 누락 없이 '정확히 한 번' 처리를 보장합니다. * **통합 파이프라인 구축**: 변경 데이터 추출(CDC)부터 데이터 정제, 변환, BigQuery로의 적재(Sink)까지 하나의 Job 안에서 End-to-End로 처리할 수 있어 운영 복잡도가 낮습니다. * **병렬 처리 기반의 확장성**: TaskManager를 늘려 처리량을 선형적으로 확장할 수 있어, 데이터 이벤트가 폭증하는 상황에서도 유연하게 대응할 수 있습니다. **CDC 기반 아키텍처 및 데이터 흐름** * **Change Stream 활용**: MongoDB의 모든 쓰기 연산을 기록하는 Oplog를 Change Stream을 통해 실시간으로 구독하여 insert, update, delete 이벤트를 수신합니다. * **단계별 배치 파이프라인**: 2시간 이내의 SLO 충족과 운영 안정성을 위해 실시간 스트리밍 대신 매시간(hourly) 배치 방식을 채택했습니다. * **Schema Evolution**: 스키마 저장소와 BigQuery 테이블을 비교하여 변경된 필드를 자동으로 반영합니다. * **Extract & Merge**: 최근 변경 이벤트에서 중복을 제거하고 추출하여 JSON 형태의 Raw 테이블에 병합합니다. * **Materialize**: 최종적으로 스키마를 적용해 사용자가 분석하기 쉬운 테이블 형태로 구체화합니다. * **배치 방식의 이점**: 시간 윈도우를 통해 지연된 이벤트를 안정적으로 회수할 수 있고, 장애 발생 시 실패 구간을 명확히 정의해 재처리(Backfill)하기가 용이합니다. **실용적인 결론** 대규모 트래픽이 발생하는 서비스 환경에서 운영 데이터베이스의 부하를 최소화하면서 분석용 데이터를 확보하려면 CDC 도입이 필수적입니다. 특히 MongoDB와 같이 스키마가 유연한 NoSQL 데이터를 BigQuery와 같은 정형 데이터 저장소로 옮길 때는, Flink CDC와 같은 통합 처리 엔진을 활용해 변환 로직과 확장성을 동시에 확보하는 것이 운영 효율 측면에서 매우 유리합니다. 실시간성이 극도로 중요하지 않다면 배치 단계를 결합해 데이터 정합성과 멱등성을 보장하는 구조를 고려해볼 수 있습니다.

매번 다 퍼올 필요 없잖아? 당근의 MongoDB CDC 구축기 (새 탭에서 열림)

당근은 서비스 성장에 따른 데이터 규모 확대와 이로 인한 MongoDB 부하 문제를 해결하기 위해 기존의 전체 덤프 방식 대신 Flink CDC를 도입했습니다. 이를 통해 DB 부하를 60% 이하로 안정화하면서도 2시간 이내 데이터 전달이라는 SLO(Service Level Objective)를 충족하는 성과를 거두었습니다. 결과적으로 확장성 있는 파이프라인을 구축하여 서비스 안정성과 데이터 분석 효율성을 동시에 확보했습니다. **기존 방식의 한계와 CDC 도입 배경** * **성능적 한계:** 기존에는 Spark Connector를 사용해 전체 데이터를 덤프했으나, 데이터가 늘어날수록 DB CPU 사용률이 급증(Spike)하고 적재 시간이 길어지는 문제가 발생했습니다. * **안정성 문제:** 2시간 내 데이터 적재라는 목표를 맞추려면 DB 부하가 너무 커지고, 부하를 줄이면 적재 시간이 지연되는 트레이드오프 상황에 직면했습니다. * **CDC의 필요성:** `updated_at` 같은 특정 필드에 의존하는 증분 적재 방식은 스키마 변경이나 누락에 취약하므로, DB의 변경 로그(Oplog)를 직접 읽어 변경분을 추적하는 CDC 방식이 최적의 대안으로 선정되었습니다. **Flink CDC를 최종 선택한 기술적 이유** * **Change Stream 네이티브 지원:** MongoDB의 Change Stream 기능을 활용해 변경 로그를 안정적으로 읽어오며, resume token과 체크포인트를 연동하여 장애 발생 시에도 중단된 지점부터 정확히 재개할 수 있습니다. * **정확히 한 번(Exactly-Once) 보장:** 강력한 체크포인트 메커니즘을 통해 상태를 외부 스토리지(GCS/S3 등)에 보존하므로 데이터 중복이나 누락 없는 처리가 가능합니다. * **통합 파이프라인 구성:** CDC 데이터 추출부터 변환(Transform), 적재(Sink)까지 하나의 Job 내에서 엔드투엔드(End-to-End)로 처리할 수 있어 운영 복잡도가 낮습니다. * **병렬 처리 기반의 확장성:** TaskManager를 늘림으로써 처리량을 선형적으로 확장할 수 있어, 이벤트가 급증하는 상황에도 유연하게 대응할 수 있습니다. **CDC 기반 데이터 파이프라인 아키텍처** * **실시간 구독 및 적재:** MongoDB에서 발생하는 모든 변경 이벤트(insert, update, delete)를 Flink CDC가 실시간으로 수집하여 BigQuery로 전송합니다. * **효율적인 배치 전략:** 실시간 스트리밍 대신 1시간 단위(Hourly) 배치 방식을 채택하여 시스템 복잡도를 낮추고, 장애 시 재처리의 용이성과 멱등성을 확보했습니다. * **단계별 후처리 프로세스:** 1. **Schema Evolution:** 스키마 저장소와 비교하여 BigQuery 테이블의 필드를 자동 업데이트합니다. 2. **Extract & Merge:** 최신 변경 이벤트를 추출해 중복을 제거하고 원본 형태의 Raw 테이블에 병합합니다. 3. **Materialize:** 최종적으로 스키마를 적용해 분석에 최적화된 테이블로 구체화합니다. 대규모 트래픽 환경에서 운영 DB의 부하를 최소화하면서 데이터 가용성을 높이려면, 무조건적인 전체 조회보다는 CDC를 통한 변경분 추적 방식이 필수적입니다. 특히 데이터 모델 변환이 잦은 NoSQL 환경이라면 Flink CDC와 같은 통합 도구를 활용해 파이프라인을 단순화하고, 서비스의 SLO에 맞춰 배치와 스트리밍 중 적절한 주기를 선택하는 것이 운영 안정성 측면에서 권장됩니다.

잃어버린 접근성을 찾아서 | 우아한형제들 기술블로그 (새 탭에서 열림)

웹 접근성은 단순히 점수를 높이는 기술적 과제가 아니라, 모든 사용자가 소외 없이 서비스를 이용할 수 있도록 보장하는 보편성의 가치를 실현하는 작업입니다. 우아한형제들 기술 블로그에서는 스크린 리더 사용자가 겪는 실질적인 불편함을 해결하기 위해 탐색 단위 구조화, 텍스트 통합, 상호작용 요소의 역할 구체화를 진행했습니다. 이를 통해 사용자 탐색 피로도를 획기적으로 낮추고 서비스의 본질적인 사용성을 회복하는 성과를 거두었습니다. ### 랜드마크와 머리말을 활용한 탐색 구조화 * **단위 탐색 기능 활성화**: 스크린 리더의 '로터(iOS)'나 '단위 탐색(Android)' 기능을 활용할 수 있도록 페이지를 의미 있는 섹션으로 나누고 적절한 머리말(Heading)을 배치했습니다. * **섹션 컴포넌트화**: `section` 태그와 `h1-h6` 태그, 그리고 이를 연결하는 `aria-labelledby` 속성을 조합한 재사용 가능 컴포넌트를 만들어 페이지 전체에 일관된 랜드마크 구조를 적용했습니다. * **목록 역할 명시**: CSS에서 `list-style: none`을 적용할 경우 VoiceOver가 목록으로 인식하지 못하는 문제를 해결하기 위해 `role="list"`를 명시적으로 선언했습니다. ### 파편화된 텍스트 통합과 발화 최적화 * **불필요한 스와이프 제거**: 스타일링을 위해 "990"과 "원"처럼 분리되어 있던 텍스트를 템플릿 리터럴을 통해 하나의 문자열로 결합하여 스크린 리더가 한 번에 읽도록 개선했습니다. * **스크린 리더 전용 레이어 활용**: 디자인 제약으로 태그를 분리해야만 하는 경우, 시각적 요소에는 `aria-hidden="true"`를 설정하고 보이지 않는 별도 요소에 통합된 텍스트를 담아 제공했습니다. * **크로스 플랫폼 대응**: `span`이나 `div` 같은 일반 컨테이너에 `aria-label`을 쓰면 iOS VoiceOver가 이를 무시하는 특성을 고려하여, 다양한 OS 환경에서 일관되게 읽히는 방식을 채택했습니다. ### 상호작용 요소의 목적과 맥락 명확화 * **모호한 버튼 레이블 개선**: "전체 보기", "자세히"와 같이 목적이 불분명한 버튼에 `aria-label`을 추가하여 "배달팁 자세히 보기"처럼 구체적인 동작 맥락을 제공했습니다. * **사용자 흐름 단축**: 300번 이상의 스와이프가 필요했던 비효율적인 탐색 구조를 개선하여, 사용자가 원하는 정보를 빠르게 찾고 구매하기 버튼까지 도달하는 시간을 대폭 단축했습니다. 진정한 의미의 접근성 개선은 Lighthouse 점수 100점에 안주하는 것이 아니라, 개발자가 직접 스크린 리더를 켜고 사용자의 시점에서 서비스를 탐색해 보는 것에서 시작됩니다. 자동화 도구가 잡아내지 못하는 '맥락의 단절'을 찾아내고, 의미 있는 구조(Semantic)와 구체적인 설명(Labeling)을 더할 때 비로소 모두를 위한 서비스를 완성할 수 있습니다.