전체 글

Running Experiments on Myself
우테코

야구보구 - 10만명의 사용자를 받아들일 수 있는 아키텍처

야구보구 - 10만명의 사용자를 받아들일 수 있는 아키텍처개요최근 면접에서 “개발자와 엔지니어의 차이가 무엇이냐”는 질문을 받았다.코드를 작성하는 것에서 끝나는 개발자와 달리, 엔지니어는 왜 이 구조를 선택해야 하는지, 트래픽이 늘어나면 어떻게 변할지, 확장성과 안정성을 어떻게 확보할지를 끝까지 고민하는 사람이라는 이야기를 들었다. 이 질문이 생각보다 오래 남았다. 나 스스로도 프로젝트를 진행하면서 기능 구현에 집중해 왔지, “이 시스템이 10배, 100배 커지면 어떤 문제가 생길까?”를 깊게 고민해 본 적은 많지 않았기 때문이다. “만약 사용자가 10만 명으로 늘어난다면, 지금의 시스템은 견딜 수 있을까?”“그렇지 않다면 어떤 아키텍처로 바뀌어야 할까?”현재 구조의 병목을 분석하고, 10만 명 규모를 ..

우테코

실시간 KBO 웹데이터는 왜 이렇게 '흐르는 값'일까

실시간 KBO 웹데이터는 왜 이렇게 '흐르는 값'일까Playwright 크롤링과 Adaptive Polling으로 만든 야구보구의 실시간 구조야구 경기 중 채팅창을 보면 "지금 몇 대 몇?" 같은 질문이 끊이지 않는다. 야구보구는 경기의 생동감을 채팅 안으로 그대로 끌고 오기 위해 야구 실시간 정보가 필요했다. 하지만 KBO는 공식적인 실시간 경기 데이터 API를 제공하지 않는다. 실제 경기 정보는 모두 웹페이지에서 동적으로 갱신되는 값으로만 노출된다. 야구보구는 이 웹페이지를 실시간으로 크롤링해 GPS 직관 인증, SSE 기반 경기장 팬 비율 조회, 팬 승률 분석을 제공하는 구조를 선택했다. 처음에는 단순했다. "그냥 웹에서 긁어오면 되겠지."하지만 실제로 마주한 데이터는 완성된 값이 아니라, 경기 도..

우테코

SSE fan-out 문제 해결하기

보호되어 있는 글입니다.

우테코

[레벨4] Page Object Pattern

보호되어 있는 글입니다.

우테코

[우아콘 후기] 2025 WOOWACON

[우아콘 후기] 2025 WOOWACON운이 좋게도 우테코 내에서 당첨되어서 우아콘에 다녀왔다! 🙇‍♀️ 세션들을 들으며 느꼈던 점을 공유하려고한다. 😃 글로벌 타깃팅 서비스, 수억 명의 고객을 향한 도전세션 요약BUDS는 배달의민족의 유저 데이터 타깃팅 시스템이고, 글로벌 버전 이름은 Segmentum이다.이 서비스는 처음엔 국내 타깃팅용으로 출발했지만, 지금은 전 세계 수억 명의 고객을 대상으로 하는 대규모 API 플랫폼으로 성장했다. 확장 과정에서 팀이 마주한 대표적인 문제는 세 가지였다.데이터 구조와 스키마의 복잡도 증가수만 건의 요청(TPS)을 처리해야 하는 성능 한계서비스 확장에 따라 커지는 비용 부담이를 해결하기 위해 팀은 다음과 같은 전략을 선택했다.DynamoDB + 비정규화 모델링으..

우테코

팀 야구보구 인터뷰 북 ⚾️

팀 야구보구 인터뷰 북 ⚾️저희 팀이 프로젝트를 진행하며 어떤 생각을 했고, 어떻게 성장했는지 궁금하지 않으신가요? 프로젝트를 돌아보며, 저희가 나눈 솔직 담백한 이야기들을 여기에 모아봤어요. Chapter 1. 우리 팀이 위기였던 순간은 언제였다고 생각하나요?신기하게도 이 질문에는 모든 팀원이 망설임 없이 같은 순간을 떠올렸어요. 바로 ‘야구보구’가 탄생하기 전, 몇 번이고 프로젝트 주제가 바뀌었던 바로 그 순간이에요. 저희 팀은 개발자 면접 후기 공유 앱으로 시작했지만, 코치님의 조언에 따라 방향을 틀어야 했어요.그 후 애니메이션 성지 순례라는 새로운 주제로 일주일 넘게 열심히 기획을 다듬었죠. 하지만 이번에는 '저작권'이라는 예상치 못한 큰 벽에 부딪혔어요. 실제 서비스를 목표로 했던 저희에게는 치..

우테코

야구보구의 인프라 구조

야구보구의 인프라 구조안녕하세요! 오늘은 저희 서비스가 어떤 인프라 위에서 돌아가고 있는지 소개해보려고 합니다. 전체 구조 한눈에 보기저희는 AWS VPC 기반으로 서비스를 운영하고 있습니다.네트워크는 크게 3개의 서브넷으로 나뉘어 있습니다.Public Subnet (Nginx): 10.0.1.0/24 - 외부 트래픽이 들어오는 곳Private Subnet (Prod): 10.0.2.0/24 - 실제 서비스가 돌아가는 곳Public Subnet (Dev): 10.0.3.0/24 - 개발하고 테스트하는 곳현재는 ap-northeast-2a 단일 가용 영역에서 운영 중입니다. 전체적인 흐름은 아래와 같습니다. 사용자 → Cloudflare → Nginx (Public) → Prod 서버 (Private) →..

우테코

모니터링) CloudWatch로 EC2 모니터링 및 Discord 알림 구현하기

CloudWatch로 EC2 모니터링 및 Discord 알림 구현하기모니터링하는 이유EC2에서 Spring Boot 서비스 돌리면서 겪었던 문제들은 다음과 같습니다.서버가 죽은 뒤 한참 후에 주변 크루로부터 알게 되었습니다.메모리 터질 것 같은데 미리 알 수가 없었습니다.에러 발생 여부를 확인하기 위해 매번 EC2 접속해야 했습니다. 전체 아키텍처 1. CloudWatch Agent 설치CloudWatch Agent 역할AWS는 기본적으로 CPU, 네트워크 같은 것만 모니터링합니다.하지만 중요한 메모리, 디스크 용량, 로그 파일은 포함하지 않기 때문에, CloudWatch Agent를 깔면 EC2 내부 정보를 수집할 수 있습니다. 설치하기환경: Ubuntu, ARM64cd /tmpcurl -O https..

mint*
Minty Box