본문 바로가기메뉴 바로가기


if(kakao)2020 코멘터리 02 : Klaytn, Caver, KAS 가 만들어가는 쉽고 빠른 BApp 개발 환경

안녕하세요, Ground X의 Platform Development Team입니다.
Ground X의 블록체인 플랫폼 Klaytn, 그리고 Klaytn을 쉽게 쓰기 위한 API Service (KAS)와 SDK (caver)를 개발하고 있습니다.

이번 if(Kakao)2020에서는 Klaytn의 성능 및 비용 개선을 위해 노력한 경험, caver의 사용성 개선을 위해 노력한 경험, KAS의 reference BApp을 개발한 경험, 그리고 Ground X에서의 devops에 대해 들려드릴 예정인데요, 이번 글을 통해 먼저 소개하고자 합니다.


블록체인의 storage를 줄여보자: Klaytn의 혹독한 다이어트 일기

블록체인의 storage를 줄여보자: Klaytn의 혹독한 다이어트 일기 세션에서는 블록체인의 저장 비용을 줄이기 위해서 노력한 경험에 대해 소개합니다. Klaytn의 메인 네트워크인 Cypress는 출시 1년 차인 2020년 6월, 전체 저장 용량이 800GB 를 넘어섰습니다. 앞으로 더욱더 널리 사용될 블록체인 네트워크임을 감안하면 증가 속도가 너무 빠르다고 생각했습니다. 그중 가장 많은 용량인 651GB 를 차지하는 것은 Storage trie로 각 계정의 잔고와 컨트랙트의 데이터가 저장되어 있는 저장소입니다. 이 저장소는 최신 상태뿐만 아니라, Genesis block부터의 상태를 저장하고 있습니다. 아주 오래된 데이터들을 접근하는 경우는 희박하기 때문에, 최신 상태 데이터만 저장한다고 하면 75%가 절감된 129GB 만으로 충분합니다. 이 세션에서는 어떤 기술을 사용해 이렇게 공간 절감을 할 수 있었는지, 그리고 어떤 어려움이 있었는지를 소개합니다.

Klaytn에 알맞는 cache 찾기: State trie cache 최적화

Klaytn에 알맞는 cache 찾기: State trie cache 최적화 세션에서는 기존에 사용하고 있던 state trie 캐시가 지정한 메모리보다 더 많은 공간을 차지한다는 것을 분석하고, 이보다 나은 캐시를 찾기 위해 노력한 경험들을 소개합니다. Klaytn과 같이 아주 오랜 시간 종료되지 않고 실행되는 프로그램에서는 시스템 메모리를 초과하지 않으면서 효율적으로 메모리를 사용하여야 하기 때문에, 메모리 최적화가 매우 중요합니다. 기존에 사용하고 있던 캐시는 실제 캐시로 사용되는 공간보다 더 많은 공간을 점유하고 있다는 것을 분석을 통해 파악했고, 이보다 나은 다양한 캐시들을 검토하였습니다. 또한 주어진 상황에서의 캐시 미스 값을 수학적으로 도출하고 그 결과를 실험을 통해 확인하였습니다. 마지막으로 실험을 통해 변경된 캐시가 메모리 사용, 캐시 미스율, 그리고 속도 면에서도 모두 기존의 캐시보다 우월한 것을 확인하였습니다.

Caver, 참 쉽죠?

Caver, 참 쉽죠? 세션에서는 Klaytn의 SDK인 caver-js와 caver-java에 대해 소개합니다. 기존의 caver-js와 caver-java는 서로 다른 사용법과 용어를 가지고 있어, 한 언어의 SDK에 익숙해져 있다고 하더라도 다른 언어의 SDK를 사용하는 것은 매우 어려웠습니다. Klaytn SDK라면 언어에 관계없이 사용법이나 용어는 같아야 한다고 생각했기 때문에, 공통된 구조인 SDK common architecture를 설계하고 구현하였습니다. 이 세션에서는 SDK common architecture를 어떻게 설계하였는지, 어떻게 사용하는지를 자세히 소개합니다. 이 SDK common architecture를 통해 서로 다른 언어의 SDK로의 개발이 수월해지고, 나아가 새로운 언어의 SDK도 쉽게 확장될 수 있기를 기대합니다.

