사전 레이블
개념

레이블

gabury1고친 사람 github-actions[bot]

레이블은 대상에 이름표를 달아 두고, 나중에 그 이름표로 필요한 대상을 골라내게 합니다. 하나하나 지목하는 대신 「이 이름표가 붙은 것 전부」라고 말하면 됩니다. 무엇에 달고 무엇을 골라내는지는 분야마다 갈립니다.

쉽고 빠른 이해

무슨 일을 하는 물건인가 — 대상에 달아 두는 이름표입니다. 이삿짐 상자에 「주방」이라 적은 쪽지를 붙여 두면, 이사 온 집에서 주방 상자만 골라 먼저 풀 수 있습니다.

왜 이렇게 하나 — 대상이 수시로 생기고 사라지는 곳에서는 이름을 적어 둔 목록이 금세 낡습니다. 이름표로 묶어 두면 새로 생긴 대상이 같은 이름표를 달기만 해도 그 묶음에 들어옵니다.

어떻게 도나

  1. 대상을 만들 때 키와 값 한 쌍을 달아 둡니다
  2. 고르는 쪽이 「이 키가 이 값인 대상」이라는 조건을 적습니다
  3. 시스템이 그 조건에 맞는 대상을 그때그때 다시 모읍니다

대가 — 이름표는 글자라서 잘못 적어도 오류가 안 납니다. 조건에 맞는 대상이 하나도 없으면 빈 묶음이 조용히 만들어집니다.

상세

행사장에서 목에 거는 명찰을 떠올리면 쉽습니다. 명찰에 「발표자」라고 적혀 있으면, 안내 요원은 사람 얼굴을 외우지 않고도 발표자만 무대 뒤로 들여보냅니다.

이 절은 컨테이너를 여럿 굴리는 시스템과 지표를 모으는 시스템에서 쓰는 뜻을 중심으로 봅니다. 같은 이름을 다른 뜻으로 쓰는 분야도 있어서, 그것은 맨 마지막 소절에서 가릅니다.

키와 값 한 쌍

레이블 하나는 키와 값 한 쌍입니다. 키는 무엇을 기준으로 가르는지를 적고, 값은 그 기준에서 어디에 속하는지를 적습니다.

한 대상에는 레이블을 여러 장 답니다. 키가 다르면 같은 대상을 서로 다른 기준으로 가르게 됩니다. 아래는 어느 대상 하나에 달린 레이블 세 장입니다.

app: checkout
tier: backend
track: stable

첫 줄은 어느 서비스의 것인지를 가릅니다. 둘째 줄은 앞단과 뒷단 중 어느 쪽인지를 가릅니다. 셋째 줄은 어느 판을 돌리는 중인지를 가릅니다.

키와 값은 사람이 정합니다. 시스템은 그 뜻을 모르고 글자만 견줍니다. 그래서 같은 뜻을 팀마다 다른 키로 적어 두면 서로의 조건에 아무것도 안 걸립니다.

셀렉터 — 조건으로 고른다

레이블은 달아 두기만 해서는 아무 일도 하지 않습니다. 골라내는 쪽이 있어야 값이 생깁니다. 그 골라내는 조건을 셀렉터라고 부릅니다.

셀렉터는 이름 목록이 아니라 조건입니다. 「app 이 checkout 인 대상」처럼 적습니다. 조건을 둘 이상 걸면 전부 맞는 대상만 걸립니다.

flowchart TD
    S["셀렉터 · app 이 checkout 인 대상"]
    subgraph 후보["레이블이 달린 대상"]
        A["A · app=checkout · track=stable"]
        B["B · app=checkout · track=canary"]
        C["C · app=search · track=stable"]
    end
    S --> A
    S --> B

그림에서 셀렉터는 A 와 B 를 고르고 C 는 지나칩니다. 조건에 app 만 걸었으니 track 값이 서로 달라도 A 와 B 는 둘 다 걸립니다. C 는 app 값이 다르기 때문에 빠집니다.

목록 대신 조건으로 가리키는 까닭

이름을 하나하나 적은 목록은 대상이 늘고 줄 때마다 같이 고쳐야 합니다. 조건은 고치지 않아도 됩니다. 새로 생긴 대상이 같은 레이블을 달면 그때부터 조건에 걸리고, 사라지면 조용히 빠집니다.

이렇게 서로를 직접 가리키지 않고 이름표로만 묶는 방식을 느슨한 결합이라고 부릅니다. 고르는 쪽은 상대가 몇 개인지도, 언제 생겼는지도 모르는 채로 일합니다.

대가는 조용한 실패입니다. 키를 한 글자 틀리게 적어도 오류가 안 납니다. 조건에 맞는 대상이 없으면 빈 묶음이 만들어지고, 그 묶음을 받아 쓰는 쪽은 아무 일도 안 하게 됩니다.

배포에서 레이블이 하는 일

새 판을 내보낼 때 레이블은 판을 가르는 데 씁니다. 옛 판과 새 판에 같은 키를 달고 값만 다르게 두면, 둘을 따로 세거나 한쪽만 부를 수 있습니다.

