critical-script, 배달의민족 웹뷰 로딩 성능을 30% 개선한 인라인 스크립트 로딩 전략 이야기 들어가며 배달의민족 앱은 일부 지면을 웹뷰로 구성하는 하이브리드 앱입니다. 대표적인 커머스 서비스인 B마트의 가게홈 지면도 웹뷰로 구성됩니다. 웹뷰는 한 번의 개발로 iOS와 An…
플랫폼 행성에 떨어진 서비스 개발자 느닷없이 거센 돌풍이 불어 낯선 땅에 착륙했다든지, 망망대해에서 방향을 잃고 외딴 섬에 표류하게 되었다든지, 시공간이 뒤틀려 새로운 행성에 도착했다든지. 낯선 곳에서 홀로 남겨져 살아남아야 하는 이야기들이 참 많습니다. 그중에서도 소설을 원작으로 한…
사장님 입점신청 자동승인 주기를 10분에서 10초로 사장님의 입점신청 요청들은 자동승인 처리가 시작되기까지 최소 3분에서 최대 12분 59초가 걸렸습니다. 이 대기를 10초 이내로 줄인 과정을 기록한 글입니다. 그림 출처: AI 자동생성(https://youmind.com) 세 줄 요약…
우아한형제들의 기술 콘퍼런스, WOOWACON 2026이 열립니다! 정보는 이미 실시간으로 움직입니다. 하지만 현실의 세계에는 여전히 많은 기다림이 남아 있습니다. 고객은 원하는 것을 찾기 위해 기다리고, 상품은 준비되기를 기다리고, 시스템은 사람의 판단을 기다립니다. 올해 우아콘은 "…
배달의민족 전자계약서 화면 개편기: AI에게 맡긴 것과 사람이 챙긴 것 들어가며 전자계약서는 파트너(사장님)가 배달의민족을 처음 시작할 때 작성하는 전자문서입니다. 영업 담당자가 파트너와 함께 작성하고, 계약 내용을 바꿀 때도 같은 문서를 씁니다. 이 문서를 쓰는 작성 화면은 사업자 정…
집 나간 네트워크는 돌아왔는데 React.lazy는 왜 안 돌아올까 들어가며 파트너(업주)님이 영업 내내 주문을 받는 배민주문접수 웹뷰를 개발하던 중 QA 과정에서 네트워크 OFF -> ON으로 변경 후 다른 화면으로 이동 시 오류 화면이 노출된다는 티켓을 전달받았습니다. 원인을 파악해…
AI 전환, 우리가 도운 건 돕는 사람이었습니다 1편 "AI로 바뀐 건 업무가 아니라 사람이었습니다"는 옆자리 동료가 덜 힘들어졌으면 좋겠다는 마음이 계속될 것 같다는 말로 끝났습니다. 혹시 못 읽으셨어도 따라오실 수 있게 배경만 짧게 정리합니다. 저는 우아한형제들에서 개발자를 길러내는…
한꺼번에 짊어지던 배치를 내려놓고, 하나씩 흘려보내는 워크플로로 Temporal 도입은 부담스러웠고, 그렇다고 배치를 그대로 둘 순 없었습니다 – 입맛대로 골라 Claude로 뚝딱 만든 워크플로 엔진 개발기 ℹ️ 이 글에 등장하는 수치와 설정값(대기 시간, 타임아웃, 재시도 횟수 등)은…
문서로만 지키던 아키텍처 규칙, 테스트 코드로 강제하기 들어가며 제가 속한 파트너셀프서비스팀은 코딩 컨벤션을 사내 위키 문서와 AI 에이전트가 참조할 수 있는 규칙 문서에 정의해놓고 개발하고 있습니다. 하지만 그 규칙을 잘 지키고 있는지 확인하는 방법이 코드 리뷰뿐이었다는 점이 문제였습…
AI가 분석한 리서치 결과, 어떻게 만들고 전달할까요? 1. 들어가며 사용자경험분석팀에서는 리서치 업무를 지원하는 사내 서비스인 리서치 AI 도우미를 만들고 있어요. “배민클럽을 선택한 이유는 무엇인가요?”처럼 수천 명이 자유롭게 답한 설문응답을 이해하기 쉬운 카테고리로 분류해 보고서를…
AI에게 만드는 법 대신 실패하는 법을 묻다: 포토그래퍼의 수천 명 동시 접속 게임 만들기 들어가며 우아한형제들은 매년 우아콘부터 창립 기념 전사 행사, 외식업 종사자나 배달 라이더를 위한 콘퍼런스까지 다양한 행사를 주최합니다. 저는 포토팀으로서 그 행사들을 사진으로 남기는 일을 오랜…
하네스 엔지니어링(harness engineering)으로 팀 맞춤형 AI 환경 구축하기 개요 최근 팀에서 AI 코딩 도구를 활용하는 빈도가 늘어나면서, AI가 프로젝트의 고유한 맥락(context)과 컨벤션을 인지하지 못해 같은 설명을 매번 반복해야 하는 비효율을 자주 겪었습니다. 예…
5년 동안 못 푼 배민 다국어 숙제, AI와 함께 한 달 만에 끝내기 들어가며 한국을 찾는 외국인이 연간 약 2천만 명을 넘어선 지금, 배민 앱은 이들을 위해 준비되어 있었을까? 메뉴를 주문하려면 우선 가게 이름과 메뉴명을 읽을 수 있어야 합니다. 하지만 한국어만 제공되는 배민 앱에서…
pnpm 모노레포에서 React 19 마이그레이션하기: 숨겨진 호이스팅 레이어가 만든 타입 충돌 트러블슈팅 배경: React 19 마이그레이션과 pnpm Catalogs pnpm workspace 기반의 모노레포 환경을 구축하여 프론트엔드 애플리케이션을 운영하고 있습니다. 기존에는 모노…
별점 뒤에 숨겨진 리뷰의 온도, LLM으로 한 끗 차이가 다른 추천 만들기 추천프로덕트팀은 데이터 기반의 추천 알고리즘과 정교한 탐색 설계를 통해 사용자가 고민 없이 최적의 맛집을 발견하도록 돕는 조직입니다. 여기에 LLM과 다양한 AI 모델을 활용해 실질적인 서비스 문제를 해결하는 A…
흩어져 있는 AI 자산, ‘MCP stdio’로 헤쳐모여! 그 프롬프트… 어딨더라? 우리는 여러 사람이 각자의 장비로 여러 개의 서비스와 저장소를 관리하고, 또한 여러 개의 도구를 사용합니다. 모두가 다른 환경에서 각자 작업하면서도, 일관된 방식으로 일을 하거나 결과물을 만드는 것은 아…
AI로 바뀐 건 업무가 아니라 사람이었습니다 시작은 옆자리 동료의 한숨이었습니다 "이번 주말도 반납해야 할 것 같아요." PM으로 일하는 동료는 일요일 밤이면 미리 출근을 했습니다. 평일에 일이 너무 많아서 불안했거든요. 특히 회의록 정리에 시간을 많이 뺏겼습니다. 회의가 끝나면 녹음…
RAG, 들어는 봤는데… 내 서비스엔 어떻게 쓰지? 개요 RAG(Retrieval-Augmented Generation, 검색 증강 생성)은 LLM이 학습하지 못한 정보를 외부에서 검색하여 활용할 수 있게 하는 기술입니다. 이 글에서는 RAG이 왜 필요한지부터, 교육 운영 시스템에 실제…
장애 대응의 성패를 가르는 First Action: 우아한형제들의 장애 관리 라이프사이클 First Action에 따라 달라지는 장애 영향 우아한형제들의 2025년 장애를 돌아보면 인지는 비교적 빠른 편이었습니다. 그러나, 장애로 고객 경험의 악영향이 오래 이어진 사례들이 적지 않았습니…
끊김 없는 사용 경험을 위하여 : 카카오톡 선물함 속 교환권을 배달의민족 주문으로 연결한 여정 배민선물하기팀은 선물하는 이의 마음과 받는 이의 즐거움을 잇는 ‘배민선물하기’ 서비스를 담당하며, 배달의민족(이하 배민) 앱 내 상품권 발행부터 외부 채널과의 유통망 연동을 관리하고 있습니다.…
WOOWACON 2025 미니게임 WOOWA POP! 지난 WOOWACON 2025 기술 콘퍼런스에서 미니게임을 운영했습니다. 우아팝(WOOWA POP!)이라는 이름의 수박 라이크(Suika-like) 게임이었습니다. 우아콘 세션 간에 플레이할 수 있고 미션이나 상위 랭킹을 달성하면 상…
Delivering the Future: 글로벌 해커톤 2025, 준비부터 운영까지 들어가며 딜리버리히어로는 우아한형제들을 포함해 전 세계 70여 개국에서 다양한 브랜드를 운영하고 있습니다. 국가와 시장은 서로 다르지만 ‘더 나은 고객 경험’이라는 공통된 미션을 위해 모두 각자의 자리에…
배달의민족 주문접수 채널에 Flutter를 도입하며 고민한 것 들어가며 배달의민족 주문접수 채널은 파트너의 주문 관리를 돕기 위해 매일 수백만 건의 주문을 실시간으로 처리하며, 다양한 디바이스를 지원하고 있습니다. 점차 다양해지는 디바이스 생태계에 대응하고자, 신규 제품에 Flutter…
“함께 구매하면 좋은 상품” 추천 모델 고도화 배달의민족에서는 음식 배달뿐만 아니라 장보기도 당일 배송이 가능하다는 사실, 알고 계셨나요? 배민의 장보기·쇼핑 서비스는 배민B마트를 비롯해 마트, 편의점, 꽃, 전자제품 등 다양한 셀러가 입점해 있어 다양한 물건을 빠르게 받아보실 수 있는…
우리는 코드처럼 문화도 리팩토링한다 팀 소개 커머스웹프론트개발팀(이하 “커머프팀”)은 배달의민족의 모든 커머스 서비스와 플랫폼은 물론, 백오피스부터 뒷단의 물류시스템에 이르기까지 웹 클라이언트 영역을 담당하는 거대한 규모의 팀입니다. 각기 다른 서비스를 담당하던 팀이 모여 하나의 큰 팀…
잃어버린 접근성을 찾아서 개발한 서비스의 접근성을 직접 확인해 보신 적 있나요? 바쁜 일정 속에 각종 요구사항을 반영하다 보면, 접근성은 흔히 ‘언젠가 챙겨야 할 착한 일’ 정도로 치부되곤 합니다. 부끄럽지만 저희도 마찬가지였습니다. 그러나 접근성을 소홀히 하면 실제 사용 과정에서 예상…
기획부터 개발까지 전부 직접 했습니다 – 우테코 7기 크루 서비스 론칭! 우아한테크코스(이하 우테코)는 우아한형제들이 운영하는 10개월 과정 개발자 교육 프로그램입니다. 개발자 교육에서 기술만 배우면 될까요? 우테코는 소프트 스킬도 중요하게 생각하고 있습니다. 그래서 웹 백엔드, 웹 프…
AI와 함께하는 테스트 자동화: 플러그인 개발기 프롤로그 저희 팀에서 관리하는 레포지토리는 7개입니다. 빠른 비즈니스 과제를 해내가며 필수 테스트코드만 작성하다 보니 커버리지가 부족한 레포지토리가 생겼습니다. 특히 엣지케이스나 예외 상황에 대한 테스트가 부족했고, 이는 운영 안정성을 떨…
우아한형제들이 장애를 놓치지 않고 탐지하는 방법 배달의민족을 사용하는 고객들은 늘 오늘의 식사를 기대합니다. 점심시간에 맞춰 미리 떡볶이를 주문하고, 저녁에는 치킨과 함께 축구 경기를 즐길 계획을 세우며 퇴근합니다. 하지만 주문을 하려는 순간 시스템 장애가 발생한다면 어떨까요? 단순히…
100만 TPS 로그 시스템, KEDA를 이용한 오토스케일링 적용기 들어가는 글 우아한형제들의 수많은 시스템에서 남는 로그는 매우 방대한 양을 자랑합니다. 운영환경 기준으로 하루 수십TB의 데이터가 처리되고 있고, 피크타임 기준으로 초당 레코드 수는 100만 단위를 가뿐히 넘기고 있습니…
장시간 비동기 작업, Kafka 대신 RDB 기반 Task Queue로 해결하기 전자계약서 시스템에서는 다양한 업무 목적에 따라 여러 형태의 대용량 엑셀 파일을 생성할 수 있습니다. 예를 들어 생산성 지표 엑셀 , 근무 관리 엑셀 , 행정 처분 추정 업주 엑셀 , 계약현황 엑셀 등 각기…
우리 팀엔 자바스크립트 상차만 하는 프런트엔드가 있었다 들어가며 세일즈서비스팀에는 아주 오래된 기술 부채가 한 가지 있었습니다. 프런트엔드 개발자라면 취업 준비할 때부터 당연하게 다루는 index.html 파일이 프런트엔드 리포지터리에 존재하지 않는 것이었죠. 프런트엔드 개발자로 입사하…
Delivering the Future, WOOWACON 2025 10월 28일, 가을 햇살이 포근하게 비추던 화요일 아침. 삼성동 그랜드 인터컨티넨탈 파르나스 연회장은 이른 시간부터 밝은 목소리와 긴장감으로 가득했습니다. 우아한형제들의 기술 콘퍼런스, “WOOWACON 2025”가 막…
웹과 네이티브, 조화로운 공존은 가능한가? 플로팅웹뷰 도입으로 찾은 희망 여는 글 B마트, 장보기·쇼핑, 전국특가를 비롯한 배달의민족의 커머스 서비스는 끊임없이 진화하고 있습니다. 가게와 상품을 탐색하는 UX를 개선하기 위해서, 커머스 페이지에 다양한 UI 디자인을 연구하고 적용해 왔는…
Vite에서 CSS 우선순위를 지키는 법: 우아한공방의 문제 해결기 들어가며 우아한공방은 배달의민족을 비롯해 다양한 우아한형제들 서비스 전반에서 일관된 UI/UX를 제공하기 위해 구축된 디자인 시스템입니다. 참고: "우아한형제들의 새로운 디자인 시스템 ‘우아한공방’을 소개합니다: 개발…
[공지] 우아한형제들 기술블로그 개인정보처리방침 일부 변경에 관한 안내 안녕하세요. 주식회사 우아한형제들 기술블로그 개인정보처리방침을 일부 변경하게 되어 이를 알려드립니다. ◼︎ 개정 사유 - 개인정보의 수집·이용 및 보유 및 이용 기간 - 개인정보의 파기절차 및 방법 현행화 - 쿠키…
안녕하세요! AI UX라이터 제민희입니다. 무엇을 도와드릴까요? 이것은 UX라이터와 개발자가 제민희라는 사내 AI 라이팅 툴을 만든 과정에서 마주했던 대다수의 실패와 작은 성취에 대한 기록입니다. UX라이터라는 직군이 생소한 분도 계실 텐데요. UX라이터는 디지털 프로덕트(앱, 웹사이트…
복잡한 LLM 연동, GenAI SDK 하나로 끝내기 최근 GPT, Claude, Gemini 등 수많은 거대 언어 모델(LLM)이 쉴 새 없이 등장하고 있습니다. 마치 국가마다 다른 규격의 콘센트가 난무하는 세상처럼, OpenAI, Azure, AWS Bedrock, Google 등…
이제 Redis를 멈춰보겠습니다: @CacheEvict 파헤치기 0. 프로젝트 환경 - Spring Boot 3.3.7 - Spring Data Redis 3.3.7 - Lettuce 6.3.2 ㅤ 1. 개요 운영 환경에서 캐시를 다루다 보면 한 번쯤은 @CacheEvict(allEnt…
코드 리뷰 봇으로 시작된 팀 문화의 변화 들어가며 WMS플랫폼팀은 B마트 서비스의 물류 플랫폼 중에서도 WMS(Warehouse Management System)를 담당하고 있습니다. WMS는 창고의 상태를 가시화하고, 무엇이, 어디에, 얼마나 있는지를 신뢰할 수 있는 데이터로 관리하는…
Server-Sent Events로 실시간 알림 전달하기 들어가며 식당에 있다 보면 “배달의민족 주문~!” 알림을 한 번쯤 들어보셨을 거예요. 이 알림은 주문이 들어올 때 사장님이 빠르게 확인하고 처리할 수 있도록 도와주는 주문 접수 프로그램에서 발생합니다. 이 프로그램을 만드는 팀이…
우아한 디버깅 툴 2부: 좀 더 편하게 일하기 위한 개선들 지난 글 "우아한 디버깅 툴 1부: 웹뷰/웹페이지 원격으로 디버깅하기"에서는 이슈 정보를 쉽게 기록하고 공유하는 방법에 대해 다뤘습니다. 하지만 QA를 더 원활하게 진행하기 위해서는 아직 개선해야 할 부분이 많았습니다. 이번 글…
우아한 디버깅 툴 1부: 웹뷰/웹페이지 원격으로 디버깅하기 버그 재현, 생각보다 쉽지 않습니다 버그가 발견되었을 때 프론트엔드 개발자가 가장 많이 하는 말이 있습니다. “제 기기에선 잘 되는데요…?” 이슈가 발생하면 우리는 가장 먼저 상황을 똑같이 재현해보려 합니다. 하지만 재현이 항상…
Jira Automation으로 반복 업무를 효율적으로 관리해보자 들어가며 Jira는 Atlassian의 대표적인 이슈 추적 및 프로젝트 관리 도구입니다. 대다수의 조직에서는 Jira를 활용해 이슈를 추적하고 프로젝트의 계획부터 관리까지 수행합니다. Jira의 강력한 필터 검색, 워크…
AI 데이터 분석가 ‘물어보새’- 3부. Agent로 더 넓고 깊은 지식 공유하기 프롤로그 AI 기술을 활용해 구성원의 의사결정을 지원하는 BADA(Baemin Advanced Data Analytics)팀은 우아한형제들 구성원의 데이터 리터러시와 업무 생산성 높이는 ‘물어보새’를 비롯…
Redis New Connection 증가 이슈 돌아보기 서비스 성능을 높이기 위해 여러 영역에서 캐싱을 활용하고 있습니다. 그중 사용자 맞춤 데이터를 빠르게 제공하기 위해 Redis를 사용하고 있는데요. Redis 관련 지표를 모니터링 하던 중 신규 커넥션 생성이 많은 현상을 발견하였…
LLMOps로 확장하는 AI플랫폼 2.0 AI 기술은 빠르게 진화하고 있습니다. 우아한형제들 AI플랫폼팀은 그동안 AI플랫폼 1.0을 통해 머신러닝(ML) 모델을 개발·배포·운영을 지원하는 MLOps 플랫폼을 구축해 왔습니다. AI플랫폼 1.0의 상세 내용은 아래 글에서 다뤘습니다. 대…
우아한 Cloud FinOps 여정 클라우드는 이제 기업의 성장과 혁신을 뒷받침하는 핵심 인프라로 자리 잡았습니다. 새로운 서비스를 빠르게 실험하고, 트래픽 변화에 따라 유연하게 확장하며, 글로벌 시장에도 손쉽게 진출할 수 있도록 해주죠. 하지만 비용 측면에서는 기존 온프레미스 환경과…
[마감] WOOWACON 2025에 지금 등록하세요! 우아한형제들의 기술 콘퍼런스, WOOWACON 2025가 오는 10월 28일(화), 삼성동 그랜드 인터컨티넨탈 서울 파르나스 호텔에서 개최됩니다 🙌 근본적인 가치를 다지고 더 큰 변화를 향해 나아가는 배민 2.0의 기술적 도전과 함께…
Spring Cache(@Cacheable) + Spring Data Redis 사용 시 record 직렬화 오류 원인과 해결 이 글은 Spring Data Redis에서 GenericJackson2JsonRedisSerializer를 사용할 때 발생할 수 있는 직렬화 문제를 다룹니다.…
Java야…, 우리 그만 헤어져. Kotlin으로 환승연애 들어가며 배민페이플랫폼팀은 2025년 상반기 Java 기반의 레거시 시스템을 Kotlin으로 전환하는 프로젝트를 진행했습니다. 이번 전환은 단순한 언어 변경이 아니라, 테스트 기반 강화, 기술 부채 해소, 팀 내 개발 언어 통일…
배차 정확도를 높이는 실거리 시스템 구축하기: OSRM, Kafka, 그리고 Redis 들어가며 배민커넥트 배차시스템에서는, 배차에 활용되는 거리를 단순한 직선거리에서 실제 경로 기반의 실거리로 고도화하는 작업을 진행했습니다. 고도화 과정에서 이벤트 드리븐 아키텍처를 도입하고 대량의 트…
우리 서비스와 연결된 MCP Server 빠르게 구현해보기: MCP 해커톤 후기 들어가며 LLM, 그리고 AI Agent에 관한 관심이 뜨거운 요즈음입니다. 우아한형제들에서도 사내 지원으로 LLM ChatBot이나 AI Code Generate 도구를 지원하고, 구성원들이 자발적으로 사…
B마트 OMS의 물류주문관리를 통한 출고 최적화 퀵커머스는 ‘지금’ 주문한 상품이 ‘금방’ 도착하는 경험을 제공합니다. 이러한 속도 중심의 서비스는 단순히 빠르기만 해서는 만족스럽지 않습니다. 고객에게는 정시성과 정확성, 라이더에게는 도착 시점의 일관성과 대기 최소화, 그리고 피패킹센터…
JavaScript Proxy를 활용한 상태 추적 도구 개발기 1. 레거시가 주는 고통 세일즈서비스팀에서는 사장님의 배달의민족 입점을 도와드리기 위한 입점신청, 계약 검수 및 승인 시스템, 전자계약서’ 등 여러 지면을 개발하고 있습니다. 그중 전자계약서는 업주 정보, 가게 정보, 광고…
우아한형제들 PM들이 추천하는 책(ver.2025) 우아한형제들 PM(Product Manager)들이 추천하는 책들을 기억하시나요? PM을 준비하고 계신 분들, 또는 PM 업무를 더 잘하고 싶은 분들을 위해 2025년 버전으로 업데이트해 보았습니다. CPO 기호 님의 추천 책도 있으니…
전체 서비스를 관통하는 도메인 모듈을 안전하게 분리하기 서비스가 성장함에 따라 도메인은 함께 비대해집니다. 초기에는 단순했던 기능들이 점점 얽히기 시작하고, 특정 기능 하나를 수정하기 위해 관련 없는 코드까지 들춰봐야 하는 상황이 자주 발생합니다. 팀원 간의 커밋은 빈번히 충돌하고, 사…
실시간 마케팅을 위한 PoC 개발기 우아한형제들의 BUDS(Baemin User Data System) 팀은 배달의민족과 Delivery Hero 고객에게 더 나은 맞춤형 마케팅 경험을 제공하고자 Segmentum이라는 타깃팅 서비스를 개발하여 운영 중입니다. Segmentum은 그동안…
타입 안전한 API 모킹으로 프론트엔드 생산성 높이기 프론트엔드 개발에서는 API 응답 모킹이 필수입니다. 그러나 JSON 파일 기반 모킹은 API 변경을 감지하기 어렵고, 렌더링 오류를 유발할 수 있습니다. 주문웹프론트개발팀(배달의민족 장바구니부터 결제 이후 화면까지의 주문 도메인 웹…
IllegalArgumentException은 400 Bad Request인가? 들어가며 API 개발을 하다 보면 예외가 발생할 때 어떤 HTTP Status Code를 응답해야 할지 고민하게 됩니다. 스프링 프레임워크를 사용하면 @ExceptionHandler 와 @ResponseSt…
Gemini와 삽질로 개발자의 뒤죽박죽, 뒤죽박죽 업무 메모 AI로 심폐소생시키기 개발자나 기획자라면 누구나 자신만의 방식으로 업무를 기록하고 추적합니다. 노션, 에버노트, 심지어 그냥 메모장(.txt)까지, 사용하는 툴은 각양각색이지만 많은 분들이 비슷한 방식으로 메모를 남깁니다. 바…
디자인 생산성을 높이는 피그마 플러그인을 만들어보자 2부: 개발 편 들어가며 "디자이너님! 혹시 다음 기획 피그마 시안 나왔을까요?" 프론트엔드 개발자라면 한 번쯤 남겨봤을 질문일 겁니다. 디자이너는 UI/UX를 설계하고 프론트엔드 개발자는 이를 구현합니다. 두 역할은 밀접하게 연결되어…
디자인 생산성을 높이는 피그마 플러그인을 만들어보자 1부: 디자인 편 이번 글에서는 디자인옵스TF의 프로젝트 중 하나인, 피그마 플러그인 ‘데이터브릿지’ 개발 과정을 중심으로, 어떤 고민들을 했고, 반복적인 디자인 작업과 불편한 리소스 수급을 어떻게 해결해 나갔는지 공유하려 합니다😀 ‘…
선제적 장애 대응을 위한 Sentry 최적화 적용기 들어가며 서비스가 성장했다는 걸 언제 체감하시나요? 보통 서버 트래픽, MAU(Monthly Active Users), 시장점유율, 영업이익 등을 지표로 삼지만, 프론트엔드 개발자로 일하면서 조금 다른 방식으로 그 순간을 경험했습니다.…
GuardDuty 이벤트 분석으로 살펴보는 침해대응 아키텍처 고도화 사례 갈수록 정교해지는 보안 위협은 고도화된 보안 아키텍처를 설계하고 구현하는 능력을 더욱 중요하게 만들고 있습니다. 이러한 보안 위협에 대응하기 위해 우아한형제들에서는 적절한 보안 서비스 모니터링 환경을 구축하고 위협…
기술블로그를 책으로, “요즘 우아한 AI 개발” 출간! 이번엔 AI 이야기 "요즘 우아한 AI 개발" 우아한형제들의 기술블로그 글을 엮은 두 번째 책, "요즘 우아한 AI 개발"을 소개합니다! 2023년 기술블로그 글을 엮어 펴낸 첫 책 "요즘 우아한 개발"이 좋은 반응을 얻은 데 힘입…
GPT를 활용한 카탈로그 아이템 생성 배달의민족, 그리고 AI가 만드는 상품 카탈로그 우아한형제들의 서비스 비전은 "문 앞으로 배달되는 일상의 행복"입니다. 배달의민족은 고객이 원하는 음식을 빠르고 안전하게 배달하며 성장해 왔습니다. 이제는 그동안의 경험을 바탕으로 식자재, 생필품, 가…
데이터카탈로그에서 DataHub를 이용하는 방법 사내 데이터 디스커버리 도구인 데이터카탈로그는 DataHub를 기반으로 구축되었습니다. DataHub는 다양한 플랫폼과 연동되는 활발한 오픈소스 프로젝트로, 필요한 기능들을 새로 개발하지 않고도 활용할 수 있다는 장점이 있습니다. 그러나…
데이터카탈로그 PM이 ‘데이터 디스커버리’라는 가치를 풀어내는 방법 데이터 디스커버리란 조직 내에 존재하는 다양한 데이터를 쉽게 찾고 이해하여 분석에 활용할 수 있도록 돕는 과정입니다. 사용자 입장에서 이는 마치 거대한 서점에서 필요한 책을 찾는 것과 비슷합니다. 서점에는 수많은 책들이…
RADIUS 인증 실패 분석 및 해결 사례 RADIUS 네트워크 인증 환경에서는 보안 강화를 위해 공인인증서를 사용하며, 공인인증서는 매해 갱신 작업이 필요합니다. 하지만 인증서 갱신 과정에서 예상치 못한 클라이언트 인증 실패가 발생하였습니다. 이 글에서는 공인인증서(Globalsign…
코파일럿 “열일”하게 만드는 방법 깃허브 코파일럿(Github Copilot)은 IDE에서 사용할 수 있는 AI 페어 프로그래밍 도구입니다. 2021년에 최초로 공개된 비교적 젊은 툴이지만, 이제는 단 한 번이라도 사용해 본 적 없는 개발자를 찾기가 어려울 정도로 프로그래밍 필수 준비물…
로봇 ML 모델의 경량화 2부: 양자화 인식 훈련 "로봇 ML 모델의 경량화 1부: 훈련 후 양자화" 편에서는 Jetson 플랫폼의 특징, 양자화와 훈련 후 양자화에 대한 개념, TensorRT를 이용해 최적화를 하는 방법과 그 결과까지 알아봤습니다. 이번 편에서는 양자화로 인한 성능…
프로덕트 전략, 어떻게 시작해야 할까? "이 방향이 맞을까?" 연말, 연초가 되면 많은 PM과 리더들은 내년도 로드맵과 서비스 방향성을 고민하며 이 질문을 스스로에게 던집니다. 무엇을 우선순위에 두어야 할지, 어떤 문제를 해결해야 할지, 그리고 그 문제를 어떻게 풀어나가야 할지에 대한…
실시간 반응형 추천 개발 일지 2부: 벡터 검색, 그리고 숨겨진 요구사항과 기술 도입 의사 결정을 다루는 방법 "실시간 반응형 추천 개발 일지 1부: 프로젝트 소개" 편을 읽고 2편을 기다려주신 여러분, 반갑습니다. (아직 안 읽으셨다면 읽고 오셔도 됩니다. 여기서 기다리고 있을 테니까…
카프카 컨슈머에 동적 쓰로틀링 적용하기 이 글은 카프카(Kafka)를 사용하는 스프링 환경에서 메시지 처리 속도를 동적으로 조절해야하는 상황과 여러 쓰로틀링 기법들을 소개합니다. 카프카를 사용하는 스프링 프레임워크 환경에 익숙하고, 카프카의 기본 개념 및 컨슈머와 컨슈머 그룹, 파티션…
이젠 보내줄 때가 되었다. 대규모 트래픽의 C++ 시스템 Java로 전환하기 사용자의 배달 주소를 기반으로 어느 행정동/법정동에 속해 있는지를 판단하기 위해 기존에는 C++로 작성된 웹 서버를 사용하였습니다. 서버 한 대당 피크 시간 기준 2000TPS를 상회하는 많은 요청을 10ms…
2024 선물카드 제목 짓기 대회가 탄생하기까지: 운영, PM, 개발 이야기 배민선물하기에서는 생일과 같은 일반적인 상황뿐만 아니라 집들이나 이직 같은 다양한 축하 상황, 출산이나 입원 등 몸보신에 어울리는 상황까지 모두 아우를 수 있도록 1천 개 이상의 카드를 제공하고 있습니다. 이…
프롬프트 엔지니어링으로 메뉴 이미지 품질 검수하기: GPT 기반 업무 자동화 GPT의 등장으로 생성형 AI 기술은 대화, 검색, 추천 등 다양한 분야에서 활용되며 빠르게 보편화되고 있습니다. 2024년 10월 기준, 국내 ChatGPT 사용자는 520만 명을 넘어서며 10명 중 1명 이…
우아한히트텍: 직군을 넘어, 개발자를 하나로 잇다 들어가며 우아한형제들 TX(Tech eXperience)팀은 개발자 경험을 중심으로 교육과 성장을 지원하는 팀입니다. ‘개발조직의 전문성 강화를 통해 조직 생산성 및 국내외 시장 경쟁력을 확보한다.’는 미션을 기반으로 개발 리더십/기술…
WOOWACON 2024 발표 영상, 지금 바로 만나 보세요! 지난 10월 30일 많은 분들이 함께한 우아한형제들의 기술 콘퍼런스, WOOWACON 2024 발표 영상이 공개되었습니다.✨ 오프닝노트를 비롯해 백엔드, AI/ML, 프런트엔드, 로봇, PM, 디자인, 문화/성장, 이그나이트…
postgres_fdw로 마이그레이션 생산성 높이기 배달의민족 커머스 서비스들의 ‘상품’ 도메인 시스템 통합 프로젝트를 하며 postgres_fdw를 이용해 PostgreSQL DB 간의 별도 배치 애플리케이션 없이 마이그레이션을 경험했던 실제 사례 및 결과와 주의사항, 느낀 점들을 공…
PM, 디자이너, 개발자가 함께한 배달의민족 입점 과정 개선기 01. 들어가며 안녕하세요! 세일즈서비스팀은 ‘사장님이 고민하지 않고 신속하게 배달의민족에서 장사할 수 있는 서비스를 제공한다.’는 비전을 바탕으로 배달의민족의 입점할 수 있는 두 가지 방법인 전자계약서와 온라인 입점신청을…
[다시 보기] 12월 우아한테크세미나: 올해의 기술 콘퍼런스, 핵심만 골라봤습니다 – LLM 편 올해의 기술 콘퍼런스, 핵심만 골라봤습니다 – LLM 편 ㅤ 2024년 12월 우아한테크세미나 주제는 "올해의 기술 콘퍼런스, 핵심만 골라봤습니다 – LLM 편"입니다. 올 한 해에도 정말…
이 과제의 성과는 뭔가요? 지표 중심 커뮤니케이션이 불러온 변화 배민앱에는 동네 사람들이 직접 추천하는 오프라인 가게와, 단골들이 남긴 후기를 주제별로 모아 볼 수 있는 서비스가 있습니다. 바로 "우리동네" 서비스인데요. 현재 송파구와 광진구에서 시범 운영하면서 전국으로 서비스 범위를…
WOOWACON 2024, 배달 기술의 모든 것을 담다 기술로 세상을 더 나은 곳으로 만들겠다는 여정을 이어가는 우아한형제들. 그 특별한 하루, WOOWACON 2024가 10월 30일 그랜드 인터컨티넨탈 서울 파르나스에서 열렸습니다. 우아콘의 정식 명칭은 ‘우아한테크콘퍼런스’로, 우아…
검색 성능 개선을 위한 Elasticsearch 인덱스 구조와 쿼리 최적화 2023년 12월, 배달의민족 앱 상단 검색 기능에 장보기•쇼핑 탭이 추가되었습니다. 검색 창에 검색어를 입력하고 장보기•쇼핑 탭을 누르면 비마트와 배민스토어 상품만 검색할 수 있는 기능입니다. 커머스검색개발파트…
왜 이미지만 700MB를 다운로드하는 거죠?: 배민우리동네 콘텐츠 피드 이미지 최적화 사례 이 메시지를 받았을 때 대수롭지 않게 생각했습니다. 에이 얼마나 느리겠어. 문제가 있어도 와이파이 문제겠지! 그리고 분석도구를 이용해서 확인해보니 이미지만 도합 700MB를 다운로드하고 있었습니다…
API 모킹으로 테스트를 더 편리하게, Mock Service GUI 소개 여러분은 프론트엔드의 API 모킹 환경을 어떤 방식으로 구축하고, 사용하고 계신가요? 이 글에서는 API 모킹 환경을 개발자 친화적으로 개선해 나가는 과정을 다루며, 2023 우아한테크콘퍼런스에서 발표되었던 mo…
How Our Team Uses Kafka 🗒️일러두기: 이 글은 글로벌 독자를 고려해 2024년 5월 발행한 "우리 팀은 카프카를 어떻게 사용하고 있을까"를 영문화한 글입니다. Who Should Read This? This article is for those who already…
최적화된 인스턴스 추천을 위한 Rightsizing Recommendations 시스템 개발 여정 우아한형제들의 클라우드 인프라가 빠르게 성장함에 따라, 효율적인 비용 관리는 중요한 과제가 되었습니다. 이를 해결하기 위해, 팀은 인스턴스 비용 최적화를 목표로 Rightsizing Rec…
‘대략’이 아닌 ‘정확한’ 데이터로!: 생산성 측정 지표 개발기 SUPER2 어드민은 사장님이 제출한 입점 신청 및 정보 수정 요청을 승인하는 시스템을 제공하고 있어요. (자세한 요청 승인 과정이 궁금하시면 기술블로그 "승인 프로세스 뒤에 숨겨진 일꾼들: 사장님 입점요청 승인툴 고도화…
생성형 AI 서비스: 게이트웨이로 쉽게 시작하기 생성형 AI는 현재 인공지능 분야에서 가장 주목받는 기술 트렌드 중 하나입니다. 특히 ChatGPT, DALL-E, Midjourney 등의 텍스트 및 이미지 생성 도구들이 대중에게 공개되면서, 전 세계적으로 기업들의 생성형 AI 도입 사…
제목은 안정적인 AI 서빙 시스템으로 하겠습니다. 근데 이제 자동화를 곁들인… 요즘 음식점에 가면 서빙 로봇이 음식 서빙을 해주는 모습을 종종 보셨을 겁니다. 음식을 손님에게 제공하기까지는 재료 준비, 손질, 요리 서빙 등 여러 단계를 거쳐야 하는데요. 서빙 로봇을 사용하게 되면 서빙하…
만드는 사람이 수고로우면 쓰는 사람이 편하다: 사용자경험관리TF 활동 이야기 안녕하세요, 여러분 😀 올해 초 배민은 사용자들에게 ‘행복하고 편리한’ 앱 사용 경험을 제공하기 위해 사용자경험관리TF를 만들었어요. 오늘은 TF가 어떻게 시작되었고, 어떤 역할을 하고자 하는지, 그리고 실제…
프론트엔드 통합 테스트로 더 안전한 웹 서비스 개발하기 여러분의 테스트코드를 얼마나 신뢰하시나요? 오늘날 많은 웹 서비스가 성장하면서 UI/UX의 중요성이 더욱 강조되고, 프론트엔드에서 처리되는 비즈니스 로직도 증가하고 있습니다. 이에 따라 프론트엔드 테스트의 중요성도 자연스럽게 커지고…
Spring Statemachine 도입기 로봇과 함께 배달하는 서비스의 필요 우아한형제들 로보틱스LAB의 로봇딜리버리플랫폼팀에서는, 로봇으로 배달을 하기 위해 필요한 여러 서비스를 개발하고 있습니다. 이러한 서비스들 중에는 로봇의 배달 수행 과정을 관리하는 서비스가 있습니다. 이 서비…
[신청 마감] WOOWACON 2024에 지금 등록하세요! 많은 분들이 기다려주신 소식! 우아한테크콘퍼런스, ‘WOOWACON 2024‘가 오는 10월 30일 개최됩니다 🙌 WOOWACON 2024에는 백엔드, AI/ML, 프런트엔드, 로봇, PM, 디자인, 문화/성장 등 다양한 분야의…
승인 프로세스 뒤에 숨겨진 일꾼들: 사장님 입점요청 승인툴 고도화 프로젝트 경험담 사장님이 배민에서 장사를 시작하기 전, 어떤 것들을 준비할까요? 우리가 보는 배민앱에서 가게가 노출되고 주문을 받기위해서, 사장님은 조금 길고 험난한 준비과정을 거쳐야 합니다. - 사장님과 가게에 대한 기…
우아한테크캠프 7기: 데모데이 1위 팀의 로그 매니저 프로젝트를 소개합니다! 유난히 길었던 지난 여름, 우아한형제들에서는 서버 개발자 양성을 위한 우아한테크캠프(이하 우테캠) 7기가 진행되었습니다. 10주간 실력을 갈고 닦은 교육생들은 한곳에 모여 데모데이에서 열정을 불태웠는데요. 이번…