Blockchain Application 개발을 시작하는 사람들을 위하여
(feat. Klaytn API Service)

Blockchain Application 개발을 시작하는 사람들을 위하여 (feat. Klaytn API Service) 세션에서는 KAS (Klaytn API Service)를 사용하여 BApp을 개발한 경험을 소개합니다. 먼저, 블록체인에 대한 경험이 전혀 없는 개발자들을 위해 BApp을 어떻게 설계하는 것이 바람직한지 실제 개발한 카페 원격 주문 시스템을 토대로 설명합니다. 이 시스템의 여러 가지 데이터의 특성을 살펴보고, 그 특성이 블록체인과 어떻게 연결될 수 있는지 소개합니다. 이어 BApp을 개발하기 위해 어떠한 어려움들이 있는지, KAS를 통해 그 어려움을 어떻게 덜어낼 수 있는지 소개합니다. Klaytn 그리고 KAS와 함께 BApp을 어떻게 개발하면 되는지 궁금한 개발자라면, 이 세션이 많은 도움이 될 수 있기를 기대합니다.

DevOps at Ground X: 인프라도 코드처럼

또한 Ground X에서는 DevOps 팀이 잘 갖추어져 있어, 높은 개발 생산성을 유지할 수 있습니다. DevOps at Ground X: 인프라도 코드처럼 세션에서는 Ground X의 다양한 제품들을 어떻게 DevOps 환경으로 구성하고 운영하고 있는지 소개합니다. Ground X의 DevOps 팀은 Kubernetes, Terraform, Helm 등을 이용하여 Cloud infrastructure를 코드 기반으로 효율적으로 관리, 운영하고 있습니다. 이 세션에서는 이러한 Infrastructure as Code를 Ground X에서는 어떻게 관리하고 운영하는지 소개합니다.

자유로운 영혼의 자유로운 운영

자유로운 영혼의 자유로운 운영 세션에서는 Ground X에서 Klaytn의 메인 네트워크인 Cypress를 운영하면서 겪은 어려움에 대해 소개하고 그 어려움을 해소할 수 있는 자유로운 운영 방법에 대해 소개합니다. AWS connect를 이용한 전화 기반 운영 시스템을 적용하여, 컴퓨터가 없는 상황에서도 운영 및 장애에 대응할 수 있는 방법 및 시스템에 대해 소개합니다.


위에 소개해드린 세션들의 보다 자세한 내용은 11월18일~20일, if(kakao)2020을 통해 확인하실 수 있습니다. 감사합니다!

