Document centralization based document security
Smart work environment construction
Cloudoc supermicro mini_svr_appliance
Drawing/ Document/ Source code/ Copyright security and Personal information protection
Document centralization based document security
Smart work environment construction
Cloudoc supermicro mini_svr_appliance
Drawing/ Document/ Source code/ Copyright security and Personal information protection
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발Jeongkyu Shin
머신러닝 및 데이터 과학 분야의 컴퓨팅 수요는 해가 갈수록 급증하고 있습니다. 이와 더불어 분산처리 기술, 데이터 파이프라이닝 및 개발 환경 스택 관리 등의 관련된 다양한 이슈들 또한 엄청나게 늘어나고 있습니다. 머신러닝 모델의 기하급수적인 모델 복잡도 증가 추세와 마찬가지로, 모델 학습을 위한 환경 관리 또한 갈수록 복잡도가 높아지는 추세입니다.
이 세션에서는 이러한 문제를 해결하기 위해 python 언어 기반의 분산처리 스케쥴링/오케스트레이션 미들웨어 플랫폼을 개발한 4년간의 과정에서 겪은 다양한 문제들에 대해 다룹니다. 2015년 컨테이너 기반의 고밀도 분산처리 플랫폼 설계 및 프로토타이핑 과정을 PyCon KR에서 발표한 이후, 실제 구현 및 오픈소스화, 안정화를 거치며 겪은 다양한 기술적/비기술적 문제들에 대한 경험을 공유합니다.
기술적으로는 최근 몇 년 간의 클러스터 플랫폼 관련 기술의 진보와 함께 탄생한 다양한 도구들과, 이러한 도구들을 python 기반으로 엮어내기 위해 사용하고 개발한 다양한 오픈소스들을 다룹니다. Python 기반의 컨테이너 스케쥴링 및 오케스트레이션 과정의 구현과, 다양한 프로그래밍 언어로 만든 SDK를 graphQL을 이용하여 연동하는 과정에서의 몇몇 유의점을 설명합니다. 아울러 python 기반의 SDK를 다양한 언어로 포팅했던 경험을 간단하게 안내합니다.
플랫폼을 개발하는 중 등장한 TensorFlow, PyTorch 등의 다양한 머신러닝 프레임워크들을 도입하며 겪은 문제와 해결 과정에 대해서도 나눕니다. 연구 분야에는 Python 2.7 기반의 프레임워크들이 여전히 많습니다. 이러한 프레임워크 및 라이브러리의 지원을 위하여 Python 2 기반의 프레임워크와 Python 3.7로 구현한 컨테이너 인터페이스를 단일 컨테이너 환경에 중복 빌드 및 상호 간섭 없이 공존시키기 위해 개발한 아이디어를 소개합니다.
마지막으로 Python 기반의 프레임워크를 개발, 배포 및 상용화 하는 과정에서 겪은 다양한 어려움을 소개합니다. 솔루션을 배포 및 보급할 때 겪는 다양한 런타임, 하드웨어 환경 및 개인 정보 보호를 위한 폐쇄망 대상의 디플로이 등에 대응하기 위하여 Python 응용프로그램을 단독 실행용으로 패키징하는 과정에서 겪은 팁들을 설명합니다. 또한 GUI 빌드 및 Python, Go 및 C++을 함께 사용한 드라이버 가상화 레이어 개발 등의 내용도 살짝 다룹니다.
이 슬라이드는 PyCon KR 2019의 발표 슬라이드입니다. ( https://www.pycon.kr/program/talk-detail?id=138 )
오픈스택 커뮤니티 - 제1회 공개 SW 커뮤니티데이 (2017년 9월 정기 세미나 대체)
- 일시: 9월 22일 금요일
- 발표자: 장태희 (운영진, 스터디 매니저)
- 행사 정보: https://www.facebook.com/groups/openstack.kr/permalink/1826976907316452/
블록체인 제품 생태계를 구성해보자
Ground X가 블록체인을 통해 세상에 기여하고 싶은 메세지가 있습니다. 그것을 이뤄내기 위해 어떤 제품들을 기획했고, 1년반동안 제품을 만들면서 PM/Designer/Data scientist/Engineer 들과 어떻게 협업을 하였는지 공유하고자 합니다. 그리고 메인넷을 출시한 다음에 어떤 제품로드맵과 방향을 가지고 있는지 공유할 예정입니다.
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기Chris Ohk
C++11을 시작으로 모던 C++이 도입된 지도 어느새 6년이라는 시간이 흘렀습니다. 올해는 C++17 표준이 도입될 예정입니다. 그만큼 많이 개선되고 새로운 기능들이 많이 도입되었기에 실무에서 사용해보고 싶은 경우도 많습니다. 하지만 이미 서비스 중이라 기존 프로젝트를 새 버전의 VS로 마이그레이션하기 어려운 프로젝트가 많습니다. 그렇다고 아예 불가능한 일도 아닙니다. 이번 세미나에서는 기존 프로젝트를 새 버전의 VS로 마이그레이션하면서 발생했던 문제와 마이그레이션 이후 모던 C++을 사용하면서 발생했던 문제, 그리고 해결법을 설명하고자 합니다. 또한 새 버전의 VS에 생긴 유용한 기능들도 함께 알려드립니다.
AWS 기반 블록체인 (1부) - 블록체인 환경 구성하기 (박혜영 & 유다니엘, AWS 솔루션즈 아키텍트) :: AWS DevDay2018Amazon Web Services Korea
AWS 기반 블록체인 (1부) - 블록체인 환경 구성하기
AWS에서 다양한 Blockchain Network를 직접 구축하고 배포하는 전체 과정을 설 AWS Kubernetes 서비스 자세히 살펴보기 명합니다. 이더리움 PoW, PoA, 텐더민트와 같은 다양한 메인넷을 AWS구동하고 Kubernetes와 CloudFormation으로 블록체인을 배포하는 방법을 시연합니다.
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발Jeongkyu Shin
머신러닝 및 데이터 과학 분야의 컴퓨팅 수요는 해가 갈수록 급증하고 있습니다. 이와 더불어 분산처리 기술, 데이터 파이프라이닝 및 개발 환경 스택 관리 등의 관련된 다양한 이슈들 또한 엄청나게 늘어나고 있습니다. 머신러닝 모델의 기하급수적인 모델 복잡도 증가 추세와 마찬가지로, 모델 학습을 위한 환경 관리 또한 갈수록 복잡도가 높아지는 추세입니다.
이 세션에서는 이러한 문제를 해결하기 위해 python 언어 기반의 분산처리 스케쥴링/오케스트레이션 미들웨어 플랫폼을 개발한 4년간의 과정에서 겪은 다양한 문제들에 대해 다룹니다. 2015년 컨테이너 기반의 고밀도 분산처리 플랫폼 설계 및 프로토타이핑 과정을 PyCon KR에서 발표한 이후, 실제 구현 및 오픈소스화, 안정화를 거치며 겪은 다양한 기술적/비기술적 문제들에 대한 경험을 공유합니다.
기술적으로는 최근 몇 년 간의 클러스터 플랫폼 관련 기술의 진보와 함께 탄생한 다양한 도구들과, 이러한 도구들을 python 기반으로 엮어내기 위해 사용하고 개발한 다양한 오픈소스들을 다룹니다. Python 기반의 컨테이너 스케쥴링 및 오케스트레이션 과정의 구현과, 다양한 프로그래밍 언어로 만든 SDK를 graphQL을 이용하여 연동하는 과정에서의 몇몇 유의점을 설명합니다. 아울러 python 기반의 SDK를 다양한 언어로 포팅했던 경험을 간단하게 안내합니다.
플랫폼을 개발하는 중 등장한 TensorFlow, PyTorch 등의 다양한 머신러닝 프레임워크들을 도입하며 겪은 문제와 해결 과정에 대해서도 나눕니다. 연구 분야에는 Python 2.7 기반의 프레임워크들이 여전히 많습니다. 이러한 프레임워크 및 라이브러리의 지원을 위하여 Python 2 기반의 프레임워크와 Python 3.7로 구현한 컨테이너 인터페이스를 단일 컨테이너 환경에 중복 빌드 및 상호 간섭 없이 공존시키기 위해 개발한 아이디어를 소개합니다.
마지막으로 Python 기반의 프레임워크를 개발, 배포 및 상용화 하는 과정에서 겪은 다양한 어려움을 소개합니다. 솔루션을 배포 및 보급할 때 겪는 다양한 런타임, 하드웨어 환경 및 개인 정보 보호를 위한 폐쇄망 대상의 디플로이 등에 대응하기 위하여 Python 응용프로그램을 단독 실행용으로 패키징하는 과정에서 겪은 팁들을 설명합니다. 또한 GUI 빌드 및 Python, Go 및 C++을 함께 사용한 드라이버 가상화 레이어 개발 등의 내용도 살짝 다룹니다.
이 슬라이드는 PyCon KR 2019의 발표 슬라이드입니다. ( https://www.pycon.kr/program/talk-detail?id=138 )
오픈스택 커뮤니티 - 제1회 공개 SW 커뮤니티데이 (2017년 9월 정기 세미나 대체)
- 일시: 9월 22일 금요일
- 발표자: 장태희 (운영진, 스터디 매니저)
- 행사 정보: https://www.facebook.com/groups/openstack.kr/permalink/1826976907316452/
블록체인 제품 생태계를 구성해보자
Ground X가 블록체인을 통해 세상에 기여하고 싶은 메세지가 있습니다. 그것을 이뤄내기 위해 어떤 제품들을 기획했고, 1년반동안 제품을 만들면서 PM/Designer/Data scientist/Engineer 들과 어떻게 협업을 하였는지 공유하고자 합니다. 그리고 메인넷을 출시한 다음에 어떤 제품로드맵과 방향을 가지고 있는지 공유할 예정입니다.
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기Chris Ohk
C++11을 시작으로 모던 C++이 도입된 지도 어느새 6년이라는 시간이 흘렀습니다. 올해는 C++17 표준이 도입될 예정입니다. 그만큼 많이 개선되고 새로운 기능들이 많이 도입되었기에 실무에서 사용해보고 싶은 경우도 많습니다. 하지만 이미 서비스 중이라 기존 프로젝트를 새 버전의 VS로 마이그레이션하기 어려운 프로젝트가 많습니다. 그렇다고 아예 불가능한 일도 아닙니다. 이번 세미나에서는 기존 프로젝트를 새 버전의 VS로 마이그레이션하면서 발생했던 문제와 마이그레이션 이후 모던 C++을 사용하면서 발생했던 문제, 그리고 해결법을 설명하고자 합니다. 또한 새 버전의 VS에 생긴 유용한 기능들도 함께 알려드립니다.
AWS 기반 블록체인 (1부) - 블록체인 환경 구성하기 (박혜영 & 유다니엘, AWS 솔루션즈 아키텍트) :: AWS DevDay2018Amazon Web Services Korea
AWS 기반 블록체인 (1부) - 블록체인 환경 구성하기
AWS에서 다양한 Blockchain Network를 직접 구축하고 배포하는 전체 과정을 설 AWS Kubernetes 서비스 자세히 살펴보기 명합니다. 이더리움 PoW, PoA, 텐더민트와 같은 다양한 메인넷을 AWS구동하고 Kubernetes와 CloudFormation으로 블록체인을 배포하는 방법을 시연합니다.
8. EXTENDED SEOUL
● 2008년 10월 사토시 나카모토라는 인물의 논문에서 시작
● 기존 통제 시스템을 벗어나기 위한 암호 기술을 기반 Cypherpunk라는 활동가 중심
으로 연구
● 2008년 9월 글로벌 경제 위기 이후 비트코인 탄생
● 2009년 1월 3일 제네시스 블럭이 생성
11. EXTENDED SEOUL
Transaction
Input
.
Output
C D
Spent
Unspent
#3
● Transaction은 Input과 Output으로 구성
● Input은 블록내의 Transaction의 Output과 연결
● Output은 address와 value가 지정
● 아무런 Input도 사용하지 않은 Output(Unspent)
이미 연결해서 사용한 Output(Spent) 존재
● UTXO(Unspent Transaction Output): 미사용 Output
● UTXO Set은 Leveldb로 별도 관리
.
Input
.
Output
A C
Spent
#1
Unspent
.
Input
.
Output
B C
Unspent
#2
Unspent
C의 잔고는?
14. EXTENDED SEOUL
Locking Script
Transaction의 Output은 받는 사람의 공개키를 이용하여 Script를 생성하며 일반적으로 송금 Script는
자신을 사용하는 Input의 ScriptSig를 이용하여 Output의 PubKey Hash의 값이 같은지 검사함.
Unlocking Script
Transaction의 Input은 자신의 비밀키를 이용하여 Signature를 생성하여 사용하고자 하는 Output이 자
신의 것임을 증명함. 변경 불가능한 블록체인에 기록된 Script에 의해서 검증되므로 UTXO에 지정된 사용
자의 비밀키로만 생성해야한다.
UTXO
19. EXTENDED SEOUL
(Proof of Existence)
● https://proofofexistence.com/
● 문서의 Hash를 구하여 비트코인의 Transaction Output Script에 남김.
● Hash의 정보는 불변하므로 후에 문서가 위조되지 않았다는 것을 증명함.
20. EXTENDED SEOUL
Pegging / Sidechain
● Omni Layer: https://www.omnilayer.org
● Omni Protocol: https://github.com/OmniLayer/spec
● Bitcoin Transaction Output Script와 Sidechain을 이용하여 코인을 생성
할 수 있는 플랫폼.
● USDT 코인이 사용 (https://tether.to)
22. EXTENDED SEOUL
UTXO
● 비트코인 0.9버전 이전에는 블록체인에 특정한 값을 저장하는 방법을 제공하지 않음.
● UTXO(Unspent Transaction Output)의 Locking Script에 포함되는 수신자의 Public Key Hash
에 특정한 값을 기록함.
OP_DUP OP_HASH160
1a4618549a833da7efe8c9572e4e17e93900b7ec
OP_EQUALVERIFY OP_CHECKSIG
OP_0
c24b9295a240be1c2b46467c920ad1be8b2b1ff5
원하는 값으로 수정
24. EXTENDED SEOUL
OP_RETURN
● UTXO를 이용하여 기록을 남기는 일이 생기자 Ver 0.9 부터 Output Script에 OP_RETURN 연
산자 추가
● Output Script에 OP_RETURN 연산자가 있을 경우는 UTXO로 처리하지 않음.
● 대부분의 비트코인을 이용하는 서비스들은 OP_RETURN 방식을 이용
● OP_RETURN을 이용해 남길 수 있는 최대 사이즈는 80Byte
Output Script: 6a0b436861696e656572732121
OP_RETURN 436861696e656572732121
Chaineers!!
https://www.blocktrail.com/BCC/tx/
58d32be2f376003463717cc045b68c23507ceb38a15c6c12d739
26. EXTENDED SEOUL
Ethereum Data
● 이더리움 Transaction을 생성시 Data 기록
● Block당 사용할 수 있는 최대 Gas만큼 기록
● Smart Contract를 통해서도 Data을 저장
스마트 컨트렉트를 통해서는 저장하는 것은 블록체
인에 남는 것이 아니다!!
27. EXTENDED SEOUL
Ethereum Data
● 이더리움의 SmartContract를 통해서 저장되는 값은 EVM에 저장
● 블록체인에는 EVM에 저장된 상태정보(State)를 검증할 수 있는 Merkle Root만 가지고 있다.
● 계정의 잔고는 상태정보로 관리 (UTXO 없음)
이더리움의 정보는
장기적(long term)
비트코인의 정보는
영구적(permanent)
29. EXTENDED SEOUL
Monitoring
● 실제 비트코인 Transaction중에서 OP_RETURN을 이용한 메시지 조사
● API를 제공하는 서비스를 이용
● Blockchain Info API: https://www.blockchain.com/ko/api
● Python으로 간단하게 제작
38. EXTENDED SEOUL
Testnet
● cli 명령인 generate로 mining이 불가능
● https://coinfaucet.eu/en/btc-testnet/ 에서 Testnet Bitcoin을 요청
● Transaction은 바로 생기는데 Confirm이 안됨.
● Testnet Mining 불안정
● 메시지를 남길때에도 Mining 문제로 어려움 예상
● Mining만 하고 외부 서비스 API를 이용하려 했지만 포기
● 결국 regtest 모드로 개발 환경 재구성
39. EXTENDED SEOUL
Regtest (Regression test mode)
● DNSSeeds를 사용하지 않고 Difficulty가 낮아서 빠르게 Mining이 가능
● Python 에서 RPC를 사용하기보다 API를 사용하기 위해서 Insight-api를 설치 (https://
github.com/bitpay/insight-api)
● Insight-api에서 사용하는 bitcore는 bitcoin 0.12 버젼을 사용
● API는 포기하고 Docker로 regtest 모드로 실행하고 Python에서 RPC로 접속하여 개발
● regtest모드는 RPC 포트는 18443을 사용
42. EXTENDED SEOUL
Regtest Mining
● Mining하여 보상 받은 코인은 생성된 Block 이후에 100개의 Block이 생성된 이후에 사용할 수
가 있다. (100 Confirm)
● 사용하기 위해서는 generate 명령으로 100개가 넘는 Block을 만든다.
43. EXTENDED SEOUL
API RPC
● blockchain.info API를 사용하던 부분을 Bitcoin Core RPC를 사용하도록 수정
● https://github.com/jgarzik/python-bitcoinrpc 을 사용
46. EXTENDED SEOUL
Create RawTransaction
● 외부 서비스의 API를 이용하여 Transaction을 생성할때에 종종 비밀키(private key)를 요구 하
는 경우가 있는데 절대 사용 금지!!
● 이미 비밀키로 Signed된 RawTransaction을 생성하여 사용하는 것이 바람직하다.
RawTransaction
형태 생성
UTXO를 사용하
는 Input생성
OP_RETURN 연
산자를 사용하여
메시지를 포함한
Output생성
RawTransaction
Signing and
Send
Output 생성시 UTXO의 잔액에서 Transaction Fee를 제외한 나머지는 자신의 지
갑으로 송금하도록 해야함!! 안할 경우 모든 잔액이 Transaction Fee로 처리됨!