돌아가는 것을 멈추지 않고 새 판으로 갈아 끼우는 일을 롤아웃이라고 부릅니다. 새 판을 한꺼번에 다 내보내지 않고 일부만 먼저 내보내는 방식이 레이블 위에 섭니다. 겉에서 부르는 조건에는 판을 안 가르는 레이블만 걸어 둡니다. 그러면 옛 판과 새 판이 다 걸리므로, 판마다 몇 개씩 띄울지를 조절하면 새 판이 받는 몫이 정해집니다.

돌볼 대상을 정하는 데도 씁니다. 파드는 함께 뜨고 함께 죽는 컨테이너 한 묶음이고, 디플로이먼트는 그런 파드를 몇 벌 띄워 둘지 적어 놓은 설정입니다.

디플로이먼트는 자기가 돌볼 파드를 이름이 아니라 셀렉터로 고릅니다. 그래서 셀렉터를 나중에 바꾸면 이미 레이블을 달고 있던 파드가 조건에서 빠져 주인을 잃습니다. 셀렉터는 처음 만들 때 정하고 뒤에 손대지 않습니다.

지표를 가를 때의 레이블

메트릭에도 레이블을 답니다. 메트릭은 시간에 따라 재서 쌓는 수치입니다. 같은 이름의 수치를 「어느 서버의」나 「어느 엔드포인트의」로 갈라 담을 때 레이블을 씁니다.

여기서는 대가의 모양이 다릅니다. 레이블 값이 하나 늘 때마다 따로 저장되는 시계열이 하나 늘어납니다. 시계열은 시각과 값을 짝지어 이어 붙인 한 줄기 기록입니다.

그래서 값이 거의 겹치지 않는 것을 레이블로 달면 기록이 걷잡을 수 없이 불어납니다. 사용자 번호나 요청 번호가 그런 값입니다. 값의 가짓수가 몇이나 되는지를 카디널리티라고 부르고, 이 문제를 카디널리티가 터졌다고 말합니다.

레이블과 헷갈리는 이름표

같은 곳에서 어노테이션이라는 이름표도 함께 씁니다. 둘 다 대상에 붙는 「이름: 값」 꼴이라 처음에는 구별이 잘 안 갑니다.

가르는 기준은 하나입니다. 골라내는 데 쓰나 아닌가입니다.

레이블 어노테이션
무엇에 쓰나 대상을 골라내는 조건 사람이나 도구가 읽을 메모
셀렉터에 걸리나 걸린다 안 걸린다
값의 길이 짧게 제한된다 길어도 된다

표의 마지막 줄이 둘의 성격을 말해 줍니다. 레이블은 견주는 데 쓰니 짧고 규칙이 깐깐합니다. 어노테이션은 읽기만 하니 빌드 시각이나 바뀐 내용 같은 긴 글도 담을 수 있습니다.

레이블이라는 이름의 다른 쓰임

레이블이라는 말은 이 밖에서도 쓰입니다. 뜻이 닮은 것도 있고 이름만 같은 것도 있습니다.

쓰임 무엇인가 키와 값 레이블과 닮았나
머신러닝의 레이블 학습 데이터에 붙여 둔 정답 값 닮았다. 대상에 붙이는 이름표이고 같은 값끼리 묶는 데 쓴다
도메인 이름의 레이블 점으로 나뉜 이름의 조각 하나 이름만 같다. 골라내는 이름표가 아니라 이름 자체의 부분이다
코드의 레이블 반복문에 붙여 어디서 빠져나갈지 가리키는 이름 이름만 같다. 묶음이 아니라 한 곳을 가리킨다
화면의 레이블 입력 칸 옆에 붙는 설명 글 이름만 같다. 사람이 읽는 글이다

머신러닝에서 쓰는 뜻이 가장 가깝습니다. 사진마다 「고양이」라고 붙여 둔 정답이 레이블이고, 그것을 붙이는 일을 레이블링이라고 부릅니다.

도메인 이름의 레이블은 다릅니다. shop.example.com 에서 shop · example · com 이 각각 레이블입니다. 붙였다 뗐다 하는 이름표가 아니라 이름을 이루는 조각이라서, 이름표라는 말로 읽으면 오히려 헷갈립니다.

관련 항목

레이블을 달고 다니는 쿠버네티스 객체

파드 · 디플로이먼트 · 레플리카셋 · 서비스 · 데몬셋 · 잡 · 노드 · 네임스페이스

레이블을 조건 삼아 대상을 고르는 수단

셀렉터 · 레이블 셀렉터 · 필드 셀렉터 · 노드 셀렉터 · 어피니티

레이블과 헷갈리는 다른 이름표 방식

어노테이션 · 태그 · 테인트 · 식별자

레이블로 판을 갈라 내보내는 배포 방식

롤아웃 · 카나리 배포 · 블루-그린 배포 · 리비전 · 릴리스

레이블로 갈라 재는 감시 지표와 도구

메트릭 · 시계열 · 카디널리티 · 집계 · 모니터링 · Prometheus

레이블이라는 이름이 겹치는 다른 개념

머신러닝 · 지도 학습 · 타깃 · 도메인 이름 · DNS · MPLS

레이블이 딛고 선 상위 분류

메타데이터 · 키-값 쌍 · 느슨한 결합 · 선언형 설정

다른 이름: label · 라벨