Ground X
Ground X Ground X는 카카오의 블록체인 기술 및 서비스 계열회사입니다. 블록체인이 단순히 흥미 있는 기술이 아니라 실생활에 사용되는 기술이 될 수 있도록 노력하고 있습니다.
Top Tag
2021
2021-new-krew
adaptive-hash-index
adt
agile
agilecoach
ai
Algorithm/ML
Algorithm/Ranking
almighty-data-transmitter
android
angular
anycast
App2App
applicative
Architecture
arena
async
aurora
Backend
BApp
bgp
ble
blind-recruitment
block
Block Chain
blockchain
bluetooth
brian
Cache
cahtbot
Caver
cd
ceph
certificate
certification
cgroup
ci
cite
client
clojure
close-wait
cloud
cloudera-manager
clustered-block
cmux
cnn
code-festival
code-review
codereview
coding
competition
component
conference
consul
container
contents
contest
couchbase
COVID-19
cpp
Data
DB
deep-learning
dev
dev-session
dev-track
developer
developer relations
developers
devops
digitalization
digitaltransformation
dns
docker
dr
employeecard
eslint
Feature List
Featured
friendstime
front-end
frontend
functional-programming
funfunday
fzf
garbage-collection
gawibawibo
GC
github
go
graphdb
graphql
Ground X
growth
ha
hadoop
hbase
hbase-manager
hbase-region-inspector
hbase-snashot
hbase-table-stat
hbase-tools
hri
id
if kakao
ifkakao
infrastructure
innodb
internship
ios
item
Java
javascript
jsconf
jsconfkorea
json
k8s
kafka
kakao
kakao-commerce
kakao-games
kakaoarena
kakaocon
kakaok
kakaokey
kakaokrew
kakaomap
kakaotalk
KAS
KCDC
khaiii
Klaytn
Klip
kubernetes
l3dsr
l4
links
load-balancing
machine-learning
marathon
meetup
melon
mesos
Messaging
microservice
mobil
monad
mtre
mysql
mysql-realtime-traffic-emulator
nand-flash
network
new
new-krew
nfc
nomad
ocp
open
opensource
openstack
OpenWork
page
parallel
PBA
planning poker
programming-contest
pycon
python
quagga
react
reactive-programming
reactor
recap
recommendation
recruitment
redis
redis-keys
redis-scan
related-blind
rest
rubics
ruby
rxjs
s2graph
scala
scalaz
server
service
sharding
shopping
socket
spark
spark-streaming
SpringBoot
ssd
Statistics/Analysis
Stomp
storage
storm
style-guide
support
System
talk
talkchannel
tcp
tech
test
Thread-Debugging
time-wait
tmux
typescript
update
User Story
vim
vim-github-dashboard
vim-plugin
vue
vue.js
web-cache
webapp
WebSocket
weekly
All Tag
2021
2021-new-krew
adaptive-hash-index
adt
agile
agilecoach
ai
Algorithm/ML
Algorithm/Ranking
almighty-data-transmitter
android
angular
anycast
App2App
applicative
Architecture
arena
async
aurora
Backend
BApp
bgp
ble
blind-recruitment
block
Block Chain
blockchain
bluetooth
brian
Cache
cahtbot
Caver
cd
ceph
certificate
certification
cgroup
ci
cite
client
clojure
close-wait
cloud
cloudera-manager
clustered-block
cmux
cnn
code-festival
code-review
codereview
coding
competition
component
conference
consul
container
contents
contest
couchbase
COVID-19
cpp
Data
DB
deep-learning
dev
dev-session
dev-track
developer
developer relations
developers
devops
digitalization
digitaltransformation
dns
docker
dr
employeecard
eslint
Feature List
Featured
friendstime
front-end
frontend
functional-programming
funfunday
fzf
garbage-collection
gawibawibo
GC
github
go
graphdb
graphql
Ground X
growth
ha
hadoop
hbase
hbase-manager
hbase-region-inspector
hbase-snashot
hbase-table-stat
hbase-tools
hri
id
if kakao
ifkakao
infrastructure
innodb
internship
ios
item
Java
javascript
jsconf
jsconfkorea
json
k8s
kafka
kakao
kakao-commerce
kakao-games
kakaoarena
kakaocon
kakaok
kakaokey
kakaokrew
kakaomap
kakaotalk
KAS
KCDC
khaiii
Klaytn
Klip
kubernetes
l3dsr
l4
links
load-balancing
machine-learning
marathon
meetup
melon
mesos
Messaging
microservice
mobil
monad
mtre
mysql
mysql-realtime-traffic-emulator
nand-flash
network
new
new-krew
nfc
nomad
ocp
open
opensource
openstack
OpenWork
page
parallel
PBA
planning poker
programming-contest
pycon
python
quagga
react
reactive-programming
reactor
recap
recommendation
recruitment
redis
redis-keys
redis-scan
related-blind
rest
rubics
ruby
rxjs
s2graph
scala
scalaz
server
service
sharding
shopping
socket
spark
spark-streaming
SpringBoot
ssd
Statistics/Analysis
Stomp
storage
storm
style-guide
support
System
talk
talkchannel
tcp
tech
test
Thread-Debugging
time-wait
tmux
typescript
update
User Story
vim
vim-github-dashboard
vim-plugin
vue
vue.js
web-cache
webapp
WebSocket
weekly

위로