데이터 엔지니어링 위클리 #9 | Vibe Coding, AI, Airbyte

2025. 4. 29. 23:54데이터 엔지니어링 위클리

Data Engineering Weekly #9

 


Articles


에어비앤비가 초당 100만 개의 이벤트로 개인화를 실현하는 방법

Airbnb는 사용자 경험을 개인화하기 위해 1초에 100만 건의 이벤트를 처리하는 User Signals Platform (USP)을 운영하고 있습니다. 이 플랫폼은 사용자의 비선형적인 행동을 실시간으로 이해하고, 이를 통해 앱 내 개인화된 추천 및 고객 지원을 가능하게 합니다. 여기서는 USP의 아키텍처와 Airbnb 엔지니어링 팀이 직면한 문제들, 그리고 이를 해결하기 위한 주요 설계 결정을 다룹니다.

  • User Signals Platform(USP)은 실시간 개인화를 위해 비선형 사용자 행동을 처리하는 시스템입니다.
  • 데이터 파이프라인과 온라인 서비스 레이어로 구성되어 있으며, Kafka와 Flink를 활용하여 1초 이내에 이벤트를 처리합니다.
  • 사용자 신호에는 기본 사용자 신호와 조인 신호가 포함되며, 이는 실시간으로 쿼리 가능합니다.
  • 사용자 세그먼트와 세션 참여 기능을 통해 개인화된 경험을 동적으로 제공합니다.
  • 시스템의 설계 원칙은 간결한 개발자 인터페이스 제공, 운영 안정성 강화, 및 데이터 무결성을 중시합니다.

개요

Airbnb는 개인화된 사용자 경험을 제공하기 위해 매 초 100만 개의 이벤트를 처리하는 User Signals Platform(USP)을 운영하고 있습니다. 이 시스템은 사용자 행동을 실시간으로 분석하여 맞춤형 추천을 제공하고, 사용자 요구에 신속하게 반응합니다. 하지만 이러한 개인화를 실현하는 것은 몇 가지 도전과제가 있습니다.

Airbnb의 개인화 도전과제

Airbnb의 개인화 노력은 다음과 같은 문제들로 인해 어려워집니다: - 비선형 사용자 여정: 사용자가 여러 숙소를 검색하고 예약하는 과정은 복잡하여 사용자 행동을 예측하기 어렵습니다. - 분산된 참여 신호: 다양한 시스템에서 사용자 신호가 발생하며 이를 통합하기가 어렵습니다. - 적시성 문제: 사용자가 특정 검색을 했다는 사실을 빠르게 파악해야 하며 지연이 발생하면 의미가 없습니다. - 팀의 통찰력 요구: 많은 제품팀이 복잡한 스트리밍 처리 기술을 배우고 싶지 않아, 쉽게 사용할 수 있는 도구가 필요합니다.

User Signals Platform(USP)의 구성

USP는 이러한 문제를 해결하기 위해 설계되었습니다. 이 시스템은 두 가지 주요 구성요소로 나뉘어 있습니다.

  1. 데이터 파이프라인 레이어:
    • Kafka 이벤트를 실시간으로 수집하고, 이를 구조화된 사용자 신호로 변환하여 KV 저장소에 저장합니다.
    • Flink를 사용하여 이벤트를 즉시 처리하고, 백필 및 수정도 수행할 수 있습니다.
  2. 온라인 서비스 레이어:
    • 사용자 신호를 빠르게 조회할 수 있는 API를 제공하여, 필요한 정보를 즉시 제공할 수 있게 합니다.

주요 기술 결정

Airbnb의 엔지니어링 팀은 USP 구축 시 몇 가지 중요한 결정을 내렸습니다: - Flink 사용: 이벤트를 실시간으로 처리하는 Flink를 선택하여 지연을 최소화했습니다. - 추가 전용 데이터 모델: 모든 데이터 쓰기를 추가 전용으로 하여 처리의 복잡성을 줄였습니다. - 구성 중심 개발 워크플로우: 개발자들이 쉽게 신호를 정의하고 관리할 수 있도록 구성 파일 기반의 인터페이스를 제공합니다.

사용자 신호와 세그먼트

사용자 행동에서 발생하는 여러 이벤트는 적절한 구조와 필터링을 통해 쏠쏠한 사용자 신호로 변환됩니다. 이 신호는 웹사이트의 개인화된 추천 및 일반적인 사용자 경험에 활용됩니다. 또한, 사용자 세그먼트를 정의하여 실시간으로 반응하는 동적 군집화를 가능하게 합니다.

세션 참여

USP는 사용자의 최근 행동을 추적하여 현재의 관심사나 목표를 파악합니다. 세션 참여는 사용자가 현재 활동 중인 내용을 집중적으로 분석하여 맞춤형 자료를 제공합니다.

결론

Airbnb의 User Signals Platform은 현재 하루에 100만 개 이상의 이벤트를 처리하고 있으며, 개인화된 사용자 경험을 제공하는 중요한 인프라로 자리 잡고 있습니다. 이 시스템은 기술적 복잡성을 사용자가 인지하지 못하도록 숨기면서도 강력한 데이터 활용을 가능하게 합니다. 앞으로도 Airbnb는 시스템의 발전을 계속 추진하며, 더욱 지능적이고 효율적인 처리 방안을 모색할 것입니다.

2025-04-22 00:40:15
ByteByteGo Newsletter
How Airbnb Powers Personalization With 1M Events Per Second

바이브 코딩 바이블: AI 에이전트 시대의 새로운 코딩 패러다임

