스프레드란 무엇인가?

마지막 업데이트: 2022년 5월 5일 | 0개 댓글
  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 카카오스토리 공유하기
2016년 출판본

정형 데이터 vs 비정형 데이터

지난 10년 동안 데이터가 무엇인지에 대한 정의와 이해가 극적으로 바뀌었습니다. 비정형 데이터를 읽고, 저장하고, 분석할 수 있는 새로운 도구의 가용성이 증가했기 때문입니다.

과거에는 해석의 어려움으로 인해 비정형 데이터가 제대로 활용되지 못했습니다. 하지만 이제는 새로운 기술을 통해 비정형 데이터를 더 쉽게 이해할 수 있을 뿐만 아니라 이와 같은 데이터의 보고에서 귀중한 인사이트를 얻을 수 있습니다.

IDC에 따르면, 2024년까지 전 세계에서 생성, 캡처, 복사 및 소비되는 데이터의 총량은 매년 149제타바이트를 넘어설 것이며 그중 상당수는 비정형 데이터가 될 것입니다. 모든 조직은 비정형 데이터 분석 기능을 구축함으로써 이점을 얻게 될 것입니다. 그리고 이와 같은 여정의 첫 번째 단계는 정형 데이터와 비정형 데이터가 무엇인지 이해하는 것입니다.

다음은 더 자세한 설명과 함께 이들의 차이점에 대한 간략한 요약입니다.

사전에 정의됨. 모델이 정의되고 일부 데이터가 저장된 후에는 모델을 변경하기 어렵습니다.

비정형 데이터에는 특정 스키마가 포함되지 않습니다. 데이터 모델은 매우 유연합니다.

제한된 수의 데이터 포맷을 사용할 수 있습니다.

비정형 데이터에는 매우 다양한 데이터 포맷을 사용할 수 있습니다.

SQL 기반 관계형 데이터베이스가 사용됩니다.

특정 스키마가 없는 NoSQL 데이터베이스가 사용됩니다.

데이터베이스 또는 데이터 세트 내에서 데이터를 검색하고 찾기가 매우 쉽습니다.

비정형 특성으로 인해 특정 스프레드란 무엇인가? 데이터 검색이 매우 어렵습니다.

데이터의 양적 특성으로 인해 분석이 매우 쉽습니다.

기존 소프트웨어 도구로도 분석이 매우 어렵습니다.

정형 데이터에는 데이터 웨어하우스가 사용됩니다.

비정형 데이터를 저장하는 데에는 데이터 레이크가 사용됩니다.

정형 데이터란 무엇인가요?

정형 데이터에는 보유하고 있는 정보에 대해 적절히 정의된 스키마가 있습니다. 매우 간단히 정의하면 구글 스프레드시트 또는 마이크로소프트 엑셀과 같은 스프레드시트 프로그램에 표시할 수 있는 모든 데이터는 정형 데이터입니다.

이 예에서 데이터는 행과 열로 표시될 수 있습니다. 각 열은 다른 속성을 나타내는 반면 각 행에는 단일 인스턴스의 속성과 연결된 데이터가 있습니다. 행과 열은 쉽게 참조할 수 있는 테이블을 형성합니다.

서로 다른 테이블들은 연결될 수 있습니다. 즉, 두 테이블에 있는 공통 열로 관련되어 있다고 말할 수 있습니다.

여러 테이블이 연속적으로 연결되어 있으면 관계형 데이터베이스가 생성됩니다. 예를 들어, 백화점의 고객, 판매 및 재고 데이터는 관계형 데이터베이스로 저장된 정형 데이터로 간주할 수 있습니다.

  • 각 고객은 고객 ID와 이름, 연락처, 신용카드 정보, 주소 등의 필드를 갖게 됩니다.
  • 고객 데이터베이스는 구매 시간, 구매 항목 코드, 총 지출 금액, 고객 ID 등의 속성을 가진 판매 데이터베이스에 연결될 수 있습니다. 두 테이블 모두 고객 ID라는 공통 속성으로 연결됩니다.
  • 마지막으로 항목 코드라는 공통 속성을 사용하여 판매 데이터베이스를 재고 데이터베이스에 연결하여 세 테이블을 모두 관계형 데이터베이스로 효과적으로 연결할 수 있습니다.

이와 같은 정형 데이터는 일반적으로 RDBMS(관계형 데이터베이스 관리 시스템)에 저장됩니다. 데이터베이스는 1970년대에 IBM이 메인프레임 데이터베이스를 지원하기 위해 개발한 언어인 SQL 사용하여 작성, 읽기 및 조작할 수 있습니다. (처음에는 Sequence English Query Language 또는 SEQUEL로 알려진 바 있습니다.) SEQUEL의 발음이 SQL과 거의 흡사하다고 해서 붙여진 이름입니다. 현재 형태의 SQL은 Relational Software, Inc.(오늘날 Oracle)에 의해 대중화되었습니다.

비정형 데이터란 무엇인가요?

정형 데이터가 아닌 모든 데이터는 비정형 데이터로 분류될 수 있습니다. 2025년까지 우리가 접하는 데이터의 80%가 텍스트, 오디오, 이미지 또는 동영상 형태의 비정형 데이터가 될 것으로 예상됩니다 1 .

간단히 말해 비정형 데이터가 현대적 데이터라 할 수 있습니다. 비정형 데이터는 보통 다음과 같습니다.

  • 디지털 데이터로서 예측 불가능
  • 상시 생성되며 항상 이동 중에 있음
  • 혼합, 다중 모드 및 상호 운용 가능
  • 지리적으로 분산되어 더 나은 보호 수단 제공

비정형 데이터에는 구조를 가질 수 있는 일부 관련 메타데이터가 포함될 수 있습니다. 예를 들어 동영상에는 동영상 해상도, 비트 전송률, FPS(초당 프레임 수), 동영상 소유자 등의 메타데이터가 포함될 수 있습니다. 그러나 동영상 자체는 비정형 데이터입니다. 비정형 데이터와 관련된 일부 정형 메타데이터가 있는 경우 반정형 데이터라고도 합니다.

