1 of 21

1. Multi-Cloud Region/Zone 제공 정보 개선 방안�2. 현재 CSP별 Region/Zone 정보 제공 현황

CB-Spider

2024.11.27.

일정 참고

※ 관련 문의: #1389

개선 반완료 결과 참고: #1389 (comment)

2 of 21

API는 그대로 유지하고, 제공 정보 변경 작업

2

type ZoneStatus string

const (

ZoneAvailable ZoneStatus = "Available"

ZoneUnavailable ZoneStatus = "Unavailable"

NotSupported ZoneStatus = "StatusNotSupported"

)

type RegionZoneInfo struct {

Name string

DisplayName string

ZoneList []ZoneInfo

KeyValueList []KeyValue

}

type ZoneInfo struct {

Name string

DisplayName string

Status ZoneStatus

KeyValueList []KeyValue

}

type RegionZoneHandler interface {

ListRegionZone() ([]*RegionZoneInfo, error)

GetRegionZone(Name string) (RegionZoneInfo, error)

ListOrgRegion() (string, error) // return string: json format

ListOrgZone() (string, error) // return string: json format

}

type ZoneStatus string

const (

ZoneAvailable ZoneStatus = "Available"

ZoneUnavailable ZoneStatus = "Unavailable"

NotSupported ZoneStatus = "StatusNotSupported"

)

type RegionZoneInfo struct {

Name string

DisplayName string # (1) DisplayName 추상화

CSPDisplayName string # (2) CSP 제공 정보 추가

ZoneList []ZoneInfo

KeyValueList []KeyValue

}

type ZoneInfo struct {

Name string

DisplayName string # (1) DisplayName 추상화

CSPDisplayName string # (2) CSP 제공 정보 추가

Status ZoneStatus

KeyValueList []KeyValue

}

type RegionZoneHandler interface {

ListRegionZone() ([]*RegionZoneInfo, error)

GetRegionZone(Name string) (RegionZoneInfo, error)

ListOrgRegion() (string, error) // return string: json format

ListOrgZone() (string, error) // return string: json format

}

TO-BE

3 of 21

(1) DisplayName 추상화: COUNTRY, REGION/CITY

  • 목표: DisplayName을 모두 동일한 형식과 값으로 추상화
  • 다음에서 제공하는 Country, Province, City Name 을 활용하여 맵핑 Yaml 작성(Yaml 규격 7page 참고)

3

4 of 21

(1) DisplayName 추상화: “COUNTRY, REGION/CITY”

  • 혹시, 나라이름 = 도시이름 일때
    • 예시) Singapore의 경우 참조 사이트에서 아래처럼 제공되지만,
      • 동일하게, “Singapore, Singapore” 형식으로 표시
      • 그외 예외 상황 있을 경우 문의 주시기 바랍니다.

4

5 of 21

(1) DisplayName 추상화: “COUNTRY, REGION/CITY”

5

<적용 방안>

(1) Driver 팀: Yaml 파일에 맵핑 정보 추가 작업 진행(Yaml 규격 7page 참고)

(2) Server: Region/Zone 목록은 기존 Driver API 호출로 획득, � Yaml 맵핑 정보 활용하여 DisplayName 값 설정 후 반환

※ 추후 리전 추가 변경 시 코드 수정 없이 운영자가 해당 Yaml 파일 수정 후 운영

6 of 21

(2) CSPDisplayName 정보 신규 추가

* 추상화 하지 않음, CSP가 공식 제공하는 이름을 제공, CSP가 API를 제공하지 않을 경우 공식 정보를 제공

<1순위 부터 가능한 방법으로 추가 작업>

  • (1순위) CSP API 획득 정보로 제공(Driver 개선: CSP로 얻은 DisplayName을 CSPDisplayName 값에 설정 작업 필요)
  • (2순위) CSP 공식 Document로 제공되는 정보로 맵핑(Driver팀: 맵핑 정보 Yaml 파일 추가 작업 필요)
  • (3순위) CSP Console 등 기타 방법으로 공식 제공되는 정보로 맵핑(Driver팀: 맵핑 정보 Yaml 파일 추가 작업 필요)
  • (4순위) 제공되는 공식 정보 없다면, “NA” (Driver에서는 특별히 하실 일이 없습니다.)