이 글은 "바이브 코딩(Vibe Coding)"이라는 새로운 코딩 패러다임에 대해 설명하며, AI 에이전트와 함께하는 코딩의 변화를 다룹니다. 특히, 자연어로 의도를 표현하면 AI가 코드를 생성하는 방식, 프롬프트 엔지니어링의 중요성, 다양한 AI 도구를 활용한 실무 예시를 통해 어떻게 소프트웨어 개발이 효율적으로 이루어질 수 있는지를 논의합니다.

  • 바이브 코딩은 AI 에이전트를 이용해 코드를 자연어로 작성할 수 있는 새로운 개발 철학입니다.
  • 프롬프트의 품질이 코드의 품질에 직접 영향을 미침을 강조하며, 프롬프트 엔지니어링 기술이 필수적으로 자리 잡고 있습니다.
  • 다양한 AI 도구(예: Cursor, GitHub Copilot, Claude Code, OpenAI Codex CLI)의 특징과 활용 사례를 언급하며, 이들이 어떻게 개발 생산성을 높이는지를 설명합니다.
  • AI와 인간 간의 협력 모델이 소프트웨어 개발의 미래를 어떻게 변화시킬 것인지에 대한 전망도 포함되어 있습니다.

개요

최근 "바이브 코딩(Vibe Coding)"이라는 새로운 코딩 접근 방식이 주목받고 있습니다. 이는 AI 에이전트를 활용해 사람이 자연어로 의도를 전달하면 AI가 이를 코드로 변환하는 방식입니다. 한국의 저명한 AI 연구자 안드레이 카파시에 의해 제안된 이 개념은 기존의 전통적인 프로그래밍 방식을 획기적으로 변화시킵니다. AI는 코드 작성뿐만 아니라, 코드 리뷰, 디버깅 등 다양한 보조 역할을 수행합니다. 이 글에서는 바이브 코딩의 주요 개념과 실무에서 활용할 수 있는 방법, AI 도구에 대해 설명하겠습니다.

바이브 코딩과 AI 에이전트

바이브 코딩은 AI 에이전트의 도움으로 코드를 생성하고 문제를 해결하는 새로운 프로그래밍 패러다임을 뜻합니다. 개발자는 코드 구현보다 아이디어와 문제 정의에 집중할 수 있으며, AI가 코드를 작성하고 수정하는 데 도움을 줍니다. 자연어를 사용해 AI에게 명령을 내림으로써 비개발자도 쉽게 소프트웨어를 만들 수 있습니다.

프롬프트 엔지니어링

프롬프트, 즉 AI에게 전달하는 자연어 명령의 품질이 매우 중요합니다. 이를 통해 AI가 어떻게 성능을 발휘할지를 결정합니다. 잘 구성된 프롬프트는 코드 결정을 뒷받침하며, AI가 더 나은 출력물을 생성하게 합니다. 개발자는 해당 명령을 보다 명확하고 구체적으로 설정해야 합니다.

코드 프롬프트의 4가지 유형

  1. 코드 작성: 자연어로 의도를 설명하면 AI가 코드를 생성합니다. 예를 들어 "파이썬으로 리스트의 길이를 출력하는 함수를 만들어줘"라는 명령이 이에 해당합니다.
  2. 코드 설명: 이해하기 어려운 코드를 AI에게 설명해 달라고 요청할 수 있습니다. AI는 각 코드의 동작을 분석해 설명해 줍니다.
  3. 프로그래밍 언어 변환: 한 프로그래밍 언어로 된 코드를 다른 언어로 변환하는 요청을 할 수 있습니다.
  4. 디버깅 및 코드 리뷰: 코드를 AI에게 제공하고 버그를 찾아 수정하거나, 코드 품질을 검토해 줄 것을 요청할 수 있습니다.

바이브 코딩을 위한 AI 도구

  1. Cursor: AI 통합 코드 에디터로, 자연어 기반 코드 생성 및 자동 완성 기능이 제공됩니다.
  2. GitHub Copilot Agent: VS Code와 GitHub 플랫폼에 통합된 AI 개발 파트너로, 자율적으로 작업을 수행합니다.
  3. Claude Code: Anthropic에서 개발한 터미널 기반 AI 에이전트로, 깊이 있는 코드 작업과 명령 실행을 지원합니다.
  4. OpenAI Codex CLI: 터미널 내에서 바로 AI와 상호작용하며 코딩 작업을 수행할 수 있는 도구입니다.

실무 시나리오 예시

  1. 자동 개발: 비개발자인 A씨가 자연어로 요구사항을 설명하면 AI 에이전트가 자동으로 웹 애플리케이션을 개발합니다.
  2. AI 코드 리뷰 시스템: 대기업에서 AI가 코드 변경을 분석하고 리뷰함으로써 코드 품질을 개선합니다.
  3. 다국어 코드 유지보수: AI가 여러 언어의 코드 기능을 자동으로 동기화하여 유지보수의 효율성을 높입니다.

결론

바이브 코딩은 인간과 AI의 협력을 통해 소프트웨어 개발을 혁신하는 새로운 패러다임입니다. 인간은 창의적 문제 해결에 집중하고 AI는 반복적 작업을 맡아 효율성을 높입니다. 이로 인해 소프트웨어 개발의 속도가 빨라지고, 더 많은 사람이 소프트웨어를 쉽게 생성할 수 있는 환경이 조성됩니다. 앞으로 개발자들은 AI와 함께 작업하면서 더 높은 수준의 창조적 역할을 수행하게 될 것입니다.

2025-04-22 11:55:22
tech.kakao.com
바이브 코딩 바이블: AI 에이전트 시대의 새로운 코딩 패러다임

토스증권의 Nasdaq Smart Options 실시간 제공 사례

본 글은 토스증권이 미국 옵션 시세 데이터를 Nasdaq의 Smart Options 서비스를 활용하여 실시간으로 제공하기 위해 구축한 데이터 파이프라인과 그 과정에서의 기술적 문제 및 해결 방안을 소개하고 있습니다. 특히 AWS 인프라를 활용한 데이터 처리와 네트워크 최적화 방법에 대해 상세하게 설명하고 있습니다.

  • 투자 플랫폼: 토스증권은 사용자 친화적 인터페이스를 바탕으로 급속히 성장한 핀테크 플랫폼입니다.
  • 데이터 전송 문제: 미국과 한국 간의 물리적 거리로 인해 데이터 전송 시 지연이 발생하며, 이를 해결하기 위해 AWS의 글로벌 인프라를 이용했습니다.
  • 최적화 알고리즘: Sliding Window Counter를 통한 데이터 전송량 제어로, 시장의 급변하는 데이터 양을 효과적으로 관리합니다.
  • 장애 대비 전략: 이중화된 아키텍처 및 자동화된 모니터링 시스템을 통해 서비스 중단 없는 데이터 제공이 가능하게 하였습니다.