YouTube 영상의 예를 자세히 살펴보면 업로드 시간, 업로드 날짜, 조회수(일부 또는 전체), 좋아요 및 싫어요 수 등과 같은 일부 메타데이터가 있습니다. 그러나 영상 제목, 설명 및 영상 자체의 내용은 비정형입니다. 순전히 숫자로 포착할 수 없는 질적인 측면도 있습니다.

비정형 데이터에 가장 일반적으로 사용되는 데이터베이스는 NoSQL입니다. NoSQL은 "not only SQL"의 약자로, 데이터베이스가 SQL 데이터베이스의 기능을 넘어 더 넓은 범위의 데이터를 처리할 수 있음을 나타냅니다. NoSQL 데이터베이스에는 스키마나 테이블 구조가 없습니다. 함께 그룹화된 데이터 모음일 뿐입니다.

비정형 데이터 스토리지와 UFFO

이처럼 비정형 데이터는 엄청난 혁신의 잠재력을 지닌 중요한 인사이트를 제공할 수 있지만 이를 위해서 해결해야 하는 도전 과제들도 많습니다. 퓨어스토리지의 고성능 UFFO 스토리지 솔루션인 플래시블레이드(FlashBlade®)는 플래시 스토리지의 속도는 물론 모든 아키텍처를 민첩하게 확장할 수 있는 기능을 제공합니다. 자세히 알아보고 싶으신가요? 퓨어스토리지는 약정 없이 플래시블레이드(FlashBlade)를 테스트할 수 있는 무료 평가판을 제공하고 있습니다.

세포 란 무엇인가?

셀은 Excel 또는 Google 스프레드 시트와 같은 스프레드 시트 프로그램에서 사용할 수있는 가장 기본적인 저장 단위입니다. 스프레드 시트 프로그램에 입력 된 데이터 는 항상 셀에 저장됩니다.

화면 상에 셀은 상자 형 구조로 나타나며 각 셀은 워크 시트의 세로 열과 가로 행 의 교점에 있습니다.

