ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Elasticsearch 색인 Blue-Green 스위칭 전략(1)
    IT/Elasticsearch 2023. 9. 5. 18:25

     

    논의 내용 

    • Blue-Green 스위칭의 기본 개념을 설명
    • 스위칭이 필요한 이유와 스위칭이 언제 왜 사용되는지를 설명
    • 복습 및 이해도를 확인합니다.

     

     

    Blue-Green 스위칭

    Blue-Green 스위칭은 주로 배포 전략 중 하나로, 두 개의 동일한 환경(Blue와 Green)을 사용하여 실제 서비스에 영향을 미치지 않고 새로운 코드 또는 데이터를 테스트하고 배포하는 방법입니다. 

    예를 들어, 'Blue' 환경은 현재 실제 리얼 환경에서 사용 되고 있는 환경이고, 'Green' 환경은 새로운 코드나 데이터를 테스트하는 환경입니다. 테스트가 성공적으로 완료되면, 트래픽을 'Green'으로 스위칭하여 실제 서비스에 적용합니다.

     

     


     

    Elasticsearch 에서 스위칭이 필요한 이유

    elasticsearch는 기본적으로 동적 매핑을 허용하기 때문에 새로운 필드가 추가되는 경우에도 자동으로 해당 필드에 대한 매핑을 생성할 수 있습니다. 그렇다면 왜 인덱스 스위칭이 필요할까요?

    1. 데이터 구조 변경: 데이터의 구조나 형식이 크게 바뀌어 기존의 색인으로는 처리할 수 없을 때
    2. 매핑(Mapping) 정보 변경:  동적 매핑은 새로운 필드에 대한 기본 설정만 가능하고, 특별한 분석기나 다른 고급 설정은 직접 지정해야 합니다. 따라서 이러한 특별한 설정이 필요한 경우 새 인덱스를 생성하고 매핑 정보를 변경해야 합니다.
    3. 데이터 마이그레이션: 큰 규모의 데이터를 다룰 경우, 특히 중요한 데이터 변환이나 재색인이 필요한 경우에도 새 인덱스를 생성하여 스위칭합니다.
    4. 리소스 최적화: 인덱스의 크기나 샤드 구성 등을 변경해야 하는 경우에도 새 인덱스가 필요합니다.
    5. 버전 업그레이드: Elasticsearch의 버전이 업그레이드될 때, 하위 버전의 인덱스를 사용하는 것보다 새 버전의 기능을 최대한 활용하기 위해 새 인덱스를 생성합니다.
    6. 테스트 및 롤백: 새로운 인덱스에 데이터를 색인하여 테스트한 뒤, 문제가 없다면 실제 서비스에 반영합니다. 문제가 발생한 경우, 이전 인덱스로 쉽게 롤백할 수 있습니다.

     

     

     

     

    6가지 이유중에서  데이터 구조 변경에 대해 좀 더 자세히 들어가 봅시다.

     

    데이터 구조 변경

    새로운 필드 추가: 새로운 필드가 추가되는 것은 상대적으로 간단한 경우입니다. Elasticsearch는 동적 매핑을 지원하므로 새로운 필드는 자동으로 인덱스에 추가됩니다. 그러나 이 새로운 필드가 특별한 분석기나 설정이 필요한 경우, 새 인덱스를 생성해야 할 수 있습니다.

     

    필드 타입 변경: 기존에 integer 타입이었던 필드가 float이나 double 등으로 변경되어야 하는 경우, 새 인덱스를 생성하고 데이터를 재색인해야 합니다.

     

    Nested or Object 타입 변경: 복잡한 객체 또는 배열을 다룰 때, object나 nested 타입의 구조 변경이 필요하면 새 인덱스가 반드시 필요합니다.

     

    분석기 변경: 텍스트 검색 성능을 개선하거나 다국어 지원 등의 이유로 기존 필드의 분석기를 변경해야 하는 경우, 기존 인덱스를 수정할 수 없으므로 새 인덱스를 생성해야 합니다.

     

    이러한 이유로 Elasticsearch에서는 매핑 정보나 다른 설정이 변경될 때 새 인덱스를 생성하고 스위칭하는 것이 일반적입니다. 

     

     

    Blue-Green 스위칭의 장점

    - 무중단 배포: Blue-Green 스위칭을 사용하면 실제 서비스에 중단을 일으키지 않고 새로운 버전을 적용할 수 있습니다.
    - 품질 보증: Green 환경에서 충분한 테스트를 거친 후에 Blue 환경으로 전환하기 때문에, 높은 품질의 서비스를 유지할 수 있습니다
    - 롤백 용이성: 문제가 발생했을 때, 이전 버전으로 쉽게 롤백할 수 있습니다.
    - 데이터 동기화: 데이터가 변경되는 경우, 새로운 데이터를 안전하게 테스트하고 실제 환경에 적용할 수 있습니다.

    이런 이유로, Blue-Green 스위칭은 주로 높은 가용성이 필요한 서비스, 빈번한 업데이트가 발생하는 서비스, 큰 규모의 데이터를 다루는 서비스 등에서 활용됩니다.

     


     

    Quiz

    Blue-Green 스위칭이 주로 어떤 서비스에서 활용되는지 예를 들 수 있나요?

    만약 새로운 데이터나 코드에 문제가 발생했다면, Blue-Green 스위칭에서는 어떻게 대응할 수 있을까요?
    Blue-Green 스위칭의 주된 목적 중 하나는 무엇인가요?

     

     

     

    다음글에서는 위 질문데 대한 대답과 실제 작업 프로세스에 대해 글을 쓰도록 하겠습니다.

    'IT > Elasticsearch' 카테고리의 다른 글

    Elasticsearch 기초(1)  (0) 2023.09.06
Designed by Tistory.