개요

최근 토스증권이 Nasdaq Smart Options 서비스를 통해 미국 시세 데이터를 어떻게 제공하는지와 관련된 내용을 소개합니다. 토스증권은 금융 플랫폼으로 다양한 서비스를 제공하며, 이제는 미국 옵션 출시를 위해 실시간 주식 시세 데이터 전송 시스템을 구축했습니다.

데이터 전송의 필요성

토스증권은 다양한 투자 상품을 제공하기 위해 미국 옵션 시세 정보를 이용하고자 합니다. 데이터 전송의 안정성과 신뢰성을 높이기 위해, 기존 데이터센터 대신 Nasdaq의 Smart Options 서비스를 사용하여 직접적으로 데이터를 수신하고자 하였습니다.

데이터 전송의 도전과제

  1. 물리적 거리 문제: 한국과 미국 간의 물리적 거리로 인해 네트워크 통신에서 발생하는 지연이 문제였습니다.
  2. 시스템 자원 예측 어려움: 증권 시장의 특성상, 주문량의 변동이 큰 만큼 시스템 자원의 수요를 정확히 예측하기 어려웠습니다.

AWS를 통한 솔루션

토스증권은 AWS의 글로벌 인프라를 활용하여 데이터 처리 및 전송의 효율성을 높였습니다. Virginia 리전에서 Amazon EKS를 통해 데이터 처리 및 전송을 수행하며, AWS의 네트워크 인프라를 이용해 Latency를 줄이는 방식으로 문제를 해결하였습니다.

데이터 전송 최적화

토스증권은 전송하는 데이터의 특성을 반영하여, 시세 정보 전송을 위한 최적화 알고리즘을 적용했습니다. 특히, 실시간 데이터의 전송 속도와 정확성을 동시에 확보하기 위해 Sliding Window Counter 기법을 도입했습니다.

장애 대비 전략

다양한 장애 상황에 대비하여 이중화된 시스템과 자동화된 모니터링 시스템을 구축했습니다. 문제가 발생할 경우 즉시 대응할 수 있도록 강화를 시행하여 연속적인 서비스 제공이 가능해지도록 하였습니다.

결론

토스증권은 이러한 전송 시스템을 통해 사용자에게 안정적이고 실시간으로 미국 시세 데이터를 제공하며, 지속적으로 서비스를 확장해 나갈 계획입니다. 앞으로도 공평한 투자 환경 조성을 위해 노력할 것입니다.

2025-04-22 12:36:51
AWS 기술 블로그
토스증권의 Nasdaq Smart Options 실시간 제공 사례

Creating Figma Plugins to Enhance Design Productivity Part 1: Design

이번 글에서는 디자인옵스TF에서 개발한 피그마 플러그인 '데이터브릿지'의 개발 과정과 이를 통해 반복되는 디자인 작업의 비효율성을 어떻게 해결했는지를 공유하고 있습니다. 디자이너들이 겪는 반복 작업과 리소스 수급의 문제를 해결하여 디자인 생산성을 높이는 방안을 모색하였으며, 이를 통해 고객의 유저 테스트 과정의 몰입도와 효율성을 향상시킬 수 있었습니다.

  • '데이터브릿지'는 디자이너가 프로토타입을 쉽게 제작할 수 있도록 도와주는 피그마 플러그인입니다.
  • 반복적인 디자인 작업과 리소스 수급 문제를 해결하여 디자이너가 더 창의적인 작업에 집중할 수 있게 합니다.
  • 첫 번째 최소 기능 모델(MVP)은 빠르게 출시되었으며, 사용자의 피드백을 바탕으로 개선과 확장을 지속하고 있습니다.

개요

디자인옵스TF의 프로젝트 중 하나인 피그마 플러그인 '데이터브릿지'의 개발 과정에 대해 이야기해보겠습니다. 이 글에서는 반복적인 디자인 작업과 리소스 수급에서 겪은 문제를 어떻게 해결했는지 공유하려고 합니다.

디자인옵스는 디자인 프로세스를 개선하고 일하는 문화를 변화시키려는 목표를 가지고 있습니다. 이를 위해 유저 테스트 과정을 통해 디자인의 문제점을 발견하고, 해결 방안을 모색했습니다.

문제점 발견

우아한형제들에서는 '배민보이스데이'라는 리서치 프로그램을 운영하고, 이를 통해 고객 인터뷰를 진행하며 문제점을 찾아냅니다. 이 과정에서 디자이너들이 겪는 비효율적인 점을 발견했습니다.

프로토타입의 비효율성

디자이너는 프로토타입이 실제와 다를 경우 인터뷰이가 몰입하지 못한다는 점을 발견했습니다. 실제처럼 보이게 만들기 위해 각종 정보를 소모적으로 적용해야 했습니다.

리소스 찾기 어려움

디자인에 필요한 리소스가 여러 곳에 흩어져 있어, 디자이너는 이들을 찾기 위해 많은 시간을 낭비하고 있었습니다. 또, 서버 데이터에서 유용한 정보를 선별하는 데에도 비효율이 있었습니다.

이러한 비효율을 해결하고자 디자이너와 개발자가 함께 모여 디자인옵스TF를 시작하게 되었습니다.

해결 방안 모색

비효율성이 발견되었지만, 이 문제를 반드시 해결해야 하는지는 의문이었습니다. 프로덕트 디자인 조직 내에서도 비슷한 고민이 있는지를 파악하기 위해 동료들의 의견을 들었습니다.

디자이너들이 필요로 하는 정보를 피그마에서 한 번에 제공할 수 있도록 하는 것이 중요하다고 생각했습니다. 이를 위해 MVP(최소 기능 제품)를 개발하기로 했습니다.