6

<적용 방안>

(1순위 방법) 맵핑 정보 관리 불필요, API로 얻어온 정보 그대로 제공

(2~3순위 방법) 맵핑 정보 관리 필요(CSP가 제공하는 공식 정보 기반으로)

(a) Driver 팀: Yaml 파일에 맵핑 정보 추가 작업 진행(Yaml 규격 7page 참고)

(b) Server: 해당 맵핑 정보 존재시, 해당 정보로 CSPDisplayName 정보 설정 후 반환

※ 추후 CSP 리전 정보 변경시, 코드 수정 없이 운영자가 해당 Yaml 파일 수정 후 운영

7 of 21

Region/Zone 정보 맵핑을 위한 Yaml 파일 규격

  • CSP별로 다음 위치에 아래와 같은 규격으로 작성: Name format 및 예시는 다음 페이지 참고
  • File 위치/Name: ./cloud-driver-libs/region/aws_region_meta.yaml>

7

<주의>

혹시라도, Driver API:ListRegionZone() 등 제공시, 작성해주신 Yaml 목록을 읽어서 Region List나 Zone List를 제공해주시면 안됩니다.

Region, Zone 목록은 기존처럼 API로 현재 시점에 제공되는 Region/Zone 목록을 올려 주셔야 합니다.

서버에서는 올려 주시는 목록을 기반으로 맵핑 정보를 참고해서 DisplayName만 업데이트 해서 제공 예정입니다.

# ref) https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html

DisplayName:

us-east-2: United States, Ohio # Region DisplayName

us-east-2a: United States, Ohio # Zone DisplayName, 1a, az1 등의 표시는 불필요(Zone Name에 이미 포함), � # - Region DisplayName과 같더라도 추가해주세요.(도시가 다른 Zone들로 구성된 Case 고려된 항목)

… 중략

CSPDisplayName:

us-east-1: US East (N. Virginia) # Region CSPDisplayName

us-east-1a: US East (N. Virginia) # Zone CSPDisplayName, 1a, az1 등의 표시는 불필요(Zone Name에 이미 포함), � # - Region CSPDisplayName과 같더라도 추가해주세요.

… 중략

8 of 21

DisplayName format & Examples

8

[DisplayName Format]

  • COUNTRY, REGION/CITY
    • COUNTRY: 필수
    • REGION/CITY: 둘중 최소 하나 입력 필수, 둘다 입력도 가능
      • REGION 정의: COUNTRY와 CITY 사이의 행정구역
        • 예시: Province, State, Prefecture, Territory, …
      • CITY: 대상 Zone의 실제 데이터센터 위치가 공식적으로 City까지 확인이 될때 City까지 입력

  • 위와 같은 포멧으로 작성시에 Country, Region, City에 사용될 명칭을 다음 Site에서 참조
    • https://www.geonames.org
    • 단, 검색 결과 중 다음처럼 삭제 가능한 행정구역 접미사 삭제
      • 예시: Jeonju-si에서 ‘-si’ 제거

[DisplayName 예시]

  • China, Hong Kong
  • Singapore, Singapore
  • China, Sichuan/Chengdu # Chengdu가 Region Name에 포함되어 있으므로 데이터센터 위치 정확하므로 입력

  • Region DisplayName 예시South Korea, Seoul

South Korea, Busan

South Korea, Jeju-do

South Korea, Jeollabuk-do

  • Zone DisplayName 예시South Korea, Seoul

South Korea, Busan

South Korea, Jeju-do

South Korea, Jeollabuk-do/Jeonju # Jeonju-si에서 ‘-si’ 제거, 전주 Zone이 존재한다는 가정

9 of 21

이하 CSP별 현재 현황 참고

9

  • 개선 필요 사항 참고: 개선 작업은 위에 기술된 내용대로 반영
  • 특이 사항은 현황 정리 차원(개선 대상 아님)

10 of 21

AWS

  • 개선 필요 사항
    • Region Display Name: 도시 이름으로 맵핑 필요
    • Zone Display Name: 도시 이름으로 맵핑 필요

