바이너리의 단점

마지막 업데이트: 2022년 2월 2일 | 0개 댓글
  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 카카오스토리 공유하기
- 그림1" />

Aurora MySQL 이진 로깅 구성

이진 로그는 Aurora MySQL 서버 인스턴스의 데이터 수정에 대한 정보를 포함하는 로그 파일 세트입니다. 이진 로그에는 다음과 같은 정보가 포함되어 있습니다.

테이블 생성 또는 행 수정과 같은 데이터베이스 변경 사항을 설명하는 이벤트

데이터를 업데이트한 각 문의 기간에 대한 정보

데이터를 업데이트할 수 있었지만 업데이트하지 않은 문에 대한 이벤트

이진 로그는 복제 중 전송된 문을 기록합니다. 일부 복구 작업에도 필요합니다. 자세한 내용은 MySQL 설명서의 The Binary Log (이진 로그)와 Binary Log Overview (이진 로그 개요)를 참조하세요.

Amazon Aurora 의 MySQL은 행 기반, 문 기반, 혼합 바이너리 로깅 형식을 지원합니다. 기본 바이너리 로깅 형식은 혼합입니다. 다양한 Aurora MySQL 이진 로그 형식에 대한 자세한 내용은 MySQL 설명서의 Binary logging formats (이진 로깅 형식)을 참조하세요.

복제를 사용하려는 경우 바이너리 로깅 형식은 원본에 기록되고 복제 대상으로 전송되는 데이터 변경 내용의 레코드를 확인하므로 중요합니다. 복제와 관련된 다양한 이진 로깅 형식의 장/단점에 대한 자세한 내용은 MySQL 설명서의 문 기반 및 행 기반 복제의 장/단점 을 참조하십시오.

이진 로깅 형식을 행 기반으로 설정하면 이진 로그 파일이 매우 커질 수 있습니다. 큰 바이너리 로그 파일의 경우 DB 클러스터 에 사용할 수 있는 스토리지의 양이 줄어들고 DB 클러스터 의 복원 작업을 수행하기 위한 시간의 양이 늘어날 수 있습니다.

명령문 기반 복제를 수행하면 원본 DB 클러스터 와 읽기 전용 복제본 간에 불일치가 발생할 수 있습니다. 자세한 내용은 MySQL 설명서의 이진 로깅에서 안전한 문과 안전하지 않은 문 결정 을 참조하십시오.

MySQL 이진 로깅 형식을 설정하려면

탐색 창에서 파라미터 그룹을 선택합니다.

수정할 DB 클러스터 에 사용되는 파라미터 그룹을 선택합니다.

기본 파라미터 그룹을 수정할 수 없습니다. DB 클러스터 가 기본 파라미터 그룹을 사용하고 있는 경우 새 파라미터 그룹을 생성하여 DB 클러스터 와 연결합니다.

파라미터 그룹에 대한 자세한 정보는 파라미터 그룹 작업 단원을 참조하십시오.

파라미터 그룹 작업에서 편집을 선택합니다.

binlog_format 파라미터를 선택한 바이너리 로깅 형식(ROW, STATEMENT 또는 MIXED)으로 설정합니다. OFF 값을 사용하여 이진 로깅을 해제할 수도 있습니다.

변경 내용 저장을 선택하여 업데이트를 DB 클러스터 파라미터 그룹에 저장합니다.

DB 클러스터 파라미터 그룹을 변경하면 해당 파라미터 그룹을 사용하는 모든 DB 클러스터에 영향을 미칩니다. AWS 리전의 바이너리의 단점 다양한 Aurora MySQL DB 클러스터에 대해 서로 다른 이진 로깅 형식을 지정하려면 DB 클러스터에서 서로 다른 DB 클러스터 파라미터 그룹을 사용해야 합니다. 이러한 파라미터 그룹은 다양한 로깅 형식을 식별합니다. 각 DB 클러스터에 적절한 DB 클러스터 파라미터 그룹을 할당합니다. Aurora MySQL 파라미터에 대한 자세한 내용은 Aurora MySQL 구성 파라미터 단원을 참조하십시오.

바이너리의 단점

MIPS instruction의 종류instruction이 어떻게 binary code로 바뀌는지 살펴보자.

사람과 컴퓨터는 소통해야 한다.

소통하는 과정은 크게 3가지로 볼 수 있다.

High-Level Language ( C언어 ) 가 compiler를 통해 MIPS Assembly Language로 변환되고, Assembler를 통해 기계가 이해할 수 있는 Binary machine Language로 변환된다.

여기서 MIPS Assembly Language 단계에서 예를 하나 들어보자.

$s1 과 $s2 를 더해 $t0 에 저장하라는 뜻이다.

이것은 하나의 명령어, 즉 하나의 instruction이 될 수 있다.

이러한 MIPS instruction의 종류는 총 3가지가 있다.

1. R format

MIPS 명령어의 R format은 위와 같이 이루어져 있다.

opcode : instruction이 수행할 연산의 종류. 연산자.

rs : first oprand register (source)

rt : second oprand register

rd : destination register

shamt : shift amount

funct : function. opcode가 연산의 종류를 표현했다면, funct 필드는 그 중의 한 연산을 구체적으로 지정한다.

R format은 레지스터 number를 이용하여 add, addu, and, sll, srl 등의 연산을 수행할 수 있다.

R format의 instruction 예시와 함께 이것이 어떻게 binary로 바뀌는지 살펴보자.