MVP 모델 개발

MVP 모델은 간단한 기능으로 시작했습니다. 초기에는 여러 도메인에서 어떻게 작동할지 상상이 어렵고, 기능이 너무 많아 복잡해질 우려도 있었습니다. 그래서 본래의 목표인 디자이너의 반복 작업을 줄이는 것에 집중하기로 했습니다.

기능을 간소화하면서도, 신속하게 개발하고 배포하는 것을 목표로 삼았습니다. 한 달 후, 첫 MVP인 '데이터브릿지' 버전을 출시했습니다.

데이터브릿지의 기능

데이터브릿지는 배달의민족 데이터를 활용하여 디자이너가 프로토타입을 만드는 과정을 효율적으로 개선했습니다. 이제 디자이너는 클릭 한 번으로 필요한 데이터를 쉽게 적용할 수 있습니다.

추가 기능

데이터브릿지 출시 후 기능을 확장하며, 사용자의 편의성을 고려해 여러 편리한 기능을 추가했습니다. 예를 들어, 최근 사용한 데이터를 쉽게 불러올 수 있는 기능, 세부 데이터를 설정하는 기능, 다양한 이미지 리소스를 모아 제공하는 기능 등이 있습니다.

결과와 변화

데이터브릿지를 도입한 후, 작업 방식에 큰 변화가 생겼습니다. 작업 효율성이 높아지고, 데이터 수정에 소요되는 시간이 대폭 줄어들었습니다. 이제 디자이너는 더 많은 시간을 창의적인 작업에 쏟을 수 있습니다.

결론

앞으로도 데이터브릿지는 프로덕트 디자이너뿐만 아니라 다양한 직군과 협력해 비효율을 줄이고 더 좋은 작업 환경을 만들기 위해 노력할 것입니다. 다양한 데이터를 추가하고 기능을 확장해 나가며, 디자인옵스TF의 여정을 계속해서 공유할 예정입니다.

데이터브릿지의 개발 과정이 궁금하다면, 2부인 개발 편도 함께 읽어주시면 좋겠습니다.

2025-04-22 15:07:19
우아한형제들 기술블로그
디자인 생산성을 높이는 피그마 플러그인을 만들어보자 1부: 디자인 편

Let's Create a Figma Plugin to Enhance Design Productivity Part 2: Development

이 글은 피그마 플러그인 '데이터브릿지'의 개발 과정을 다루고 있습니다. 디자이너와 개발자가 협력하여, 클릭 한 번으로 배달의민족 앱의 실제 데이터를 피그마 디자인 시안에 직접 적용할 수 있는 기능을 구현한 이야기를 통해, 디자인 프로세스의 효율성을 높이는 방안을 제시하고 있습니다.

  • 디자이너와 개발자의 협력으로 피그마 플러그인 개발
  • 클릭 한 번으로 실제 데이터를 피그마 시안에 적용
  • CORS 문제 및 실시간 데이터의 불안정성 해결 방법
  • 유저 행동 데이터 수집을 통한 플러그인 기능 개선
  • 디자인 프로세스의 자동화와 효율성 극대화 추구

개요

디자인과 개발 분야에서 협업은 매우 중요합니다. 디자이너는 UI/UX를 설계하고, 개발자는 이를 구현합니다. 하지만 두 분야의 작업 방식이 다르기 때문에 서로를 완전히 이해하기는 쉽지 않습니다. 이러한 문제를 해결하기 위해 '디자인옵스TF'라는 팀이 결성되었습니다. 이 팀은 디자이너와 개발자가 협력하여 디자인 프로세스를 개선하는 도구를 개발하는 목표를 가지고 있습니다. 그 첫 번째 프로젝트로 피그마 플러그인 ‘데이터브릿지’를 소개합니다.

피그마 플러그인 개발 과정

‘데이터브릿지’ 플러그인은 클릭 한 번으로 배달의민족 앱의 실제 데이터를 피그마 디자인 시안에 적용하는 것을 목표로 합니다. 이를 위해 UI/UX 인터페이스와 API 연동이 필요합니다. 플러그인은 피그마의 샌드박스 환경에서 실행되며, 보안상의 이유로 두 개의 프로세스인 UI Process와 Main Process로 나뉘어져 있습니다. 이들은 Message Passing 방식으로 소통합니다.

메시지 통신 구조

플러그인은 두 개의 프로세스로 구성되며, 이들 사이의 통신은 메시지를 기반으로 이루어집니다. UI Process는 사용자와의 상호작용을 처리하고, Main Process는 데이터 조작을 담당합니다. 이 구조 덕분에 플러그인은 피그마에서 실시간으로 데이터를 적용할 수 있는 기능을 갖추게 되었습니다.

데이터 연동 문제 해결

피그마 플러그인이 CORS(Cross-Origin Resource Sharing) 문제에 부딪혔습니다. 이를 해결하기 위해 프록시 서버를 도입하여 API와의 통신을 원활하게 만들었습니다. 또한, 실시간 데이터의 불안정성을 극복하기 위해 API 응답의 스냅샷을 S3 버킷에 저장하고 이 데이터를 활용하여 일관성 있는 디자인 테스트를 가능하게 했습니다.

고도화 및 기능 확장

플러그인에 더 유용한 기능을 추가하기 위해 다양한 기술적 도전을 극복했습니다. 특히, 메모리 기반 라우팅을 통해 페이지 전환을 자연스럽게 구현하였고, 유저 액션 로그를 수집하여 플러그인 개선에 활용했습니다. 이 데이터를 바탕으로 최근 사용 데이터 퀵메뉴와 검색 기능을 추가하여 사용자 편의성을 높였습니다.

결론

6개월 간의 여정을 통해 '데이터브릿지' 플러그인을 완성하였습니다. 이 과정에서 디자이너와 개발자가 협력하여 생산성을 높이는 도구를 만들 수 있었습니다. 이 글이 피그마 플러그인을 구현하거나 생산성을 고민하는 분들에게 도움이 되길 바랍니다. 더 궁금하다면, 디자인 편도 함께 읽어보시길 추천드립니다.

