<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>LakeNote.dev</title>
    <link>https://butdev.tistory.com/</link>
    <description>Datalake 일꾼의 기록</description>
    <language>ko</language>
    <pubDate>Mon, 6 Apr 2026 06:45:08 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>제이비;)</managingEditor>
    <image>
      <title>LakeNote.dev</title>
      <url>https://tistory1.daumcdn.net/tistory/1982157/attach/e0ac4cb051654ce1973e8ed3acfdd477</url>
      <link>https://butdev.tistory.com</link>
    </image>
    <item>
      <title>[IDEA] 데이터 라벨링 서비스 어떻게 쉽게 제공할 수 있을까 | Data Labeling</title>
      <link>https://butdev.tistory.com/74</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Gemini_Generated_Image_uz6c2muz6c2muz6c.png&quot; data-origin-width=&quot;1376&quot; data-origin-height=&quot;768&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eI1m9j/dJMcahqbX0l/cdKKzp6yKZfPwOUd8ahZY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eI1m9j/dJMcahqbX0l/cdKKzp6yKZfPwOUd8ahZY0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eI1m9j/dJMcahqbX0l/cdKKzp6yKZfPwOUd8ahZY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeI1m9j%2FdJMcahqbX0l%2FcdKKzp6yKZfPwOUd8ahZY0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1376&quot; height=&quot;768&quot; data-filename=&quot;Gemini_Generated_Image_uz6c2muz6c2muz6c.png&quot; data-origin-width=&quot;1376&quot; data-origin-height=&quot;768&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;Label Studio라는 데이터 라벨링 솔루션에 대해 찾아보려고 컴퓨터를 켰다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;AWS에는 이미 서비스가 있구나.&lt;b data-index-in-node=&quot;6&quot; data-path-to-node=&quot;18&quot;&gt; Amazon SageMaker Ground Truth &lt;/b&gt;와우&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;먼저 데이터 라벨링의 개념부터 이해하고자 정리해 본 내용&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;데이터 라벨링이란 | Data Labeling&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터 라벨링은 머신러닝 모델이 데이터를 학습할 수 있도록&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원천 데이터(텍스트, 이미지, 오디오, 비디오 등)에 의미 있는 태그나 라벨을 붙이는 과정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-path-to-node=&quot;2&quot; data-ke-size=&quot;size20&quot;&gt;작동 원리 | How it works&lt;/h4&gt;
