프리로드 API 없는 광고 SDK에 프리로딩을 적용하며 배운 것 매시간 황금알(aka, 플레이허브 v2.1)의 반복형 광고 미션에서 프리로딩을 수명주기로 설계하기까지 시작하며 매시간 황금알(aka, 플레이허브 v2.1)은 여러 모바일 앱 안에서 사용자가 광고에 참여하고 포인트 같은 보상…
영상 최적화의 대상은 영상만이 아니었다 매시간 황금알(aka, 플레이허브 v2.1)의 거위는 단순한 장식이 아니라 사용자의 현재 상태와 다음 행동을 알려주는 UI였습니다. 하지만 여러 앱의 WebView에서 영상이 늦게 나타나거나 인라인으로 재생되지 않는 문제가 발생했습니다. 스틸 이미…
AI 번역본입니다. 영어 원문 보기첨부된 슬라이드, 동영상, 이미지는 원본 언어로 제공됩니다. Figma, 더 가볍게. 버즈빌은 이번 분기에 Figma 계정을 Organization에서 Professional로 전환해 달라고 요청했습니다. 디자인팀의 일하는 방식이 달라진 데 따른 결정입…
Memory DB는 무엇으로 가득 차 있었을까 - 2부 : BCAST 전환과 Failover 안녕하세요. 할당시스템 파트 서버 엔지니어, Simon 이상원입니다. 'MemoryDB는 무엇으로 가득 차 있었을까?'의 2부 글입니다. 1부에서는 MemoryDB 메모리의 85%를 채우고 있던…
Go embed: 최소 변경으로 불필요한 메모리 사용 줄이기 세줄 요약 - 외부 파일(GeoIP DB)을 읽는 부분에서 heap 비중이 큰 것을 발견 - GeoIP DB를 mmap으로 읽는 방법과 []byte 로 직접 embed하는 방법을 비교, 두 방식 모두 heap 복사 제거 가능…
이제 디자이너가 PR을 올립니다 이 글은 영문 원본을 바탕으로 작성되었습니다. 6개월, 432개의 pull request, 디자인팀 하나. 무엇이 좋아졌고 무엇을 치렀는지 정리했습니다. 얼마 전, 저희 디자이너 한 명이 광고 참여 플로우에서 행운뽑기 컨셉을 살펴보고 있었습니다. 뭘 고치…
Memory DB는 무엇으로 가득 차 있었을까 - 1부 : 클라이언트 캐싱과 tracking item 안녕하세요. 할당시스템 파트 서버 엔지니어, Simon 이상원입니다. 최근 저희 할당시스템 파트에서 활용하는 MemoryDB(Redis)의 메모리 사용량이 85%까지 차올랐습니다. 사용…
AI와 함께 업무 시스템을 다시 설계하다: Salesforce 대체 CRM 개발기 0. CRM을 새로 만든다는 것 안녕하세요. Ad Management 파트 서버 엔지니어 프랭크, 고영민입니다. 올해 3월 세일즈포스 대체 방안을 처음 논의한 뒤, 6월 내재화 CRM인 "버즈포스(Buzz…
피크 타임 Pod 245개를 100여개로 — DynamoDB SDK v2 전환으로 Go 서버 CPU 절반 줄이기 세줄 요약 - Pyroscope 모니터링으로 CPU 점유가 높은 경로 파악 - DynamoDB wrapper 라이브러리 하위의 AWS SDK v1 unmarshal이 원인 —…
에이전트를 위한 디자인 시스템 이 글은 영문 원본을 바탕으로 작성되었습니다. 프랑스 사람으로서 저는 주방에서 가족을 위해 요리하는 시간을 사랑합니다. 디자이너로서는 즐거운 인터랙션을 만드는 일을 사랑하고요. 그래서 2026년 상반기, 저는 어느 인터랙션 쿠커(interaction coo…
에이전트가 직접 쓴 운영 매뉴얼: AI 코딩 에이전트를 위한 5겹 하네스 이 글은 영문 원본을 바탕으로 작성되었습니다. 에디터 노트. 이 글의 화자는 사람이 아닙니다. Buzzvil 웹 모노레포에서 매일 코드를 만지는 AI 코딩 에이전트, Claude Code 자신입니다. 평소 이 에이…
Feature Flag API의 p99 레이턴시 개선기 (+오픈소스 기여) 1%가 겪는 레이턴시 Supply 그룹에서는 Feature Flag 도입 후 A/B 테스트 활용도를 높이기 위해 evaluation 결과를 적재하는 인프라 지원이 필요했습니다. 이를 위해 기존에 사용 중인 오픈소…
AI 네이티브 디자인 플레이북 이 글은 영문 원본을 바탕으로 작성되었습니다. 지난 한 달간, 버즈빌 디자인 팀은 단 6명으로 5개의 웹 애플리케이션을 배포하고 344건의 커밋을 기록했습니다. 놀랍게도 이 과정에서 Figma는 거의 사용되지 않았습니다. 엔지니어링 스프린트 할당도, 핸드오…
Nobody Owned the Website. Now Everybody Does. 이 글은 영문 원본을 바탕으로 작성되었습니다. 회사 웹사이트, 누가 담당하고 계신가요? 단순한 질문 같지만, 대부분의 회사에서 솔직한 답은 "마케팅팀이 일단은요" 아니면 "글쎄요, 딱히 아무도…" 사이 어…
The Flip 이 글은 영문 원본을 AI로 번역한 버전입니다. 요즘 업계에 이런 기대가 퍼져 있습니다. 언젠가 AI가 디자인 시스템을 만들어 줄 거라는 거죠. 프롬프트 하나 던지면 토큰, 컴포넌트, 인터랙션 패턴이 깔끔하게 나올 거라고요. 저는 정반대의 일이 벌어지고 있다고 생각합니다…
DynamoDB Limit 설정으로 RCU 97% 절감한 이야기 안녕하세요, 버즈빌 Supply Platform 팀의 Jed입니다. 대규모 트래픽 환경에서 낮은 지연 시간과 높은 가용성은 중요한 요소입니다. 따라서 버즈빌에서는 "Single-digit millisecond perform…
Python 2.7 서버의 CI Test 개선 - 13분에서 3분으로 들어가며 안녕하세요 Supply 그룹 Product Backend 팀의 Elric 입니다. 버즈빌에서 운영중인 허니스크린은 새로운 프로모션을 지속적으로 출시하며 빈번한 배포가 진행되는 서비스이지만, 긴급 배포 상황에서…
2026년 버즈빌 디자인 스택, AI 전환을 준비하며 2026년은 버즈빌 디자인 팀에게 전환점이 되는 해입니다. 이제 도구 선택은 단순한 운영상의 결정이 아니라, 차세대 AI 기반 제품 개발을 지원할 수 있는 '코드와 연결된 통합 디자인 시스템'을 향한 전략적 행보입니다. 지난 몇 년간…
5대 금융사를 품은 버즈베네핏의 백엔드 팀은 무슨 일을 할까요? 안녕하세요, 버즈빌 Supply 그룹의 Product Backend 팀 리드 Wynn입니다. 현재 저희 팀에서 함께 팀을 성장시킬 동료를 찾고 있습니다. 채용 공고만으로는 우리 팀이 어떤 팀이고, 어떤 일을 하는지 충분히…
버즈빌 프론트엔드 변천사 버즈빌 Supply 그룹의 Product Growth 팀의 Luke입니다. 저희 버즈빌에서 지난 몇 년간 겪어온 프론트엔드 아키텍처 변화를 공유하려 합니다. AngularJS에서 시작해 Vue, React를 거쳐 Next.js까지, 각 전환점에서의 고민과 선택…
AWS 비용 최적화 Part 1: 버즈빌은 어떻게 월 1억 이상의 AWS 비용을 절약할 수 있었을까 버즈빌은 2023년 한 해 동안 월간 약 1.2억, 연 기준으로 14억에 달하는 AWS 비용을 절약하였습니다. 그 경험과 팁을 여러 차례에 걸쳐 공유합니다. - AWS 비용 최적화 Par…
데이터 엔지니어의 Airflow 데이터 파이프라인 CI 테스트 개선기 들어가며 안녕하세요, 버즈빌 데이터 엔지니어 Abel 입니다. 이번 포스팅에서는 데이터 파이프라인 CI 테스트에 소요되는 시간을 어떻게 7분대에서 3분대로 개선하였는지에 대해 소개하려 합니다. 배경 이전에 버즈빌의 데…
Ad Management 파트 서버 개발자의 지역 타게팅 개선기 안녕하세요. Demand Product 팀의 Ad Management 파트에서 서버 개발자로 일하고 있는 Kay입니다. 제가 팀에 합류한 지도 어느덧 2년이 되어가는데요, Ad Management 파트(이하 AdM)은 무슨…
버즈빌의 ML 플랫폼 Buzzflow (1) - 모델을 개발하고 관리하기 들어가며 안녕하세요, 버즈빌에서 MLOps 엔지니어로 일하고 있는 BK입니다. 버즈빌 광고 플랫폼 팀은 광고 성과 최적화를 위해서 다양한 머신러닝 모델을 활용하고 있습니다. 앞으로 두 편의 글을 통해 모델을 개발,…
쿠버네티스에게 Github Actions 설치에 대해 묻다 Introduction 안녕하세요. 버즈빌 DevOps 팀의 엔지니어, Cade 입니다. 최근 CI/CD에서 가장 인기 있는 플랫폼 중 하나인 깃헙 액션 (Github Actions), 많이들 사용하고 계실 텐데요. 오늘은 이…
RDS MySQL IOPS 장애 대응기 버즈빌에서 AWS RDS MySQL 데이터베이스를 운영하는 중에 맞닥뜨린 메모리 문제와 그 해결 방법에 대해 소개하는 글입니다. 들어가며 안녕하세요, 버즈빌 엔지니어 Summer입니다. 현재 버즈빌 광고의 월평균 사용자는 2천만명 정도이고 버즈빌…
헤어질 결심 a.k.a 퇴사 부검 들어가며 안녕하세요. 버즈빌 생활의 처음과 끝을 함께한 글로리아가 권유해 주신 덕분에 퇴사 부검 글을 작성하게 되었습니다. 넷플릭스에서는 퇴사한 직원이 퇴사 이유, 배운 점과 아쉬운 점 등을 메일로 적어 다른 직원들에게 보내는 문화가 있는데, 이 메일을…
Self Serving Data Platform 구축하기 (feat. Airflow) Introduction 안녕하세요. 버즈빌 데이터 엔지니어 Bernard입니다. 이번 포스팅에서는 저희 팀에서 어떻게 셀프 서빙 데이터 플랫폼을 구축했는지 소개하고자 합니다. 셀프 서빙 데이터 플랫폼이…
광고 예산 제어 시스템 개선기: Part 2 – 더 정교한 시스템, 그리고 성과 안녕하세요, 광고 엔진 팀의 Bale, 그리고 Liam입니다. 1편에서 버즈빌의 예산 제어 시스템 개선 여정과 가시성에 대해 얘기해 드렸는데요. 이번 편에서는 이전 시스템 수준 개선을 바탕으로 어떤 기능 개…
광고 예산 제어 시스템 개선기: Part 1 – 시스템과 가시성 개선 Introduction 안녕하세요, 광고 엔진 팀의 Bale, 그리고 Liam입니다. 버즈빌 광고 플랫폼의 변천 과정을 소개해 드리는 시간입니다. 최근에는 수평 확장 가능한 광고 서버를 만드는 법에 대해 소개해 드렸는…
Now is a good time to multiply your Design team capacity This article's timing is partly due to the major layoff happening worldwide. IT Companies have been bui…
다양한 제품 개발 방법론 - 버즈빌 제품팀이 일하는 법#3 2021년 말에 시작했던 글이 어느새 2022년 말까지 흘러왔네요. 2022년 한 해 동안 버즈빌 제품팀이 일하는 방식에는 더욱더 많은 변화가 생겼습니다. 원래 기획했던 6부를 모두 정리하기에는 글 작성 속도보다 변화의 속도가…
엘라스틱서치를 활용한 수평 확장 가능한 광고 서버 만들기 광고 서버는 리워드 광고 플랫폼을 운영 중인 버즈빌에게 있어서 핵심적인 구성요소입니다. 광고 서버의 주요 기능 중 하나는 광고주가 설정한 여러 가지 타게팅 조건에 맞는 유저에게 광고를 송출하는 타게팅 기능입니다. 버즈빌은 허니스크…
AWS DNA 4기 회고 DNA는 Digital Native Architects의 줄임말로, AWS Korea에서 제공하는 교육 및 네트워킹 프로그램입니다. 약 3개월 동안 AWS DNA 4기에 참가하며 경험한 내용을 정리해보았습니다. 1. DNA 프로그램에 지원하다. 작년 11월, 회…
What AI Art can tell us about the future of Design and how it can affect Ad creative optimization (Artwork generated by Dalle2 with the following prompt: A cybe…
All the mistakes we have made during Product Discovery 6 months ago we started a new team with a new mission and big dreams. We secured resources to give the mi…
Google File System 버즈빌 개발팀에서는 매주 수요일, 모든 팀의 개발자들이 모여 본인이 관심있는 분야에 대한 노하우나 담당하고 있는 업무와 관련된 새로운 기술에 대한 논의를 진행하는 시간을 가지고 있습니다. 이 시간을 통해 내가 알고 있는 것들에 대해 더 확실히 알고 모르…
Core Values of a Global Team Working in a global team in Seoul It’s always very special to work within a diverse team, even more in Seoul. When I say the BIC te…
Building a Startup Inside a Startup: Story of the BIC Team First, what’s a startup? What first comes to your mind when you think of the word “startup''? Entrepr…
Max’s story: From Design to Product leadership Yesterday, or to be exact, 8 years ago, I was joining Buzzvil as a product designer. In late 2014 Buzzvil counted…
Metastable Failure in Distributed Systems 버즈빌 개발팀에서는 매주 금요일, 모든 팀의 개발자들이 모여 본인이 관심있는 분야에 대한 노하우나 담당하고 있는 업무와 관련된 새로운 기술에 대한 논의를 진행하는 시간을 가지고 있습니다. 이 시간을 통해 내가 알…
배포를 빠르게 - DIY(Deploy It Yourself) 이 글에선 버즈빌에선 어떻게 배포의 속도를 높였는지 소개합니다. - 배포를 우아하게 - 원-클릭 배포 - 배포를 안전하게 - 카나리 배포 전략, 롤백 - 배포를 빠르게 - DIY(Deploy It Yourself) 이전 글들에…
상품 추천 알고리즘 Item-CF의 최적화 여정 만 30개의 이커머스을 광고주로 삼고 있는 버즈빌. 이들을 위한 리타겟팅 광고 솔루션을 고도화하기 위해 도입된 상품 추천 알고리즘: Item-CF. 이 알고리즘 최적화와 적용 과정에 대해서 알아보겠습니다. 버즈빌의 리타겟팅 광고 솔루션 버…
배포를 안전하게 - 카나리 배포, 롤백 배포에서 속도와 안전성 두 마리 토끼를 잡기란 쉽지 않습니다. 이 글에선 버즈빌에선 어떻게 안전성 문제를 해결했는지 소개합니다. - 배포를 우아하게 - 원-클릭 배포 - 배포를 안전하게 - 카나리 배포 전략, 롤백 - 배포를 빠르게 - DIY(De…
배포를 우아하게 - 원-클릭(one-click) 배포 일반적으로 런타임 환경이 늘어날 수록 배포 시스템의 복잡성은 높아지기 마련입니다. 이 글에선 버즈빌에선 어떻게 문제를 해결했는지 소개합니다. - 배포를 우아하게 - 원-클릭 배포 - 배포를 안전하게 - 카나리 배포 전략, 롤백 - 배…
Elasticsearch 검색에서 확률 사용하기 이 블로그에서는 Elasticsearch에서 검색할 때 효과적으로 각 Document에 확률을 사용하는 두 가지 방법을 설명하고, 각 방법의 간략한 성능 비교와 장단점을 설명합니다. 독자는 Elasticsearch의 Search API에…
Minerva: Airbnb's Metric Platform 버즈빌 개발팀에서는 매주 금요일, 모든 팀의 개발자들이 모여 본인이 관심있는 분야에 대한 노하우나 담당하고 있는 업무와 관련된 새로운 기술에 대한 논의를 진행하는 시간을 가지고 있습니다. 이 시간을 통해 내가 알고 있는 것들에…
asyncio 뽀개기 3 - SIGTERM (CTRL+C) 올바르게 처리하기 asyncio를 사용하는 서버라면 graceful shutdown을 할 수 있어야합니다. Eventloop에 task를 등록하는 구조이기 때문에 graceful shutdown을 하지 않으면 유저 혹은 다른 서…
asyncio 뽀개기 2 - Future의 활용 Future를 잘 활용하면 단순히 await 하는 용도보다 더 다양한 흐름 제어를 할 수 있습니다. 이전 포스트에서는 asyncio의 핵심 컴포넌트인 코루틴과 Eventloop을 소개했습니다. 이번 포스트에서는 Future를 만드는 방법,…
asyncio 뽀개기 1 - Coroutine과 Eventloop 이 시리즈의 목적은 asyncio의 컴포넌트들과 활용법을 소개하는 것입니다. 최종적으로는 실제 production에 쓰이고 있는 graceful shutdown을 구현하는 것을 목표로 하며, 그 과정에서 필요한 async…
DynamoDB를 사용하는 Go 서비스의 응답 시간 최적화 #2 TLS Handshake 안녕하세요. 버즈빌의 데이터 엔지니어 Raf입니다. 이전 포스팅(DynamoDB를 사용하는 Go 서비스의 응답 시간 최적화 #1 AWS Credential Token)에 이어, Go 서비스에서 Dy…
DynamoDB를 사용하는 Go 서비스의 응답 시간 최적화 #1 AWS Credential Token 안녕하세요. 버즈빌의 데이터 엔지니어 Raf입니다. 이전 포스팅에서 Go의 HTTP 커넥션 풀에 관해 설명해 드렸습니다 (HTTP connection pool in Go explaine…
HTTP connection pool in Go explained 안녕하세요. 버즈빌의 데이터 엔지니어 Raf입니다. 버즈빌에서는 Go 마이크로 서비스에서 Elasticsearch와 DynamoDB 등의 AWS SDK를 사용하거나, 내부 서비스가 아닌 애드 네트워크나 앱 퍼블리셔 등의…
Shape Up Method 버즈빌 개발팀에서는 매주 수요일, 모든 팀의 개발자들이 모여 본인이 관심있는 분야에 대한 노하우나 담당하고 있는 업무와 관련된 새로운 기술에 대한 논의를 진행하는 시간을 가지고 있습니다. 이 시간을 통해 내가 알고 있는 것들에 대해 더 확실히 알고 모르는 것…