Token service

Print

1. 서비스 개요

제공되는 토큰 서비스는 ERC-20 기반 이더리움 토큰 서비스를 제공한다. 메인넷(이더리움 블록체인)에 대한 인터페이스를 대행하여 기본 ERC20 인터페이스 기능과 토큰 관리, 사용자 관리 기능등을 포함하여 관리자 및 사용자가 쉽게 토큰 서비스를 사용할 수 있도록 사용자 친화적인 서비스를 제공합니다.

ERC-20이란?
ERC-20은 Ethereum Request for Comment 20의 약자이며, 이더리움 블록체인 네트워크에서 정한 표준 토큰 스펙이다. 필요한 이더리움과 호환성이 있는 모든 요구 사항을 충족시키는 표준은 ERC-20으로 간주된다. ERC-20 토큰은 이더리움과 교환 가능하며 이더리움 지갑으로 전송이 가능하다.

서비스 개념도

  • Token 관리자 : Token 관리자는 Token 관리자 추가 API를 통해 생성되며, 토큰을 발급하는 역할을 수행한다. 동시 Token 사용자의 기능도 포함된다.

  • Token 사용자 : Token 사용자는 Token 사용자 추가 API를 통해 생성되며, Token에 가입 API를 통해 특정 토큰에 가입할 수 있다. Token에 가입 후 발행된 토큰을 다른 사용자 또는 관리자에게 전송할 수 있다.

  • ERC20 Token(s) : Token 관리자에 의해 생성된다. 한명의 Token 관리자가 여러 Token을 발급 및 관리할 수 있다.

1.1. 논리 구성도

서비스 노드

설명

1

Dedicated Token Service

ERC20 기반의 Token 서비스 API 제공

(토큰 관리, 토큰 서비스, 토큰 사용자 관리등의 기능 수행)

2

User Management

Token 서비스를 사용하기 위한 토큰 관리자의 관리 API 제공

(토큰 관리자 기본 정보, 권한 정보, EOA 정보)

3

SKS

Server Key Service

메인넷에 대한 연동 기능 제공 (Nonce, Transaction 관리)

4

OKTA

SSO 인증 기능 제공 (공통)

5

Ethereum

블록체인 메인넷

1.2. System Requirement

1.2.1. 최소 사양

Name

유형

HA 고려 최소 Instance

cpu(total)

mem(total)

storage(total)

Token Service

Container

2

512m

512Mi


User Management

Container

2

512m

512Mi


Server Key Core

Container

2

512m

512Mi


Server Key Gateway

Container

2

512m

512Mi


Redis

Container

2

1024m

2048Mi

100G

Kafka + Zookeeper

Container

3

2048m

4096Mi

150G

MariaDB

Managed Database

2

2048m

2048m

100G

1.2.2. 권장 사양

Name

유형

HA 고려 최소 Instance

cpu(total)

mem(total)

storage(total)

Token Service

Container

2

1024m

1024Mi


User Management

Container

2

1024m

1024Mi


Server Key Core

Container

2

1024m

1024Mi


Server Key Gateway

Container

2

1024m

1024Mi


Redis

Container

2

2048m

4086Mi

100G

Kafka + Zookeeper

Container

3

2048m

8172Mi

150G

MariaDB

Managed Database

2

4096m

8172Mi

100G

1.3. Kubernetes Cluster 구성

2. 서비스 구축 가이드

2.1. 사전 준비 사항

Token 서비스 및 Kafka, Redis, Ingress Controller(Nginx) 는 Helm 을 이용하여 배포가 가능하다.

  1. Kubernetes 1.12+

    1. Docker Desktop 설치, https://www.docker.com/products/docker-desktop

  2. Helm 3.1.0

    1. https://helm.sh/ko/docs/intro/install/

  3. Kafka, Redis 설치를 위한 Bitnami helm repo 추가

$ helm repo add bitnami https://charts.bitnami.com/bitnami
$ helm search repo bitnami
$ helm install my-release bitnami/<chart>\`

2.2. Kafka, Zookeeper 설치

Kafka, Zookeeper 설치는 Bitnami의 Helm chart를 이용해 설치한다.

https://github.com/bitnami/charts/tree/master/bitnami/kafka

2.2.1 helm repository clone

toke helm repository 를 clone 받아 진행한다.

$ git clone https://gitlab.com/mvassets/mvautomation.git
$ cd Token

2.2.2. Namespace 생성

$ kubectl create namespace kafka

2.2.3. Kafka 설정 파일 경로 이동, 설치

$ cd kafka
$ helm install eth-kafka bitnami/kafka --values values.yaml -n kafka

2.2.4. Kafka Manager 설치 & SKS Topic 생성

Kafka Manager(CMAK)는 UI를 통해 Kafka 관련 설정을 할 수 있게 지원해준다.

Kafka의 클러스터 생성과 Topic 생성을 위한 Kafka Manager 를 설치한다.

설치 전 Blockchain 조직의 Private repository credential 설정해준다.

  • Create Secret Docker Repository Registry

kubectl create secret docker-registry bcrepo --docker-server=https://bcrepo.skcc.com --docker-username=admin --docker-password=admin123 -n kafka
  • Deploy Kafka Manger

kubectl apply -f kafka-manager.yaml -n kafka
  • Load Balancer 타입으로 생성하여 임시로 외부 접속

kubectl get service -n kafka
  • 생성된 Kafka Manager 외부 접속 주소 확인 후 Kafka Manager console 로 접속

[외부 접근 IP]:9000

2.2.4.1 Cluster 생성

Kafka Manager Web을 접속하면 클러스터를 생성할 수 화면으로 시작된다.

Cluster > Add Cluster 선택

클러스터 생성 입력 정보

Item

Value

Cluster Name

dbs-kafka

Cluster Zookeeper Hosts

eth-kafka-zookeeper:2181

brokerViewThreadPoolSize

2

offsetCacheThreadPoolSize

2

kafkaAdminClientThreadPoolSize

2

2.2.4.2 SKS Topic 생성

Topic 생성 입력 정보

Item

Value

Topic

sks-topic

Partitions

2(SKS replicas count 와 동일하게 설정)

Replication factor

3

2.3. Redis 설치

2.3.1. Namespace 생성

kubectl create namespace redis

2.3.2. Redis 설정 파일 경로 이동

cd redis

2.3.3. Production 환경 설치

helm install eth-redis bitnami/redis --values values-production.yaml -n redis


2.4. 인증 서버(OKTA) 설정

2.4.1. Application 추가

총 두개의 어플리케이션을 추가한다.

  • token-service

  • user-management

기존에 authorization_code grant type과 password grant type을 지원하는 Application이 존재하는 경우 추가 설정하지 않고 기존 application을 사용하여도 된다.

  • OKTA >> Applications >> Applications 선택