&lt;p data-path-to-node=&quot;3&quot; data-ke-size=&quot;size16&quot;&gt;가공되지 않은 &lt;b data-index-in-node=&quot;8&quot; data-path-to-node=&quot;3&quot;&gt;원천 데이터(Raw data)&lt;/b&gt; 그 자체로는 AI에게 아무런 쓸모가 없습니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;3&quot; data-ke-size=&quot;size16&quot;&gt;AI는 사진을 볼 때 형체나 색깔을 이해하는 것이 아니라, 수만 개의 숫자 격자로만 인식하기 때문입니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;4&quot; data-ke-size=&quot;size16&quot;&gt;이때 사람(또는 반자동 도구)이 데이터를 하나하나 검토하면서, 그 내용이나 의미를 설명하는 라벨(Label)을 붙여줍니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;4&quot; data-ke-size=&quot;size16&quot;&gt;이 과정을 거쳐야 비로소 AI가 &quot;아, 이런 숫자 패턴이 나타나면 이건 '무지개떡'이구나!&quot;라고 학습할 수 있게 됩니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;4&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;4&quot; data-ke-size=&quot;size16&quot;&gt;데이터 라벨링은 다루는 데이터의 형태(이미지, 텍스트, 음성 등)에 따라 그 방식이 달라집니다.&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;7&quot; data-ke-size=&quot;size23&quot;&gt;1. 텍스트 라벨링 (Text Labeling)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;문장에 담긴 의도나 정보를 기계가 이해할 수 있는 형태로 추출합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;9&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,0,0&quot;&gt;감성 분석 (Sentiment):&lt;/b&gt; 문장의 뉘앙스가 긍정인지 부정인지 판별합니다. (예: &quot;떡이 쫄깃해요&quot; &amp;rarr; 긍정 / &quot;너무 달아요&quot; &amp;rarr; 부정)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,1,0&quot;&gt;개체명 인식 (Named Entities):&lt;/b&gt; 문장에서 핵심 정보(장소, 시간, 품목)를 찾아냅니다. (예: &quot;내일 아침 9시에 무지개떡 2되 배달&quot; &amp;rarr; [시간: 09:00], [품목: 무지개떡], [수량: 2되])&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,2,0&quot;&gt;의도 파악 (Intent):&lt;/b&gt; 사용자가 질문한 목적을 분류합니다. (예: &quot;주차 가능한가요?&quot; &amp;rarr; 주차 시설 문의)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;4&quot; data-ke-size=&quot;size23&quot;&gt;2. 이미지 라벨링 (Image Labeling)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;컴퓨터가 사진이나 영상 속의 물체를 식별하도록 만드는 작업입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;6&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,0,0&quot;&gt;바운딩 박스 (Bounding Boxes):&lt;/b&gt; 이미지 내 특정 사물에 사각형 틀을 그려 위치와 이름을 지정합니다. (예: 진열대 사진에서 '인절미' 팩에 사각형 표시)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,1,0&quot;&gt;세그멘테이션 (Segmentation):&lt;/b&gt; 사물의 외곽선을 따라 픽셀 단위로 영역을 구분합니다. (예: 떡 단면 사진에서 '고물'과 '반죽' 영역을 정밀하게 분리)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,2,0&quot;&gt;이미지 분류 (Classification):&lt;/b&gt; 이미지 전체가 어떤 카테고리에 속하는지 정의합니다. (예: 매장 사진을 보고 '영업 중', '마감 직전' 등으로 분류)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;10&quot; data-ke-size=&quot;size23&quot;&gt;3. 오디오 라벨링 (Audio Labeling)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;11&quot; data-ke-size=&quot;size16&quot;&gt;음성 데이터의 내용을 분석하거나 소리의 특징을 잡아냅니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;12&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,0,0&quot;&gt;전사 (Transcribing):&lt;/b&gt; 음성을 텍스트로 변환합니다. (예: 전화 주문 녹음본을 텍스트 주문서로 변환)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,1,0&quot;&gt;소리 분류 (Tagging):&lt;/b&gt; 특정 소리의 종류를 식별합니다. (예: 주방 기계 소리를 분석해 '정상' 또는 '수리 필요'로 구분)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;13&quot; data-ke-size=&quot;size23&quot;&gt;4. 비디오 라벨링 (Video Labeling)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;14&quot; data-ke-size=&quot;size16&quot;&gt;시간의 흐름에 따른 움직임이나 사건을 추적합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;15&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,0,0&quot;&gt;객체 추적 (Tracking):&lt;/b&gt; 영상 내 물체의 이동 경로를 기록합니다. (예: CCTV에서 손님이 매장에 들어와 나갈 때까지의 동선 파악)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,1,0&quot;&gt;이벤트 플래깅 (Event Flagging):&lt;/b&gt; 특정 행동이 시작되고 끝나는 시점을 표시합니다. (예: 손님이 제품을 집어 드는 순간을 기록)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;2&quot; data-ke-size=&quot;size26&quot;&gt;데이터 라벨링이 중요한 이유 | Why it matters&lt;/h2&gt;
&lt;p data-path-to-node=&quot;3&quot; data-ke-size=&quot;size16&quot;&gt;Garbage in, Garbage out&lt;/p&gt;
&lt;p data-path-to-node=&quot;3&quot; data-ke-size=&quot;size16&quot;&gt;인공지능 모델의 성능은 라벨링된 데이터의 품질에 의해 결정됩니다. 정확하고 다양한 라벨이 많을수록 더 똑똑하고 신뢰할 수 있는 모델이 만들어집니다.&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;4&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,0,0&quot;&gt;정확성:&lt;/b&gt; &quot;쉰 떡&quot; 사진을 실수로 &quot;정상&quot;이라고 라벨링하면, AI는 상한 제품을 고객에게 판매하라고 지정하는 치명적인 실수를 범하게 됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,1,0&quot;&gt;다양성:&lt;/b&gt; 맑은 날 찍은 사진뿐만 아니라 흐린 날, 조명 아래, 비닐 포장이 된 상태 등 다양한 상황의 데이터를 라벨링해야 AI가 어떤 환경에서도 떡을 정확히 식별합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-path-to-node=&quot;5&quot; data-ke-size=&quot;size26&quot;&gt;누가 라벨링을 하는가? | Who does it?&lt;/h2&gt;
&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;데이터의 양과 난이도에 따라 작업을 수행하는 주체가 달라집니다.&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;7&quot; data-ke-size=&quot;size23&quot;&gt;1. 사람 어노테이터 (Human Annotators)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;직접 사람의 눈으로 확인하고 라벨을 붙이는 방식입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;9&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,0,0&quot;&gt;대상:&lt;/b&gt; 프리랜서나 전문 팀(Scale AI, Labelbox 등 전문 플랫폼 활용).&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,1,0&quot;&gt;떡집 적용:&lt;/b&gt; 사장님이나 직원이 틈틈이 매장 사진에 정답을 기록하는 것이 가장 기초적인 형태입니다. 전문 지식이 필요한 '떡의 신선도 판별' 같은 작업은 숙련된 사람의 판단이 필수적입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;10&quot; data-ke-size=&quot;size23&quot;&gt;2. AI 보조 라벨링 (AI-assisted labeling)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;11&quot; data-ke-size=&quot;size16&quot;&gt;AI 모델이 먼저 라벨을 추측해서 붙여두면, 사람이 이를 검토하고 수정하는 방식입니다. 이를 '휴먼 인 더 루프(Human-in-the-loop)'라고 부릅니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;12&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12,0,0&quot;&gt;떡집 적용:&lt;/b&gt; AI가 1차적으로 &quot;이것은 인절미입니까?&quot;라고 물으면 사장님은 &quot;맞음&quot; 혹은 &quot;아니오, 이건 콩떡임&quot;이라고 수정만 해주는 방식입니다. 처음부터 직접 하는 것보다 속도가 훨씬 빠릅니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;13&quot; data-ke-size=&quot;size23&quot;&gt;3. 자동 라벨링 (Automated labeling)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;14&quot; data-ke-size=&quot;size16&quot;&gt;사람의 개입을 최소화하고 규칙(Rule)이나 기존 모델을 활용해 자동으로 라벨을 생성합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;15&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;15,0,0&quot;&gt;떡집 적용:&lt;/b&gt; 포스(POS) 기기에 찍힌 판매 시각 데이터를 기반으로, 해당 시간대 CCTV 영상에 자동으로 &quot;판매 발생&quot; 태그를 붙이는 식의 규칙 기반 자동화가 가능합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;2&quot; data-ke-size=&quot;size26&quot;&gt;데이터 라벨링 서비스 설계 가이드 | Designing Interactive User Workflows for Seamless Data Labeling&lt;/h2&gt;
&lt;h3 data-path-to-node=&quot;3&quot; data-ke-size=&quot;size23&quot;&gt;1. 목적 선택 (Task Selection)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;4&quot; data-ke-size=&quot;size16&quot;&gt;사용자가 복잡한 용어(분류, 세그멘테이션 등)를 몰라도 비즈니스 목적에 따라 선택하게 합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;5&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,0,0&quot;&gt;템플릿 제공:&lt;/b&gt; &quot;리뷰 긍정/부정 분류&quot;, &quot;상품 이미지 카테고리화&quot;, &quot;제조 공정 불량 탐지&quot; 등 자주 쓰이는 목적을 카드 형태로 제시합니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,1,0&quot;&gt;데이터 타입 자동 인식:&lt;/b&gt; 사용자가 업로드한 파일이 이미지인지 텍스트인지에 따라 가능한 목적만 활성화하여 혼란을 줄입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;6&quot; data-ke-size=&quot;size23&quot;&gt;2. 예시 확인 (Onboarding &amp;amp; Guide)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;라벨링의 일관성을 위해 '정답 기준'을 시각적으로 보여줍니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;8&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,0,0&quot;&gt;Good/Bad 사례:&lt;/b&gt; &quot;이런 경우는 '불량'으로 간주합니다&quot;와 같은 가이드라인을 사진과 함께 배치합니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,1,0&quot;&gt;미니 퀴즈:&lt;/b&gt; 실제 작업을 시작하기 전, 3~5개 정도의 샘플로 연습 게임을 하게 하여 숙련도를 확인합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;9&quot; data-ke-size=&quot;size23&quot;&gt;3. 라벨링 시작 (User Interface)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;사용자가 피로를 느끼지 않도록 단순함에 집중합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;11&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,0,0&quot;&gt;단축키 및 제스처:&lt;/b&gt; 텍스트는 숫자 키(1: 긍정, 2: 부정), 이미지는 스와이프나 클릭 한 번으로 처리가 가능해야 합니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;11,1,0&quot;&gt;게이미피케이션:&lt;/b&gt; &quot;오늘 목표까지 10개 남았습니다&quot;와 같은 진행률 표시로 성취감을 부여합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;12&quot; data-ke-size=&quot;size23&quot;&gt;4. AI 보조 (Human-in-the-Loop)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;사람의 판단 속도를 높여주는 보조 장치를 활용합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;14&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;14,0,0&quot;&gt;Pre-labeling:&lt;/b&gt; AI가 미리 예측한 값을 보여주고 사용자는 '승인' 또는 '수정'만 하게 합니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;14,1,0&quot;&gt;확신도 필터링:&lt;/b&gt; AI가 판별하기 어려워하는(확신도가 낮은) 데이터만 사람에게 집중적으로 보여주어 효율을 극대화합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;15&quot; data-ke-size=&quot;size23&quot;&gt;5. 결과 확인 및 다음 단계 (Insights &amp;amp; Next Step)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;16&quot; data-ke-size=&quot;size16&quot;&gt;라벨링 이후의 가치를 즉시 체감하게 합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;17&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,0,0&quot;&gt;실시간 통계:&lt;/b&gt; &quot;현재 데이터의 70%가 긍정적입니다&quot;와 같은 대시보드를 제공합니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,1,0&quot;&gt;모델 학습 연동:&lt;/b&gt; &quot;라벨링된 데이터로 AI 모델을 만드시겠습니까?&quot;라는 버튼을 통해 즉시 학습 파이프라인으로 연결합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정리되는 아이디어&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쉬운 UI로 라벨링. AI가 추천도 해줌 -&amp;gt; 라벨+원본데이터 저장 -&amp;gt; 자동학습(AutoGluon) -&amp;gt; 성능평가 -&amp;gt; 배포&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1312&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VCUmS/dJMcaf0bkS0/WBCq65QAkhZq2ZMxRtQyyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VCUmS/dJMcaf0bkS0/WBCq65QAkhZq2ZMxRtQyyK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VCUmS/dJMcaf0bkS0/WBCq65QAkhZq2ZMxRtQyyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVCUmS%2FdJMcaf0bkS0%2FWBCq65QAkhZq2ZMxRtQyyK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1440&quot; height=&quot;1312&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1312&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;AutoGluon이 핵심입니다.&lt;/b&gt; AWS가 직접 만든 오픈소스로, SageMaker Autopilot의 엔진과 거의 동일합니다. 정형 데이터(표/엑셀)와 이미지를 모두 지원하고, 비전문가용 플랫폼 백엔드로 쓰기에 가장 적합해요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이미지 분석이 필요한 경우 GPU, 정형 데이터는 CPU로도 충분할 것으로 예상&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;구축 단계&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1단계 (1~2주):&lt;/b&gt; AutoGluon + Streamlit으로 MVP 먼저 만들기. 파일 업로드 &amp;rarr; 자동 학습 &amp;rarr; 결과 확인까지만 동작하는 최소 버전.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2단계 (2~4주):&lt;/b&gt; MinIO 연동으로 데이터 저장 체계화, MLflow로 실험 이력 관리 추가.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3단계 (이후):&lt;/b&gt; FastAPI로 학습된 모델 API 배포, Grafana로 성능 모니터링.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Reading AI</category>
      <author>제이비;)</author>
      <guid isPermaLink="true">https://butdev.tistory.com/74</guid>
      <comments>https://butdev.tistory.com/74#entry74comment</comments>
      <pubDate>Thu, 19 Mar 2026 02:16:27 +0900</pubDate>
    </item>
    <item>
      <title>Gemini Embedding 2: 구글의 첫 번째 네이티브 멀티모달 임베딩 모델</title>
      <link>https://butdev.tistory.com/73</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Gemini_Generated_Image_hxxc0dhxxc0dhxxc.png&quot; data-origin-width=&quot;1376&quot; data-origin-height=&quot;768&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OLeMG/dJMcaibxPKg/jlIOhMq0ky3pXCJAPA1MG1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OLeMG/dJMcaibxPKg/jlIOhMq0ky3pXCJAPA1MG1/img.png&quot; data-alt=&quot;멀티모달 임베딩이라니&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OLeMG/dJMcaibxPKg/jlIOhMq0ky3pXCJAPA1MG1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOLeMG%2FdJMcaibxPKg%2FjlIOhMq0ky3pXCJAPA1MG1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;335&quot; data-filename=&quot;Gemini_Generated_Image_hxxc0dhxxc0dhxxc.png&quot; data-origin-width=&quot;1376&quot; data-origin-height=&quot;768&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;멀티모달 임베딩이라니&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 원문을 읽고 이해해보는 Gemini Embedding 2 그리고 멀티모달 임베딩&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원문: &lt;a href=&quot;https://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-embedding-2/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-embedding-2/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1773672915658&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Gemini Embedding 2: Our first natively multimodal embedding model&quot; data-og-description=&quot;An overview of Gemini Embedding 2, our first fully multimodal embedding model that maps text, images, video, audio and documents into a single space.&quot; data-og-host=&quot;blog.google&quot; data-og-source-url=&quot;https://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-embedding-2/&quot; data-og-url=&quot;https://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-embedding-2/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/clc973/dJMb83ShCLc/XLuZrRNbfK6AZCsqdhaFL1/img.png?width=1300&amp;amp;height=731&amp;amp;face=0_0_1300_731&quot;&gt;&lt;a href=&quot;https://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-embedding-2/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-embedding-2/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/clc973/dJMb83ShCLc/XLuZrRNbfK6AZCsqdhaFL1/img.png?width=1300&amp;amp;height=731&amp;amp;face=0_0_1300_731');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Gemini Embedding 2: Our first natively multimodal embedding model&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;An overview of Gemini Embedding 2, our first fully multimodal embedding model that maps text, images, video, audio and documents into a single space.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;blog.google&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1 style=&quot;background-color: #ffffff; color: #202124; text-align: start;&quot;&gt;Gemini Embedding 2: Our first natively multimodal embedding model&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Gemini Embedding 2: 구글의 첫 번째 네이티브 멀티모달 임베딩 모델&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Gemini Embedding 2는 &lt;u&gt;&lt;b&gt;텍스트, 이미지, 비디오, 오디오 및 문서를 하나의 벡터 공간으로 매핑&lt;/b&gt;&lt;/u&gt;하는 구글 최초의 &lt;b&gt;네이티브 멀티모달 임베딩 모델&lt;/b&gt;입니다. 이를 통해 서로 다른 유형의 미디어 간 멀티모달 검색과 분류가 가능해졌으며, 현재 퍼블릭 프리뷰로 이용할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;2&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;2&quot;&gt;26년 3월, Gemini Embedding 2 출시 소식&lt;/b&gt;&lt;/h3&gt;
