본문 바로가기

IT

(26)
[우버(Uber) 기술 블로그] 10만 대의 DB 서버를 자동으로 움직이는 힘, Stateful 플랫폼 '오딘(Odin)' 이야기 안녕하세요! 오늘은 글로벌 모빌리티 기업 우버(Uber)가 대규모 데이터베이스와 스토리지 시스템을 어떻게 효율적으로 자동 관리하고 있는지, 그들의 핵심 인프라 플랫폼인 '오딘(Odin)'에 대해 소개해 드리려고 합니다.최근 많은 기업들이 서비스 확장을 위해 쿠버네티스(Kubernetes)를 도입하지만, 데이터베이스(MySQL, Cassandra)나 메시지 큐(Kafka) 같은 상태 저장(Stateful) 시스템을 대규모로, 그것도 완전히 자동화하여 관리하는 것은 여전히 까다로운 영역입니다.몇 백 대 수준에서 시작해 현재 10만 대 이상의 호스트를 관리하기까지, 우버가 겪은 고민과 기술적 해법을 함께 살펴보겠습니다.1. 런북(Runbook)의 한계에서 탄생한 '오딘'2014년, 우버가 무서운 속도로 성장하..
[AWS 가이드] 어떤 데이터베이스를 써야 할까? 아키텍처별 AWS DB 선택 팁 안녕하세요! Hans입니다.대규모 클라우드 아키텍처를 설계하거나 새로운 프로젝트를 시작할 때 가장 고민되는 부분 중 하나는 바로 "어떤 데이터베이스(DB)를 선택할 것인가?"일 것입니다.AWS는 강력하고 다양한 관리형 DB 서비스를 제공하지만, 서비스의 특성에 맞는 최적의 DB를 고르는 것은 쉽지 않습니다. 오늘은 데이터의 형태(관계형, 비관계형, 인메모리)에 따라 어떤 AWS DB 서비스를 선택해야 하는지 정리했습니다.1. 관계형 데이터베이스 (Relational DB)전통적인 테이블 구조, ACID 트랜잭션, 명확한 스키마가 필요할 때 선택하는 데이터베이스 유형입니다.AWS RDS (Managed Relational DB Service)특징: MySQL, PostgreSQL, Oracle 등 친숙한 ..
개발자의 기본 소양, RESTful한 API 주소 설계 규칙 5가지(feat. Path Variable vs Query Parameter) 지난 포스팅에서는 우리가 매일 사용하는 URL의 6가지 기본 구조(Protocol부터 Fragment까지)에 대해 알아보았습니다.🔗 지난 글 보기: 매일 쓰는 주소창의 비밀, URL 구조 완벽 정리 지난 글의 예시 주소 중에 /blog/posts/88 기억하시나요? 왜 하필 주소가 이렇게 설계되었을까요?오늘은 실무에서 백엔드와 프론트엔드 개발자들이 가장 많이 고민하고, 기술 면접에서도 단골로 출제되는 'RESTful한 API 주소(URI) 설계 규칙'을 깔끔하게 정리해 보겠습니다.이 규칙만 지켜도 누구나 한눈에 알아볼 수 있는 "클린 코드" 같은 주소를 만들 수 있습니다. 💡 REST API 주소 설계의 핵심 철학REST(Representational State Transfer) API 주소를 설계할..
매일 쓰는 주소창의 비밀, URL 구조 완벽 정리 (Protocol부터 Fragment까지) 우리가 인터넷을 할 때 하루에도 수십 번씩 마주치는 주소창, 바로 URL(Uniform Resource Locator)입니다.개발을 하다 보면 이 URL을 파싱하거나, 직접 파라미터를 붙여 데이터를 전송해야 하는 일이 정말 많죠. 기술 면접에서도 단골로 나오는 주제이기도 합니다. 오늘은 URL의 각 구성 요소가 어떤 역할을 하는지 핵심만 쏙쏙 뽑아 정리해 보겠습니다.📌 URL 한눈에 보기우리가 예시로 볼 URL은 다음과 같습니다.https://dailyhans.com:8080/blog/posts/88?utm_source=menu#subtitle2이 긴 주소는 사실 각자의 명확한 역할을 가진 6개의 조각으로 이루어져 있습니다. 하나씩 쪼개서 살펴보시죠?1. Protocol (프로토콜)예시: https:/..
[MSA] 마이크로서비스 환경에서 데이터 일관성을 유지하는 5가지 방법 (Saga, CQRS, CDC) 안녕하세요, Hans입니다.최근 소프트웨어 개발 트렌드에서 마이크로서비스 아키텍처(MSA, Microservices Architecture)는 빼놓을 수 없는 핵심 패턴이 되었습니다. 애플리케이션을 특정 기능을 담당하는 작고 독립적인 서비스들의 모음으로 구축하는 이 방식은 유연성, 확장성, 그리고 유지 관리 용이성 측면에서 뛰어난 장점을 제공합니다.하지만 빛이 있으면 그림자도 있는 법입니다. 마이크로서비스 아키텍처를 도입할 때 개발자들을 가장 괴롭히는 난제가 하나 있습니다. 바로 '데이터 일관성(Data Consistency)'을 어떻게 유지할 것인가에 대한 문제입니다.오늘 포스팅에서는 마이크로서비스에서 데이터 불일치가 발생하는 원인을 짚어보고, 이를 해결하기 위한 5가지 핵심 데이터 일관성 전략을 정리..
API 성능을 획기적으로 개선하는 5가지 필수 전략 안녕하세요, Hans입니다.오늘은 대규모 트래픽 환경에서 API 응답 속도와 서버 성능을 최적화하는 5가지 핵심 방법(페이지네이션, 비동기 로깅, 캐싱, 페이로드 압축, 커넥션 풀)을 알아봅니다.서비스의 규모가 커지고 트래픽이 증가할수록 API 성능 최적화는 선택이 아닌 필수가 됩니다. API 응답 속도가 느려지면 사용자 경험(UX)이 하락하고, 결국 고객 이탈로 이어지기 때문입니다.그렇다면 서버 리소스를 효율적으로 사용하면서 API의 응답 지연 시간(Latency)을 줄일 수 있는 방법은 무엇일까요? 오늘은 백엔드 개발자라면 반드시 알아두어야 할 'API 성능을 개선하는 5가지 핵심 전략'에 대해 자세히 알아보겠습니다.1. 페이지네이션 (Pagination) 적용하기클라이언트가 대량의 데이터 리스트를 ..
Google Gemini CLI 설치 방법 1단계: 사전 준비 (Homebrew 설치)가장 쉽고 편리한 설치를 위해 Homebrew라는 패키지 관리자를 사용할 거예요. 맥북 사용자 대부분이 사용하는 필수 도구입니다.터미널 열기Command + Space를 눌러 Spotlight를 열고 '터미널'을 검색한 뒤 실행하세요.Homebrew 설치 확인Bash터미널에 아래 명령어를 입력하고 Enter를 누르세요.brew --version만약 버전 정보(예: Homebrew 4.x.x)가 나오면 이미 설치된 것이므로 2단계로 바로 넘어가세요.command not found와 같은 오류가 발생하면 Homebrew가 설치되지 않은 것입니다.Homebrew 설치 (필요시)아래 명령어를 터미널에 복사하여 붙여넣고 Enter를 누르세요. 설치 과정에서 비밀번호를 요..
[OOP] 주차장 - ParkingLot 주차장을 객체 지향으로 설계를 해보려고 합니다. 복잡한거 없이 제~일 간단한 디자인입니다.오로지 주차하고 출차하는 것만 표현해봤습니다. 코드는 Github에서 확인하실 수 있습니다. EOD. ThanksHans