Network Load Balancer and Driver API - cloud-barista/cb-spider GitHub Wiki

CB-Spider Network Load Balancer and Driver API

- CB-Spider Network Load Balancer(NLB) Specification V0.6

1. CB-Spider NLB Overview

  • ์‚ฌ์šฉ์ž๋Š” VPC ๋‚ด์˜ VM์„ ํ–ฅํ•œ ์™ธ๋ถ€์˜ Client ์š”์ฒญ ๋ฐ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ์— ๋Œ€ํ•œ ๋ถ€ํ•˜ ๋ถ„์‚ฐ(Load Balancing)์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ
    • ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ํŠน์ • VPC์— ์†Œ์†๋˜๋Š” Network Load Balancer(์ดํ•˜ NLB)๋ฅผ ์ƒ์„ฑ ๋ฐ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
  • NLB๋Š” Public ํƒ€์ž…๊ณผ Internal ํƒ€์ž…์„ ์„ ํƒํ•˜์—ฌ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
    • Public ํƒ€์ž…(default): ์™ธ๋ถ€ ์ธํ„ฐ๋„ท์„ ํ†ตํ•œ ์‚ฌ์šฉ์ž์˜ ํด๋ผ์ด์–ธํŠธ ์ŠคํŠธ๋ฆผ์— ๋Œ€ํ•œ ๋ถ€ํ•˜ ๋ถ„์‚ฐ
    • Internal ํƒ€์ž…: ๋‚ด๋ถ€ VM ๊ฐ„์˜ ์ŠคํŠธ๋ฆผ์— ๋Œ€ํ•œ ๋ถ€ํ•˜ ๋ถ„์‚ฐ
    • Public ํƒ€์ž… ์ œ๊ณต ์ค‘์‹ฌ์œผ๋กœ ์„ ๊ฐœ๋ฐœ ๋ฐ ์šฐ์„  ํ™œ์šฉ
  • NLB๋Š” Region ๋ฒ”์œ„์™€ Global ๋ฒ”์œ„์˜ ์šด์˜์„ ์„ ํƒํ•˜์—ฌ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
    • Regional NLB(default): ๋‹จ์ผ Region์—์„œ ์šด์˜๋˜๋Š” ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ
    • Global NLB: ๋ฉ€ํ‹ฐ Region์—์„œ ์šด์˜๋˜๋Š” ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ
    • Regional NLB ์ œ๊ณต ์ค‘์‹ฌ์œผ๋กœ ์„ ๊ฐœ๋ฐœ ๋ฐ ์šฐ์„  ํ™œ์šฉ