add instruction 으로 예를 들어보자.

먼저, MIPS Green Sheet에서 add instruction이 어떻게 구성되어 있는지 봐야한다.

instruction은 MIPS Green Sheet에 모두 나와있다.

1. add의 format은 R이고

2. rd rs rt 순서대로 읽고,

4. funct는 20(hex)인 것을 확인할 수 있다.

1. op rs 바이너리의 단점 rt rd shamt funct 순서로 binary code가 만들어짐을 알 수 있고

2. add $t0, $s1, $s2 여기에서 rd=$t0, rs=$s1, rt = $s2 라는 것을 알 수 있고

4. funct는 16진수로 20인 것을 알 수 있다.

이제 알 걸 알았으니 바꿔보도록 하자.

이 R format에 add $t0, $s1, $s2 를 넣어보면 아래와 같다.

이것을 10진수로 표현하면 아래와 같다.

(참고) register는 각자 번호가 매겨져있다. ($s1=17, $s2=18, $t0=8)

이것을 그대로 binary code로 표현해보면 아래와 같다.

add $t0, $s1, $s2 에서 00000010001100100100000000100000 으로 바뀌는 과정을 살펴보았다.

그런데 문제점 이 하나 있다. 5bits 필드로는 2^5 = 32 보다 큰 수를 표현할 수 없다.

32보다 큰 상수나, 주소값이 오게 된다면 표현할 수 없다는 것이다.

따라서 5bits 필드보다 큰 필드가 필요하게 되었다.

결국 16bits를 표현할 수 있는 I format을 만들게 되었다.

엇, 그런데 설계원칙에서는 형태를 통일하라는 원칙이 있었는데? 왜 3개로 나뉘게 만들었지?

여기서 설계 원칙이 또 등장한다.

Design Principle 4: Good design demands good compromises

좋은 설계에는 적당한 절충이 필요하다.

모든 명령어의 길이를 같게 하고 싶은 생각과 명령어 형식을 한가지로 통일하고 싶은 생각 사이에서 충돌이 생기게 된 것이다. 여기서 설계자들이 택한 절충안은 모든 명령어의 길이(32bits)를 같게 하되, 명령어 종류에 따라 형식(R,I,J format)은 다르게 하는 것이었다.

2. I format 바이너리의 단점

rs : base register

rt : destination register

constant : 표현범위는 -2^15 ~ 2^15 -1 이다.

address : offset. rs의 주소값으로부터 얼마나 떨어져 있나를 표시한다.

I format은 R format과 달리 16bits를 이용해 상수와 주소표현이 가능 하다. 그래서 주소값을 가져오는 bne, beq, lw, sw 등의 분기문상수연산을 하는 addi, addiu, andi 등이 가능하다.

우선, 프로그램에서 사용하는 대부분의 상수값은 작아서 16bits로 표현이 가능하다.

그렇다는건 16bits보다 큰 상수가 나올 때도 있다는 말이다. 그 때는 어떻게 해야하나?

바로 상위 16bits하위 16bitslui, ori 를 사용하여 32bit 상수를 표현 하면 된다.

예시를 들어보자. $s0에 아래 32bits 상수를 채워보자.

0000 0000 0011 1101 0000 1001 0000 0000

1. lui를 통해 상위 16bits를 채운다.

상위 16bits = 0000 0000 0011 1101(two) = 61(ten)

=> 현재 $s0 = 0000 0000 0011 1101 0000 0000 0000 0000

2. ori를 통해 하위 16bits를 더한다.

하위 16bits = 0000 1001 0000 0000(two) = 2304(ten)

ori $s0, $s0, 2304

=> 최종 $s0 = 0000 0000 0011 1101 0000 1001 0000 0000

32bits 상수값을 표현할 때, 이렇게 I format instruction인 lui와 ori를 통해 32bits 상수값을 표현하면 된다.

I format에서 주소값을 표현할 때는 조건부 분기의 경우이다. (bne, beq) 조건부 분기는 주로 반복문이나 조건문에서 사용되므로, 대부분 가까이 있는 범위로 분기한다고 볼 수 있다. 이는 대부분 2^16 word 이내로 분기한다고 말할 수 있다.

현재 위치로부터 얼만큼 떨어져 있나를 표시해주면 된다. 이것을 PC-relative addressing (PC 상대 주소지정)라고 한다.

분기문 을 생각해보자.

조건이 맞으면 목표 위치까지 이동해야한다. 이 목표 위치. 즉, 목표 위치의 주소값을 어떻게 구할까?

현재 메모리에서 내가 있는 주소값인 PC(Program Counter)를 어떤 레지스터 주소값에 분기 주소를 더해주면 된다.

PC = 레지스터 + 분기주소 라고 말할 수 있다.

내가 이동하고 싶은 메모리 주소내가 현재있는 주소값 에서 얼마나 떨어져 있는지 를 더해줌으로써 구하면 된다.

즉, 타겟 주소 = 현재 주소 + 떨어진 거리 이다.

그리고 이 타겟 주소현재 가리키고 있는 주소(PC) 라고 지정해주면 된다.

그러면 현재 가리키고 있는 주소(PC)이동하고 싶은 메모리 주소 를 가리키게 된다.

그래서 16bits 필드엔 뭐가 들어가는 거야?

타겟 주소 = 현재 주소 + 떨어진 거리

이것은 이렇게 표현할 수 있다.