2025-04-22 15:07:19
우아한형제들 기술블로그
디자인 생산성을 높이는 피그마 플러그인을 만들어보자 2부: 개발 편

Vibe Coding, 새로운 개발 패러다임의 시작일까요?

이 글은 '바이브 코딩(vibe coding)'이라는 새로운 개발 패러다임에 대해 논의하며, AI 에이전트를 활용한 코드 작성의 효율성과 가능성을 실제 사례를 통해 보여줍니다. 이를 통해 개발자는 개발 과정에서 AI와 협력하는 방식으로 변화를 수용하고, 생산성과 품질을 동시에 향상시킬 수 있음을 강조하고 있습니다.

  • 바이브 코딩은 AI에게 의도를 설명하여 코드를 생성하게 하는 새로운 개발 방식입니다.
  • 실제 실험과 사례를 통해 업무 환경에서도 적용 가능성을 확인했습니다.
  • 개발자는 AI 에이전트와 협업하여 역할을 재정의하고, 빠르게 변화하는 기술 환경에 적응해야 한다고 강조합니다.
  • AI 도구를 단순한 도구가 아닌 협업 파트너로 인식하는 것이 중요합니다.

개요

최근 '바이브 코딩(vibe coding)'이라는 새로운 개념이 주목받고 있습니다. 이는 개발자가 원하는 것을 말로 설명하면 AI가 이를 실현해주는 방식입니다. 이 글은 바이브 코딩의 개념과 그 실제 적용 사례, 그리고 향후 개발자들이 준비해야 할 사항에 대해 이야기해보겠습니다.

바이브 코딩이란?

바이브 코딩은 안드레 카파시가 2025년 2월에 제안한 개념으로, 코드를 직접 작성하기보다는 AI와 협력하여 개발을 진행하는 방식을 의미합니다. AI가 개발자의 의도를 이해하고, 그에 따라 코드를 생성하는 과정이 중심입니다. 이는 기존 자동완성 기능이나 챗봇과는 다르게, AI 에이전트와의 협업을 통해 전체 개발 프로세스를 간소화할 수 있다는 점에서 큰 장점이 있습니다.

사례로 보는 바이브 코딩

바이브 코딩을 '주말 프로젝트에서나 할 수 있는 일'이라고 생각할 수도 있지만, 실제로 여러 가지 실무 환경에서 성공적인 사례들이 나타나고 있습니다. 예를 들어 비개발자가 자신이 필요로 하는 도구를 만들거나, 짧은 시간 안에 서비스 기능을 구현한 사례가 있습니다. 이를 통해 바이브 코딩이 실무에서도 충분히 유용하게 쓰일 수 있다는 것을 확인할 수 있었습니다.

바이브 코딩, 실무에서는?

실제 프로덕션 환경에서도 바이브 코딩이 적용되었습니다. 카카오의 OLIVE 프로젝트를 통해 AI 에이전트와 함께 다양한 개발 작업을 진행했는데, 이 과정에서 개발 생산성이 두 배 향상된 것으로 나타났습니다. 하지만 실무에서는 AI가 생성한 코드를 단순히 사용하기보다는, 반드시 이를 검토하고 인간의 판단력을 더해야 한다는 점이 강조됩니다.

변화를 맞이하는 우리의 자세

AI 기술의 발전에 따라 개발자의 역할이 줄어들 것이라는 우려가 있지만, 실제로는 기술을 활용할 수 있는 사람의 수요가 오히려 증가할 것입니다. 그러므로 변화하는 기술에 적응하고 자신의 역량을 쌓는 것이 중요하며, 발전하는 AI와 협업하는 능력이 더 큰 가치를 지닐 것입니다.

결론

바이브 코딩은 단순한 기술 이상의 의미를 가지고 있습니다. 개발 도구의 변화뿐만 아니라, 우리가 일하는 방식 자체를 바꾸는 계기가 될 수 있습니다. 앞으로 이러한 협업 방식에 빠르게 적응하고, AI를 단순한 도구가 아닌 협력자로 인식하는 태도가 중요할 것입니다. AI와 함께 변화를 선도하는 개발자가 되길 바랍니다. 감사합니다.

2025-04-22 16:02:17
tech.kakao.com
Vibe Coding, 새로운 개발 패러다임의 시작일까요?

토스는 어떻게 광고를 보여줄까? 토스 애즈 ML 톺아보기

이 글은 토스 애즈의 광고 추천 시스템에서 머신러닝이 어떻게 활용되는지를 설명합니다. 유저에게 노출되는 광고는 실시간 입찰 과정을 통해 결정되며, 이 과정은 Targeting, Filtering, Ranking의 세 단계로 구분되어 각각 머신러닝 기술을 적용하여 최적의 광고가 선정됩니다.

  • 실시간 입찰 방식으로 광고가 노출됨.
  • Targeting: 유저 정보를 기반으로 광고 선별.
  • Filtering: 광고 후보를 예산과 품질 기준으로 필터링.
  • Ranking: 입찰가에 따라 광고 순위 결정.
  • 머신러닝은 광고 운영의 다양한 측면에서 활용됨.

개요

안녕하세요, 토스 Ads Performance 팀의 ML 엔지니어 김영호입니다. 오늘은 토스 앱에서 어떻게 광고가 유저에게 전달되는지, 그리고 그 과정에서 머신러닝이 어떻게 활용되는지를 설명해 드리겠습니다.

광고 노출 과정

토스에서의 광고 노출은 실시간 입찰 방식으로 이루어집니다. 이는 광고주가 자신의 광고를 노출하기 위해 입찰을 통해 경쟁하는 방식입니다. 높은 입찰가를 제시한 광고의 노출 기회가 되죠. 이 과정에서는 SSP(Supply-Side Platform)와 DSP(Demand-Side Platform)이라는 광고 플랫폼이 중요한 역할을 합니다. SSP는 광고 지면을 관리하고 판매하며, DSP는 광고주를 대신하여 입찰을 하는 역할을 합니다.

