기술 블로그 모음

국내 IT 기업들의 기술 블로그 글을 한 곳에서 모아보세요

전체 프론트엔드 백엔드 데브옵스 AI 아키텍처 DB 네트워크 보안 기타
끊김 없는 사용 경험을 위하여 : 카카오톡 선물함 속 교환권을 배달의민족 주문으로 연결한 여정
우아한형제들
끊김 없는 사용 경험을 위하여 : 카카오톡 선물함 속 교환권을 배달의민족 주문으로 연결한 여정

배민선물하기팀은 선물하는 이의 마음과 받는 이의 즐거움을 잇는 ‘배민선물하기’ 서비스를 담당하며, 배달의민족(이하 배민) 앱 내 상품권 발행부터 외부 채널과의 유통망 연동을 관리하고 있습니다. 이번에 소개할 프로젝트는 카카오톡에서 선물 받은 브랜드 교환권을 배민 앱에 직접 등록해 결제에 사용할 수 있도록 구현한 ‘외부 교환권 연동...

WOOWACON 2025 미니게임 WOOWA POP!
우아한형제들
WOOWACON 2025 미니게임 WOOWA POP!

지난 WOOWACON 2025 기술 콘퍼런스에서 미니게임을 운영했습니다. 우아팝(WOOWA POP!)이라는 이름의 수박 라이크(Suika-like) 게임이었습니다. 우아콘 세션 간에 플레이할 수 있고 미션이나 상위 랭킹을 달성하면 상품을 받을 수 있었습니다. 이렇게 쓰고 보니 별로 특별할 것 없는 프로젝트처럼 보입니다. 그런데 서문을 준비하며 개연성에...

Delivering the Future: 글로벌 해커톤 2025, 준비부터 운영까지
우아한형제들
Delivering the Future: 글로벌 해커톤 2025, 준비부터 운영까지

들어가며 딜리버리히어로는 우아한형제들을 포함해 전 세계 70여 개국에서 다양한 브랜드를 운영하고 있습니다. 국가와 시장은 서로 다르지만 ‘더 나은 고객 경험’이라는 공통된 미션을 위해 모두 각자의 자리에서 기술로 다양한 도전을 해오고 있습니다. 이런 도전들을 더 단단하게 연결하기 위한 자리로, 올해 8월 글로벌 해커톤 2025가 진행되었습니다. 딜리버...

배달의민족 주문접수 채널에 Flutter를 도입하며 고민한 것
우아한형제들
배달의민족 주문접수 채널에 Flutter를 도입하며 고민한 것