타겟 주소 = 현재 주소 + offset*4

여기서 offset이 16bits 필드에 들어가게 된다.

나중에 배우지만, 하드웨어 입장에서는 PC를 미리 4 만큼 증가시켜 놓는다.

즉, 실제 MIPS 주소는 PC를 기준으로 하는 것이 아니라, (PC+4) 를 기준 으로 하게 된다.

그래서 실제론 이동하고 싶은 메모리 주소를 (현재주소+4 + 떨어진 거리)로 구해주어야 한다.

(참고) 이것을 말로 해석해보면, $t1(주소값)에서 1200만큼 더한 곳의 주소값을 $t0에 저장하는 것이다.

즉, 배열로 따지면 300크기만큼 공간이 생겼다고 말할 수 있다. (배열의 한칸의 크기는 4byte이기 때문에 300*4 = 1200)

MIPS Green Sheet를 보니

2. rt constant(or address) rs 순서대로 읽으면 되고

-> 사람이 instruction 읽을 때의 기준의 순서대로. $t0 > 1200 > $t1 순서.

3. opcode는 23(hex) 라는 것을 볼 수 있다.

1. op rs rt constant(or address) 순으로 binary code가 만들어짐을 알 수 있고

2. lw $t0, 1200($t1) 에서 rt=$t0, rs=$t1, constant=1200 인 것을 알 수 있고

3. opcode는 16진수로 23이라는 것을 알 수 있다.

이제 I format instruction에서 binary 로 바꿔보자.

lw $t0, 1200($t1) 를 바로 10진수로 표현하면 아래와 같다.

이것을 binary code로 표현하면 아래와 같다.

lw $t0, 1200($t1) 를 10001101001010000000010010110000 으로 바꾸었다.

3. J format

address : 주소

I format에서 16bits로 주소를 표현하지만, J format은 26bits로 주소값을 표현한다.

가장 심플한 형태이다. J 와 Jal 이 J format에 속한다.

그런데 이 26 bits로도 모든 주소값을 표현하기 힘들다.

어떻게 32bits로 표현할 수 있을까?

1. byte 주소가 아닌 워드 주소를 사용해서, 26bits의 4배만큼의 28 bits로 표현가능하다.

byte 주소로 80000 인 곳으로 Jump 한다고 하면, address에는 word 단위로 표현해 80000/4 = 20000이 저장되어 있다.

그래서 address * 4 로 28bits만큼의 주소를 표현할 수 있다.

4를 곱해주는 것은 left shift 2번 해준것과 똑같다.

2. 나머지 4bits는 PC의 상위 4bits를 가져와서 표현한다.

즉, PC가 0010 0000 0000 0000 0000 0000 0000 0000 이라면

상위 4bits인 0010 을 가져오는 것이다.

PC 상위 4bits는 바뀌지 않은 채로 표현된다. 이는 MIPS의 단점이라고 말할 수 있다.

(Loop의 주소값 : 80000)

J Loop 에서 Loop의 주소값/4 를 address에 넣어준다. (word 단위로 넣은 것임)

이를 binary로 표현하면 아래와 같다.

이렇게 binary로 표현하였다.

현재 표현된 address는 00 0000 0000 0100 1110 0010 0000 은 26bits이다. 이것으로 타겟 주소를 찾는 것도 살펴봐보자. 즉, 26bits의 address를 32bits로 확장하는 과정을 살펴보자.

1. left shift 두번

address = 0000 0000 0001 0011 1000 1000 00 00

2. PC bits에서 상위 4개의 bits 를 가져와서 address의 상위 4bits로 사용 한다.

(PC = 80024 이라고 가정. 32bits로 표현하면 PC = 0000 0000 0000 000 1 0011 1000 1001 1000)

address = 0000 0000 0000 0001 0011 1000 1000 00 00

26bits인 address 00 0000 0000 0100 1110 0010 0000

32bits인 address 0000 0000 0000 0001 0011 1000 1000 00 00 로 표현하였고, 이 주소는 타겟 주소가 된다.

Computer Organization and Design 5th Edition. The Hardware/Software Interface / 저자 : David A. Patterson, John L. Hennessy / 출판 : ELSEVIER

D/A 컨버터란? 기본형 2 (바이너리 방식)

DA 컨버터の기본형 2 (바이너리 방식) - 図1

바이너리 방식은 회로 구성에 따라 데이터에 가중치를 부여하는 방식입니다. 대표 예로서 하기 그림 R-2R ladder 회로가 있습니다.
R-2R ladder 회로는 어느 노드에서나 저항치 2R의 병렬 접속으로 보이므로, 1노드당 전류치가 반감됩니다.

1.바이너리 방식<저항 사용의 경우></p>
<p> - 그림1

【R-2R ladder DAC예】

하기 그림은 4bit 분해능의 R-2R ladder DAC입니다.
장점은 분해능 10bit 정도까지 DAC를 작은 면적으로 구현할 수 있다는 점입니다 (필요 저항은 Nbit DAC 3N개, 작은 스위치, 디코더 불필요). 다른 방식과 조합하면 14bit 정도까지 구현 가능합니다.
단점은 저항에 요구되는 비정밀도가 높으므로, 고정밀도를 구현하기 위해서는 스위치 (MOSFET 사이즈) 및 레이아웃 (R과 2R의 페어 특성이 중요하며, 특히 MSB측=A0측의 저항을 고정밀도로 만들 필요가 있음)에 대한 검토가 필요합니다.