10

(Region/Zone 참고) https://docs.aws.amazon.com/local-zones/latest/ug/available-local-zones.html

11 of 21

Azure

  • 특이사항
    • Zone이 없는 Region 존재
    • CSP가 Status를 제공하지 않음

11

12 of 21

GCP

  • 개선 필요 사항
    • Region Display Name: 도시 이름으로 맵핑 필요
    • Zone Display Name: 도시 이름으로 맵핑 필요

12

13 of 21

Alibaba

  • 특이사항
    • CSP가 Status를 제공하지 않음

13

14 of 21

Tencent

  • 개선 필요 사항
    • AdminWeb으로 정보 표시 안됨 (서버에서 점검해보겠습니다.)
    • curl 호출로는 제공되고 있음

14

{

"regionzone": [

{

"Name": "ap-tokyo",

"DisplayName": "Northeast Asia(Tokyo)",

"ZoneList": [

{

"Name": "ap-tokyo-1",

"DisplayName": "Tokyo Zone 1",

"Status": "Available"

},

{

"Name": "ap-tokyo-2",

"DisplayName": "Tokyo Zone 2",

"Status": "Available"

}

]

},

{

"Name": "ap-seoul",

"DisplayName": "Northeast Asia(Seoul)",

"ZoneList": [

{

"Name": "ap-seoul-1",

"DisplayName": "Seoul Zone 1",

"Status": "Available"

},

{

"Name": "ap-seoul-2",

"DisplayName": "Seoul Zone 2",

"Status": "Available"

}

]

},

<curl 호출 결과>

(Region/Zone 참고) https://www.tencentcloud.com/document/product/213/6091?lang=en

15 of 21

IBM VPC

  • 개선 필요 사항
    • Region Display Name: 도시 이름으로 맵핑 필요
    • Zone Display Name: 도시 이름으로 맵핑 필요

15

16 of 21

OpenStack

  • 개선 필요 사항
    • Region Display Name
      • 도시 이름으로 맵핑 필요
    • Zone Display Name
      • 도시 이름으로 맵핑 필요

16

* Driver팀:

- 일단, 현재 운영(활용) 중이신 OpenStack 현황에 맞게 Yaml 파일 추가

* 최종 각 Spider 운영자가 맵핑 정보 설정/운영하는 방식으로 정리 예정

17 of 21

NCP Classic

  • 특이사항
    • CSP가 Status를 제공하지 않음
  • 개선 필요 사항
    • Region Display Name: ‘(New)’ 문자열이 Driver에서 설정한 것이라고 하면 삭제, API로 제공되는 문자열이면 현재 유지
    • Zone Display Name:
      • ‘(New)’ 문자열은 Region Display Name과 동일하게 처리
      • ‘일본’ 🡺 ‘Japan’으로 맵핑 등 한글을 영어로 표시(API로 얻어온 정보라고 해도, 한글은 영어로 변환 필요)

17

18 of 21

NCP VPC

  • NCP Classic과 동일하게 처리

18

19 of 21

NHN

  • 개선 필요 사항
    • Region Display Name
      • ‘일본’ 🡺 ‘Japan’으로 맵핑 등 한글을 영어로 표시(API로 얻어온 정보라고 해도, 한글은 영어로 변환 필요)
    • Zone Display Name:
      • 도시 이름으로 맵핑 필요

19

20 of 21

KT Classic

  • 개선 필요 사항
    • Region Display Name
      • ‘서울’ 🡺 ‘Seoul’로 맵핑 등 한글을 영어로 표시(API로 얻어온 정보라고 해도, 한글은 영어로 변환 필요)

20

21 of 21

KT VPC

  • 특이사항
    • CSP가 Status를 제공하지 않음
  • 개선 필요 사항
    • Region Display Name
      • ‘서울’ 🡺 ‘Seoul’로 맵핑 등 한글을 영어로 표시(API로 얻어온 정보라고 해도, 한글은 영어로 변환 필요)
    • Zone Display Name
      • ‘목동’ 🡺 ‘Mokdong’ 맵핑 등 한글을 영어로 표시(API로 얻어온 정보라고 해도, 한글은 영어로 변환 필요)

21