들어가며 배달의민족 주문접수 채널은 파트너의 주문 관리를 돕기 위해 매일 수백만 건의 주문을 실시간으로 처리하며, 다양한 디바이스를 지원하고 있습니다. 점차 다양해지는 디바이스 생태계에 대응하고자, 신규 제품에 Flutter + Clean Architecture를 선택했고, 나아가 비즈니스 요구사항에 더 빠르게 대응하기 위해 웹뷰 기반 컨테이너 앱(A...

“함께 구매하면 좋은 상품” 추천 모델 고도화
우아한형제들
“함께 구매하면 좋은 상품” 추천 모델 고도화

배달의민족에서는 음식 배달뿐만 아니라 장보기도 당일 배송이 가능하다는 사실, 알고 계셨나요? 배민의 장보기·쇼핑 서비스는 배민B마트를 비롯해 마트, 편의점, 꽃, 전자제품 등 다양한 셀러가 입점해 있어 다양한 물건을 빠르게 받아보실 수 있는데요. 고객이 서비스에 진입한 순간부터 구매를 완료하는 여정까지 최적의 상품을 발견할 수 있도록 개인화 추천, 함...

우리는 코드처럼 문화도 리팩토링한다
우아한형제들
우리는 코드처럼 문화도 리팩토링한다

팀 소개 커머스웹프론트개발팀(이하 “커머프팀”)은 배달의민족의 모든 커머스 서비스와 플랫폼은 물론, 백오피스부터 뒷단의 물류시스템에 이르기까지 웹 클라이언트 영역을 담당하는 거대한 규모의 팀입니다. 각기 다른 서비스를 담당하던 팀이 모여 하나의 큰 팀을 이루었고, 배달의민족이 꿈꾸는 커머스의 새로운 챕터를 열기 위한 힘찬 발걸음을 내디뎠습니다. 팀의 ...

잃어버린 접근성을 찾아서
우아한형제들
잃어버린 접근성을 찾아서

개발한 서비스의 접근성을 직접 확인해 보신 적 있나요? 바쁜 일정 속에 각종 요구사항을 반영하다 보면, 접근성은 흔히 ‘언젠가 챙겨야 할 착한 일’ 정도로 치부되곤 합니다. 부끄럽지만 저희도 마찬가지였습니다. 그러나 접근성을 소홀히 하면 실제 사용 과정에서 예상보다 큰 불편이 생길 수 있습니다. 가령 상품을 구매하고자 화면을 수백...

기획부터 개발까지 전부 직접 했습니다 – 우테코 7기 크루 서비스 론칭!
우아한형제들
기획부터 개발까지 전부 직접 했습니다 – 우테코 7기 크루 서비스 론칭!

우아한테크코스(이하 우테코)는 우아한형제들이 운영하는 10개월 과정 개발자 교육 프로그램입니다. 개발자 교육에서 기술만 배우면 될까요? 우테코는 소프트 스킬도 중요하게 생각하고 있습니다. 그래서 웹 백엔드, 웹 프론트엔드, 모바일 안드로이드와 같은 기술적인 과정뿐만 아니라 말하기와 글쓰기 교육을 같이 진행하고 있습니다. 커리큘럼은 5단계의 레벨로 구성...

AI와 함께하는 테스트 자동화: 플러그인 개발기
우아한형제들
AI와 함께하는 테스트 자동화: 플러그인 개발기

프롤로그 저희 팀에서 관리하는 레포지토리는 7개입니다. 빠른 비즈니스 과제를 해내가며 필수 테스트코드만 작성하다 보니 커버리지가 부족한 레포지토리가 생겼습니다. 특히 엣지케이스나 예외 상황에 대한 테스트가 부족했고, 이는 운영 안정성을 떨어뜨리는 원인이 되었습니다. 30분 만에 100개 테스트 자동 생성, 어떻게 했을까? 100개의 단위 테스트를 작성...

우아한형제들이 장애를 놓치지 않고 탐지하는 방법
우아한형제들
우아한형제들이 장애를 놓치지 않고 탐지하는 방법

배달의민족을 사용하는 고객들은 늘 오늘의 식사를 기대합니다. 점심시간에 맞춰 미리 떡볶이를 주문하고, 저녁에는 치킨과 함께 축구 경기를 즐길 계획을 세우며 퇴근합니다. 하지만 주문을 하려는 순간 시스템 장애가 발생한다면 어떨까요? 단순히 메뉴를 바꾸는 번거로움에서 끝나는 게 아니라 기대했던 행복한 시간이 한순간에 무너져버릴 수 있습니다. 특히 월드컵 ...

100만 TPS 로그 시스템, KEDA를 이용한 오토스케일링 적용기
우아한형제들
100만 TPS 로그 시스템, KEDA를 이용한 오토스케일링 적용기

들어가는 글 우아한형제들의 수많은 시스템에서 남는 로그는 매우 방대한 양을 자랑합니다. 운영환경 기준으로 하루 수십TB의 데이터가 처리되고 있고, 피크타임 기준으로 초당 레코드 수는 100만 단위를 가뿐히 넘기고 있습니다. 이렇게 데이터가 많은 것만으로도 버거운데, 한 술 더 떠서 우아한형제들 서비스 트래픽은 극심한 변동성을 자랑합니다. 사용자의 요청...

장시간 비동기 작업, Kafka 대신 RDB 기반 Task Queue로 해결하기
우아한형제들
장시간 비동기 작업, Kafka 대신 RDB 기반 Task Queue로 해결하기

전자계약서 시스템에서는 다양한 업무 목적에 따라 여러 형태의 대용량 엑셀 파일을 생성할 수 있습니다. 예를 들어 생산성 지표 엑셀, 근무 관리 엑셀, 행정 처분 추정 업주 엑셀, 계약현황 엑셀 등 각기 다른 조건과 데이터로 구성된 엑셀을 이메일로 받아볼 수 있는 기능인데요. 데이터 조건에 따라 엑셀 생성 시간이 오래 걸려, 화면에서 결과를 기다리지 않...

Server-Sent Events로 실시간 알림 전달하기
우아한형제들
Server-Sent Events로 실시간 알림 전달하기

들어가며 식당에 있다 보면 “배달의민족 주문~!” 알림을 한 번쯤 들어보셨을 거예요. 이 알림은 주문이 들어올 때 사장님이 빠르게 확인하고 처리할 수 있도록 도와주는 주문 접수 프로그램에서 발생합니다. 이 프로그램을 만드는 팀이 바로 주문접수채널팀으로, Windows·macOS PC, 모바일 앱(Android, iOS), Android POS 등 다양...

우아한 디버깅 툴 2부: 좀 더 편하게 일하기 위한 개선들
우아한형제들
우아한 디버깅 툴 2부: 좀 더 편하게 일하기 위한 개선들

지난 글 "우아한 디버깅 툴 1부: 웹뷰/웹페이지 원격으로 디버깅하기"에서는 이슈 정보를 쉽게 기록하고 공유하는 방법에 대해 다뤘습니다. 하지만 QA를 더 원활하게 진행하기 위해서는 아직 개선해야 할 부분이 많았습니다. 이번 글에서는 QA 업무 생산성 향상을 위해 추가한 기능들을 소개합니다. 들어가기 전 복습하기 기록방 : 원격 디바이스에서 기록한 데...

우아한 디버깅 툴 1부: 웹뷰/웹페이지 원격으로 디버깅하기
우아한형제들
우아한 디버깅 툴 1부: 웹뷰/웹페이지 원격으로 디버깅하기

버그 재현, 생각보다 쉽지 않습니다 버그가 발견되었을 때 프론트엔드 개발자가 가장 많이 하는 말이 있습니다. “제 기기에선 잘 되는데요…?” 이슈가 발생하면 우리는 가장 먼저 상황을 똑같이 재현해보려 합니다. 하지만 재현이 항상 되는 건 아닙니다. 간헐적으로만 나타나거나, 특정 계정·환경에서만 발생하는 경우도 많죠. 예시 상황으로 알아보기 예를 들어,...

기술블로그를 책으로, “요즘 우아한 AI 개발” 출간!
우아한형제들
기술블로그를 책으로, “요즘 우아한 AI 개발” 출간!

이번엔 AI 이야기 "요즘 우아한 AI 개발" 우아한형제들의 기술블로그 글을 엮은 두 번째 책, "요즘 우아한 AI 개발"을 소개합니다! 2023년 기술블로그 글을 엮어 펴낸 첫 책 "요즘 우아한 개발"이 좋은 반응을 얻은 데 힘입어, 이번에는 AI·데이터·로봇 이야기를 담은 시리즈 2탄, "요즘 우아한 AI 개발"을 출간했습니다. 🎉 "요즘 우아한 ...

GPT를 활용한 카탈로그 아이템 생성
우아한형제들
GPT를 활용한 카탈로그 아이템 생성

배달의민족, 그리고 AI가 만드는 상품 카탈로그 우아한형제들의 서비스 비전은 "문 앞으로 배달되는 일상의 행복"입니다. 배달의민족은 고객이 원하는 음식을 빠르고 안전하게 배달하며 성장해 왔습니다. 이제는 그동안의 경험을 바탕으로 식자재, 생필품, 가전제품 등 다양한 상품으로 서비스 범위를 확장하고 있으며, 이에 따라, 배달의민족을 통해 음식을 주문하는 것처럼, 생필품이나 생활용품을 구매하는 경우도 점점 많아지고 있습니다. 급하게 필요한 수건이나 양말 […] The post GPT를 활용한 카탈로그 아이템 생성 first appeared on 우아한형제들 기술블로그.

데이터카탈로그에서 DataHub를 이용하는 방법
우아한형제들
데이터카탈로그에서 DataHub를 이용하는 방법

사내 데이터 디스커버리 도구인 데이터카탈로그는 DataHub를 기반으로 구축되었습니다. DataHub는 다양한 플랫폼과 연동되는 활발한 오픈소스 프로젝트로, 필요한 기능들을 새로 개발하지 않고도 활용할 수 있다는 장점이 있습니다. 그러나 DataHub를 처음 도입했을 때, 사내 구성원들로부터 UI/UX가 불편하다는 피드백을 받았습니다. 특히 데이터에 익숙하지 않은 사용자들에게는 DataHub의 다양한 기능들이 오히려 진입 장벽이 되었습니다. 저희는 사용자들이 원하는 데이터를 쉽게 찾고 활용하는 […] The post 데이터카탈로그에서 DataHub를 이용하는 방법 first appeared on 우아한형제들 기술블로그.

데이터카탈로그 PM이 ‘데이터 디스커버리’라는 가치를 풀어내는 방법
우아한형제들
데이터카탈로그 PM이 ‘데이터 디스커버리’라는 가치를 풀어내는 방법

데이터 디스커버리란 조직 내에 존재하는 다양한 데이터를 쉽게 찾고 이해하여 분석에 활용할 수 있도록 돕는 과정입니다. 사용자 입장에서 이는 마치 거대한 서점에서 필요한 책을 찾는 것과 비슷합니다. 서점에는 수많은 책들이 있지만 이름만 알고 정확한 위치를 모르면 찾는 데 많은 시간이 걸립니다. 어떨 땐 정확한 이름도 모르는 상태에서 우선 둘러만 보려고 서점에 가기도 합니다. 데이터 디스커버리 […] The post 데이터카탈로그 PM이 ‘데이터 디스커버리’라는 가치를 풀어내는 방법 first appeared on 우아한형제들 기술블로그.

RADIUS 인증 실패 분석 및 해결 사례
우아한형제들
RADIUS 인증 실패 분석 및 해결 사례

RADIUS 네트워크 인증 환경에서는 보안 강화를 위해 공인인증서를 사용하며, 공인인증서는 매해 갱신 작업이 필요합니다. 하지만 인증서 갱신 과정에서 예상치 못한 클라이언트 인증 실패가 발생하였습니다. 이 글에서는 공인인증서(Globalsign) 갱신 이후 발생한 RADIUS 인증 실패 사례를 분석하고, 원인과 해결 과정을 공유합니다. 공인인증서 갱신 후 RADIUS 인증 실패 문제를 경험했거나, RADIUS 인증 프로세스, 인증서 체계에 관심 있는 독자에게 […] The post RADIUS 인증 실패 분석 및 해결 사례 first appeared on 우아한형제들 기술블로그.

코파일럿 “열일”하게 만드는 방법
우아한형제들
코파일럿 “열일”하게 만드는 방법

깃허브 코파일럿(Github Copilot)은 IDE에서 사용할 수 있는 AI 페어 프로그래밍 도구입니다. 2021년에 최초로 공개된 비교적 젊은 툴이지만, 이제는 단 한 번이라도 사용해 본 적 없는 개발자를 찾기가 어려울 정도로 프로그래밍 필수 준비물이 되었는데요. 우아한형제들에서는 개발직군 구성원들이 코파일럿을 사용할 수 있도록 유료 구독을 지원하고 있습니다. 처음에는 저도 코드 자동완성 기능만 사용했는데요. 코파일럿에 점점 익숙해지다 보니 어떻게 […] The post 코파일럿 “열일”하게 만드는 방법 first appeared on 우아한형제들 기술블로그.

로봇 ML 모델의 경량화 2부: 양자화 인식 훈련
우아한형제들
로봇 ML 모델의 경량화 2부: 양자화 인식 훈련

"로봇 ML 모델의 경량화 1부: 훈련 후 양자화" 편에서는 Jetson 플랫폼의 특징, 양자화와 훈련 후 양자화에 대한 개념, TensorRT를 이용해 최적화를 하는 방법과 그 결과까지 알아봤습니다. 이번 편에서는 양자화로 인한 성능 저하를 막는 또 하나의 방법, 양자화 인식 훈련(Quantization Aware Training, QAT)에 대해 알아보겠습니다. 본격적인 내용에 앞서, 우아콘에서 발표한 "자율주행 로봇을 위한 머신러닝 모델의 추론 […] The post 로봇 ML 모델의 경량화 2부: 양자화 인식 훈련 first appeared on 우아한형제들 기술블로그.

프로덕트 전략, 어떻게 시작해야 할까?
우아한형제들
프로덕트 전략, 어떻게 시작해야 할까?

"이 방향이 맞을까?" 연말, 연초가 되면 많은 PM과 리더들은 내년도 로드맵과 서비스 방향성을 고민하며 이 질문을 스스로에게 던집니다. 무엇을 우선순위에 두어야 할지, 어떤 문제를 해결해야 할지, 그리고 그 문제를 어떻게 풀어나가야 할지에 대한 답을 찾는 과정은 설레면서도 막막함을 동반하죠. 규모가 크고 복잡한 제품을 관리할수록 이러한 고민은 더 깊어질 수밖에 없습니다. 조직을 같은 방향으로 이끄는 전략이 […] The post 프로덕트 전략, 어떻게 시작해야 할까? first appeared on 우아한형제들 기술블로그.

실시간 반응형 추천 개발 일지 2부: 벡터 검색, 그리고 숨겨진 요구사항과 기술 도입 의사 결정을 다루는 방법
우아한형제들
실시간 반응형 추천 개발 일지 2부: 벡터 검색, 그리고 숨겨진 요구사항과 기술 도입 의사 결정을 다루는 방법

"실시간 반응형 추천 개발 일지 1부: 프로젝트 소개" 편을 읽고 2편을 기다려주신 여러분, 반갑습니다. (아직 안 읽으셨다면 읽고 오셔도 됩니다. 여기서 기다리고 있을 테니까요.) 오늘은 1편에 이어 실시간 행동 이력을 활용한 실시간 반응형 추천 시스템 의 개발에 대해 더 깊이 들어가 보도록 하겠습니다. 제 소개를 드려야겠네요. 저는 우아한형제들 추천프로덕트팀에서 AI/ML, Data Engineer를 하고 있는 정현입니다. […] The post 실시간 반응형 추천 개발 일지 2부: 벡터 검색, 그리고 숨겨진 요구사항과 기술 도입 의사 결정을 다루는 방법 first appeared on 우아한형제들 기술블로그.

카프카 컨슈머에 동적 쓰로틀링 적용하기
우아한형제들
카프카 컨슈머에 동적 쓰로틀링 적용하기

이 글은 카프카(Kafka)를 사용하는 스프링 환경에서 메시지 처리 속도를 동적으로 조절해야하는 상황과 여러 쓰로틀링 기법들을 소개합니다. 카프카를 사용하는 스프링 프레임워크 환경에 익숙하고, 카프카의 기본 개념 및 컨슈머와 컨슈머 그룹, 파티션 구조를 이해하는 독자를 대상으로 작성되었습니다. 모든 예제의 전체 소스코드는 GitHub 저장소에서 확인하실 수 있습니다. 분산 서버에서 대규모의 요청이 발생할 때 수평 확장을 통해 처리량을 늘릴 […] The post 카프카 컨슈머에 동적 쓰로틀링 적용하기 first appeared on 우아한형제들 기술블로그.

이젠 보내줄 때가 되었다. 대규모 트래픽의 C++ 시스템 Java로 전환하기
우아한형제들
이젠 보내줄 때가 되었다. 대규모 트래픽의 C++ 시스템 Java로 전환하기

사용자의 배달 주소를 기반으로 어느 행정동/법정동에 속해 있는지를 판단하기 위해 기존에는 C++로 작성된 웹 서버를 사용하였습니다. 서버 한 대당 피크 시간 기준 2000TPS를 상회하는 많은 요청을 10ms 이하 시간으로 응답할 수 있는 높은 성능을 제공했지만, C++의 특성상 여러가지 단점이 존재했습니다. 이를 Java 및 Spring Boot 기반으로 전환하기까지의 경험을 공유합니다. 배경 배달의민족에서는 배달 주소를 기반으로 어느 […] The post 이젠 보내줄 때가 되었다. 대규모 트래픽의 C++ 시스템 Java로 전환하기 first appeared on 우아한형제들 기술블로그.