R-2RRladderDAC예 - 그림1

2. 바이너리 방식<콘덴서 사용의 경우>

하기 그림은 콘덴서 사용의 DAC를 나타낸 개념도입니다.
이 DAC는 스위치를 전환하면서 사용할 필요가 있습니다.

2.바이너리 방식 <콘덴서 사용의 경우></p>
<p> - 그림1

【2 N C콘덴서를 사용한 DAC예】

하기 그림은 콘덴서 사용 4bit 분해능 DAC 예입니다. A0~A3의 어느 스위치를 Vref측으로 전환하는가에 따라 다른 Vout 전압을 얻을 수 있습니다. 이때, 앰프 오른쪽의 스위치 2개가 동시에 ON되면, 전하 보존의 관계가 무너지므로 클록 신호를 사용하여 ON 시간이 오버랩되지 않도록 주의할 필요가 있습니다.
장점은 콘덴서의 비정밀도가 높으므로 고정밀도를 얻기 쉽고, 콘덴서에 직류전류가 발생하지 않으므로 저주파에서는 앰프 전류만의 저소비전류가 가능하다는 점입니다.
단점은 콘덴서 충방전때문에 고속화에 적합하지 않다는 점과, 저속에서는 리크 전류를 보상하기 위해 리프레시 동작이 필요하다는 점입니다. 리프레시 제어 시에는 리프레시 중 출력전압 유지를 위한 고안이 필요합니다.

2NC 콘덴서를 사용한 DAC예 - 그림1

【2 N C콘덴서를 사용한DAC(리프레시 제어 포함)예】

리프레시 제어를 사용한 CAPA 사용 4bit 분해능 DAC입니다.

3. 바이너리 방식 <저항-콘덴서 사용의 경우>

저항 스트링 DAC부 (왼쪽)에서 3bit, 콘덴서 DAC부에서 3bit, 전체적으로 6bit 분해능의 혼합형 DAC입니다.
상위 bit의 저항 간 전압을 하위 데이터에 따라 가중치를 부가하여 보간합니다.
고분해능을 얻을 수 있다는 점이 특징입니다.

바이너리의 단점

보상플랜의 방식에 따라서 매출에 대한 소득이 결정되므로

보상플랜 방식을 정확히 알고서 네트웍 회사를 선택한 후 그 보상플랜의 방식에 따라 레그를 펼치는 것이 중요합니다.

1. 브레이크어웨이(Breakaway) 방식

Breakaway는 그룹, 무리에서 떨어져 분리, 독립됨을 뜻합니다.

독립된 사업자를 구축하는 방식으로 그룹의 실적에 따라서 수당과 직급이 차등

적용되는 가장 오래된 보상방식~

사업 초기에는 본인과 본인 하부라인이 조직으로 구성되고 그 그룹 매출에 따라

일정비율의 보너스를 받습니다.

이 하위조직에서 일정 수준의 매출이 나오는 조직이 생기면 분리하여 독립을 하게

되고, 분리된 그룹에 대한 로열티만 획득하게 되고 나머지 수익은 그룹이 모두

얼마나 많은 그룹을 독립시켰는가에 따라 직급이 올라가고, 수당도 많아지게 되는 플랜입니다.

- 나를 기준으로 하위사업자의 폭(Width)과 깊이(Depth)에 대해서 제한이 없으므로 무한대의 소득발생이 가능합니다.

가장 큰 수입을 형성한 리더를 가지고 있다.

- 팀 규모를 만들고 일정 수입을 얻는데까지는 상당한 시간이 걸리는 플랜이기에 초기 수입은 적다는 단점이 있습니다.

그렇지만 한 번 짜여진 네트웍은 안정적인 수익구조 기반을 유지하는데 많은 장점으로 작용합니다.

- 브레이크어웨이는 독립조직을 얼마만큼 구축하느냐에 따라 수입정도가 결정되는데, 대부분 규정된 개인판매 요구량과

그룹매출 요구량이 있다. 이 요구량을 달성해야 후원수당을 지급받을 수 있다.


- 기본적인 조건을 갖추어야 핀 레벨이 올라가고 독립그룹에 대해서 보너스를 지급받을 수 있으며, 독립그룹을 유지하기

위해서는 일정 매출액을 계속 유지해야 한다. 이때 매월 지속적으로 많은 구매가 필요할 수도 있게되어 누적 재고를 갖 게

2. 유니레벨(Unilevel) 방식

Uni는 하나, level은 단계를 뜻하므로, 세대 내지 단계가 하나라는 의미로

하위라인에서 발생하는 매출에 대해 단계를 정하여 그 단계별로 비율을

책정해서 수익을 얻는 방식~

일반적으로 3레벨 ~ 9레벨 정도가 널리 쓰입니다.

각 레벨에 다양한 보너스율이 주어지므로 지정된 레벨에서 많은 재구매 매출이 잘 일어날수록 더 큰 수입이 발생됩니다.

유니레벨 방식은 폭에는 제한이 없으나 깊이에는 제한이 있기때문에 얼마만큼 단계별로 체계적인 그룹을 형성하느냐가 포인트입니다.

- 부업자나 초보자가 사업을 시작하기 좋은 플랜으로 빠른 초기 수입을 만들기에 좋은 보상방식.

- 고소득 창출에는 제한적인 부분이 있다. 왜냐하면 폭에는 제한이 없으나 깊이에는 제한이 있기 때문이다.