유저 접속부터 광고 노출까지의 단계

  1. 타겟팅 (Targeting) 유저의 정보를 바탕으로 어떤 광고를 보여줄지를 결정하는 단계입니다. 광고주는 자신이 원하는 대상 고객을 설정하고, 그에 맞는 유저를 선별합니다. 이때 오디언스 타겟팅과 Lookalike 모델을 사용하여 유사한 특성을 가진 유저를 찾습니다.
  2. 필터링 (Filtering) 이 단계에서는 광고 후보를 선정하고 광고주의 예산과 광고 품질을 고려하여 필터링을 진행합니다. 유저의 관심사를 기반으로 관련 광고를 빠르게 선별하며, 이때 Two-tower 모델을 활용하여 임베딩을 생성하고 유사도를 계산합니다.
  3. 랭킹 (Ranking) 선정된 광고 후보의 입찰가를 산출하여 최종적으로 어떤 광고가 노출될지를 결정하는 단계입니다. 이때 eCPM(effective Cost Per Mille, 1,000회 노출당 비용)을 기준으로 광고 순위를 매깁니다. 광고의 클릭률(CTR)은 예측 모델을 통해 계산됩니다.

머신러닝의 활용

머신러닝은 광고 운영의 여러 부분에서 역할을 합니다. 예를 들어, 동적 입찰가 조절을 통해 실시간 변화에 신속하게 대응하거나, 광고 소재 최적화를 위해 생성형 AI를 활용하여 광고 성과를 향상시키고 있습니다.

결론

토스 애즈는 광고 시스템의 기초를 다지고 있으며, 머신러닝을 통해 광고 성과를 극대화하는 방법을 모색하고 있습니다. 다양한 실험과 모델 개선을 통해 더 나은 비즈니스 성과를 이루고자 합니다. 토스에서의 머신러닝 활용이 궁금하시다면 많은 관심과 지원 부탁드립니다.

2025-04-22 18:59:45
토스테크
토스는 어떻게 광고를 보여줄까? 토스 애즈 ML 톺아보기

데이터 엔지니어에서 YAML 엔지니어로 (파트 II)

이번 글은 데이터 엔지니어링 분야의 최신 도구와 기법을 다루며, 데이터 파이프라인을 구성하는 과정에서 점점 더 선언적 접근 방식이 대두되고 있음을 설명합니다. 데이터 엔지니어가 점점 더 YAML 엔지니어로 변화하고 있으며, 다양한 도구들(dlt, SQLMesh, Rill, Starlake)을 통해 데이터의 수집, 변환, BI(비즈니스 인사이트) 분석의 전 과정을 간소화하는 트렌드를 조명합니다.

  • 스펙을 명확히 정의하고 자동화를 통해 데이터 파이프라인을 구축할 수 있는 도구들의 중요성이 커지고 있습니다.
  • dlt는 파라미터화된 파이프라인 구성을 통해 복잡한 데이터 주입을 간소화합니다.
  • SQLMesh는 상태를 고려한 변환 관리를 통해 보다 효율적인 데이터 흐름을 제공합니다.
  • BI 도구 Rill은 코드 기반의 대시보드를 가능하게 하여, 데이터 시각화를 효과적으로 지원합니다.
  • Starlake는 데이터 수집과 변환을 통합하여 YAML 파일로 전체 파이프라인을 정의할 수 있게 해줍니다.

개요

안녕하세요! 저는 제네바에 있는 프리랜서 데이터 엔지니어, Julien입니다. 이번 글은 데이터 엔지니어링과 관련된 최신 도구와 트렌드에 대해 이야기하려고 합니다. 점점 더 많은 데이터 처리 도구들이 등장하면서, 데이터 엔지니어들은 코드 작성보다는 구성과 조정에 더 많은 시간을 할애하고 있습니다. 오늘은 이를 바탕으로 데이터 파이프라인 생성의 선언적 패러다임에 대해 살펴보겠습니다.

선언적 데이터 수집: dlt

ELT(Extract, Load, Transform) 도구는 이미 선언적 접근 방식을 사용하고 있습니다. 하지만 복잡한 API나 구형 시스템에 직면했을 때, 사용자 정의 Python 코드를 작성해야 하는 경우가 많습니다. 이런 문제를 해결하기 위해 dlt라는 오픈소스 ELT 도구가 등장했습니다. dlt는 Python 라이브러리로, 데이터 수집 파이프라인을 선언적으로 정의할 수 있는 DSL(Data Specific Language)을 제공합니다.

선언적 데이터 변환: SQLMesh

데이터 변환 단계는 일반적으로 SQL 문법으로 제한되어 있습니다. 하지만 SQLMesh는 상태 정보를 관리하며, 데이터가 변경될 때마다 어떤 모델이 재실행되어야 하는지를 자동으로 결정합니다. 수동으로 작업 스케줄을 정의할 필요가 없으므로, 사용자는 선언적인 환경을 유지할 수 있습니다.

선언적 비즈니스 인사이트: Rill

비즈니스 인사이트(BI) 도구는 종종 버전 관리나 모듈 로직이 부족하여 수작업으로 대시보드를 생성해야 하는 경우가 많습니다. Rill, Light Dash 같은 비즈니스 코드 도구들이 등장하면서, 이제 YAML 파일을 사용해 대시보드, 메트릭, 소스를 정의할 수 있게 되었습니다. 이로 인해 대시보드는 재현 가능하고, 버전 관리도 가능합니다.

선언적 데이터 플랫폼: Starlake

마지막으로 Starlake라는 오픈소스 도구를 살펴보겠습니다. Starlake는 데이터 수집과 변환을 통합하여 하나의 선언적 프레임워크 안에서 진행할 수 있도록 도와줍니다. 사용자는 YAML 파일에서 모든 파이프라인을 정의할 수 있으며, 다른 도구를 배울 필요가 없습니다.

결론