워크 시트 당 16,000 개 이상의 열과 1 백만 개의 행이있는 Excel의 워크 시트 당 170 억 개가 넘는 셀이 있습니다. Google 스프레드 시트는 워크 시트 당 약 40 만 개의 셀로 다소 작습니다.

  • 언급 한 바와 같이 셀은 데이터를 저장하는 데 사용되며 데이터를 표시하는데도 사용됩니다. 일반적으로 관련 데이터의 열과 행이 함께 그룹화되어 테이블을 형성합니다.
  • 셀은 네 가지 기본 유형의 정보 (데이터 유형)를 보유 할 수 있습니다.
    • 숫자 - 수식, 날짜 및 시간을 포함합니다.
    • 스프레드란 무엇인가?
    • 텍스트 데이터 - 텍스트 문자열 또는 단순히 문자열이라고도합니다.
    • 부울 값 ( 논리 값 이라고도 함) - TRUE 또는 FALSE 만;
    • #NULL !, #REF !, # DIV / 0과 같은 오류 값 ! - 셀의 데이터에 문제가 발생하면 프로그램에 의해 생성됩니다.

    워크 시트 당 셀 수를 감안할 때 필요한 경우 데이터를 쉽고 빠르게 찾을 수 있도록 식별 또는 주소 지정 시스템이 필요합니다.

    현대 스프레드 시트에서 사용되는 시스템은 셀 참조 위치이며 셀 참조 위치는 열 문자와 행 번호의 조합입니다. 이러한 셀 참조 에서 열 문자는 항상 A1, B12 또는 AA2345와 같이 먼저 나열됩니다.

    셀 참조는 수식 및 차트와 같은 항목에 사용될 때 자리 표시 자 역할을하며 셀에있는 데이터가 수식이나 차트의 적절한 위치에 자동으로 입력되므로 셀 수식이 수식 및 차트와 같이 사용되면 해당 수식과 차트를 쉽게 업데이트 할 수 있습니다 .

    • 워크 시트의 모든 셀은 기본적으로 동일한 서식을 사용하므로 많은 양의 데이터를 포함하는 큰 워크 시트를 읽기 어려워집니다. 워크 시트의 다른 영역에 서식을 추가하면 특정 섹션에주의를 끌고 읽고 이해하기가 더 쉬워집니다.
    • 셀 서식은 숫자 서식과 다릅니다. 셀 서식에는 셀 배경색 변경, 테두리 추가 또는 데이터 정렬 변경과 같이 셀 자체의 변경이 포함됩니다. 숫자 서식은 통화, 백분율 또는 음수를 빨간색으로 표시하는 등 셀의 숫자가 표시되는 방식을 처리합니다.

    저장된 숫자 대 표시 된 숫자

    Excel 및 Google 스프레드 시트에서 숫자 서식을 적용하면 셀에 표시된 결과 숫자가 셀에 실제로 저장된 숫자와 다를 수 있으며 계산에 사용됩니다.

    셀의 서식을 변경하면이 변경 사항은 번호 자체가 아닌 숫자의 모양에만 영향을 미칩니다. 예를 들어 한 셀의 5.6789가 소수점 두 자리 (소수점 오른쪽 두 자리) 만 표시하도록 포맷 된 경우 셀은 세 번째 숫자의 반올림으로 인해 5.68을 표시합니다.

    계산 및 형식 번호

    그러나 형식화 된 데이터 셀을 계산에 사용하는 경우 전체 숫자 (이 경우 5.6789)는 셀에 반올림 된 숫자가 아닌 모든 계산에 사용됩니다.

    Excel에서 워크 시트에 셀 추가

    참고 : Google 스프레드 시트에서는 단일 셀을 추가하거나 삭제할 수 없으며 전체 행이나 열만 추가하거나 삭제할 수 있습니다.

    개별 셀이 워크 시트에 추가되면 기존 셀과 해당 데이터가 아래로 또는 오른쪽으로 이동하여 새 셀을위한 공간을 만듭니다.

    • 키보드 단축키;
    • 마우스 오른쪽 버튼을 클릭하여
    • 리본의 탭에있는 삽입 옵션을 사용하여;

    한 번에 둘 이상의 셀을 추가하려면 아래 방법에서 첫 번째 단계로 여러 셀을 선택하십시오.

    바로 가기 키로 셀 삽입

    셀을 워크 시트에 삽입하기위한 키보드 키 조합은 다음과 같습니다.

    참고 : 일반 키보드 오른쪽에 숫자 패드가있는 키보드가있는 경우 Shift 키없이 + 기호를 사용할 수 있습니다. 키 조합은 다음과 같이됩니다.

    마우스 오른쪽 버튼으로 클릭

    1. 새 셀을 추가 할 셀을 마우스 오른쪽 단추로 클릭하여 상황에 맞는 메뉴를 엽니 다.
    2. 메뉴에서 삽입을 클릭하여 삽입대화 상자 를 엽니 다.
    3. 대화 상자에서 주변 셀을 아래로 이동하거나 오른쪽으로 이동하여 새 셀의 공간을 확보하십시오.
    4. 확인을 클릭하여 셀을 삽입하고 대화 상자를 닫습니다.

    또는 위 그림과 같이 리본 의 탭에있는 삽입 아이콘을 통해 삽입 대화 상자를 열 수 있습니다.

    일단 열리면 위의 3, 4 단계를 따라 세포를 추가하십시오.

    셀 및 셀 내용 삭제

    개별 셀과 그 내용은 워크 시트에서도 삭제할 수 있습니다. 이 경우 삭제 된 셀의 아래쪽이나 오른쪽에서 셀과 해당 데이터가 이동하여 간격을 채 웁니다.

    셀을 삭제하려면 다음과 같이하십시오.

    1. 삭제할 하나 이상의 셀 강조 표시;
    2. 선택한 셀을 마우스 오른쪽 버튼으로 클릭하여 컨텍스트 메뉴를 엽니 다.
    3. 메뉴에서 삭제를 클릭하여 삭제 대화 상자를 엽니 다.
    4. 대화 상자에서 삭제 된 셀을 대체하기 위해 셀을 위로 또는 왼쪽으로 이동하도록 선택하십시오.
    5. 확인을 클릭하여 셀을 삭제하고 대화 상자를 닫습니다.

    셀 자체를 삭제하지 않고 하나 이상의 셀 내용을 삭제하려면 :

    1. 삭제할 내용이 포함 된 셀을 강조 표시하십시오.
    2. 키보드의 Delete 키를 누릅니다.

    참고 : Backspace 키는 한 번에 한 셀의 내용 만 삭제하는 데 사용할 수 있습니다. 이렇게하면 Excel이 편집 모드로 전환됩니다. 삭제 키는 여러 셀의 내용을 삭제할 때 더 좋은 옵션입니다.

    행복하고 선한 투자자의 경제 블로그

    이 내용을 서평에 써야 하나 경제 카테고리쪽에 써야하나 고민을 했지만, 제목과 목차만 봐도 공부가 되는 책입니다.

    저는 10월과 11월 달은 금리 관련 공부를 하기로 했고 관련 책을 다섯 권 정도 추려서 읽고 있습니다.

    소개해 드릴 내용도 그중 일부입니다.
    읽으면서 몇 년 전 이 책을 읽었다면 좋았을 건데라는 생각을 했습니다.

    저자는 채권전문가인 박종연이라는 분이고, 2016년 9월에 나온 책입니다.

    초보자이시거나 바쁘신 분은 제목만이라도 정독해서 읽어보시고, 빨간색 폰트로 표시된 주제만이라도 인터넷에서 찾아서 공부하셔도 됩니다.

    금리는 미래 경제를 반영하는 프리즘
    장단기 스프레드는 경제에 대한 기상예보다 ·
    신용 스프레드는 신용 여건의 체온계다 ·
    향후 10년, 자산 가격 인플레이션에 대비하자
    ·

    이 책을 읽어 보시고, 더 공부하고 싶으신 분은 금리 관련 책 몇 권을 비교하시면서 읽어 보시기 바랍니다. 이해가 빨리되니 책 읽는 속도도 점점 빨라집니다.

    2016년 출판본

    2019년 출판본


    1장 금리는 2008년 금융위기를 알고 있었다.스프레드란 무엇인가?

    2004년 6월, 월가의 어느 채권 매니저 이야기 ·
    그린스펀도 풀지 못한 수수께끼 ·
    그린스펀의 수수께끼가 발생한 원인 ·
    장단기 스프레드의 역전과 2008년 금융위기 ·
    금리는 미래 경제를 반영하는 프리즘
    펀드매니저 TIP_채권금리와 채권 가격 간의 관계

    2장 금리가 미래를 반영할 수 있는 이유

    도토리를 둘러싼 조삼모사 이야기 ·
    원숭이는 과연 어리석은 존재인가? ·
    화폐의 시간가치란 무엇인가? ·
    금리란 도대체 무엇인가? ·
    금리에 영향을 주는 요인에는 무엇이 있을까? ·
    금리 결정에는 정해진 공식이 없다
    펀드매니저 TIP_채권시장의 구조 및 신재민 전 사무관의 폭로 사건

    3장 금리 스프레드에는 놀라운 비밀이 숨겨져 있다

    금리라고 다 같은 금리가 아니다 ·
    장단기 스프레드는 경제에 대한 기상예보다 ·
    신용 스프레드는 신용 여건의 체온계다 ·
    국가별 금리 차는 재정 건전성의 척도다
    73·물가채의 BEI는 인플레이션 기대치를 반영한다
    펀드매니저 TIP_국내에서는 왜 아직도 국고채 3년 금리가 대표 금리인가?

    4장 마이너스 금리 채권의 본질과 전망

    튤립 버블 이야기 ·
    마이너스 금리 채권은 제2의 튤립 버블인가? ·
    마이너스 금리는 경쟁적인 통화완화의 부산물 ·
    마이너스 금리 정책을 중단하기 어려운 이유
    통화 전쟁이 끝나야 마이너스 금리도 사라진다
    펀드매니저 TIP_돈을 풀어도 물가가 오르지 않는 까닭

    5장 금리가 말하는 미래_세계경제

    미국 경제의 둔화 국면이 다가온다 ·
    중국 경제의 둔화가 지속된다 ·
    유로존의 붕괴 우려가 반복된다 ·
    디플레이션 우려가 재차 불거질 것이다 ·
    미국의 금리 인하 사이클이 다시 온다 ·
    달러화 가치는 더 이상 오르지 않는다
    펀드매니저 TIP_유로존 경제의 이해와 문제점

    6장 금리가 말하는 미래_한국경제

    1%대 성장률 시대가 도래한다 ·
    2%대 물가는 당분간 보기 어렵다 ·
    다음 금리 인하 사이클에서 기준금리는 0% 대가 예상된다 ·
    달러-원 환율은 다시 떨어진다 ·
    수도권 아파트 전세가율은 다시 상승하게 될 것이다
    펀드매니저 TIP_GDP 데이터 바로 해석하기
    펀드매니저 TIP_한국은행의 통화 정책 목표와 수단

    7장 금리가 말하는 미래에 대비하는 우리의 자세

    10년 이상 장기 대출 시 고정금리보다 변동금리가 낫다 · 전세로 살 바에는 내 집을 마련하자 ·
    향후 10년, 자산 가격 인플레이션에 대비하자 ·
    장기 고정 현금흐름을 확보하자 ·
    보험회사 선택에 신중을 기하자 ·
    월급을 오래 받는 것도 훌륭한 재테크다 ·
    공유경제, 무인화, 소비 양극화에서 비즈니스 기회를 찾자 중국계 자금의 공습에 대비하자 ·
    해외투자로 눈을 돌리자
    펀드매니저 TIP_
    부동산 시장을 파악할 때 유용한 벌집 순환모형

    파드 토폴로지 분배 제약 조건

    사용자는 토폴로지 분배 제약 조건 을 사용해서 지역, 영역, 노드 그리고 기타 사용자-정의 토폴로지 도메인과 같이 장애-도메인으로 설정된 클러스터에 걸쳐 파드가 분산되는 방식을 제어할 수 있다. 이를 통해 고가용성뿐만 아니라, 효율적인 리소스 활용의 목적을 이루는 데 도움이 된다.

    필수 구성 요소

    노드 레이블

    토폴로지 분배 제약 조건은 노드 레이블을 의지해서 각 노드가 속한 토폴로지 스프레드란 무엇인가? 도메인(들)을 인식한다. 예를 들어, 노드에 다음과 같은 레이블을 가지고 있을 수 있다. node=node1,zone=us-east-1a,region=us-east-1

    다음 레이블이 있고, 4개 노드를 가지는 클러스터가 있다고 가정한다.

    그러면 클러스터는 논리적으로 다음과 같이 보이게 된다.

    graph TB subgraph "zoneB" n3(Node3) n4(Node4) end subgraph "zoneA" n1(Node1) n2(Node2) end classDef plain fill:#ddd,stroke:#fff,stroke-width:4px,color:#000; classDef k8s fill:#326ce5,stroke:#fff,stroke-width:4px,color:#fff; classDef cluster fill:#fff,stroke:#bbb,stroke-width:2px,color:#326ce5; class n1,n2,n3,n4 k8s; class zoneA,zoneB cluster;

    레이블을 수동으로 적용하는 대신에, 사용자는 대부분의 클러스터에서 자동으로 생성되고 채워지는 잘 알려진 레이블을 재사용할 수 있다.

    파드의 분배 제약 조건

    API 필드 pod.spec.topologySpreadConstraints 는 다음과 같이 정의된다.

    사용자는 하나 또는 다중 topologySpreadConstraint 를 정의해서 kube-scheduler 에게 클러스터에 걸쳐 있는 기존 파드와 시작하는 각각의 파드와 연관하여 배치하는 방법을 명령할 수 있다. 필드는 다음과 같다.

    maxSkew 는 파드가 균등하지 않게 분산될 수 있는 정도를 나타낸다. 이것은 0보다는 커야 한다. 그 의미는 whenUnsatisfiable 의 값에 따라 다르다.

    • whenUnsatisfiable 이 "DoNotSchedule"과 같을 때, maxSkew 는 대상 토폴로지에서 일치하는 파드 수와 전역 최솟값 (토폴로지 도메인에서 레이블 셀렉터와 일치하는 최소 파드 수. 예를 들어 3개의 영역에 각각 0, 2, 3개의 일치하는 파드가 있으면, 전역 최솟값은 0) 사이에 허용되는 최대 차이이다.
    • whenUnsatisfiable 이 "ScheduleAnyway"와 같으면, 스케줄러는 왜곡을 줄이는데 도움이 되는 토폴로지에 더 높은 우선 순위를 부여한다.

    minDomains 는 적합한(eligible) 도메인의 최소 수를 나타낸다. 도메인은 토폴로지의 특정 인스턴스 중 하나이다. 도메인의 노드가 노드 셀렉터에 매치되면 그 도메인은 적합한 도메인이다.

    • minDomains 값을 명시하는 경우, 이 값은 0보다 커야 한다.
    • 매치되는 토폴로지 키의 적합한 도메인 수가 minDomains 보다 적으면, 파드 토폴로지 스프레드는 "글로벌 미니멈"을 0으로 간주한 뒤, skew 계산이 수행된다. "글로벌 미니멈"은 적합한 도메인 내에 매치되는 파드의 최소 수 이며, 적합한 도메인 수가 minDomains 보다 적은 경우에는 0이다.
    • 매치되는 토폴로지 키의 적합한 도메인 수가 minDomains 보다 크거나 같으면, 이 값은 스케줄링에 영향을 미치지 않는다.
    • minDomains 가 nil이면, 이 제약은 minDomains 가 1인 것처럼 동작한다.
    • minDomains 가 nil이 아니면, whenUnsatisfiable 의 값은 " DoNotSchedule "이어야 한다.

    topologyKey 는 노드 레이블의 키다. 만약 두 노드가 이 키로 레이블이 지정되고, 레이블이 동일한 값을 가진다면 스케줄러는 두 노드를 같은 토폴로지에 있는것으로 여기게 된다. 스케줄러는 각 토폴로지 도메인에 균형잡힌 수의 파드를 배치하려고 시도한다.

    whenUnsatisfiable 는 분산 제약 조건을 만족하지 않을 경우에 처리하는 방법을 나타낸다.

    • DoNotSchedule (기본값)은 스케줄러에 스케줄링을 하지 말라고 알려준다.
    • ScheduleAnyway 는 스케줄러에게 차이(skew)를 최소화하는 노드에 높은 우선 순위를 부여하면서, 스케줄링을 계속하도록 지시한다.

    labelSelector 는 일치하는 파드를 찾는데 사용된다. 이 레이블 셀렉터와 일치하는 파드의 수를 계산하여 해당 토폴로지 도메인에 속할 파드의 수를 결정한다. 자세한 내용은 레이블 셀렉터를 참조한다.

    파드에 2개 이상의 topologySpreadConstraint 가 정의되어 있으면, 각 제약 조건은 AND로 연결된다 - kube-scheduler는 새로운 파드의 모든 제약 조건을 만족하는 노드를 찾는다.

    사용자는 kubectl explain Pod.spec.topologySpreadConstraints 를 실행해서 이 필드에 대한 자세한 내용을 알 수 있다.

    예시: 단수 토폴로지 분배 제약 조건

    4개 노드를 가지는 클러스터에 foo:bar 가 레이블된 3개의 파드가 node1, node2 그리고 node3에 각각 위치한다고 가정한다.

    graph BT subgraph "zoneB" p3(Pod) --> n3(Node3) n4(Node4) end subgraph "zoneA" p1(Pod) --> n1(Node1) p2(Pod) --> n2(Node2) end classDef plain fill:#ddd,stroke:#fff,stroke-width:4px,color:#000; classDef k8s fill:#326ce5,stroke:#fff,stroke-width:4px,color:#fff; classDef cluster fill:#fff,stroke:#bbb,stroke-width:2px,color:#326ce5; class n1,n2,n3,n4,p1,p2,p3 k8s; class zoneA,zoneB cluster;

    신규 파드가 기존 파드와 함께 영역에 걸쳐서 균등하게 분배되도록 하려면, 스펙(spec)은 다음과 같이 주어질 수 있다.

    topologyKey: zone 는 "zone:" 레이블 쌍을 가지는 노드에 대해서만 균등한 분배를 적용하는 것을 의미한다. whenUnsatisfiable: DoNotSchedule 은 만약 들어오는 파드가 제약 조건을 만족시키지 못하면 스케줄러에게 pending 상태를 유지하도록 지시한다.

    만약 스케줄러가 이 신규 파드를 "zoneA"에 배치하면 파드 분포는 [3, 1]이 되며, 따라서 실제 차이(skew)는 2 (3 - 1)가 되어 maxSkew: 1 를 위반하게 된다. 이 예시에서는 들어오는 파드는 오직 "zoneB"에만 배치할 수 있다.

    graph BT subgraph "zoneB" p3(Pod) --> n3(Node3) p4(mypod) --> n4(Node4) end subgraph "zoneA" p1(Pod) --> n1(Node1) p2(Pod) --> n2(Node2) end classDef plain fill:#ddd,stroke:#fff,stroke-width:4px,color:#000; classDef k8s fill:#326ce5,stroke:#fff,stroke-width:4px,color:#fff; classDef cluster fill:#fff,stroke:#bbb,stroke-width:2px,color:#326ce5; class n1,n2,n3,n4,p1,p2,p3 k8s; class p4 plain; class zoneA,zoneB cluster;

    graph BT subgraph "zoneB" p3(Pod) --> n3(Node3) p4(mypod) --> n3 n4(Node4) end subgraph "zoneA" p1(Pod) --> n1(Node1) p2(Pod) --> n2(Node2) end classDef plain fill:#ddd,stroke:#fff,stroke-width:4px,color:#000; classDef k8s fill:#326ce5,stroke:#fff,stroke-width:4px,color:#fff; classDef cluster fill:#fff,stroke:#bbb,stroke-width:2px,color:#326ce5; class n1,n2,n3,n4,p1,p2,p3 k8s; class p4 plain; class zoneA,zoneB cluster;

    사용자는 파드 스펙을 조정해서 다음과 같은 다양한 요구사항을 충족할 수 있다.

    • maxSkew 를 "2" 보다 큰 값으로 변경해서 들어오는 파드들이 "zoneA"에도 배치할 수 있도록 한다.
    • topologyKey 를 "node"로 변경해서 파드가 영역이 아닌, 노드에 걸쳐 고르게 분산할 수 있게 한다. 위의 예시에서 만약 maxSkew 가 "1"로 유지되면 들어오는 파드는 오직 "node4"에만 배치할 수 있다.
    • 스프레드란 무엇인가?
    • whenUnsatisfiable: DoNotSchedule 에서 whenUnsatisfiable: ScheduleAnyway 로 변경하면 들어오는 파드는 항상 다른 스케줄링 API를 충족한다는 가정하에 스케줄할 수 있도록 보장한다. 그러나 일치하는 파드가 적은 토폴로지 도메인에 배치되는 것이 좋다. (이 선호도는 리소스 사용 비율 등과 같은 다른 내부 스케줄링 우선순위와 공동으로 정규화 된다는 것을 알아두자.)

    예시: 다중 토폴로지 분배 제약 조건

    4개 노드를 가지는 클러스터에 foo:bar 가 레이블된 3개의 파드가 node1, node2 그리고 node3에 각각 위치한다고 가정한다.

    graph BT subgraph "zoneB" p3(Pod) --> n3(Node3) n4(Node4) end subgraph "zoneA" p1(Pod) --> n1(Node1) p2(Pod) --> n2(Node2) end classDef plain fill:#ddd,stroke:#fff,stroke-width:4px,color:#000; classDef k8s fill:#326ce5,stroke:#fff,stroke-width:4px,color:#fff; classDef cluster fill:#fff,stroke:#bbb,stroke-width:2px,color:#326ce5; class n1,n2,n3,n4,p1,p2,p3 k8s; class p4 plain; class zoneA,zoneB cluster;

    사용자는 2개의 TopologySpreadConstraints를 사용해서 영역과 노드에 파드를 분배하는 것을 제어할 수 있다.

    이 경우에는, 첫 번째 제약 조건에 부합시키려면, 신규 파드는 오직 "zoneB"에만 배치할 수 있다. 두 번째 제약 조건에서는 신규 파드는 오직 "node4"에만 배치할 수 있다. 그런 다음 두 스프레드란 무엇인가? 가지 제약 조건의 결과는 AND 가 되므로, 실행 가능한 유일한 옵션은 "node4"에 배치하는 것이다.

    다중 제약 조건은 충돌로 이어질 수 있다. 3개의 노드를 가지는 클러스터 하나가 2개의 영역에 걸쳐 있다고 가정한다.

    graph BT subgraph "zoneB" p4(Pod) --> n3(Node3) p5(Pod) --> n3 end subgraph "zoneA" p1(Pod) --> n1(Node1) p2(Pod) --> n1 p3(Pod) --> n2(Node2) end classDef plain fill:#ddd,stroke:#fff,stroke-width:4px,color:#000; classDef k8s fill:#326ce5,stroke:#fff,stroke-width:4px,color:#fff; classDef cluster fill:#fff,stroke:#bbb,stroke-width:2px,color:#326ce5; class n1,n2,n3,n4,p1,p2,p3,p4,p5 k8s; class zoneA,zoneB cluster;

    만약 사용자가 "two-constraints.yaml" 을 이 클러스터에 적용하면, "mypod"가 Pending 상태로 유지되는 것을 알게 된다. 이러한 이유는, 첫 번째 제약 조건을 충족하기 위해 "mypod"는 오직 "zoneB"에만 놓을 수 있다. 두 번째 제약 조건에서는 "mypod"는 오직 "node2"에만 놓을 수 있다. 그러면 "zoneB"와 "node2"의 공동 결과는 아무것도 반환되지 않는다.

    이 상황을 극복하기 위해서는 사용자가 maxSkew 의 증가 또는 whenUnsatisfiable: ScheduleAnyway 를 사용하도록 제약 조건 중 하나를 수정할 스프레드란 무엇인가? 수 있다.

    노드 어피니티(Affinity) 및 노드 셀렉터(Selector)와의 상호 작용

    스케줄러는 신규 파드에 spec.nodeSelector 또는 spec.affinity.nodeAffinity 가 정의되어 있는 경우, 부합하지 않는 노드들을 차이(skew) 계산에서 생략한다.

    예시: TopologySpreadConstraints와 노드 어피니티

    zoneA 에서 zoneC에 걸쳐있고, 5개의 노드를 가지는 클러스터가 있다고 가정한다.

    graph BT subgraph "zoneB" p3(Pod) --> n3(Node3) n4(Node4) end subgraph "zoneA" p1(Pod) --> n1(Node1) p2(Pod) --> n2(Node2) end classDef plain fill:#ddd,stroke:#fff,stroke-width:4px,color:#000; classDef k8s fill:#326ce5,stroke:#fff,stroke-width:4px,color:#fff; classDef cluster fill:#fff,stroke:#bbb,stroke-width:2px,color:#326ce5; class n1,n2,n3,n4,p1,p2,p3 k8s; class p4 plain; class zoneA,zoneB cluster;

    graph BT subgraph "zoneC" n5(Node5) end classDef plain fill:#ddd,stroke:#fff,stroke-width:4px,color:#000; classDef k8s fill:#326ce5,stroke:#fff,stroke-width:4px,color:#fff; classDef cluster fill:#fff,stroke:#bbb,stroke-width:2px,color:#326ce5; class n5 k8s; class zoneC cluster;

    그리고 알다시피 "zoneC"는 제외해야 한다. 이 경우에, "mypod"가 "zoneC"가 아닌 "zoneB"에 배치되도록 yaml을 다음과 같이 구성할 수 있다. 마찬가지로 spec.nodeSelector 도 존중된다.

    스케줄러는 클러스터에 있는 모든 영역(zone) 또는 다른 토폴로지 도메인에 대한 사전 지식이 없다. 스케줄링은 클러스터의 기존 노드에서 결정된다. 노드 풀(또는 노드 그룹)이 0개의 노드로 스케일(scale)되고 사용자는 노드가 확장될 것으로 예상하는 경우, 자동 스케일되는 클러스터에서 스프레드란 무엇인가? 문제가 발생할 수 있다. 이러한 토폴로지 도메인은 스케줄링에서 해당 도메인에 노드가 하나 이상 있을 때까지 고려되지 않을 것이기 때문이다.

    기타 눈에 띄는 의미(semantics)

    여기에 주목할만한 몇 가지 암묵적인 규칙이 있다.

    신규 파드와 같은 네임스페이스를 갖는 파드만이 매칭의 후보가 된다.

    topologySpreadConstraints[*].topologyKey 가 없는 노드는 스프레드란 무엇인가? 무시된다. 이것은 다음을 의미한다.

    1. 이러한 노드에 위치한 파드는 "maxSkew" 계산에 영향을 미치지 않는다. - 위의 예시에서, "node1"은 "zone" 레이블을 가지고 있지 않다고 가정하면, 파드 2개는 무시될 것이고, 이런 이유로 신규 파드는 "zoneA"로 스케줄된다.
    2. 신규 파드는 이런 종류의 노드에 스케줄 될 기회가 없다. - 위의 예시에서, 레이블로 를 가지는 "node5"가 클러스터에 편입한다고 가정하면, 레이블 키에 "zone"이 없기 때문에 무시하게 된다.

    들어오는 파드의 topologySpreadConstraints[*].labelSelector 와 자체 레이블과 일치하지 않을 경우 어떻게 되는지 알고 있어야 한다. 위의 예시에서, 만약 들어오는 파드의 레이블을 제거하더라도 여전히 제약 조건이 충족하기 때문에 "zoneB"에 배치할 수 있다. 그러나, 배치 이후에도 클러스터의 불균형 정도는 변경되지 않는다. - 여전히 zoneA는 레이블을 가지고 있는 2개의 파드를 가지고 있고, zoneB 도 를 레이블로 가지는 파드 1개를 가지고 있다. 따라서 만약 예상과 다르면, 워크로드의 topologySpreadConstraints[*].labelSelector 가 자체 레이블과 일치하도록 하는 것을 권장한다.

    클러스터 수준의 기본 제약 조건

    클러스터에 대한 기본 토폴로지 분배 제약 조건을 설정할 수 있다. 기본 토폴로지 분배 제약 조건은 다음과 같은 경우에만 파드에 적용된다.

    • .spec.topologySpreadConstraints 에는 어떠한 제약도 정의되어 있지 않는 경우.
    • 서비스, 레플리케이션컨트롤러(ReplicationController), 레플리카셋(ReplicaSet) 또는 스테이트풀셋(StatefulSet)에 속해있는 경우.

    기본 제약 조건은 스케줄링 프로파일에서 PodTopologySpread 플러그인의 일부로 설정할 수 있다. 제약 조건은 labelSelector 가 비어 있어야 한다는 점을 제외하고, 위와 동일한 API로 제약 조건을 지정한다. 셀렉터는 파드가 속한 서비스, 레플리케이션 컨트롤러, 레플리카셋 또는 스테이트풀셋에서 계산한다.

    내장 기본 제약

    파드 토폴로지 스프레딩에 대해 클러스터 수준의 기본 제약을 설정하지 않으면, kube-scheduler는 다음과 같은 기본 토폴로지 제약을 설정한 것처럼 동작한다.

    또한, 같은 동작을 제공하는 레거시 SelectorSpread 플러그인은 기본적으로 비활성화되어 있다.

    PodTopologySpread 플러그인은 분배 제약 조건에 지정된 토폴로지 키가 없는 노드에 점수를 매기지 않는다. 이로 인해 기본 토폴로지 제약을 사용하는 경우의 레거시 SelectorSpread 플러그인과는 기본 정책이 다를 수 있다.

    노드에 kubernetes.io/hostname 및 topology.kubernetes.io/zone 레이블 세트 둘 다가 설정되지 않을 것으로 예상되는 경우, 쿠버네티스 기본값을 사용하는 대신 자체 제약 조건을 정의한다.

    클러스터에 기본 파드 분배 제약 조건을 사용하지 않으려면, PodTopologySpread 플러그인 구성에서 defaultingType 을 List 로 설정하고 defaultConstraints 를 비워두어 기본값을 비활성화할 수 있다.

    파드어피니티(PodAffinity)/파드안티어피니티(PodAntiAffinity)와의 비교

    쿠버네티스에서 "어피니티(Affinity)"와 관련된 지침은 파드가 더 많이 채워지거나 더 많이 분산되는 방식으로 스케줄 되는 방법을 제어한다.

    • PodAffinity 는, 사용자가 자격이 충족되는 토폴로지 도메인에 원하는 수의 파드를 얼마든지 채울 수 있다.
    • PodAntiAffinity 로는, 단일 토폴로지 도메인에 단 하나의 파드만 스케줄 될 수 있다.

    더 세밀한 제어를 위해, 토폴로지 분배 제약 조건을 지정하여 다양한 토폴로지 도메인에 파드를 분배해서 고 가용성 또는 비용 절감을 달성할 수 있는 유연한 옵션을 제공한다. 또한 워크로드의 롤링 업데이트와 레플리카의 원활한 스케일링 아웃에 도움이 될 수 있다. 더 자세한 내용은 모티베이션(Motivation)를 참고한다.

    알려진 제한사항

    • 파드가 제거된 이후에도 제약 조건이 계속 충족된다는 보장은 없다. 예를 들어 디플로이먼트를 스케일링 다운하면 그 결과로 파드의 분포가 불균형해질 수 있다. Descheduler를 사용하여 파드 분포를 다시 균형있게 만들 수 있다.
    • 파드와 일치하는 테인트(taint)가 된 노드가 존중된다. 이슈 80921을 본다.

    다음 내용

      에서는 maxSkew 에 대해 자세히 설명하고, 몇 가지 고급 사용 예제를 제공한다.

    이 페이지가 도움이 되었나요?

    피드백 감사합니다. 쿠버네티스 사용 방법에 대해서 구체적이고 답변 가능한 질문이 있다면, 다음 링크에서 질문하십시오. Stack Overflow. 원한다면 GitHub 리포지터리에 이슈를 열어서 문제 리포트 또는 개선 제안이 가능합니다..

    미국 국채 장단기 금리차가 주식시장에 중요한 이유

    참고로 이 포스팅은 유튜브 김일구의 쩐쟁 - 나만의 뷰를 만들기 위한 채권 이야기를 보고 정리한 글이다.

    채권금리와 가격 사이의 관계

    보통 채권 이야기를 할 때, 금리가 올라가면 채권 가격이 떨어진다 고 이야기한다.

    금리가 올라가는데 왜 가격이 떨어지는 걸까??

    우리가 은행에서 예금 금리가 5%일 때 100만 원을 맡기면 만기 시 105만 원을 받을 수 있다.

    은행 예금 금리가 올라서 10%일 때는 100만 원을 맡기면 110만 원을 받을 수 스프레드란 무엇인가? 있다.

    이렇게 봤을 때, 금리가 오른다면 가격도 올라야 하는 거 아닌가요? 하고 생각할 수 있다.

    하지만 채권이 무엇인지 알고 있다면 이런 함정에 빠지지 않을 수 있다 ㅎㅎ

    채권이란 애초에 회사나 국가에서 "3년 후에 10만 원 드릴게요, 이걸 지금 얼마에 사시겠어요." 하는 것이기 때문이다.

    채권은 미래가치가 정해져 스프레드란 무엇인가? 있다. 금리에 따라서 현재가치가 왔다 갔다 하는 것이다.

    그래도 무슨 말인지 잘 모르겠으니 오피스텔 투자에 대입해서 생각해보자 ㅋㅋ

    오피스텔 가격이 1 억이다 . 그리고 그 오피스텔에서 1 년에 얻는 임대료 수입이 1천만 원이다.금리로 따지면 10%.

    (내가 이 오피스텔에 투자해서 수익률이 얼마가 나오지 ? = 스프레드란 무엇인가? 금리가 얼마나 나오는 것이지 ?)

    오피스텔의 가격이 2 억이 되었다 . 임대료 수입은 그대로 1천만 원이다.

    나는 2 억을 투자해서 1 년에 1천만 원을 얻는 것 . 이제는 금리가 5% 가 된 것 .

    반대로 오피스텔 가격이 5천만 원으로 반토막 . 임대료 수입은 그대로 . 금리 수익률이 20% 가 된다 .

    자, 어떤가 ? 가격이 올라가면 금리는 떨어진다 . 가격이 내려가면 금리는 올라간다.

    채권의 경우도 똑같다 . 채권금리가 떨어지면 채권 가격이 올라간다 .

    내가 이 채권을1만 원에 샀는데 그때 금리가 10% 이다 .

    이 말은 뭐냐면 채권 100만 원어치를 사면 1 년에 10만 원씩 이자가 나온다 .

    어떤 회사가 채권을 발행할 때 100만 원이라고 발행을 하면 그 채권을 사는 사람이 이 회사한테 100만 원을 주고 채권을 사는 것 . 근데 이 채권을 발행하는 회사는 이자를 어떻게 주기로 했냐면 10% 로 주겠다고 한 게 아니고 10만 원을 주겠다고 한 것이다 .

    이 때문에 이 채권을 산 사람은 100만 원짜리 채권 사고 10만 원의 이자를 받는 것이다.

    매년 받는 건데,이 채권의 가격이 어떻게 어떻게 해서 200만 원이 되었다 .

    그렇다고 해서 이 회사가 주는 이자 10만 원이 바뀌는 건 아니다.그러면 금리가 5% 가 된 거.

    일반적으로 채권시장에서는 어떤 이유로 금리가 10% 있다가 스프레드란 무엇인가? 5% 로 떨어지면 , 이 채권의 가격이 100만 원이었는데 200만 원이 되는 것이다.

    채권 금리가 주식시장에 중요한 이유.

    장단기 금리차라는 게 있다. ('신용스프레드'라고도 하는데 '스프레드'란 금리 차이를 말하는 것.)

    여기서 장기는 10년 만기 미국채를 말하는 것이고 단기는 2년 만기 미국채를 말하는 것.

    역사적으로 이 스프레드란 무엇인가? 장단기 금리차가 역전되면 주식시장에 침체기가 왔기 때문에 사람들이 국채 금리를 중요하게 생각하는 것이다.

    아래 그림을 보면 파란색 선이 장단기 금리차 %를 보여주는 것이고, 중간중간 연한 회색 음영은 경기침체 시기.

    출처 : FRED

    현재 미국 10년 만기 국채 금리는 1.685%, 2년 만기 국채 금리는 0.157% 이므로 차이는 1.528%.

    경기침체 직전에는 10년짜리가 2년짜리와 같아지거나 오히려 마이너스가 된다.

    장단기 스프레드가 마이너스다 = 경기침체가 시작된다.

    그러다가 장단기 금리차가 다시 확대되는 구간, 10년짜리 금리가 올라가는 구간에서는 경기가 회복된다.

    어디까지 올라가는지 보면 최근 3번은 모두 2.5~2.6% (250~260bp)까지 올라갔다.

    주식시장을 보면, 장단기 금리차가 역전되었다가 다시 올라가기 시작할 때는 조정을 많이 안 받는다. 왜냐면 정부 , 중앙은행이 경기 안 좋다고 열심히 지원해주니까 . 0~100bp (0~1%) 넘어설때 까지는 주식시장이 충격을 안 받았다. “ 경제 좋아지잖아 . 그래서 장단기 스프레드가 확대되기 시작하는 거야.장기금리 올라가는 거 경제 좋아져서 그런 거야”라고

    그런데 장단기 금리차가 100~200bp(1~2%) 사이는 좀 애매하다 . 이 구간에서는 주식시장이 조정을 받는 일이 많았다 .

    100~200bp 구간에서는 정부 , 중앙은행이 그렇게 열심히 도와주는 것 같지도 않고 , 경제가 스스로 살아갈 만큼 썩 좋은 것 같지도 않고 , 그런 구간에서 주식시장이 충격을 받는다 .

    이제껏 채권금리에 따라 주식시장도 움직여 왔으니 앞으로도 그럴 것이다~라고 확신하긴 어렵다.

    경제전망, 예측은 항상 틀린다. 그래도 무시할 수는 없는 데이터이다.

    주식에 투자해도 채권에 대한 뷰를 만들어 놔야 한다. '음. 채권시장이 지금 이러니까 주식시장은 지금 이 정도 생각을 하는 것 같아..' 이런 식으로 채권에 관심을 가지면 주식시장에 대한 뷰도 함께 만들어 갈 수 있다.


0 개 댓글

답장을 남겨주세요