- 본인의 하위라인에 정해진 단계의 레벨에서만 일정 수입을 받기 때문에 하위 단계를 깊이 구축하지 않아 조직이 성장

하는데 한계가 있다. 그렇기 때문에 유니레벨 방식에서 롤업(roll-up) 압축(compressuon)이 존재한다.

즉 비활동적인(소비자) 사업자를 배제하고 활동적인 사업자의 레벨을 이동시켜서 커미션 지급 대상으로 만드는 불합리한

3. 매트릭스(Matrix) 방식

매트릭스는 폭과 깊이의 틀을 한정적으로 정해 놓는게 일반적입니다.

누가 추천을 해도 자동적으로 라인이 형성되는 스필오버(Spill-Over) 방식의 보상플랜이 적용되어 2×12, 3×9, 4×7, 5×7 등등으로 정해지는 방식~

예를 들어 주로 사용된 3x9 매트릭스라 하면 자신의 하부 1단계에서 둘 수 있는 사업자의 수는 3명이고, 2단계에서는 9명,

3단계에서는 18명 이러한 방식으로 사업자를 둘 수 있는 구조입니다.

이러한 매트릭스 방식은 구조가 단순하여 초보자가 쉽게 이해할 수 있으며 바로 프론트라인의 사업자만 후원하고 교육하 면

된다는 점에서 조직의 관리가 용이합니다.

모든 사람들이 본인이 추천을 해서 그룹을 형성한다는 개념보다는 “내가 아니어도 누군가는 추천을 해서 아래 라인이

구축되겠지”라는 생각으로 인해 활성화에 차질이 생기거나 본인만의 그룹 형성이 어렵습니다.

매트릭스의 경우 한정적인 틀이 정해져 있으므로 무한성장이 어렵기 때문에 폰지성 사기로 변이 되기 쉬운 구조이기에

금융 피라미드, 온라인 비즈니스 등 불법 피라미드 업체들이 주로 사용하는 방법입니다.

4. 바이너리(Binary) 방식

바이너리(Binary) 보상플랜은 1992년 Market America의 James Ridinger가 창안한 보상방식으로 바이너리 (binary)는 기본적으로 두 조각, 두 부분을 의미합니다.

'양쪽'이라는 의미대로 한 사람이 좌측과 우측 2개의 라인(leg)만을 구축하여 조직을 확장해 나가는 방식으로 역사는 짧지만 현재 전 세계 네트웍마케팅

기업에서 가장 많이 채택하여 적용(70%)하고 있는 보상플랜입니다.

- 다운라인 조직을 구축하는데 있어서 가장 단순하고 가장 빠르게 형성할 수 있는 방식으로 그룹의 성장 속도가 빠르다.

각자가 한 레벨에 두 명씩만 가입시키고 여유가 있는 사람은 그룹 내에 좌우균형을 맞춰가며 가입을 시킬 수 있으며

깊이에 제한이 없기 때문이다.

- 성장이 빠른 반면 스폰서에게 후원을 바라는 기대심리가 있어서 올바른 문화가 아닌 상태의 바이너리는 금방 무너지기

- 그룹이 균형을 이루지 못하고 성장할 경우 큰쪽의 매출액에 해당하는 수당은 회사에 귀속이 된다.

(누적이 된다고 하지만 결과적으로는 회사의 이익으로 남게된다.)

- 바이너리 방식은 두 그룹이 균형을 맞추어 내려가야만 수당의 극대화가 이루어 질 수 있다.

반대로 균형이 맞지 않을 경우에는 최소의 수당이 주어질 수 있다.

극단적인 예를 들어 한쪽이 1,000만원의 매출이 올랐는데 한쪽의 매출이 없을 때 수당이 한푼도 나오지 않는다.

- 한국에서는 바이너리의 단점 35%의 수당 제한선이 있으므로 바이너리를 운영함에 있어서 어려움이 있을 수 있다.

보통 수입의 극점을 두어 상한선이 정해져 있다.

이 보상플랜은 제품이나 서비스가 소비자의 손에 들어가는 것을 강조하고 있는가? 아니면 새로운 투자회원을 찾음으로 해서 돈을 버는 것을 강조하고 있는가? 무리한 선 투자를 강조한다면 피라미드 형태가 아닐 수 없다.

후자의 경우라면 그 사업으로부터 진행을 멈추는 것이 바람직합니다.

상위 꼭대기는 부자가 되지만 그 하부조직은 피해가 뻔하기 때문이다.

5. 하이브리드(Hybrid) 방식

Hybrid는 혼성의, 혼성물이라는 뜻으로 위에 설명된 각기 다른 보상플랜의 장점들은 최대한 살리고 단점을 보완한 방식의 보상플랜입니다.

최근의 네트워크마케팅 회사들의 보상플랜을 살펴보면 과거처럼 하나의 구조를 가지고 있는 것이 아니라, 기본 바탕이 되는 보상플랜에 다른 보상플랜 방식을 결합하여 사용합니다.

오랜 기간 동안 다양한 보상플랜을 운영하면서 발견된 바이너리의 단점 단점을 보완하고, 각각의 장점을 최대한 살리기 위하여 여러 가지 형태를 혼합하여 수익을 창출하도록 하는 것이다.

예를 들어 브레이크어웨이와 유니레벨을 혼합한 방식이나, 바이너리 형태로 좌-우 조직을 구성하면서 매출이나 수당은 유니레벨 방식을 사용하는 경우를 말한다.