2. CB-Spider NLB Components

  • NLB๋Š” ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ํ”„๋ก ํŠธ์—”๋“œ(Frontend) ์˜์—ญ๊ณผ ๋ฐฑ์—”๋“œ(Backend) ์˜์—ญ์œผ๋กœ ๊ตฌ๋ถ„๋˜๋ฉฐ, ์˜์—ญ๋ณ„ ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
    • [NLB-Frontend Tier]

      (1) ํ”„๋ก ํŠธ์—”๋“œ ๋ฆฌ์Šค๋„ˆ(Frontend Listener)

      • ๋ฆฌ์Šค๋„ˆ๋Š” Client์˜ ์š”์ฒญ ๋ฐ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ์„ ์ˆ˜์‹ ํ•˜์—ฌ ๋ฐฑ์—”๋“œ ์˜์—ญ์˜ VM๊ทธ๋ฃน์œผ๋กœ ์ „๋‹ฌํ•œ๋‹ค.
      • ํ•˜๋‚˜์˜ NLB๋Š” ํ•˜๋‚˜์˜ ๋ฆฌ์Šค๋„ˆ๋ฅผ ํฌํ•จํ•˜๋ฉฐ, ์ˆ˜์‹  ํ”„๋กœํ† ์ฝœ, IP ๋ฐ ์ˆ˜์‹  ํฌํŠธ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.
      • ์„ ํƒ ๊ฐ€๋Šฅํ•œ ์ˆ˜์‹  ํ”„๋กœํ† ์ฝœ์€ TCP ๋ฐ UDP์ด๋ฉฐ, IP๋Š” CSP ๋˜๋Š” ๋Œ€์ƒ Driver์—์„œ ์ž๋™ ์ƒ์„ฑ ๋ฐ ๊ด€๋ฆฌ๋œ๋‹ค.
      • ์ˆ˜์‹  ํฌํŠธ๋Š” 1-65535 ๋ฒ”์œ„์˜ ๊ฐ’์œผ๋กœ ์„ค์ •์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
      • โ€ป ๋ฆฌ์Šค๋„ˆ IP์™€ DNS-Name: ๋‘˜๋‹ค ์ œ๊ณตํ•˜๊ฑฐ๋‚˜ ๋‘˜์ค‘ ํ•˜๋‚˜๋งŒ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Œ
    • [NLB-Backend Tier]

      (2) ๋ฐฑ์—”๋“œ VM ๊ทธ๋ฃน(Backend VM Group)

      • VM ๊ทธ๋ฃน์€ ๋™์ผํ•œ ์„œ๋น„์Šค(nginx, redis, ์‚ฌ์šฉ์ž ๊ฐœ๋ฐœ ์„œ๋น„์Šค ๋“ฑ)๋ฅผ ์ œ๊ณตํ•˜๋Š” VM๋“ค์˜ ์ง‘ํ•ฉ์ด๋ฉฐ, VM์€ ๋“ฑ๋ก ๋˜๋Š” ์ œ์™ธ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
      • VM ๊ทธ๋ฃน์— ํฌํ•จ๋  ์ˆ˜ ์žˆ๋Š” VM์€ NLB์™€ ๋™์ผํ•œ VPC์— ์†ํ•ด ์žˆ๋Š” VM๋“ค๋กœ ํ•œ์ •๋œ๋‹ค.
      • ํ•˜๋‚˜์˜ NLB๋Š” ํ•˜๋‚˜์˜ VM ๊ทธ๋ฃน์„ ํฌํ•จํ•˜๋ฉฐ, VM ๊ทธ๋ฃน์€ ์ˆ˜์‹  ํ”„๋กœํ† ์ฝœ, ์ˆ˜์‹  ํฌํŠธ ๋ฐ VM๋“ค๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.
      • ์„ ํƒ ๊ฐ€๋Šฅํ•œ ์ˆ˜์‹  ํ”„๋กœํ† ์ฝœ์€ TCP, UDP์ด๋ฉฐ,
      • VM ๊ทธ๋ฃน์€ ํ•˜๋‚˜์˜ ์ˆ˜์‹  ํฌํŠธ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. (ํฌํŠธ๋ฒ”์œ„: 1-65535)
      • VM ๊ทธ๋ฃน ๋‚ด์˜ VM๋“ค์€ VM ๊ทธ๋ฃน ์„ค์ •๊ณผ ๋™์ผํ•œ ํ”„๋กœํ† ์ฝœ ๋ฐ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ํ†ตํ•ด์„œ ์„œ๋น„์Šค ์ œ๊ณต์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

      (3) ํ—ฌ์Šค ์ฒดํฌ๊ธฐ(Health Checker)

      • ํ•˜๋‚˜์˜ NLB๋Š” ํ•˜๋‚˜์˜ ํ—ฌ์Šค ์ฒดํฌ๊ธฐ๋ฅผ ํฌํ•จํ•œ๋‹ค.
      • ์„ ํƒ ๊ฐ€๋Šฅํ•œ ์ฒดํฌ ํ”„๋กœํ† ์ฝœ์€ TCP ๋ฐ HTTP์ด๋ฉฐ,
      • VM ๊ทธ๋ฃน์— ์†Œ์†๋œ VM๋“ค์˜ ํ—ฌ์Šค ์ƒํƒœ๋ฅผ ์ฒดํฌํ•˜๊ธฐ ์œ„ํ•ด์„œ VM ๊ทธ๋ฃน๊ณผ ๋™์ผํ•œ ํฌํŠธ๋ฅผ ํ™œ์šฉํ•˜๊ฑฐ๋‚˜
      • ๋ณ„๋„์˜ ํ—ฌ์Šค ์ฒดํฌ ์ „์šฉ ํฌํŠธ(๊ทธ๋ฆผ์—์„œ Port 81)๋ฅผ ๋ณ„๋„๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
      • ๊ฐ VM์˜ ์„œ๋น„์Šค ํฌํŠธ ๋ฐ ํ—ฌ์Šค ์ฒดํฌ์šฉ ํฌํŠธ ์šฉ๋„์˜ ์„œ๋น„์Šค ๋ฐ๋ชฌ์€ ์‚ฌ์šฉ์ž์— ์˜ํ•ด ์ค€๋น„๋˜์–ด์•ผ ํ•œ๋‹ค.
      • ํ—ฌ์Šค ์ฒดํฌ๊ธฐ๋Š” ์ƒํƒœ ์ฒดํฌ ์ฃผ๊ธฐ ๋ฐ ํƒ€์ž„ ์•„์›ƒ ๋“ฑ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ,
      • VM ๊ทธ๋ฃน์— ์†Œ์†๋œ VM๋“ค์˜ ํ—ฌ์Šค ์ƒํƒœ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•œ๋‹ค. (Healthy VM ๋ชฉ๋ก, Unhealthy VM ๋ชฉ๋ก)

      โ€ป ์„œ๋น„์Šค ๊ทธ๋ฃน ์˜คํ†  ์Šค์ผ€์ผ๋ง(Service Group Auto-Scaling)

      • ์˜คํ†  ์Šค์ผ€์ผ๋ง ์ •์˜ ๋ฐ ์ง€์› ์—ฌ๋ถ€ ๋“ฑ ์ถ”ํ›„ ๊ณ ๋ ค