오늘은 데이터 엔지니어링의 진화를 살펴보았습니다. dlt, SQLMesh, Rill, Starlake와 같은 도구들이 등장하면서, 데이터 파이프라인을 구축하고 관리하는 방식이 점점 더 선언적이 되어가고 있습니다. 이를 통해 데이터 엔지니어들은 더욱 효율적으로 작업할 수 있게 되었습니다. 관심 있는 분들은 GitHub에서 관련 자료를 찾아보실 수 있습니다. 다음 포스팅에서도 유익한 정보를 제공하도록 하겠습니다. 감사합니다!

2025-04-22 21:16:18
Ju Data Engineering Newsletter
From Data Engineer to YAML Engineer (Part II)

AI는 어디까지 나를 대체할 수 있나?

이 글에서는 개발자로서 AI가 내 역할을 얼마나 대체할 수 있는지를 검증하기 위한 실험을 다루고 있습니다. 저자는 Vibe Coding을 통해 AI의 코드 생성 능력, 개발 속도, 그리고 개발자의 개입 여부를 살펴보며, AI 도구가 엔지니어에게 생산성 향상에 어떻게 기여할 수 있는지를 논의하고 있습니다.

  • AI는 구어체로 웹 프로젝트를 구현할 수 있으며, 일반적인 개발 방식보다 빠른 속도로 작업을 수행할 수 있음.
  • 그러나 현재로서는 AI가 개발자의 전문성과 유지보수 관리 없이 완전히 대체하기 어렵다는 결론을 내림.
  • AI 도구는 반복적이고 구조화된 작업을 대신 처리함으로써, 개발자가 보다 창의적인 문제에 집중할 수 있는 기회를 제공함.

개요

AI 기술이 발전함에 따라 개발자들이 "AI가 나를 대체할 수 있을까?"라는 질문을 자주하게 되었습니다. 이 글에서는 실제로 AI가 개발 업무에서 어떤 역할을 할 수 있는지, 그리고 완전 대체 가능성에 대해 살펴보겠습니다.

'나'는 누구인가?

저는 카카오에서 플랫폼 개발을 담당하고 있는 hook.jeong입니다. AI와의 첫 만남은 사내 챗봇 프로젝트였습니다. 이후 AI 관련 업무를 진행하며 다양한 경험을 쌓아왔습니다.

'나'는 왜 "Vibe"를 해보게 되었나?

최근 "Vibe Coding"이 주목받으면서 AI가 개발자 역할을 수행할 수 있는지 검증해 보고 싶었습니다. 그래서 AI의 대체 가능성을 확인하기 위한 프로젝트를 진행하게 되었습니다.

'나'는 무엇을 검증하고자 했나?

주요 업무인 요구사항 분석, 시스템 설계, 코딩 등에서 AI의 대체 가능성을 확인하고자 했습니다. 특히 코딩 부분에 집중하여 다음 질문들을 설정했습니다: 1. 코딩 없이 구어체로 웹 프로젝트를 구현할 수 있을까? 2. 구현 속도는 어떤가? 3. 개발자의 개입 없이 가능할까?

어떤 기준으로 검증을 해보았나?

검증을 위해 완전 빈 프로젝트에서 시작했으며, Cursor IDE와 Claude 3.7 Sonnet을 활용했습니다. 모든 개발 과정은 구어체 입력으로 진행되었습니다.

기술 스택

  • Next.js
  • MySQL
  • Elasticsearch
  • Node.js

개발 기간

총 3일간, 하루 2시간씩 개발하여 총 6시간 소요되었습니다.

“Vibe”하면서 무엇을 느꼈나?

  1. 구현 가능성: 구어체만으로 웹 프로젝트를 구현하는 것이 가능했습니다. 실제로 코드 한 줄 없이 프로젝트를 완료했습니다.
  2. 구현 속도: 기존 방식보다 훨씬 빠르게 진행할 수 있었습니다. 일반적인 개발 방식에서는 3일이 소요될 작업을 6시간 만에 완료했습니다.
  3. 개발자의 개입: AI가 모든 작업을 대신하기는 어렵다는 결론에 이르렀습니다. 전문 지식이 필요하고, 세부적인 작업은 여전히 개발자의 개입이 필요했습니다.

현재 기준으로 AI가 '나’를 완전히 대체할 수 있는가?

AI가 개발자의 모든 역할을 대체하기는 어렵습니다. 몇 가지 이유는 다음과 같습니다: 1. 코드 품질과 유지보수성: AI가 생성한 코드의 검토가 필요합니다. 2. 프로젝트 구조의 문제: 코드 관리가 소홀히 되면 불필요한 코드가 누적될 수 있습니다. 3. 대규모 프로젝트에서의 한계: 복잡한 시스템은 AI가 다루기 힘든 수준입니다.

대체 가능한 부분은 무엇이 있는가?

AI가 대체할 수 있는 개발 행위에는 다음이 포함됩니다: - 아이디어를 코드로 변환하는 작업 - 에러 해결 방안 찾기 - 코드 이해를 돕기 위한 주석 요청 - 변수명 및 함수명 선정

결론

AI 도구는 분명히 개발자에게 생산성을 높여주는 도구가 될 수 있습니다. 일부 반복적인 작업에서 AI가 도움을 줄 수 있어, 개발자는 보다 창의적인 문제에 집중할 수 있는 시간이 확보됩니다. AI 기술은 계속 발전하고 있으며, 앞으로 더 많은 업무를 대신해줄 것으로 기대됩니다.

2025-04-23 16:06:39
tech.kakao.com
AI는 어디까지 나를 대체할 수 있나?

EP160: 알아야 할 20가지 시스템 설계 개념

이번 ByteByteGo 뉴스레터에서는 시스템 설계에 꼭 알아야 할 20가지 기본 개념을 소개합니다. 이 개념들은 시스템의 신뢰성, 확장성, 그리고 성능을 향상시키는 데 필수적이며, 개발자들에게 시스템을 설계하는 방법론을 이해하는 데 도움을 줄 것입니다.

  • 주요 개념: 부하 분산, 캐싱, 데이터베이스 샤딩, 복제, CAP 정리, 일관된 해싱, 메시지 큐, 비율 제한, API 게이트웨이 등
  • AI 에이전트의 정의와 특징 설명
  • Git 기본 명령어 및 고급 기능 정리
  • 객체 지향 프로그래밍의 4대 기둥인 추상화, 캡슐화, 상속, 다형성 소개