그만큼 보상을 받는 방법도 다양하고 사업진행을 여러가지 형태로 할 수 있는 장점이 있습니다.

하지만 여러가지 보상이 모여있는 탓에 플랜에 대한 설명이 쉽지 않을 수 있습니다.

● 참고 : 소비자가 만드는 신문 _ 보상플랜의 종류

네트워크 마케팅은 제품을 사용해본 소비자가 그 제품의 우수성을 인정, 스스로의 의사로 주변에 소개하고 나누어 씀으로서 이러한 과정이 바이너리의 단점 무한히 반복되는 &lsquo.

고성능 자바 구현하는 「WIPI-COD」

기존의 무선인터넷 플랫폼은 VM 기술과 네이티브 바이너리 기술로 구별된다. 두 가지 기술은 상호배타적인 특성을 가지고 있다. 즉 한쪽 기술의 장점이 다른 기술의 단점이 되고, 한쪽 기술의 단점이 다른 기술의 장점이 되는 것이다.VM 기술은 말 그대로 가상 기계를 사용해 프로그램을 동작시키는 것이다. 작성된 프로그램을 소프트웨어 CPU에서 동작할 수 있는 중간 코드로 변환하면 가상 기계가 해당 코드를 실제 CPU용 기계어로 번역해 실행시키는 방식이다. 이러한 기술은 자바를 통해 일반화돼 있으며 자바 가상머신은 무선인터넷 플랫폼에도 이미 적용되어 있다. 국내에서는 SK텔레콤의 SK-VM, LGT의 자바 스테이션이 JVM을 탑재한 무선인터넷 플랫폼을 통해 서비스를 제공하고 있다. 또한 C 언어의 축소판인 Mini-C를 이용한 GVM 기술이 국내에서 개발돼 SK텔레콤을 통해 서비스되고 있다. 또 다른 기술인 네이티브 바이너리 기술은 일반적으로 우리가 프로그램을 작성하고 컴파일해 실행시키는 방법과 동일한 과정을 밟는다. 즉, 개발된 프로그램을 프로그램이 실행될 CPU에서 동작되는 기계어로 만들어 실행시키는 것이다. 이 기술을 이용한 무선인터넷 플랫폼이 퀄컴의 브루 플랫폼이다.VM 기반의 무선인터넷 플랫폼은 소프트웨어 CPU를 이용해 중간 코드를 실행 과정에 번역(Interpreting)하는 부담을 안고 있으며 이는 CPU 성능과 자원이 제한된 휴대전화기에서 사용자가 상대적으로 매우 느린 속도를 경험하게 된다. 그러나 VM 기술은 상대적인 시스템 안정성을 제공하며 완벽한 보안을 제공하는 장점을 가지고 있다. 반면 네이티브 바이너리를 이용하는 플랫폼은 VM 기술과 달리 탑재된 CPU의 성능을 100% 활용할 수 있으므로 VM에 비해 바이너리의 단점 매우 빠른 실행속도를 제공한다. 그러나 지금의 네이티브 바이너리를 사용하는 기술은 개발언어로 C/C++를 사용하고 있어 프로그램 개발자에 의해 악의적인 메모리 접근 등을 통한 시스템 안정성을 위해할 수 있는 요소를 갖고 있다.WIPI 플랫폼은 이러한 대조되는 두 가지 기술의 장점을 갖는 플랫폼으로 계획되고 바이너리의 단점 개발됐다. 즉, 자바 언어의 장점을 수용하며 네이티브 바이너리의 실행 성능을 갖도록 하는 것이다. 따라서 WIPI 플랫폼은 C/C++와 자바를 기본 언어로 채택해 프로그램 개발이 가능하고, 단말기에 탑재되는 애플리케이션은 네이티브 바이너리로 만들어져 실행 성능을 보장받는다. 여기서 C/C++ 언어는 네이티브 바이너리를 생성하는 데 아무런 문제가 없으나, 자바 언어는 기본적으로 가상 기계를 대상으로 하기 때문에 자바를 컴파일해 단말기에서 직접 실행가능한 실행 바이너리를 어디선가 만들어야 한다. 이러한 기능을 수행하는 WIPI 구성요소가 바로 COD(Compile On Demand)다.COD/AOTC란 무엇인가COD는 AOTC(Ahead Of Time Compile) 기술이 포함된 일종의 서비스 프레임워크를 표현하는 말이다. COD란 단어가 표현하고 있는 것을 대부분의 사람들은 ‘사용자 요구에 의한 프로그램 컴파일’이라고 생각한다. 즉, 사용자가 어떤 프로그램을 자기 단말기로 다운받기를 원하면 자바 프로그램은 시스템에 의해 컴파일되고, 해당 단말기에서 실행되는 바이너리로 생성되어 다운로드될 것이라는 것이다. 물론 이러한 시스템 구성도 가능하다. 이런 경우라면 동일한 종류의 단말기에 동일한 프로그램을 탑재시키기 위해 시스템에서 동일한 바이너리를 생성하기 위한 반복적인 작업으로 많은 자원을 낭비하는 결과를 초래할 것이다.하지만 ‘요구(Demand)’의 주체가 사용자가 아닌 ‘프로그램 개발자’ 또는 ‘시스템 관리자’라고 생각하면 어떨까. 이렇게 되면 프로그램 개발자는 COD 시스템에 자신이 개발한 프로그램을 제공하고 단말기에 탑재할 수 있는 실행 바이너리를 생성해 관리한다. 만일 사용자가 다운로드를 요구하면 이미 컴파일된 실행 바이너리를 선택해 다운로드하면 된다. 현재 COD 시스템은 후자와 같은 서비스 흐름을 갖는 시스템으로 구현되어 있다. 그러면 AOTC는 어떤 기술인가. 앞서 언급된 바와 같이 자바로 작성된 프로그램이 단말 환경에서 빠른 실행 속도를 보장받기 위해 가상 기계를 이용하지 않고 단말에서 직접 실행되는 바이너리 형태를 가져야 한다(이에 관련된 설명은 2-1부 WIPI 플랫폼 기사를 참조하기 바란다). 즉, 어디선가 자바 프로그램을 바이너리로 바이너리의 단점 만들어야 한다. AOTC는 이러한 요구를 충족시킬 수 있는 자바 관련 기술이다. AOTC 기술은 현재 많이 연구되고 있으며 실행 자원이 풍부한 시스템을 대상으로 하는 제품은 일부 출시되어 있기도 하다. 그러나 이를 매우 취약한 단말 환경에 적합하게 개발한다는 것은 결코 쉬운 일은 아니다.COD 서비스 구조COD 시스템은 크게 두 가지 기능으로 구별할 수 있다. 첫째가 AOTC 부분이며 두 번째가 AOTC 결과물을 패키징하고 관리하며 단말기에 다운로드하는 과정이다. 은 이러한 일련의 과정을 표시한 것이다. 이를 입출력의 관점에서 보면 COD 시스템은 개발자가 제공하는 자바 클래스 파일을 입력으로 일련의 과정을 거쳐 단말기 사용자에게 프로그램 바이너리 이미지 파일을 제공한다. COD 내부에서는 입력된 자바 바이트코드를 분석해 해당 분석 정보를 기반으로 이와 동일한 기능을 갖는 C/C++ 프로그램으로 번역한다. 또한 이렇게 만들어진 소스를 자동으로 컴파일할 수 있는 Makefile도 같이 만들어 컴파일러를 구동한다. 이에 대한 시스템 관점의 흐름을 ‘서비스 프래임워크’에서 좀더 자세히 설명하겠다.COD 서비스 프레임워크그렇다면 과연 COD는 실제 어디에 어떻게 위치해 동작하는 것인가. 는 이러한 관점에서 가능한 실제에 가까운 시스템 구성을 표현한 것이다. 여기서 COD는 여러 시스템에 나눠 있으며 매우 다양한 작업을 수행하게 된다. 이 그림을 몇 가지 단계로 나눠 설명하면 다음과 같다. ① 개발자의 프로그램 제공 WIPI 프로그램 개발자는 프로그램을 WIPI SDK 등에서 제공되는 기능을 이용해 프로그램을 개발하고, 자바 컴파일러를 이용해 클래스 파일을 생성한 후 JAR(Java Archive) 형태로 프로그램 정보와 함께 묶어 ‘Content 바이너리의 단점 Provider Web Site’를 통해 제출한다. 제출된 프로그램은 검증 과정을 거쳐 프로비져닝(provisioning) 서버에 등록되는 것으로 개발자 프로그램 제공 과정이 마무리된다. ② Compile On Demand 개발자에 의해 제출된 프로그램은 시스템 관리자 또는 개발자 자신에 의해 컴파일을 요청하며, COD 프로세스는 이 요청에 바이너리의 단점 의해 해당 프로그램을 단말기에서 작동가능한 바이너리로 생성한다. 정상적으로 생성된 바이너리는 다운로드 형태로 패키징돼 애플리케이션 스토어 데이터베이스에 등록되어 사용자의 다운로드 요청을 기다린다. ③ 애플리케이션 다운로드 사용자는 단말기를 이용해 서버에 접속해 다운로드가 가능한 프로그램을 검색하고 다운로드할 수 있다. 물론, 이 과정도 그리 단순하지만은 않다. 예를 들면, 접속한 단말기의 종류를 확인하고, 사용자가 정상적인 사용자인지 검사하고, 특히 연령제한을 받는 프로그램이라면 이에 대한 확인 작업이 선행되며 각각의 경우에 발생할 수 있는 오류를 적절한 형태로 단말기에 반환해 사용자에게 적합한 메시지를 제공해야 한다. 다운로드를 위한 모든 준비과정이 정상적으로 수행되었을 때 다운로드가 수행된다.이상과 같은 세 가지 정도의 중요 경로를 설명했으나 실제 서비스에는 훨씬 다양하고 복잡한 과정이 포함되어 있다. 또한 이러한 과정은 서비스 제공자에 따라 약간씩 차이점을 가지고 있다. COD가 제공하는 이점과연 COD가 개발자에게 제공하는 이점은 무엇인가. 이는 지금까지 지속적으로 언급돼 바이너리의 단점 온 자바 언어를 무선인터넷 플랫폼을 위한 개발언어로 사용해 얻어지는 이익과 거의 동일하다. 또한 AOTC 기술이 사용돼 추가적으로 얻어지는 장점도 있을 것이다.첫 번째는 자바 언어 수준의 신뢰할 수 있는 안정성을 제공한다. 자바 언어를 사용함으로써 개발자는 개발과정에서 발생할 수 있는 모든 종류의 오류로부터 자유로워질 수 있다. 즉, 자바의 예외 처리 기능을 통해 안정적인 프로그램 작성이 가능하며, 또한 개발자의 실수에 의해 발생하는 시스템 오류 문제를 근본적으로 회피할 수 있다. 많은 독자들이 생각하듯 이동통신 단말기가 구동되고 실행되는 환경은 매우 열악하다. 물론, 시스템의 보호를 위해 많은 보호장치를 하고는 있으나 이는 매우 미미하며 독자들이 일반적으로 사용하고 있는 PC의 운영체제와는 비교도 되지 않을 정도의 초보적인 운영체제를 이용하고 있다.따라서 단말기에서 실행되는 프로그램이 발생시키는 오류에 의해 단말기 자체의 작동이 불가능한 상태가 발생될 수 있다. 일반적으로 지금까지 바이너리 실행환경의 단말기 플랫폼 개발자는 이러한 오류 발생을 근본적으로 회피할 수 없는 환경이었다. COD에 의해 제공되는 이러한 신뢰할 수 있는 안정성은 프로그램 개발자뿐만 아니라 무선인터넷 서비스를 제공하는 이동통신사에게도 매우 중요한 요소다.또 다른 장점은 개발자에게 매우 일반적이고 잘 알려진 개발 환경을 제공한다. 자바 프로그램의 개발 환경은 개발자에게 매우 친숙하며 쉬운 사용자 인터페이스를 제공하고 있다. 이러한 개발 환경을 개발자는 동일하게 사용해 개발 작업을 진행할 수 있기 때문에 무선인터넷 플랫폼을 위한 별도의 개발 환경에 적응해야 하는 시간이 필요하지 않다. 또한 WIPI API는 기존의 자바 프로그램 개발자라면 특별한 노력을 들이지 않고도 쉽게 이해할 수 있는 구조를 지원하고 있다. 따라서 날로 확산되고 있는 자바 프로그램 개발자가 쉽게 무선인터넷을 위한 프로그램 개발이 가능해 짧은 기간 내에 많은 개발자의 흡수가 가능하다.마지막으로 AOTC에 의해 생성된 바이너리는 단말기에서의 빠른 수행속도를 제공하기 때문에 많은 장점을 가질 수 있다. 즉, 가상 기계를 사용하는 구조에 비해 상대적으로 매우 뛰어난 성능을 제공해 멀티미디어 서비스와 같은 고속 처리가 필요한 프로그램 개발과 서비스가 가능하다. AOTC의 결과물은 단말기에 최적화된 실행 바이너리로 단말기에서 최상의 성능을 갖도록 튜닝되어 있다. 이는 지금까지 우리가 일반적으로 생각하는 ‘자바는 느리다’는 인식을 불식시키기에 충분하다. 물론 C 언어로 작성된 프로그램보다 빠르다는 이야기는 아니다. 그렇지만 충분히 이에 근접하는 성능을 AOTC를 통해 제공해 고성능의 프로그램 작성을 위한 기반을 제공한다.COD 코드변환기COD의 구성요소에서 가장 중요한 코드변환기에 대해 알아보자. 독자들이 아는 바와 같이 자바와 C++ 언어는 객체지향 언어의 대표주자다. 즉, 두 언어 모두 객체를 다루기 위해 설계된 언어이므로 그 구조나 형태가 매우 유사하다.코드변환기의 아이디어는 여기에서 시작된 것이다. 물론 자바와 C++ 언어가 구조적인 유사성이 매우 높은 언어이긴 하지만 프로그래밍 언어론 관점의 구문이 일치하지는 않는다. 즉, 매우 미묘한 부분의 차이에 의해 자바 프로그램을 C++ 언어로 변환하는 것은 자동화 과정에 많은 기술적 어려움을 겪을 수밖에 없다. 물론 두 가지 언어를 모두 잘 알고 사용할 수 있는 개발자가 직접 자바로 구현된 내용을 C++로 구현하는 것은 그리 어려운 일은 아니다(여기서는 프로그래밍 언어적 의미일 뿐 실제 작업이 쉽다는 표현은 아니므로 독자들의 오해가 없기를 바란다).코드변환기는 자바 클래스 파일(바이트코드)을 이와 동일한 기능을 갖는 C++ 언어로 변환하는 기능을 수행하며, 또한 생성된 C++ 프로그램을 컴파일하기 위한 Makefile을 자동으로 생성한다. 현재 AOTC에 관련된 많은 자료를 인터넷을 통해 얻을 수 있으므로 기술적인 관심을 갖고 있는 독자라면 한번쯤 웹 서핑을 해보는 것을 권하고 싶다.AOTC를 이용한 고성능 자바 구현지금까지 지난 1년 동안 진행된 WIPI 무선인터넷 플랫폼 과제에 포함된 COD에 대한 내용을 개괄적으로나마 적어봤다. 어느 누구도 바이너리의 단점 생각하지 않았고 시도하지 않았던 기술을 사용해 무선인터넷 플랫폼의 구현이 성공적으로 마무리된 것을 자축하며 앞으로 이 기술이 사용자에게 빨리 선보일 수 있었으면 한다. 참고로 이 글을 읽은 독자는 COD 및 AOTC와 이에 관련된 기술적 비교 정보가 2-1부에 상세히 기술되어 있으므로 참고하기를 바란다. @


0 개 댓글

답장을 남겨주세요