3. CB-Spider NLB Operation Flow

  • NLB ์ฃผ์š” ๋™์ž‘ ํ๋ฆ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
    • โ‘  Client -> Frontend ์„œ๋น„์Šค ์š”์ฒญ
      • Client๋Š” TCP, HTTP ๋˜๋Š” UDP ํ”„๋กœํ† ์ฝœ ๊ธฐ๋ฐ˜์œผ๋กœ Frontend ๋ฆฌ์Šค๋„ˆ IP ๋ฐ ๋ฆฌ์Šค๋„ˆ ํฌํŠธ๋ฅผ ํ†ตํ•ด์„œ ์„œ๋น„์Šค๋ฅผ ์š”์ฒญํ•œ๋‹ค.
      • Client์˜ HTTP ํ”„๋กœํ† ์ฝœ ํ˜ธ์ถœ์˜ ๊ฒฝ์šฐ VMGroup ์ˆ˜์‹  ํ”„๋กœํ† ์ฝœ์ด TCP์˜ ๊ฒฝ์šฐ ๊ฐ€๋Šฅํ•˜๋‹ค.
    • โ‘ก Frontend -> Backend ์„œ๋น„์Šค ๋ผ์šฐํŒ…
      • ๋ฆฌ์Šค๋„ˆ์— ์˜ํ•ด ์ˆ˜์‹ ๋œ ์‚ฌ์šฉ์ž ์š”์ฒญ์€ TCP ๋˜๋Š” UDP ๊ธฐ๋ฐ˜์œผ๋กœ VM ๊ทธ๋ฃน ํฌํŠธ๋กœ ๋ผ์šฐํŒ… ๋œ๋‹ค.
    • โ‘ข ๋ผ์šฐํŒ… ๋Œ€์ƒ VM ์„ ์ • ๋ฐ ๋ผ์šฐํŒ… (๋Œ€์ƒ CSP์—์„œ ์ˆ˜ํ–‰)
      • VM ๊ทธ๋ฃน์— ํฌํ•จ๋œ VM๋“ค ์ค‘ Healthy ์ƒํƒœ์˜ VM์—๊ฒŒ Client ์š”์ฒญ ๋ฐ ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ์„ ๋ผ์šฐํŒ… ํ•œ๋‹ค.
      • VM ๊ทธ๋ฃน์— ํฌํ•จ๋œ ๋ชจ๋“  VM๋“ค์ด Unhealthy ์ƒํƒœ์ธ ๊ฒฝ์šฐ CSP๋ณ„๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋™์ž‘ ํ•œ๋‹ค.
        • VM ๊ทธ๋ฃน์— ํฌํ•จ๋œ ๋ชจ๋“  VM์— ๋ผ์šฐํŒ…ํ•˜๋Š” CSP: AWS, GCP, Tencent
        • Client ์ŠคํŠธ๋ฆผ์„ ๋ผ์šฐํŒ…ํ•˜์ง€ ์•Š๋Š” CSP: Azure, IBM, Cloudit
    • โ€ป Health Checking
      • ํ—ฌ์Šค ์ฒดํฌ๊ธฐ๋Š” ์ฃผ๊ธฐ์ ์œผ๋กœ VM ๊ทธ๋ฃน์— ํฌํ•จ๋œ VM์˜ Health ์ƒํƒœ๋ฅผ ํŒŒ์•…ํ•˜๊ณ  ์ œ๊ณตํ•œ๋‹ค.