개요

이번 글에서는 시스템 디자인에 대해 알아야 할 20가지 주요 개념을 간단히 정리해 보겠습니다. 이 개념들은 현대 소프트웨어 개발에서 매우 중요한 역할을 하며, 다양한 시스템을 설계하고 최적화하는 데 필수적입니다.

주요 개념

  1. 로드 밸런싱: 여러 서버에 트래픽을 분산시켜 신뢰성과 가용성을 높입니다.
  2. 캐싱: 자주 접근하는 데이터를 메모리에 저장하여 더 빠르게 접근할 수 있게 합니다.
  3. 데이터베이스 샤딩: 대규모 데이터 성장을 처리하기 위해 데이터베이스를 나누어 관리합니다.
  4. 복제: 데이터를 여러 복제본에 복사하여 가용성과 장애 허용성을 높입니다.
  5. CAP 정리: 일관성, 가용성, 파티션 내구성 간의 트레이드오프를 설명합니다.
  6. 일관 해싱: 동적인 서버 환경에서 부하를 고르게 분산시킵니다.
  7. 메시지 큐: 비동기 이벤트 기반 아키텍처를 사용하여 서비스를 분리합니다.
  8. 속도 제한: 시스템 과부하를 방지하기 위해 요청 빈도를 조절합니다.
  9. API 게이트웨이: API 요청을 라우팅하는 중앙 진입점 역할을 합니다.
  10. 마이크로서비스: 시스템을 독립적이고 느슨하게 결합된 서비스로 나눕니다.
  11. 서비스 발견: 분산 시스템에서 서비스를 동적으로 찾습니다.
  12. 콘텐츠 전송 네트워크 (CDN): 엣지 서버를 통해 콘텐츠를 빠르게 전달합니다.
  13. 데이터베이스 인덱싱: 중요한 필드를 인덱싱하여 쿼리 성능을 개선합니다.
  14. 데이터 분할: 노드 간에 데이터를 나누어 확장성과 성능을 높입니다.
  15. 최종 일관성: 분산 데이터베이스에서 시간이 지남에 따라 일관성을 보장합니다.
  16. 웹소켓: 양방향 통신을 통해 실시간 업데이트를 가능하게 합니다.
  17. 확장성: 용량을 늘리기 위해 서버를 업그레이드하거나 추가합니다.
  18. 장애 허용성: 하드웨어나 소프트웨어 고장이 발생해도 시스템이 계속 운영됩니다.
  19. 모니터링: 메트릭과 로그를 추적하여 시스템의 건강 상태를 이해합니다.
  20. 인증과 권한 부여: 사용자 접근을 관리하고 신원을 안전하게 확인합니다.

결론

이러한 시스템 디자인 개념들은 소프트웨어 개발에서의 성공적인 아키텍처를 구축하는 데 필수적입니다. 각각의 개념을 깊이 있게 이해하고 활용해 보시기 바랍니다. 추가적으로 설명이 필요하거나 궁금한 내용이 있으신가요?

2025-04-27 00:33:48
ByteByteGo Newsletter
EP160: Top 20 System Design Concepts You Should Know

Kubernetes에 Airbyte를 자체 호스팅하여 마케팅 운영 예산에서 3만 달러 이상 절감한 실제 사례

이 글은 데이터 엔지니어링을 다루는 subreddit에서 한 사용자가 Airbyte를 Kubernetes에 자체 호스팅하여 마케팅 운영 비용을 3만 달러 이상 절감한 경험을 공유한 내용입니다. 이 배포 방식은 SaaS 툴에 대한 의존도를 줄이고 데이터 동기화 및 스키마 변경에 대한 더 나은 제어를 가능하게 했다고 밝히고 있습니다.

  • Airbyte를 이용한 자체 호스팅이 비용 절감에 기여함
  • 여러 마케팅 소스로부터 데이터를 수집하고 S3에 저장
  • SaaS 서비스에 의존하지 않음으로써 유연성과 통제를 강화
  • 설정 과정에 대한 추가적인 도움이 필요한 경우 기꺼이 공유할 것이라고 함

개요

최근 한 데이터 엔지니어가 Kubernetes에서 Airbyte를 자체 호스팅하여 마케팅 운영 예산에서 3만 달러 이상을 절감한 경험을 공유했습니다. 마케팅 팀은 데이터 파이프라인을 위해 SaaS 도구에 많은 비용을 지출하고 있었으나, Airbyte를 이용해 이를 해결했습니다.

Airbyte와 Kubernetes

그는 Airbyte를 Kubernetes에 배포하였으며, 여러 마케팅 소스(광고 플랫폼, CRM, 이메일 도구 등)에서 데이터를 추출했습니다. 원시 데이터는 S3에 저장되어 후속 처리가 가능하도록 했습니다. 몇몇 커넥터는 조정이 필요했지만 큰 문제는 아니었다고 합니다. 이를 통해 연간 약 3만 달러를 절약하고 데이터 동기화 및 스키마 변경에 대한 제어를 강화했습니다.

경험 공유

그는 팀이 SaaS 공급자의 제한이나 종속성에 대한 걱정 없이 데이터 파이프라인을 관리할 수 있도록 했습니다. 이와 같은 자체 호스팅 방법을 고려하는 팀들에게 이 경험을 공유하고 싶다고이야기했습니다.

결론

자체 호스팅을 통해 비용 절감과 더불어 운영상의 유연성을 확보할 수 있다는 점에서, 많은 팀들에게 유용한 사례라고 생각합니다. 이에 관심 있는 분들은 더 심층적인 내용이나 세부사항에 대해 문의하셔도 좋습니다.

2025-04-28 00:14:24
Top posts on r/dataengineering
Saved $30K+ in marketing ops budget by self-hosting Airbyte on Kubernetes: A real-world story

반응형