&lt;p data-path-to-node=&quot;3&quot; data-ke-size=&quot;size16&quot;&gt;Gemini 아키텍처를 기반으로 구축된 구글 최초의 완전한 멀티모달 임베딩 모델인 &lt;b data-index-in-node=&quot;53&quot; data-path-to-node=&quot;3&quot;&gt;Gemini Embedding 2&lt;/b&gt;를 Gemini API와 Vertex AI를 통해 퍼블릭 프리뷰(Public Preview)로 출시되었다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;4&quot; data-ke-size=&quot;size16&quot;&gt;기존의 텍스트 전용 기반 모델에서 확장된 Gemini Embedding 2는 &lt;b data-index-in-node=&quot;43&quot; data-path-to-node=&quot;4&quot;&gt;텍스트, 이미지, 비디오, 오디오 및 문서&lt;/b&gt;를 단일화된 통합 임베딩 공간으로 매핑하며, &lt;b data-index-in-node=&quot;91&quot; data-path-to-node=&quot;4&quot;&gt;100개 이상의 언어&lt;/b&gt;에 걸쳐 의미론적 의도(semantic intent)를 포착합니다. 이를 통해 복잡한 파이프라인을 단순화하고, 검색 증강 생성(RAG)과 의미론적 검색부터 감성 분석, 데이터 클러스터링에 이르기까지 광범위한 멀티모달 다운스트림 작업의 성능을 강화한다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;4&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;2&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;2&quot;&gt;새로운 모달리티와 유연한 출력 차원&lt;/b&gt;&lt;/h3&gt;
&lt;p data-path-to-node=&quot;3&quot; data-ke-size=&quot;size16&quot;&gt;이 모델은 Gemini를 기반으로 하며, 다음과 같은 다양한 영역에서 업계 최고 수준의 멀티모달 이해 능력을 활용해 고품질의 임베딩을 생성합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;4&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,0,0&quot;&gt;텍스트(Text):&lt;/b&gt; 최대 &lt;b data-index-in-node=&quot;14&quot; data-path-to-node=&quot;4,0,0&quot;&gt;8,192개의 입력 토큰&lt;/b&gt;에 달하는 방대한 컨텍스트를 지원&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,1,0&quot;&gt;이미지(Images):&lt;/b&gt; 요청당 최대 &lt;b data-index-in-node=&quot;20&quot; data-path-to-node=&quot;4,1,0&quot;&gt;6장의 이미지&lt;/b&gt;를 처리할 수 있으며, PNG 및 JPEG 형식을 지원&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,2,0&quot;&gt;비디오(Videos):&lt;/b&gt; MP4 및 MOV 형식으로 최대 &lt;b data-index-in-node=&quot;31&quot; data-path-to-node=&quot;4,2,0&quot;&gt;120초 분량&lt;/b&gt;의 비디오 입력을 지원&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,3,0&quot;&gt;오디오(Audio):&lt;/b&gt; 중간 텍스트 변환(전사) 과정 없이 &lt;b data-index-in-node=&quot;32&quot; data-path-to-node=&quot;4,3,0&quot;&gt;오디오 데이터를 네이티브 방식으로 직접 수용&lt;/b&gt;하고 임베딩&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,4,0&quot;&gt;문서(Documents):&lt;/b&gt; 최대 &lt;b data-index-in-node=&quot;18&quot; data-path-to-node=&quot;4,4,0&quot;&gt;6페이지 분량의 PDF&lt;/b&gt;를 직접 임베딩&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;단일 모달리티를 하나씩 처리하는 것을 넘어, 이 모델은 &lt;b data-index-in-node=&quot;31&quot; data-path-to-node=&quot;5&quot;&gt;인터리브(Interleaved, 교차 배치) 입력&lt;/b&gt;을 네이티브하게 이해한다. 즉, 한 번의 요청에 여러 모달리티(예: 이미지 + 텍스트)를 함께 전달할 수 있다. 이를 통해 모델은 서로 다른 미디어 유형 간의 복잡하고 미묘한 관계를 포착하며, 복잡한 현실 세계 데이터에 대해 더욱 정확한 이해를 가능하게 한다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;2&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;2&quot;&gt;마트료시카 표현 학습(MRL)과 유연한 출력 차원&lt;/b&gt;&lt;/h3&gt;
&lt;p data-path-to-node=&quot;3&quot; data-ke-size=&quot;size16&quot;&gt;이전 임베딩 모델들과 마찬가지로, &lt;b data-index-in-node=&quot;19&quot; data-path-to-node=&quot;3&quot;&gt;Gemini Embedding 2&lt;/b&gt;에는 &lt;b data-index-in-node=&quot;40&quot; data-path-to-node=&quot;3&quot;&gt;마트료시카 표현 학습(Matryoshka Representation Learning, MRL)&lt;/b&gt; 기술이 적용되었습니다. 이 기술은 차원을 동적으로 축소하면서도 정보를 효율적으로 &quot;중첩(nesting)&quot;하여 저장한다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;4&quot; data-ke-size=&quot;size16&quot;&gt;덕분에 개발자는 기본값인 &lt;b data-index-in-node=&quot;14&quot; data-path-to-node=&quot;4&quot;&gt;3,072 차원&lt;/b&gt;에서 더 낮은 차원으로 유연하게 조절할 수 있으며, 이를 통해 &lt;b data-index-in-node=&quot;57&quot; data-path-to-node=&quot;4&quot;&gt;성능과 저장 비용 사이의 균형&lt;/b&gt;을 맞출 수 있습니다. 구글은 최상의 품질을 위해 &lt;b data-index-in-node=&quot;101&quot; data-path-to-node=&quot;4&quot;&gt;3,072, 1,536, 768 차원&lt;/b&gt;을 사용할 것을 권장한다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;데모&lt;/p&gt;
&lt;p data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-path-to-node=&quot;5&quot; data-ke-style=&quot;style3&quot;&gt;Gemini Embedding 2 - &lt;b&gt;마트료시카 방식 이해하기&lt;/b&gt;&lt;br /&gt;이 모델은 숫자를 생성할 때 중요도 순서대로 줄을 세웁니다.&lt;br /&gt;[숫자 1번 ~ 768번]: 핵심적인 특징 (예: &quot;이것은 '강아지'이고 '갈색'이다&quot;)&lt;br /&gt;[숫자 769번 ~ 1536번]: 중간 정도의 특징 (예: &quot;푸들 종이고, 털이 곱슬거린다&quot;)&lt;br /&gt;[숫자 1537번 ~ 3072번]: 아주 세밀한 특징 (예: &quot;눈동자 색깔이 어떻고, 배경에 풀밭이 있다&quot;)&lt;br /&gt;&lt;br /&gt;여기서 &quot;앞부분만 저장해도 된다&quot;는 말은, 내 컴퓨터 하드디스크(데이터베이스)에 숫자를 다 집어넣을 필요 없이 앞쪽 768개만 딱 잘라서 저장해도, 그 데이터가 '갈색 강아지'라는 핵심 의미를 완벽하게 간직하고 있다는 뜻이다.&lt;/blockquote&gt;
&lt;h3 data-path-to-node=&quot;2&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;2&quot;&gt;최첨단 성능 (State-of-the-art performance)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-path-to-node=&quot;3&quot; data-ke-size=&quot;size16&quot;&gt;Gemini Embedding 2는 단순히 기존 모델을 개선하는 수준을 넘어선다. 이 모델은 강력한 음성 처리 기능을 도입하고 텍스트, 이미지, 비디오 작업에서 주요 모델들을 앞지르며 &lt;b data-index-in-node=&quot;104&quot; data-path-to-node=&quot;3&quot;&gt;멀티모달의 깊이에 대한 새로운 성능 기준&lt;/b&gt;을 정립했다. 이러한 측정 가능한 성능 향상과 독보적인 멀티모달 커버리지는 개발자가 필요로 하는 다양한 임베딩 요구사항에 완벽한 해답을 제공한다.&lt;/p&gt;
&lt;blockquote data-path-to-node=&quot;3&quot; data-ke-style=&quot;style3&quot;&gt;왜 기존 모델을 개선하는 수준을 넘어선다는 표현을 사용했을까?&lt;br /&gt;1. 번역기가 필요 없는 &lt;b&gt;진짜 멀티 모달&lt;/b&gt;&lt;br /&gt;&amp;nbsp; 기존 모델들은 서로 다른 언어를 쓰는 사람들 사이에 통역사를 두는 방식이었다.&lt;br /&gt;&amp;nbsp; 기존: 오디오를 들으면 먼저 **텍스트로 받아쓰기(STT)**를 한 뒤, 그 글자를 분석했다. &lt;br /&gt;&amp;nbsp; &amp;nbsp; 이 과정에서 &lt;b&gt;목소리의 톤, 감정, 배경 소음 같은 중요한 정보가 다 사라졌다&lt;/b&gt;.&lt;br /&gt;&amp;nbsp; Gemini Embedding 2: 소리 그 자체를 직접 듣고 바로 이해한다. &lt;br /&gt;&amp;nbsp; &amp;nbsp; 통역사 없이 데이터를 날것 그대로 받아들이기 때문에 정보의 손실이 없고 훨씬 깊이 있는 분석이 가능하다.&lt;br /&gt;2. &lt;b&gt;모든 데이터를 하나의 자(Ruler)로 측정한다.&lt;/b&gt;&lt;br /&gt;&amp;nbsp; 세상의 모든 데이터(글, 사진, 영상, 소리)를 단 하나의 거대한 입체 지도 위에 배치했다.&lt;br /&gt;&amp;nbsp; 덕분에 &quot;이 노래(오디오)의 분위기와 가장 어울리는 영화 장면(비디오)을 찾아줘&quot;라는 복잡한 명령도 아주 정확하게 수행할 수 있다. 이건 기존의 개별 모델들을 단순히 합치는 수준으로는 불가능했던 영역이다.&lt;br /&gt;3. 압도적인 데이터 처리량과 정밀도&lt;br /&gt;&amp;nbsp; - 텍스트: 책 한 권 분량(8,192 토큰)을 한꺼번에 읽고 분석한다.&lt;br /&gt;&amp;nbsp; - 비디오: 2분짜리 영상을 통째로 보고 &quot;어떤 사건이 일어났는지&quot;를 정확한 숫자로 바꾼다.&lt;/blockquote&gt;
&lt;p data-path-to-node=&quot;3&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;2&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;2&quot;&gt;데이터의 깊은 의미를 깨우다.&lt;/b&gt;&lt;/h3&gt;
&lt;p data-path-to-node=&quot;3&quot; data-ke-size=&quot;size16&quot;&gt;임베딩은 구글의 수많은 제품 내에서 사용자 경험을 구동하는 핵심 기술입니다. 임베딩이 컨텍스트 엔지니어링(context engineering)에서 결정적인 역할을 하는 검색 증강 생성(RAG)부터 대규모 데이터 관리, 그리고 전통적인 검색 및 분석에 이르기까지, 이미 여러 얼리 액세스 파트너들이 &lt;b data-index-in-node=&quot;170&quot; data-path-to-node=&quot;3&quot;&gt;Gemini Embedding 2&lt;/b&gt;를 활용해 높은 가치를 지닌 멀티모달 애플리케이션을 구현하고 있습니다.&lt;/p&gt;</description>
      <category>Reading AI</category>
      <author>제이비;)</author>
      <guid isPermaLink="true">https://butdev.tistory.com/73</guid>
      <comments>https://butdev.tistory.com/73#entry73comment</comments>
      <pubDate>Tue, 17 Mar 2026 00:28:33 +0900</pubDate>
    </item>
    <item>
      <title>(PJT관리) WBS Task는 어떻게 작성해야 할까?</title>
      <link>https://butdev.tistory.com/71</link>
      <description>&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;WBS 작성하다가 순삭된 하루&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;어떻게 해야 하는지 돌아보면서 작성해보는 글&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Gemini_Generated_Image_ft2k5eft2k5eft2k.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kD1kp/dJMcadAVV7o/az0tViwG7VWOZyrwvKOTHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kD1kp/dJMcadAVV7o/az0tViwG7VWOZyrwvKOTHk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kD1kp/dJMcadAVV7o/az0tViwG7VWOZyrwvKOTHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkD1kp%2FdJMcadAVV7o%2Faz0tViwG7VWOZyrwvKOTHk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;400&quot; data-filename=&quot;Gemini_Generated_Image_ft2k5eft2k5eft2k.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;프로젝트가 일정 지연되는 이유 중 상당수는 WBS가 모호하게 작성되었기 때문이다.&lt;br /&gt;&amp;ldquo;기능 개발&amp;rdquo;, &amp;ldquo;테스트&amp;rdquo;, &amp;ldquo;개선&amp;rdquo; 같은 Task는 일정도 산정하기 어렵고 완료 여부도 불명확하다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;요구사항을 정의하여 방향을 정하고, Task를 통해 책임과 결과를 명확히 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;Task 작성 원칙&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 동사 + 산출물 구조&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;무엇을 만들어 낸다.&quot;로 작성&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- ex. 요구사항 정의서 작성&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 모호한 표현 대신 무엇을 어떻게 하는지 명확히 표현&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- ex. JWT 토큰 만료 알림 기능 설계&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. 단위는 관리 가능한 수준으로&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 1~5일 단위 작업&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 담당자 1명이 책임 질 수 있는 작업&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;좋은 WBS Task의 기준&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 완료 기준이 명확하다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 산출물이 존재한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 일정 산정이 가능하다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 책임자가 명확하다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;예시를 작성해봐야겠다.&lt;/p&gt;