4. NLB Driver Common API

  • Source Tree

    $tree cb-spider/cloud-control-manager/cloud-driver/interfaces/
    cb-spider/cloud-control-manager/cloud-driver/interfaces/
    |-- CloudDriver.go
    |-- README.md
    |-- connect
    |   `-- CloudConnect.go
    `-- resources
        |-- IId.go
        |-- ImageHandler.go
        |-- KeyPairHandler.go
        |-- KeyValue.go
        |-- NLBHandler.go  <======================= Network Load Balancer Driver API
        |-- SecurityHandler.go
        |-- VMHandler.go
        |-- VMSpecHandler.go
        `-- VPCHandler.go
    
  • Driver API Spec V0.4 (latest)

    package resources
    
    import "time"
    
    //-------- Info Structure
    type NLBInfo struct {
            IId             IID     // {NameId, SystemId}
            VpcIID          IID     // {NameId, SystemId}
    
            Type            string  // PUBLIC(V) | INTERNAL
            Scope           string  // REGION(V) | GLOBAL
    
            //------ Frontend
            Listener        ListenerInfo
    
            //------ Backend
            VMGroup         VMGroupInfo
            HealthChecker   HealthCheckerInfo
    
            CreatedTime     time.Time
            KeyValueList []KeyValue
    }
    
    type ListenerInfo struct {
            Protocol        string  // TCP|UDP
            IP              string  // Auto Generated and attached
            Port            string  // 1-65535
            DNSName         string  // Optional, Auto Generated and attached
    
            CspID           string  // Optional, May be Used by Driver.
            KeyValueList []KeyValue
    }
    
    type VMGroupInfo struct {
            Protocol        string  // TCP|UDP
            Port            string  // 1-65535
            VMs             *[]IID
    
            CspID           string  // Optional, May be Used by Driver.
            KeyValueList []KeyValue
    }
    
    type HealthCheckerInfo struct {
            Protocol        string  // TCP|HTTP
            Port            string  // Listener Port or 1-65535
            Interval        int     // secs, Interval time between health checks.
            Timeout         int     // secs, Waiting time to decide an unhealthy VM when no response.
            Threshold       int     // num, The number of continuous health checks to change the VM status.
    
            CspID           string  // Optional, May be Used by Driver.
            KeyValueList    []KeyValue
    }
    
    type HealthInfo struct {
            AllVMs          *[]IID
            HealthyVMs      *[]IID
            UnHealthyVMs    *[]IID
    }
    
    //-------- API
    type NLBHandler interface {
    
            //------ NLB Management
            CreateNLB(nlbReqInfo NLBInfo) (NLBInfo, error)
            ListNLB() ([]*NLBInfo, error)
            GetNLB(nlbIID IID) (NLBInfo, error)
            DeleteNLB(nlbIID IID) (bool, error)
    
            GetVMGroupHealthInfo(nlbIID IID) (HealthInfo, error)
            AddVMs(nlbIID IID, vmIIDs *[]IID) (VMGroupInfo, error)
            RemoveVMs(nlbIID IID, vmIIDs *[]IID) (bool, error)
    
    
    //---------------------------------------------------//
    // @todo  To support or not will be decided later.   //
    //---------------------------------------------------//
    
            //------ Frontend Control
            ChangeListener(nlbIID IID, listener ListenerInfo) (ListenerInfo, error)
            //------ Backend Control
            ChangeVMGroupInfo(nlbIID IID, vmGroup VMGroupInfo) (VMGroupInfo, error)
            ChangeHealthCheckerInfo(nlbIID IID, healthChecker HealthCheckerInfo) (HealthCheckerInfo, error)
    
    //---------------------------------------------------//
    // @todo  To support or not will be decided later.   //
    //---------------------------------------------------//
    
    }
    

5. CB-Spider NLB REST API ๊ทœ๊ฒฉ

6. NLB ํ”„๋กœํ† ์ฝœ/ํฌํŠธ ์„ค์ • ๋ฐ ์‹œํ—˜ ๊ฒฐ๊ณผ

  • CB-Spider v0.6.3+์˜ ๊ฒ€์ฆ๋œ ํ”„๋กœํ† ์ฝœ ๋ฐ ํฌํŠธ ์„ค์ • ์˜ˆ์‹œ๋ฅผ ๊ธฐ์ˆ ํ•œ๋‹ค.
    • Listener, VMGroup, HealthChecker ๋ณ„๋กœ ํ”„๋กœํ† ์ฝœ ๋ฐ ํฌํŠธ ์„ค์ •์ด ๋‹ค์–‘ํ•  ์ˆ˜ ์žˆ์œผ๋‚˜,
    • ํ˜„์žฌ ์•„๋ž˜ ์‹œํ—˜ ๋„๊ตฌ ๊ฐ€์ด๋“œ ๋ฐ ๊ฒฐ๊ณผ๋กœ ๊ฒ€์ฆ๋œ ์„ค์ • ์™ธ์˜ ์„ค์ • ๋™์ž‘์€ ๋ณด์žฅํ•  ์ˆ˜ ์—†๋‹ค.
  • NLB Test Tool Guide

7. NLB Health Checking Interval/Timeout/Threshold Default ์„ค์ •

  • [TCP]
    • Interval: 10
    • Timeout: 10 (์˜ˆ์™ธ: IBM์€ Interval > Timeout ์„ค์ • ํ•„์š”)
    • Threshold: 3
  • [HTTP]
    • Interval: 10
    • Timeout: 6 (์˜ˆ์™ธ: Azure๋Š” ์„ค์ •๋ถˆ๊ฐ€, ๋™์ž‘์€ 10)
    • Threshold: 3

โ€ป ์ฐธ๊ณ : CSP ์„ค์ • ์กฐ๊ฑด ๋ฐ ๋ฒ”์œ„

  • ref) https://docs.google.com/spreadsheets/d/1z4-H-rmbuPLS93JxQwY4prmT9CFLr2TT/edit#gid=1754708736

  • [Interval]

    CSP ์ง€์›์—ฌ๋ถ€ default ๊ฐ’ ์กฐ๊ฑด, ๋ฒ”์œ„ ๋ฐ ํŠน์ด์‚ฌํ•ญ
    AWS O (์กฐ๊ฑด๋ถ€) 30 * ๋ฒ”์œ„: 10 | 30๋งŒ ๊ฐ€๋Šฅ
    Azure O 5 * ๋ฒ”์œ„: 5 ์ด์ƒ * ์กฐ๊ฑด: Interval * Threshold < 2147483647
    GCP O 5 * ๋ฒ”์œ„: 1~300 * ์กฐ๊ฑด: Timeout <= Interval
    Alibaba O 2 * ๋ฒ”์œ„: 1~50
    Tencent O 5 * ๋ฒ”์œ„: 2~300 * ์กฐ๊ฑด: Timeout <= Interval
    IBM O 5 * ๋ฒ”์œ„: 2~60
    OpenStack O 5 *๋ฒ”์œ„: 2147483647(int ์ตœ๋Œ€๊ฐ’) * ์กฐ๊ฑด: Timeout <= Interval
    NHN O - * ๋ฒ”์œ„: 1~5000 * ์กฐ๊ฑด: Timeout < Interval
  • [Timeout]

    CSP ์ง€์›์—ฌ๋ถ€ default ๊ฐ’ ์กฐ๊ฑด, ๋ฒ”์œ„ ๋ฐ ํŠน์ด์‚ฌํ•ญ
    AWS X 10 | 6 * ์„ค์ • ๋ถˆ๊ฐ€ * TCP: 10s, HTTP: 6s๋กœ ๊ณ ์ •
    Azure X 30 * ์„ค์ • ๋ถˆ๊ฐ€ * [์‹คํ—˜๊ฐ’] Interval๊ณผ default Timeout (30์ดˆ) ์ค‘ minimum (#791)
    GCP O 5 * ๋ฒ”์œ„: 1 ์ด์ƒ * ์กฐ๊ฑด: Timeout <= Interval
    Alibaba O 5 * ๋ฒ”์œ„: 1~300
    Tencent O 2 * ๋ฒ”์œ„: 2~60 * ์กฐ๊ฑด: Timeout <= Interval
    IBM O 2 * ๋ฒ”์œ„: 1~59
    OpenStack O 5 *๋ฒ”์œ„: 2147483647(int ์ตœ๋Œ€๊ฐ’) * ์กฐ๊ฑด: Timeout <= Interval
    NHN O - * ๋ฒ”์œ„ : 1~5000 * ์กฐ๊ฑด: Timeout < Interval
  • [Threshold]

    CSP ์ง€์›์—ฌ๋ถ€ default ๊ฐ’ ์กฐ๊ฑด, ๋ฒ”์œ„ ๋ฐ ํŠน์ด์‚ฌํ•ญ
    AWS O 3 * ๋ฒ”์œ„: 2~10
    Azure O 1 * ๋ฒ”์œ„: 1 ์ด์ƒ * ์กฐ๊ฑด: Interval * Threshold < 2147483647
    GCP O 2 * ๋ฒ”์œ„: 1~10
    Alibaba O 3 * ๋ฒ”์œ„: 2~10
    Tencent O 3 * ๋ฒ”์œ„: 2~10
    IBM O 2 * ๋ฒ”์œ„: 1~10
    OpenStack O 3 * ๋ฒ”์œ„: 1~10
    NHN O - * ๋ฒ”์œ„: 1~10

๊ด€๋ จ ๋ถ„์„

History

- V0.5 => V0.6
  - HealthCheck๊ด€๋ จ ์„ค์ • ๊ฐ’ ๋ฐ ์กฐ๊ฑด ์ถ”๊ฐ€
- V0.4 => V0.5
  - NLB ์„ค์ • ์˜ˆ์‹œ ๋ฐ ์‹œํ—˜ ๊ฒฐ๊ณผ ๋ณ„๋„ ํŽ˜์ด์ง€๋กœ ๋ถ„๋ฆฌ ๋ฐ ๋งํฌ ์ถ”๊ฐ€
- V0.3.1 => V0.4
  - ChangeXXX() API ๋ณด๋ฅ˜: ๊ณตํ†ต API์—์„œ ์ œ์™ธ, ์ถ”ํ›„ ์ œ๊ณต ํ•„์š”์‹œ CSP๋ณ„ ์„ ํƒ์  ์ œ๊ณต ๊ณ ๋ ค
  - ์ปดํฌ๋„ŒํŠธ๋ณ„ ์ œ๊ณต Protocol ๋ณ€๊ฒฝ: (1) VMGroup: HTTP(S) ์‚ญ์ œ, (2) Health Checker: HTTPS ์‚ญ์ œ
  - ํ˜„์žฌ ๋ฒ„์ „์œผ๋กœ ๊ฒ€์ฆ๋œ Protocol ๋ฐ Port ์„ค์ • ์˜ˆ์‹œ ์ถ”๊ฐ€
- V0.3 => V0.3.1
  - HealthCheckerInfo์— CspID(Optional) ์†์„ฑ ์ถ”๊ฐ€
- V0.2 => V0.3
  - ChangeXXX() API ๋ฐ˜ํ™˜ ๊ฐ’ ๊ฐœ์„ 
- V0.1 => V0.2
  - Multi Service Listener => Single Service Listener
  - Service Listener  => Listener 
  - Service Group => VM Group
  - API: ๋ณ€๊ฒฝ ์‚ฌํ•ญ ๋ฐ˜์˜
  - API: NLBReqInfo๋ฅผ NLBInfo์— ํ†ตํ•ฉ
  - API: NLBInfo Type ๋ฐ Scope ์†์„ฑ ์ถ”๊ฐ€
  - API: ๋‹จ์ˆœํ™”