&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;단계별 WBS Task 작성 예시&lt;/h4&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;'데이터 카탈로그 사용자 공유 권한 기능 구현'에 대해 Task를 작성해 보았다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 281px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignCenter&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 26.5116%; text-align: center; height: 19px;&quot;&gt;&lt;b&gt;단계&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 36.7442%; text-align: center; height: 19px;&quot;&gt;&lt;b&gt;Task&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 18.3721%; text-align: center;&quot;&gt;&lt;b&gt;담당자&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 9.18605%; text-align: center;&quot;&gt;&lt;b&gt;일정&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 9.18605%; text-align: center;&quot;&gt;&lt;b&gt;산출물&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 26.5116%; height: 19px;&quot;&gt;1. 분석&lt;/td&gt;
&lt;td style=&quot;width: 36.7442%; height: 19px;&quot;&gt;1.1 현행 권한 구조 분석&lt;/td&gt;
&lt;td style=&quot;width: 18.3721%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18605%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18605%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 26.5116%; height: 19px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 36.7442%; height: 19px;&quot;&gt;1.2 공유 기능 요구사항 정의&lt;/td&gt;
&lt;td style=&quot;width: 18.3721%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18605%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18605%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 26.5116%; height: 19px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 36.7442%; height: 19px;&quot;&gt;1.3 영향도 분석 및 범위 확정&lt;/td&gt;
&lt;td style=&quot;width: 18.3721%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18605%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18605%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 26.5116%; height: 19px;&quot;&gt;2. 설계&lt;/td&gt;
&lt;td style=&quot;width: 36.7442%; height: 19px;&quot;&gt;2.1 공유 권한 모델 설계&lt;/td&gt;
&lt;td style=&quot;width: 18.3721%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18605%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18605%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 26.5116%; height: 19px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 36.7442%; height: 19px;&quot;&gt;2.2 DB 스키마 설계&lt;/td&gt;
&lt;td style=&quot;width: 18.3721%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18605%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18605%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 26.5116%; height: 19px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 36.7442%; height: 19px;&quot;&gt;2.3 API 및 권한 검증 로직 설계&lt;/td&gt;
&lt;td style=&quot;width: 18.3721%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18605%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18605%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 26.5116%; height: 19px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 36.7442%; height: 19px;&quot;&gt;2.4 화면 설계&lt;/td&gt;
&lt;td style=&quot;width: 18.3721%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18605%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18605%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 26.5116%; height: 19px;&quot;&gt;3. 개발&lt;/td&gt;
&lt;td style=&quot;width: 36.7442%; height: 19px;&quot;&gt;3.1 공유 권한 관리 테이블 생성&lt;/td&gt;
&lt;td style=&quot;width: 18.3721%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18605%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18605%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 26.5116%; height: 19px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 36.7442%; height: 19px;&quot;&gt;3.2 공유 등록/해제 API 개발&lt;/td&gt;
&lt;td style=&quot;width: 18.3721%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18605%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18605%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 26.5116%; height: 19px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 36.7442%; height: 19px;&quot;&gt;3.3 권한 검증 로직 수정&lt;/td&gt;
&lt;td style=&quot;width: 18.3721%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18605%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18605%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 26.5116%; height: 19px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 36.7442%; height: 19px;&quot;&gt;3.4 공유 설정 UI 구현&lt;/td&gt;
&lt;td style=&quot;width: 18.3721%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18605%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18605%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 26.5116%; height: 19px;&quot;&gt;4. 테스트&lt;/td&gt;
&lt;td style=&quot;width: 36.7442%; height: 19px;&quot;&gt;4.1 권한 시나리오 테스트&lt;/td&gt;
&lt;td style=&quot;width: 18.3721%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18605%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18605%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 26.5116%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 36.7442%; height: 17px;&quot;&gt;4.2 통합 테스트 수행&lt;/td&gt;
&lt;td style=&quot;width: 18.3721%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18605%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18605%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 26.5116%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 36.7442%; height: 17px;&quot;&gt;4.3 운영 배포 및 가이드 반영&lt;/td&gt;
&lt;td style=&quot;width: 18.3721%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18605%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18605%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;WBS를 잘 쪼개는 순간, 프로젝트 리스크의 절반은 이미 줄어든다.&lt;/p&gt;</description>
      <category>업무일기</category>
      <author>제이비;)</author>
      <guid isPermaLink="true">https://butdev.tistory.com/71</guid>
      <comments>https://butdev.tistory.com/71#entry71comment</comments>
      <pubDate>Fri, 20 Feb 2026 00:01:08 +0900</pubDate>
    </item>
    <item>
      <title>Data Lake 이해하기</title>
      <link>https://butdev.tistory.com/70</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Datalake_title.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dTdeF6/dJMcacPzJFM/VwoehMtDta3wmj4gvKxziK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dTdeF6/dJMcacPzJFM/VwoehMtDta3wmj4gvKxziK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dTdeF6/dJMcacPzJFM/VwoehMtDta3wmj4gvKxziK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdTdeF6%2FdJMcacPzJFM%2FVwoehMtDta3wmj4gvKxziK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;400&quot; data-filename=&quot;Datalake_title.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;왜 Data Lake 인가&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요즘 데이터가 쏟아지는 시대다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정형 데이터뿐만 아니라 로그, 이미지, 파일 같은 비정형 데이터까지&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 모든 데이터를 미리 구조화해서 저장하는 것은 비효율적이니&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 데이터를 원본 그대로 저장하고, 필요할 때 목적에 맞게 가공해서 사용하는 방식이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;데이터를 어떻게 수집할까&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) 배치 수집: 일정 시간 마다 데이터를 모아서 저장&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ETL 도구를 사용한다. (Airflow, Spark, Azure Data Factory)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) 실시간 수집: 데이터가 발생하는 즉시 저장&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메시지 큐나 스트리밍 플랫폼을 사용한다. (Kafka)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3) 파일 업로드 방식: 사용자가 직접 파일을 업로드&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;데이터는 어떻게 보관할까&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Data Lake는 보통 Object Storage 기반으로 저장한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보관 방식의 특징&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) 원본 그대로 저장&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) 폴더 구조 기반 관리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) 파일 포맷 표준화: 대용량 분석을 위해 Parquet 같은 커럼 기반 포맷을 사용하기도 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Parquet 파일 어떻게 활용할까&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Parquet 파일은 분석 최적화 형식이며, 압축 효율도 높다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Parquet 파일은 직접 파일을 여는 방식이 아니라&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;분석 엔진을 통해 조회한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) SQL 엔진을 통한 조회&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Spark SQL, Synapse, Trino, StarRocks, Databricks&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;데이터를 어떻게 탐색 할까&amp;nbsp;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;검색 뿐만 아니라 데이터 관리 체계의 중심 역할을 하는 Data Catlog&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 메타데이터 관리&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 데이터 소유자와 책임자 관리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 데이터 품질 정보 관리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 데이터 Lineage 관리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 접근 권한 정책 연계&lt;/p&gt;</description>
      <category>Data Lake</category>
      <author>제이비;)</author>
      <guid isPermaLink="true">https://butdev.tistory.com/70</guid>
      <comments>https://butdev.tistory.com/70#entry70comment</comments>
      <pubDate>Thu, 12 Feb 2026 00:28:58 +0900</pubDate>
    </item>
    <item>
      <title>Apache Iceberg 이해하기</title>
      <link>https://butdev.tistory.com/69</link>
      <description>&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;Iceberg?&lt;/h4&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;Netflix에서 개발한 오픈소스 테이블 포맷&lt;br&gt;&lt;br&gt;데이터레이크 위에서 마치 관계형 데이터베이스처럼 데이터의 일관성을 유지하고, SQL 쿼리를 실행하며, 트랜잭션을 지원하도록 돕는 계층&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;Iceberg의 논리적 구조 (계층 구조)&lt;/h4&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;아이스버그는 크게 &lt;b&gt;데이터 계층&lt;/b&gt;과 &lt;b&gt;메타데이터 계층&lt;/b&gt;으로 나뉜다.&lt;br&gt;&lt;br&gt;• 데이터 파일(Data Files): 실제 데이터가 저장되는 Parquet 파일들&lt;br&gt;&lt;br&gt;• 매니페스트 파일(Manifest Files): 데이터 파일들의 목록과 통계(최대/최소값 등)를 포함하여 쿼리 최적화를 돕는다.&lt;br&gt;• 매니페스트 리스트(Manifest List): 여러 번의 인제스트(Ingest)로 생성된 매니페스트 파일들을 모아 관리&lt;br&gt;&lt;br&gt;• 메타데이터 파일(Metadata File): 테이블의 스냅샷(Snapshot) 정보를 담고 있어, 데이터가 변하는 중에도 일관된 뷰를 제공하고 스키마 변경을 가능하게 한다.&lt;br&gt;&lt;br&gt;• 카탈로그(Catalog): 테이블 이름을 실제 메타데이터 파일 경로로 연결해주는 최상위 관리 도구&lt;br&gt;&lt;br&gt;&lt;a href=&quot;https://youtu.be/TsmhRZElPvM?si=Z_J9Htl9RuE-DZQm&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;https://youtu.be/TsmhRZElPvM?si=Z_J9Htl9RuE-DZQm&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;</description>
      <category>Data Lake</category>
      <author>제이비;)</author>
      <guid isPermaLink="true">https://butdev.tistory.com/69</guid>
      <comments>https://butdev.tistory.com/69#entry69comment</comments>
      <pubDate>Tue, 10 Feb 2026 08:22:59 +0900</pubDate>
    </item>
    <item>
      <title>새해 일잘러가 되어보자. 업무가 바뀌고 일이 쏟아진다.</title>
      <link>https://butdev.tistory.com/68</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Gemini_Generated_Image_ap1jcgap1jcgap1j.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pDd6I/dJMcafSTuD3/4iVkc04Q1I31Ubq4IyRNF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pDd6I/dJMcafSTuD3/4iVkc04Q1I31Ubq4IyRNF0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pDd6I/dJMcafSTuD3/4iVkc04Q1I31Ubq4IyRNF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpDd6I%2FdJMcafSTuD3%2F4iVkc04Q1I31Ubq4IyRNF0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;400&quot; data-filename=&quot;Gemini_Generated_Image_ap1jcgap1jcgap1j.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새로운 업무로 투입 되었다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오픈한지 3개월 된 시스템인데 개선사항이 쏟아지고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Frontend 개발자, Backend 개발자 그리고 유관 시스템 담당자, 현업, 동료들 이름도 아직 혼란스러운 상황&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인수인계 내용, 회의 일정 및 회의록을 노트에 빼곡히 기록했는데,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 다음 날 출근하면 기억이 하나도 안나고요.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;무언가 쏟아진 일감을 정리 할 체계가 필요해 보였다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;출근 길에 찾아본 업무일지 관련 컨텐츠&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요즘은 노션 템플릿을 활용해서 업무 일지를 작성하는 일잘러가 많아 보였다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(많은 컨텐츠를 본 건 아니지만 '제인킴' 노션 사용법 영상 추천!!)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사무실은 노션 사용 불가이므로, 어떤 컨텐츠로 업무 일지를 관리하는지를 참고하는 용도로 보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그날 할 일을 중요도와 함께 다이어리에 정리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;급하게 적어야 하는 사항은 볼펜으로 메모&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1672&quot; data-origin-height=&quot;1086&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zZKs6/dJMcacojtwk/quV8b9d64p8CYRsudKwl00/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zZKs6/dJMcacojtwk/quV8b9d64p8CYRsudKwl00/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zZKs6/dJMcacojtwk/quV8b9d64p8CYRsudKwl00/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzZKs6%2FdJMcacojtwk%2FquV8b9d64p8CYRsudKwl00%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;1086&quot; data-origin-width=&quot;1672&quot; data-origin-height=&quot;1086&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;회의록은 요약해서 기록한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;i&gt;누가 어떻게 왜 무엇을 (언제 어디서)&lt;/i&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;회의록 작성 시 참고&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1650&quot; data-origin-height=&quot;1066&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDEURV/dJMcahQHcqB/lk4pRK1tLDEzk5bBNoYNKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDEURV/dJMcahQHcqB/lk4pRK1tLDEzk5bBNoYNKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDEURV/dJMcahQHcqB/lk4pRK1tLDEzk5bBNoYNKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDEURV%2FdJMcahQHcqB%2Flk4pRK1tLDEzk5bBNoYNKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;1066&quot; data-origin-width=&quot;1650&quot; data-origin-height=&quot;1066&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주간 관리 양식 페이지를 작성한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주간 목표(reminder) 및 일정 관리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 달이 끝나면 회고(Review Page)를 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;같은 실수를 반복하지 않으며, 목표를 달성한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;참고한 컨텐츠&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;a href=&quot;https://youtu.be/HltyBUiyyN8?si=ulqn4gN7ILQFR2ty&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://youtu.be/HltyBUiyyN8?si=ulqn4gN7ILQFR2ty&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=HltyBUiyyN8&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/bmesiU/dJMb9aKyAOZ/M6YKwrbyKMpFZgrJIiZrT0/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/hzbfU/dJMb9lk0FLl/iUbrIsvyewknDKHhbap7X1/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/cJNBrK/dJMb86nQ12H/jYdeRUJsmAvjkfB2QLSTS0/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;#92 12년차 글로벌&amp;amp;국내 대기업 직장인이 알려주는 일잘러의 직무&amp;amp;상황별 업무 기록 노하우   ft.&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/HltyBUiyyN8&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;a href=&quot;https://youtu.be/Nl16MDuok_Q?si=M3Y6BB3jWMm4VmQI&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://youtu.be/Nl16MDuok_Q?si=M3Y6BB3jWMm4VmQI&lt;/a&gt;&lt;/p&gt;</description>
      <category>업무일기</category>
      <author>제이비;)</author>
      <guid isPermaLink="true">https://butdev.tistory.com/68</guid>
      <comments>https://butdev.tistory.com/68#entry68comment</comments>
      <pubDate>Fri, 16 Jan 2026 01:00:48 +0900</pubDate>
    </item>
    <item>
      <title>데이터 리니지 | 데이터 흐름 추적</title>
      <link>https://butdev.tistory.com/67</link>
      <description>&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;br&gt;&lt;/h4&gt;&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;데이터 리니지(Data Lineage)란?&lt;br&gt;&lt;/h4&gt;&lt;p data-ke-size=&quot;size14&quot; style=&quot;text-align: left;&quot;&gt;데이터가 어디서 생성되어(Source) → 어떤 과정을 거쳐 변환되고 → 어디로 이동하여(Target) → 어떻게 활용되는지를&lt;br&gt;시간의 흐름과 변환 과정까지 포함해 추적·시각화한 정보입니다.&lt;br&gt;&lt;br&gt;한 줄로 정의하면&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;데이터의 출처부터 최종 사용까지의 전체 흐름과 변환 이력을 보여주는 것&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;br&gt;⸻&lt;br&gt;&lt;/h4&gt;&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;데이터 리니지가 왜 중요한가?&lt;/h4&gt;&lt;p data-ke-size=&quot;size14&quot; style=&quot;text-align: left;&quot;&gt;&lt;br&gt;1. 데이터 신뢰성 확보&lt;br&gt;	•	리포트·지표의 숫자가 어떤 원천 데이터에서 왔는지 설명 가능&lt;br&gt;	•	“이 데이터는 믿을 수 있는가?”에 답할 수 있음&lt;br&gt;&lt;br&gt;2. 영향도 분석(Impact Analysis)&lt;br&gt;	•	컬럼 하나 변경 시&lt;br&gt;→ 어떤 테이블, 리포트, 모델에 영향을 주는지 즉시 파악&lt;br&gt;&lt;br&gt;3. 장애·오류 원인 추적&lt;br&gt;	•	잘못된 데이터 발생 시&lt;br&gt;→ 어느 단계에서 오류가 생겼는지 빠르게 역추적&lt;br&gt;&lt;br&gt;4. 규제·감사 대응&lt;br&gt;	•	개인정보·민감 데이터가&lt;br&gt;→ 어디서 생성되고 어디로 흘러가는지 명확히 증빙&lt;br&gt;&lt;br&gt;5. 데이터 거버넌스의 핵심 요소&lt;br&gt;	•	데이터 오너십, 품질 관리, 표준 관리의 기반 정보&lt;br&gt;	•	거버넌스를 “문서”가 아닌 “시스템”으로 만듦&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;br&gt;⸻&lt;br&gt;&lt;/h4&gt;&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;데이터 리니지의 범위&lt;/h4&gt;&lt;p data-ke-size=&quot;size14&quot; style=&quot;text-align: left;&quot;&gt;&lt;br&gt;데이터 리니지는 어디까지 추적하느냐에 따라 활용도가 크게 달라집니다.&lt;br&gt;&lt;br&gt;1. 시스템 레벨 리니지&lt;br&gt;	•	DB → DWH → BI&lt;br&gt;	•	시스템 간 데이터 이동 흐름 파악&lt;br&gt;&lt;br&gt;2. 테이블 레벨 리니지&lt;br&gt;	•	source_table → target_table&lt;br&gt;	•	테이블 간 의존성 분석&lt;br&gt;&lt;br&gt;3. 컬럼 레벨 리니지 (가장 중요)&lt;br&gt;	•	A.col1 → B.col3&lt;br&gt;	•	SUM, JOIN, FILTER, CASE 등 변환 로직 포함&lt;br&gt;	•	실제 영향도 분석에 필수&lt;br&gt;&lt;br&gt;4. 파이프라인 레벨 리니지&lt;br&gt;	•	ETL / ELT / Spark / dbt / Airflow&lt;br&gt;	•	작업(Job) 단위 흐름 추적&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;br&gt;⸻&lt;br&gt;&lt;/h4&gt;&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;데이터 리니지 개념 예시&lt;/h4&gt;&lt;p data-ke-size=&quot;size14&quot; style=&quot;text-align: left;&quot;&gt;&lt;br&gt;아래는 가장 단순한 리니지 흐름 예시입니다.&lt;br&gt;&lt;br&gt;[원천 DB]&lt;br&gt;&amp;nbsp;&amp;nbsp;주문.amount&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;│&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;▼ (ETL: SUM, GROUP BY)&lt;br&gt;[DW]&lt;br&gt;&amp;nbsp;&amp;nbsp;daily_sales.total_amount&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;│&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;▼&lt;br&gt;[BI 리포트]&lt;br&gt;&amp;nbsp;&amp;nbsp;일별 매출&lt;br&gt;&lt;br&gt;이 흐름이 보이면,&lt;br&gt;	•	“일별 매출 수치가 왜 바뀌었는지”&lt;br&gt;	•	“원천 주문 데이터 변경 영향이 어디까지 미치는지”&lt;br&gt;를 즉시 설명할 수 있습니다.&lt;br&gt;&lt;br&gt;⸻&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;데이터 리니지와 헷갈리기 쉬운 개념들&lt;/h4&gt;&lt;p data-ke-size=&quot;size14&quot; style=&quot;text-align: left;&quot;&gt;&lt;br&gt;구분	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 설명&lt;br&gt;Metadata	데이터에 대한 설명 정보 (이름, 타입, 설명 등)&lt;br&gt;Lineage	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;데이터의 흐름과 변환 경로&lt;br&gt;Catalog	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;메타데이터를 검색·탐색하는 UI&lt;br&gt;Observability	데이터 품질, 신선도, 이상 탐지&lt;br&gt;&lt;br&gt;  리니지는 메타데이터의 한 종류이자, 데이터 거버넌스의 핵심 기능입니다.&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;br&gt;⸻&lt;br&gt;&lt;/h4&gt;&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;데이터 리니지는 어떻게 수집할까?&lt;/h4&gt;&lt;p data-ke-size=&quot;size14&quot; style=&quot;text-align: left;&quot;&gt;&lt;br&gt;1. 자동 수집&lt;br&gt;	•	SQL 파싱 (Query Log 기반)&lt;br&gt;	•	ETL 도구 연계&lt;br&gt;(Airflow, dbt, Spark 등)&lt;br&gt;&lt;br&gt;2. 반자동 / 수동 수집&lt;br&gt;	•	배치 스크립트, 파이프라인 정의 기반&lt;br&gt;	•	자동 수집이 어려운 복잡한 로직 보완용&lt;br&gt;&lt;br&gt;대표적인 데이터 리니지 도구&lt;br&gt;	•	OpenMetadata&lt;br&gt;	•	Apache Atlas&lt;br&gt;	•	Collibra&lt;br&gt;	•	Microsoft Purview (Azure Purview)&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;br&gt;⸻&lt;br&gt;&lt;/h4&gt;&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;실무에서 꼭 알아야 할 핵심 포인트&lt;/h4&gt;&lt;p data-ke-size=&quot;size14&quot; style=&quot;text-align: left;&quot;&gt;	•	컬럼 레벨 리니지가 있어야 ‘진짜’ 쓸모가 있다&lt;br&gt;	•	SQL 중심 조직일수록 Query Log 기반 자동 리니지가 중요&lt;br&gt;	•	리니지는 단순한 “그림”이 아니라&lt;br&gt;변경 대응·의사결정을 위한 도구&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;br&gt;&lt;/h4&gt;</description>
      <category>Data Lake</category>
      <author>제이비;)</author>
      <guid isPermaLink="true">https://butdev.tistory.com/67</guid>
      <comments>https://butdev.tistory.com/67#entry67comment</comments>
      <pubDate>Thu, 8 Jan 2026 09:11:22 +0900</pubDate>
    </item>
    <item>
      <title>Azure OpenAI API를 API Management에 등록하는 방법 | Named Value 설정 팁 포함</title>
      <link>https://butdev.tistory.com/65</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;DALL&amp;amp;middot;E 2025-03-17 01.40.58 - A minimalist blog title image featuring the title 'Azure API Management 등록 가이드'. Emphasize 'API Management' with bold text and a simple cloud icon. Us.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cmKA1c/btsMMHZXKem/o3f8kwH669t0AOsd3xBNSK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cmKA1c/btsMMHZXKem/o3f8kwH669t0AOsd3xBNSK/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cmKA1c/btsMMHZXKem/o3f8kwH669t0AOsd3xBNSK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcmKA1c%2FbtsMMHZXKem%2Fo3f8kwH669t0AOsd3xBNSK%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;1024&quot; data-filename=&quot;DALL&amp;middot;E 2025-03-17 01.40.58 - A minimalist blog title image featuring the title 'Azure API Management 등록 가이드'. Emphasize 'API Management' with bold text and a simple cloud icon. Us.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;Azure API Management에서 Azure OpenAI를 API로 등록하는 방법&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Azure OpenAI서비스를 Azure API Management에 등록하면, 효율적으로 OpenAI API를 관리하고 보호할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h3 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;1. 사전 준비&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;아래 사항은 준비되어 있는 환경에서의 가이드&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;- APIM 생성&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;- Open AI 리소스 생성&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-pm-slice=&quot;1 3 []&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;2. Azure OpenAI API 를 APIM API로 등록하기&lt;/span&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span&gt;&amp;lt;&amp;lt;Azure 리소스에서 직접 가져오기&amp;gt;&amp;gt;&lt;/span&gt;&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;API 추가&lt;/b&gt;&lt;/span&gt;&lt;span&gt;: 'API' 메뉴에서 '+ API 추가'를 클릭합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;Azure 리소스에서 만들기&lt;/b&gt;&lt;/span&gt;&lt;span&gt;: 'Azure OpenAI Service'를 선택합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;기본 사항 설정&lt;/b&gt;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;Azure OpenAI 리소스 선택&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;API 버전 선택 : &lt;/b&gt;자동으로 선택 된다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;표시 이름 및 설명 추가&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;Base URL 설정&lt;/b&gt;&lt;/span&gt;&lt;span&gt; (예: &lt;/span&gt;&lt;span&gt;&lt;a href=&quot;https://contoso.azure-api.net/my-openai-api/openai&quot;&gt;https://jbtest.azure-api.net/jbtest-oai/openai&lt;/a&gt;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;Improve SDK compatibility 체크박스에 체크 표시하여 OpenAI SDK 호환성(/openai) 보장하도록 한다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;정책 설정&lt;/b&gt;&lt;/span&gt;&lt;span&gt;: 'azure-openai-token-limit' 및 'azure-openai-emit-token-metric' 정책을 추가해 토큰 사용량을 관리할 수 있습니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;검토 및 생성&lt;/b&gt;&lt;/span&gt;&lt;span&gt;: 설정을 확인하고 '만들기'를 클릭&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-pm-slice=&quot;1 3 []&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;3. Named Value를 사용한 OpenAI Key 등록 및 사용&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;b&gt;1. Named Value 생성&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;Azure Portal에서 &lt;/span&gt;&lt;span&gt;&lt;b&gt;API Management&lt;/b&gt;&lt;/span&gt;&lt;span&gt; 인스턴스를 선택합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;왼쪽 메뉴에서 &lt;/span&gt;&lt;span&gt;&lt;b&gt;Named values&lt;/b&gt;&lt;/span&gt;&lt;span&gt;를 선택합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;'+ 추가'를 클릭하여 새 Named Value를 생성합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;이름&lt;/b&gt;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;OPENAI_API_KEY&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;값&lt;/b&gt;&lt;/span&gt;&lt;span&gt;: OpenAI API Key를 입력합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;비밀값(Secret)&lt;/b&gt;&lt;/span&gt;&lt;span&gt; 옵션을 활성화하여 키를 암호화된 상태로 저장합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;'확인'을 클릭하여 Named Value를 저장합니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;b&gt;2. 정책에서 Named Value 사용하기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;API Management에서 OpenAI API를 선택합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;정책(Policies)&lt;/b&gt;&lt;/span&gt;&lt;span&gt; 편집기로 이동합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;다음과 같이 &lt;/span&gt;&lt;span&gt;set-header&lt;/span&gt;&lt;span&gt; 정책을 추가합니다&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-pm-slice=&quot;1 3 []&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;4. API 테스트&lt;/span&gt;&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;API 선택&lt;/b&gt;&lt;/span&gt;&lt;span&gt;: 생성한 API를 선택합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;테스트 탭 이동&lt;/b&gt;&lt;/span&gt;&lt;span&gt;: 상단 '테스트' 탭을 클릭합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;작업 선택&lt;/b&gt;&lt;/span&gt;&lt;span&gt;: 배포한 모델과 호환되는 작업을 선택합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;매개 변수 입력&lt;/b&gt;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;deployment-id&lt;/span&gt;&lt;span&gt;와 &lt;/span&gt;&lt;span&gt;api-version&lt;/span&gt;&lt;span&gt;을 입력합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;요청 전송&lt;/b&gt;&lt;/span&gt;&lt;span&gt;: 필요한 매개변수를 입력한 후 '보내기'를 클릭하여 API를 테스트합니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;나의 경우는 내부모드로 구성하여, 테스트 기능에서 테스트가 불가했다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;APIM과 동일한 vnet에 존재하는 VM을 생성하여 테스트 했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Azure</category>
      <author>제이비;)</author>
      <guid isPermaLink="true">https://butdev.tistory.com/65</guid>
      <comments>https://butdev.tistory.com/65#entry65comment</comments>
      <pubDate>Mon, 17 Mar 2025 01:42:15 +0900</pubDate>
    </item>
    <item>
      <title>Azure DevOps에서 브랜치 커밋 시 자동 배포 설정하는 방법</title>
      <link>https://butdev.tistory.com/64</link>
      <description>&lt;h2 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;Azure DevOps Pipeline 자동화로 반복 업무 개선하기&lt;/span&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;반복 업무의 문제점&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;소프트웨어 개발 과정에서 자주 반복되는 작업 중 하나는 브랜치 생성 후 변경된 소스를 개발 환경에 배포하고, 검증 후 &lt;/span&gt;&lt;span&gt;main&lt;/span&gt;&lt;span&gt; 브랜치에 병합하여 운영 환경에 배포하는 일입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이 과정에서 가장 번거로운 부분은 &lt;/span&gt;&lt;span&gt;&lt;b&gt;소스 코드 수정 후 매번 파이프라인을 수동으로 실행&lt;/b&gt;&lt;/span&gt;&lt;span&gt;해야 한다는 점이었습니다. 이러한 반복적인 작업을 줄이기 위해 &lt;/span&gt;&lt;span&gt;&lt;b&gt;Azure DevOps Pipeline의 &lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;trigger&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt; 설정을 활용&lt;/b&gt;&lt;/span&gt;&lt;span&gt;하여 자동화를 구현했습니다.&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;자동화 목표&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;특정 브랜치(&lt;/span&gt;&lt;span&gt;dev/0313&lt;/span&gt;&lt;span&gt;)에 커밋하면 자동으로 개발 환경에 배포하도록 설정&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;dev&lt;/span&gt;&lt;span&gt; 브랜치 하위의 모든 브랜치에서도 자동으로 배포하도록 구성&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;기존 문제점&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;초기 파이프라인 설정은 다음과 같았습니다:&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;trigger: none&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이렇게 설정하면 파이프라인이 자동으로 실행되지 않으며, 매번 수동으로 트리거해야 하는 번거로움이 있었습니다.&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;개선된 Pipeline 설정&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Azure DevOps 파이프라인 YAML 파일에 다음과 같이 &lt;/span&gt;&lt;span&gt;trigger&lt;/span&gt;&lt;span&gt; 설정을 추가하여 자동화를 구현했습니다:&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;dts&quot;&gt;&lt;code&gt;trigger:
  branches:
    include:
      - dev/0313
      - dev/*&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;설정 설명&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;trigger&lt;/span&gt;&lt;span&gt;: 파이프라인 자동 실행 설정&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;branches&lt;/span&gt;&lt;span&gt;: 자동 실행을 설정할 브랜치를 지정&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;include&lt;/span&gt;&lt;span&gt;: 자동화 대상 브랜치를 지정&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;dev/0313&lt;/span&gt;&lt;span&gt; &amp;rarr; 특정 브랜치 지정&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;dev/*&lt;/span&gt;&lt;span&gt; &amp;rarr; &lt;/span&gt;&lt;span&gt;dev&lt;/span&gt;&lt;span&gt; 하위의 모든 브랜치 포함 (예: &lt;/span&gt;&lt;span&gt;dev/feature1&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;dev/bugfix123&lt;/span&gt;&lt;span&gt; 등)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이렇게 설정한 후에는 &lt;/span&gt;&lt;span&gt;dev/0313&lt;/span&gt;&lt;span&gt; 브랜치에 커밋이 발생하면 자동으로 파이프라인이 실행되고, 개발 환경에 배포되는 과정을 자동화할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;결론&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이 설정을 통해 다음과 같은 장점을 얻을 수 있었습니다: ✅ 반복적인 수동 작업 감소 ✅ 배포 자동화로 실수 방지 ✅ 개발 속도 향상 및 편의성 개선&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Azure DevOps의 &lt;/span&gt;&lt;span&gt;trigger&lt;/span&gt;&lt;span&gt; 설정을 통해 자동화된 배포 프로세스를 구축하면 더 효율적으로 개발에 집중할 수 있습니다. 여러분의 개발 환경에서도 비슷한 문제를 겪고 있다면 이러한 설정을 적극 활용해 보시기 바랍니다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>Azure</category>
      <author>제이비;)</author>
      <guid isPermaLink="true">https://butdev.tistory.com/64</guid>
      <comments>https://butdev.tistory.com/64#entry64comment</comments>
      <pubDate>Thu, 13 Mar 2025 10:04:50 +0900</pubDate>
    </item>
    <item>
      <title>Azure Open AI로 GPT-4o모델 쓰면 비용이 얼마 나올까요?</title>
      <link>https://butdev.tistory.com/63</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;aicose.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tMIoq/btsLJi1ismE/HCnH0eYABFPuatoUHw31H1/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tMIoq/btsLJi1ismE/HCnH0eYABFPuatoUHw31H1/img.webp&quot; data-alt=&quot;써보기 전에는 이해가 안가는 AI 비용 정책&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tMIoq/btsLJi1ismE/HCnH0eYABFPuatoUHw31H1/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtMIoq%2FbtsLJi1ismE%2FHCnH0eYABFPuatoUHw31H1%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;400&quot; data-filename=&quot;aicose.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;써보기 전에는 이해가 안가는 AI 비용 정책&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;질문에 답을 찾는 자료 찾기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고자료.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=SHB-qKxjooM&quot;&gt;https://www.youtube.com/watch?v=SHB-qKxjooM&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://azure.microsoft.com/ko-kr/pricing/details/cognitive-services/openai-service/&quot;&gt;https://azure.microsoft.com/ko-kr/pricing/details/cognitive-services/openai-service/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1736425116395&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Azure OpenAI 서비스 - 가격 책정 | Microsoft Azure&quot; data-og-description=&quot;Azure Open AI Service 가격 책정 정보입니다. 무료 Azure 계정으로 인기 서비스를 사용해 보고 선불 비용 없이 종량제로 결제하세요.&quot; data-og-host=&quot;azure.microsoft.com&quot; data-og-source-url=&quot;https://azure.microsoft.com/ko-kr/pricing/details/cognitive-services/openai-service/&quot; data-og-url=&quot;https://azure.microsoft.com/ko-kr/pricing/details/cognitive-services/openai-service/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b3EbZW/hyXWr65hKA/nJpOzucAaV9DFbrO2ZjHc1/img.png?width=600&amp;amp;height=315&amp;amp;face=0_0_600_315,https://scrap.kakaocdn.net/dn/njehB/hyX0tvlPYH/3wajPOoeTm7oqBDsf7JGVK/img.png?width=600&amp;amp;height=315&amp;amp;face=0_0_600_315,https://scrap.kakaocdn.net/dn/ct6dQe/hyXWt4Uzow/4lRcusUKTZiNH3Kj4Mgeh1/img.png?width=360&amp;amp;height=265&amp;amp;face=0_0_360_265&quot;&gt;&lt;a href=&quot;https://azure.microsoft.com/ko-kr/pricing/details/cognitive-services/openai-service/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://azure.microsoft.com/ko-kr/pricing/details/cognitive-services/openai-service/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b3EbZW/hyXWr65hKA/nJpOzucAaV9DFbrO2ZjHc1/img.png?width=600&amp;amp;height=315&amp;amp;face=0_0_600_315,https://scrap.kakaocdn.net/dn/njehB/hyX0tvlPYH/3wajPOoeTm7oqBDsf7JGVK/img.png?width=600&amp;amp;height=315&amp;amp;face=0_0_600_315,https://scrap.kakaocdn.net/dn/ct6dQe/hyXWt4Uzow/4lRcusUKTZiNH3Kj4Mgeh1/img.png?width=360&amp;amp;height=265&amp;amp;face=0_0_360_265');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Azure OpenAI 서비스 - 가격 책정 | Microsoft Azure&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Azure Open AI Service 가격 책정 정보입니다. 무료 Azure 계정으로 인기 서비스를 사용해 보고 선불 비용 없이 종량제로 결제하세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;azure.microsoft.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;Azure OpenAI 서비스는 고객이 GenAI 애플리케이션을 구축할 수 있도록 다양한 배포(Deployment) 옵션을 제공합니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;주요 배포 옵션은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;Standard&lt;/b&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;Batch&lt;/b&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;Provisioned&lt;/b&gt;로 나뉩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. Standard : 쓴 만큼 낸다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. Batch&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. Provisioned : 약정으로 싸게 주세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음 사용한다면 &lt;b&gt;Standard&lt;/b&gt; 배포 옵션으로 사용한다고 보면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;Standard 모델&lt;/b&gt;:&lt;br /&gt;중소규모의 비정기적인 트래픽에 적합하며, API 호출 시 사용한 토큰에 따라 비용을 지불하는 방식입니다. 글로벌 배포(전 세계 최적의 사용자 경험 제공) 또는 지역별 배포(데이터 처리 위치 제어 가능) 중 선택할 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Batch 모델&lt;/b&gt;:&lt;br /&gt;대량 추론 작업에 적합하며, 비용을 Standard 모델 대비&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;최대 50% 절감&lt;/b&gt;할 수 있습니다. 글로벌 배치 모델로 배포한 후, 배치 파일을 업로드하고 비동기식으로 처리 진행 상황을 추적할 수 있습니다. 모든 작업은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;24시간 내&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;완료됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Provisioned 모델&lt;/b&gt;:&lt;br /&gt;일관된 성능과 처리 용량이 필요한 대규모 AI 워크로드에 적합합니다. 이 모델은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;예측 가능한 지연 시간&lt;/b&gt;과 낮은 변동성을 제공하며, 시간 단위, 월 단위 또는 연간 약정 시 할인 혜택을 받을 수 있습니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Azure에서 안내하는 가격정보를 보면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;100만 토큰 기준 &lt;b&gt;Input / Caced Input / Output&lt;/b&gt; 에 따라 비용이 발생한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쉽게 말하면 &lt;b&gt;입력과 출력 모두 토큰 비용이 발생한다!!&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Cached Input은 뭔가 해서 찾아보니 인간미 있는 정책이 있다니.&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;참고. Cached Input(캐시된 입력) 이란?&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;**Cached Input(캐시된 입력)**이란&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;이전과 동일한 입력을 재사용&lt;/b&gt;할 때,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;비용이 할인&lt;/b&gt;되는 모델의 비용 구조를 의미합니다.&lt;br /&gt;Azure OpenAI 서비스에서&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;GPT-4o&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;모델은 동일한 입력이 다시 사용될 경우,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;일반 입력 비용의 절반 수준&lt;/b&gt;으로 비용이 줄어듭니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고.&lt;b&gt;1M 토큰의 실제 텍스트 양&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;1M 토큰 = 100만 토큰&lt;/b&gt;을 의미합니다.&lt;/li&gt;
&lt;li&gt;일반적인 영어 텍스트 기준으로, &lt;b&gt;750~800개의 단어&lt;/b&gt;가 약 &lt;b&gt;1,000개 토큰&lt;/b&gt;에 해당합니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;1M 토큰 &amp;asymp; 약 750,000~800,000 단어&lt;/b&gt; 수준입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고.&lt;b&gt;1M 토큰으로 처리할 수 있는 대략적인 텍스트 양&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;언어단어 수 기준 (약)텍스트 분량 예시&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;영어&lt;/td&gt;
&lt;td&gt;약 750,000~800,000 단어&lt;/td&gt;
&lt;td&gt;소설 1~2권 분량&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;한글&lt;/td&gt;
&lt;td&gt;약 600,000~650,000 단어&lt;/td&gt;
&lt;td&gt;블로그 글 1,000개 분량&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;코드 (프로그래밍)&lt;/td&gt;
&lt;td&gt;약 500,000~600,000 단어&lt;/td&gt;
&lt;td&gt;코드 주석 포함 프로젝트&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(아래) GPT-4o Global Deployment 형태로 사용할 경우 가격 정책&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Screenshot 2025-01-09 at 9.17.22 PM.png&quot; data-origin-width=&quot;2638&quot; data-origin-height=&quot;596&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CT7nI/btsLIey6QCJ/A6YkeoiZYAJ4DtmIes5nx1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CT7nI/btsLIey6QCJ/A6YkeoiZYAJ4DtmIes5nx1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CT7nI/btsLIey6QCJ/A6YkeoiZYAJ4DtmIes5nx1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCT7nI%2FbtsLIey6QCJ%2FA6YkeoiZYAJ4DtmIes5nx1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2638&quot; height=&quot;596&quot; data-filename=&quot;Screenshot 2025-01-09 at 9.17.22 PM.png&quot; data-origin-width=&quot;2638&quot; data-origin-height=&quot;596&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;</description>
      <category>Azure</category>
      <author>제이비;)</author>
      <guid isPermaLink="true">https://butdev.tistory.com/63</guid>
      <comments>https://butdev.tistory.com/63#entry63comment</comments>
      <pubDate>Thu, 9 Jan 2025 21:34:21 +0900</pubDate>
    </item>
  </channel>
</rss>