SlideShare uma empresa Scribd logo
1 de 16
Baixar para ler offline
1
Hyperledger
Fabric
Architecture
 Fabric has several framework
components:
 Membership services for security:
audit, registration & identity
management
 Blockchain services: Consensus,
Storage & transactions
 Chaincode services: Secure
container & registry
 For the hackathon we will focus on
the container and blockchain
storage
2
Chaincode
REST ENDPOINTS
Hyperledger-java
API
Application code
ValidatingPeerNode
Dockercontainer RocksDB storage
Other
Validating
PeersREST
Consensus
Consensus
Consensus
Prerequisites
 Docker (I tested on 1.12.1 on Mac OS X)
 Docker Compose (kitematic is also helpful)
 Java/Golang environment for chaincode development (I used JDK 8 + Gradle 3.2)
 For application development:
 Java/Golang environment
 Your favourite development language, as long as you have a REST API available
 This guide loosely based on:
http://hyperledger-fabric.readthedocs.io/en/latest/starter/fabric-starter-kit/
3
The Environment
4
Starter
container
Member SVCs
Peer node
Container for the member
security services (not strictly
required for the hackathon)
Runs and builds the Fabric Shim
for interaction with Fabric
Runs and builds the java
chaincode
Requires Java + gradle to be
installed in the container
Deploys the Java chaincode
running on peer node into
Fabric
Used for executing
commands against the
running chaincode
Docker-compose.yml
membersrvc:
# try 'docker ps' to see the container status after starting this compose
container_name: membersrvc
image: hyperledger/fabric-membersrvc
command: membersrvc
environment:
- COMPOSE_HTTP_TIMEOUT=120
volumes:
- /Users/jbowkett/Documents/Excelian/blockchain/dev-team/git-clone/smart-cheques/starter-
kit/docker-containers/mapped-fs-member:/user/docker-containers/mapped-fs-member
peer:
container_name: peer
image: hyperledger/fabric-peer
environment:
- CORE_PEER_ADDRESSAUTODETECT=true
- CORE_VM_ENDPOINT=unix:///var/run/docker.sock
- CORE_LOGGING_LEVEL=DEBUG
- CORE_PEER_ID=vp0
- CORE_SECURITY_ENABLED=false
# - CORE_SECURITY_PRIVACY=false
- CORE_PEER_PKI_ECA_PADDR=membersrvc:7054
- CORE_PEER_PKI_TCA_PADDR=membersrvc:7054
- CORE_PEER_PKI_TLSCA_PADDR=membersrvc:7054
- CORE_PEER_VALIDATOR_CONSENSUS_PLUGIN=noops
- COMPOSE_HTTP_TIMEOUT=120
# this gives access to the docker host daemon to deploy chain code in network mode
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /Users/jbowkett/Documents/Excelian/blockchain/dev-team/git-clone/smart-cheques/starter-
kit/docker-containers/mapped-fs-peer:/user/docker-containers/mapped-fs-peer
5
# have the peer wait 10 sec for membersrvc to start
# the following is to run the peer in Developer mode - also set sample DEPLOY_MODE=dev
command: sh -c "sleep 10; peer node start --peer-chaincodedev"
#command: sh -c "sleep 10; peer node start"
links:
- membersrvc
ports:
- "5005:5005"
starter:
container_name: starter
image: hyperledger/fabric-starter-kit
volumes:
# tweak this to map a local development directory tree into the container
- /Users/jbowkett/Documents/Excelian/blockchain/dev-team/git-clone/smart-cheques/starter-
kit/docker-containers/mapped-fs-starter:/user/docker-containers/mapped-fs-starter
environment:
- MEMBERSRVC_ADDRESS=membersrvc:7054
- PEER_ADDRESS=peer:7051
- KEY_VALUE_STORE=/tmp/hl_sdk_node_key_value_store
# set to following to 'dev' if peer running in Developer mode
- COMPOSE_HTTP_TIMEOUT=120
- DEPLOY_MODE=dev
- CORE_CHAINCODE_ID_NAME=mycc
- CORE_PEER_ADDRESS=peer:7051
# the following command will start the chain code when this container starts and ready it for
deployment by the app
# command: sh -c "sleep 20;
/opt/gopath/src/github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02/chai
ncode_example02"
stdin_open: true
tty: true
links:
- membersrvc
- peer
Bootstrap the Docker environments
 Edit the volumes sections of your docker-compose.yml to map appropriate
directories for getting code onto your nodes
 Make sure those paths exist on your development (and “production” machine)
 Go to the directory the docker-compose.yml is installed:
$ docker-compose up -d
6
7
Update the peer node to run Java services
$ docker exec -it peer /bin/bash
peer$ peer node start --peer-chaincodedev
peer$ apt-get update && add-apt-repository ppa:webupd8team/java && add-
apt-repository ppa:cwchien/gradle && apt-get update && apt-get install
oracle-java8-installer
peer$ java –fullversion # should be JDK 1.8
peer$ apt-get install gradle
peer$ gradle –v # should be 3.2+
8
9
Install the chaincode shim into the gradle repo
peer$ cd $GOPATH/src/github.com/hyperledger/fabric/core/chaincode/shim/java
peer$ gradle clean build
10
The story so far….
 We’ve created the 3 Hyperledger docker containers (starter, membersvc and peer)
with mounted directories on our development machine
 Provisioned the peer node by installing the correct version of Java and Gradle
 Built the Hyperledger shim on the peer node and installed it as an available
dependency for later Gradle builds on the peer node
 Now let’s deploy an example chaincode application….
11
Install your chaincode on the peer node and run the service
import org.hyperledger.java.shim.ChaincodeBase;
import org.hyperledger.java.shim.ChaincodeStub;
public class HelloWorldChaincode extends ChaincodeBase {
public HelloWorldChaincode() { }
public String run(ChaincodeStub chaincodeStub, String function, String[] args) {
return "hello world!";
}
public String query(ChaincodeStub chaincodeStub, String function, String[] args) {
return "hello world query";
}
public String getChaincodeID() {
return "HelloWorldChaincode";
}
public static void main(String[] args) {
new HelloWorldChaincode().start(args);
}
}12
$ cp <hello world chaincode src> <mapped dir for peer>
Start the chaincode
 peer$ gradle clean build runHello
 $ docker exec -it starter /bin/bash
 starter$ peer chaincode deploy -l java -n HelloWorldChaincode -c
'{"Args":[]}'
 starter$ peer chaincode invoke -l java -n HelloWorldChaincode -c
'{"Args":[]}’
 starter$ peer chaincode query -l java -n HelloWorldChaincode -c
'{"Args":[]}'
13
SUCCESS !!!!
A quick recap….
1. Create the 3 Hyperledger Docker containers (starter, membersvc and peer) with
mapped directories to our development machine
2. Provision the peer node by logging into the Docker container and installing the
correct version of Java and Gradle
3. Build the Hyperledger shim on the peer node and install it as an available
dependency for later Gradle builds on the peer node
4. Create a HelloWorld chaincode on our development machine & copy the code+build
script to the peer node using our Docker mapped-directory
5. On the starter node, deploy the chaincode into Fabric, and then use the starter node
to query the running chaincode within fabric
14
Some APIs and Examples to be aware of
 Table creation:
final List<TableProto.ColumnDefinition> columnDefs = new ArrayList<>();
columnDefs.add(newBuilder().setName("hash").setKey(true).setType(STRING).build());
columnDefs.add(newBuilder().setName("messages").setKey(false).setType(STRING).build());
final boolean success = chaincodeStub.createTable(TABLE_NAME, columnDefs);
 Lookup is based on the key column only
 https://github.com/hyperledger/fabric/tree/master/examples/chaincode/java
 Examples:
 LinkExample – Invoking one chaincode from another
 MapExample – Simple map storage
 RangeExample – Query storage with range
 SimpleExample – Transferring value using Arguments
 TableExample – C/R/D Using underlying storage tables
15
Useful links
 https://docs.docker.com/engine/installation/
 https://docs.docker.com/engine/installation/linux/linux-postinstall/  Important on
Linux if running Docker on boot
 http://hyperledger-fabric.readthedocs.io
 http://hyperledger-fabric.readthedocs.io/en/latest/starter/fabric-starter-kit/
 https://github.com/jbowkett/zug-hackathon
 https://github.com/hyperledger/fabric/tree/master/examples/chaincode/java
 https://gradle.org/documentation/
16

Mais conteúdo relacionado

Mais procurados

Hyperledger Fabric and Tools
Hyperledger Fabric and ToolsHyperledger Fabric and Tools
Hyperledger Fabric and ToolsRihusoft
 
Hyperledger Fabric Technical Deep Dive 20190618
Hyperledger Fabric Technical Deep Dive 20190618Hyperledger Fabric Technical Deep Dive 20190618
Hyperledger Fabric Technical Deep Dive 20190618Arnaud Le Hors
 
Distributed:Health Code Camp Hyperledger
Distributed:Health Code Camp HyperledgerDistributed:Health Code Camp Hyperledger
Distributed:Health Code Camp HyperledgerTracy Kuhrt
 
Hyperledger Composer Update 2017-04-05
Hyperledger Composer Update 2017-04-05Hyperledger Composer Update 2017-04-05
Hyperledger Composer Update 2017-04-05Dan Selman
 
Developing applications with Hyperledger Fabric SDK
Developing applications with Hyperledger Fabric SDKDeveloping applications with Hyperledger Fabric SDK
Developing applications with Hyperledger Fabric SDKHorea Porutiu
 
Hyperledger community update Feb 20, 2018
Hyperledger community update Feb 20, 2018Hyperledger community update Feb 20, 2018
Hyperledger community update Feb 20, 2018Arnaud Le Hors
 
Blockchain Hyperledger Lab
Blockchain Hyperledger LabBlockchain Hyperledger Lab
Blockchain Hyperledger LabDev_Events
 
Hyperledger community update 201805
Hyperledger community update 201805Hyperledger community update 201805
Hyperledger community update 201805Arnaud Le Hors
 
Introduction of Hyperledger Fabric & Composer
Introduction of Hyperledger Fabric & Composer Introduction of Hyperledger Fabric & Composer
Introduction of Hyperledger Fabric & Composer Dr. Ketan Parmar
 
Hong Kong Hyperledger Meetup January 2018
Hong Kong Hyperledger Meetup January 2018Hong Kong Hyperledger Meetup January 2018
Hong Kong Hyperledger Meetup January 2018Tracy Kuhrt
 
Hyperledger Fabric: A Custom Blockchain Solution for Corporate Use
Hyperledger Fabric: A Custom Blockchain Solution for Corporate UseHyperledger Fabric: A Custom Blockchain Solution for Corporate Use
Hyperledger Fabric: A Custom Blockchain Solution for Corporate UseRobert Tochman-Szewc
 
Dejan Podgorsek - Is Hyperledger Fabric secure enough for your Business?
Dejan Podgorsek - Is Hyperledger Fabric secure enough for your Business?Dejan Podgorsek - Is Hyperledger Fabric secure enough for your Business?
Dejan Podgorsek - Is Hyperledger Fabric secure enough for your Business?Hacken_Ecosystem
 
Orchestraing the Blockchain Using Containers
Orchestraing the Blockchain Using ContainersOrchestraing the Blockchain Using Containers
Orchestraing the Blockchain Using ContainersAndrew Kennedy
 
Blockchain Explorer
Blockchain ExplorerBlockchain Explorer
Blockchain ExplorerRihusoft
 
IBM Bluemix Nice Meetup - 20171120 - Hyperledger Fabric & Composer
IBM Bluemix Nice Meetup - 20171120 - Hyperledger Fabric & ComposerIBM Bluemix Nice Meetup - 20171120 - Hyperledger Fabric & Composer
IBM Bluemix Nice Meetup - 20171120 - Hyperledger Fabric & ComposerIBM France Lab
 
IBM presents: Hyperledger Fabric Hands On Workshop - part 1
IBM presents: Hyperledger Fabric Hands On Workshop - part 1IBM presents: Hyperledger Fabric Hands On Workshop - part 1
IBM presents: Hyperledger Fabric Hands On Workshop - part 1Grant Steinfeld
 

Mais procurados (20)

Hyperledger Fabric and Tools
Hyperledger Fabric and ToolsHyperledger Fabric and Tools
Hyperledger Fabric and Tools
 
Conoscerehyperledger
ConoscerehyperledgerConoscerehyperledger
Conoscerehyperledger
 
Excelian hyperledger fabric-feb17
Excelian hyperledger fabric-feb17Excelian hyperledger fabric-feb17
Excelian hyperledger fabric-feb17
 
Hyperledger Fabric Technical Deep Dive 20190618
Hyperledger Fabric Technical Deep Dive 20190618Hyperledger Fabric Technical Deep Dive 20190618
Hyperledger Fabric Technical Deep Dive 20190618
 
Distributed:Health Code Camp Hyperledger
Distributed:Health Code Camp HyperledgerDistributed:Health Code Camp Hyperledger
Distributed:Health Code Camp Hyperledger
 
Hyperledger Composer Update 2017-04-05
Hyperledger Composer Update 2017-04-05Hyperledger Composer Update 2017-04-05
Hyperledger Composer Update 2017-04-05
 
Developing applications with Hyperledger Fabric SDK
Developing applications with Hyperledger Fabric SDKDeveloping applications with Hyperledger Fabric SDK
Developing applications with Hyperledger Fabric SDK
 
Hyperledger community update Feb 20, 2018
Hyperledger community update Feb 20, 2018Hyperledger community update Feb 20, 2018
Hyperledger community update Feb 20, 2018
 
Hyperledger fabric 3
Hyperledger fabric 3Hyperledger fabric 3
Hyperledger fabric 3
 
Blockchain Hyperledger Lab
Blockchain Hyperledger LabBlockchain Hyperledger Lab
Blockchain Hyperledger Lab
 
Hyperledger community update 201805
Hyperledger community update 201805Hyperledger community update 201805
Hyperledger community update 201805
 
Introduction of Hyperledger Fabric & Composer
Introduction of Hyperledger Fabric & Composer Introduction of Hyperledger Fabric & Composer
Introduction of Hyperledger Fabric & Composer
 
IBM Blockchain Overview
IBM Blockchain OverviewIBM Blockchain Overview
IBM Blockchain Overview
 
Hong Kong Hyperledger Meetup January 2018
Hong Kong Hyperledger Meetup January 2018Hong Kong Hyperledger Meetup January 2018
Hong Kong Hyperledger Meetup January 2018
 
Hyperledger Fabric: A Custom Blockchain Solution for Corporate Use
Hyperledger Fabric: A Custom Blockchain Solution for Corporate UseHyperledger Fabric: A Custom Blockchain Solution for Corporate Use
Hyperledger Fabric: A Custom Blockchain Solution for Corporate Use
 
Dejan Podgorsek - Is Hyperledger Fabric secure enough for your Business?
Dejan Podgorsek - Is Hyperledger Fabric secure enough for your Business?Dejan Podgorsek - Is Hyperledger Fabric secure enough for your Business?
Dejan Podgorsek - Is Hyperledger Fabric secure enough for your Business?
 
Orchestraing the Blockchain Using Containers
Orchestraing the Blockchain Using ContainersOrchestraing the Blockchain Using Containers
Orchestraing the Blockchain Using Containers
 
Blockchain Explorer
Blockchain ExplorerBlockchain Explorer
Blockchain Explorer
 
IBM Bluemix Nice Meetup - 20171120 - Hyperledger Fabric & Composer
IBM Bluemix Nice Meetup - 20171120 - Hyperledger Fabric & ComposerIBM Bluemix Nice Meetup - 20171120 - Hyperledger Fabric & Composer
IBM Bluemix Nice Meetup - 20171120 - Hyperledger Fabric & Composer
 
IBM presents: Hyperledger Fabric Hands On Workshop - part 1
IBM presents: Hyperledger Fabric Hands On Workshop - part 1IBM presents: Hyperledger Fabric Hands On Workshop - part 1
IBM presents: Hyperledger Fabric Hands On Workshop - part 1
 

Destaque

Smart Contracts: Opportunities and Challenges
Smart Contracts: Opportunities and ChallengesSmart Contracts: Opportunities and Challenges
Smart Contracts: Opportunities and ChallengesCasey Kuhlman
 
Gluecon 2016 Keynote: Deploying and Managing Blockchain Applications
Gluecon 2016 Keynote: Deploying and Managing Blockchain ApplicationsGluecon 2016 Keynote: Deploying and Managing Blockchain Applications
Gluecon 2016 Keynote: Deploying and Managing Blockchain ApplicationsDuncan Johnston-Watt
 
Edcon - Hardware wallets and smart contracts
Edcon -  Hardware wallets and smart contractsEdcon -  Hardware wallets and smart contracts
Edcon - Hardware wallets and smart contractsEric Larcheveque
 
Introduction to Hyperledger Composer
Introduction to Hyperledger ComposerIntroduction to Hyperledger Composer
Introduction to Hyperledger ComposerSimon Stone
 
Trading Derivatives on Hyperledger
Trading Derivatives on HyperledgerTrading Derivatives on Hyperledger
Trading Derivatives on HyperledgerLF Events
 
How to Never Leave Your Deployment Unattended
How to Never Leave Your Deployment UnattendedHow to Never Leave Your Deployment Unattended
How to Never Leave Your Deployment UnattendedAltoros
 
Technical Introduction to Hyperledger Fabric v1.0
Technical Introduction to Hyperledger Fabric v1.0Technical Introduction to Hyperledger Fabric v1.0
Technical Introduction to Hyperledger Fabric v1.0Altoros
 
Fabric Composer - London Hyperledger Meetup - March 2017
Fabric Composer - London Hyperledger Meetup - March 2017Fabric Composer - London Hyperledger Meetup - March 2017
Fabric Composer - London Hyperledger Meetup - March 2017Simon Stone
 
Introduction to Blockchain and the Hyperledger Project
Introduction to Blockchain and the Hyperledger ProjectIntroduction to Blockchain and the Hyperledger Project
Introduction to Blockchain and the Hyperledger ProjectManuel Garcia
 
Architecture of the Hyperledger Blockchain Fabric - Christian Cachin - IBM Re...
Architecture of the Hyperledger Blockchain Fabric - Christian Cachin - IBM Re...Architecture of the Hyperledger Blockchain Fabric - Christian Cachin - IBM Re...
Architecture of the Hyperledger Blockchain Fabric - Christian Cachin - IBM Re...Romeo Kienzler
 

Destaque (11)

Smart Contracts: Opportunities and Challenges
Smart Contracts: Opportunities and ChallengesSmart Contracts: Opportunities and Challenges
Smart Contracts: Opportunities and Challenges
 
Gluecon 2016 Keynote: Deploying and Managing Blockchain Applications
Gluecon 2016 Keynote: Deploying and Managing Blockchain ApplicationsGluecon 2016 Keynote: Deploying and Managing Blockchain Applications
Gluecon 2016 Keynote: Deploying and Managing Blockchain Applications
 
Edcon - Hardware wallets and smart contracts
Edcon -  Hardware wallets and smart contractsEdcon -  Hardware wallets and smart contracts
Edcon - Hardware wallets and smart contracts
 
Introduction to Hyperledger Composer
Introduction to Hyperledger ComposerIntroduction to Hyperledger Composer
Introduction to Hyperledger Composer
 
Trading Derivatives on Hyperledger
Trading Derivatives on HyperledgerTrading Derivatives on Hyperledger
Trading Derivatives on Hyperledger
 
How to Never Leave Your Deployment Unattended
How to Never Leave Your Deployment UnattendedHow to Never Leave Your Deployment Unattended
How to Never Leave Your Deployment Unattended
 
Technical Introduction to Hyperledger Fabric v1.0
Technical Introduction to Hyperledger Fabric v1.0Technical Introduction to Hyperledger Fabric v1.0
Technical Introduction to Hyperledger Fabric v1.0
 
Code is not law
Code is not lawCode is not law
Code is not law
 
Fabric Composer - London Hyperledger Meetup - March 2017
Fabric Composer - London Hyperledger Meetup - March 2017Fabric Composer - London Hyperledger Meetup - March 2017
Fabric Composer - London Hyperledger Meetup - March 2017
 
Introduction to Blockchain and the Hyperledger Project
Introduction to Blockchain and the Hyperledger ProjectIntroduction to Blockchain and the Hyperledger Project
Introduction to Blockchain and the Hyperledger Project
 
Architecture of the Hyperledger Blockchain Fabric - Christian Cachin - IBM Re...
Architecture of the Hyperledger Blockchain Fabric - Christian Cachin - IBM Re...Architecture of the Hyperledger Blockchain Fabric - Christian Cachin - IBM Re...
Architecture of the Hyperledger Blockchain Fabric - Christian Cachin - IBM Re...
 

Semelhante a Excelian hyperledger walkthrough-feb17

[Codelab 2017] Docker 기초 및 활용 방안
[Codelab 2017] Docker 기초 및 활용 방안[Codelab 2017] Docker 기초 및 활용 방안
[Codelab 2017] Docker 기초 및 활용 방안양재동 코드랩
 
JDD2015: Kubernetes - Beyond the basics - Paul Bakker
JDD2015: Kubernetes - Beyond the basics - Paul BakkerJDD2015: Kubernetes - Beyond the basics - Paul Bakker
JDD2015: Kubernetes - Beyond the basics - Paul BakkerPROIDEA
 
Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...
Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...
Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...Patrick Chanezon
 
Docker Enterprise Workshop - Technical
Docker Enterprise Workshop - TechnicalDocker Enterprise Workshop - Technical
Docker Enterprise Workshop - TechnicalPatrick Chanezon
 
Continuous Integration With Jenkins Docker SQL Server
Continuous Integration With Jenkins Docker SQL ServerContinuous Integration With Jenkins Docker SQL Server
Continuous Integration With Jenkins Docker SQL ServerChris Adkin
 
Azure Bootcamp 2016 - Docker Orchestration on Azure with Rancher
Azure Bootcamp 2016 - Docker Orchestration on Azure with RancherAzure Bootcamp 2016 - Docker Orchestration on Azure with Rancher
Azure Bootcamp 2016 - Docker Orchestration on Azure with RancherKarim Vaes
 
Making a small QA system with Docker
Making a small QA system with DockerMaking a small QA system with Docker
Making a small QA system with DockerNaoki AINOYA
 
[Devconf.cz][2017] Understanding OpenShift Security Context Constraints
[Devconf.cz][2017] Understanding OpenShift Security Context Constraints[Devconf.cz][2017] Understanding OpenShift Security Context Constraints
[Devconf.cz][2017] Understanding OpenShift Security Context ConstraintsAlessandro Arrichiello
 
Docker 1.11 Presentation
Docker 1.11 PresentationDocker 1.11 Presentation
Docker 1.11 PresentationSreenivas Makam
 
Setup docker on existing application
Setup docker on existing applicationSetup docker on existing application
Setup docker on existing applicationLuc Juggery
 
Microservices DevOps on Google Cloud Platform
Microservices DevOps on Google Cloud PlatformMicroservices DevOps on Google Cloud Platform
Microservices DevOps on Google Cloud PlatformSunnyvale
 
Introduction to Docker - Learning containerization XP conference 2016
Introduction to Docker - Learning containerization  XP conference 2016Introduction to Docker - Learning containerization  XP conference 2016
Introduction to Docker - Learning containerization XP conference 2016XP Conference India
 
Настройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'aНастройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'acorehard_by
 
Docker, Kubernetes, and Google Cloud
Docker, Kubernetes, and Google CloudDocker, Kubernetes, and Google Cloud
Docker, Kubernetes, and Google CloudSamuel Chow
 
Docker for Java Developers
Docker for Java DevelopersDocker for Java Developers
Docker for Java DevelopersImesh Gunaratne
 
Orchestrating Docker with OpenStack
Orchestrating Docker with OpenStackOrchestrating Docker with OpenStack
Orchestrating Docker with OpenStackErica Windisch
 
Deploying windows containers with kubernetes
Deploying windows containers with kubernetesDeploying windows containers with kubernetes
Deploying windows containers with kubernetesBen Hall
 
Dessi docker kubernetes paas cloud
Dessi docker kubernetes paas cloudDessi docker kubernetes paas cloud
Dessi docker kubernetes paas cloudMassimiliano Dessì
 

Semelhante a Excelian hyperledger walkthrough-feb17 (20)

[Codelab 2017] Docker 기초 및 활용 방안
[Codelab 2017] Docker 기초 및 활용 방안[Codelab 2017] Docker 기초 및 활용 방안
[Codelab 2017] Docker 기초 및 활용 방안
 
JDD2015: Kubernetes - Beyond the basics - Paul Bakker
JDD2015: Kubernetes - Beyond the basics - Paul BakkerJDD2015: Kubernetes - Beyond the basics - Paul Bakker
JDD2015: Kubernetes - Beyond the basics - Paul Bakker
 
Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...
Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...
Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...
 
Docker 101 Checonf 2016
Docker 101 Checonf 2016Docker 101 Checonf 2016
Docker 101 Checonf 2016
 
Docker Enterprise Workshop - Technical
Docker Enterprise Workshop - TechnicalDocker Enterprise Workshop - Technical
Docker Enterprise Workshop - Technical
 
Continuous Integration With Jenkins Docker SQL Server
Continuous Integration With Jenkins Docker SQL ServerContinuous Integration With Jenkins Docker SQL Server
Continuous Integration With Jenkins Docker SQL Server
 
Azure Bootcamp 2016 - Docker Orchestration on Azure with Rancher
Azure Bootcamp 2016 - Docker Orchestration on Azure with RancherAzure Bootcamp 2016 - Docker Orchestration on Azure with Rancher
Azure Bootcamp 2016 - Docker Orchestration on Azure with Rancher
 
Making a small QA system with Docker
Making a small QA system with DockerMaking a small QA system with Docker
Making a small QA system with Docker
 
[Devconf.cz][2017] Understanding OpenShift Security Context Constraints
[Devconf.cz][2017] Understanding OpenShift Security Context Constraints[Devconf.cz][2017] Understanding OpenShift Security Context Constraints
[Devconf.cz][2017] Understanding OpenShift Security Context Constraints
 
Docker 1.11 Presentation
Docker 1.11 PresentationDocker 1.11 Presentation
Docker 1.11 Presentation
 
Setup docker on existing application
Setup docker on existing applicationSetup docker on existing application
Setup docker on existing application
 
Microservices DevOps on Google Cloud Platform
Microservices DevOps on Google Cloud PlatformMicroservices DevOps on Google Cloud Platform
Microservices DevOps on Google Cloud Platform
 
Introduction to Docker - Learning containerization XP conference 2016
Introduction to Docker - Learning containerization  XP conference 2016Introduction to Docker - Learning containerization  XP conference 2016
Introduction to Docker - Learning containerization XP conference 2016
 
Настройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'aНастройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'a
 
Docker, Kubernetes, and Google Cloud
Docker, Kubernetes, and Google CloudDocker, Kubernetes, and Google Cloud
Docker, Kubernetes, and Google Cloud
 
Docker for Java Developers
Docker for Java DevelopersDocker for Java Developers
Docker for Java Developers
 
Orchestrating Docker with OpenStack
Orchestrating Docker with OpenStackOrchestrating Docker with OpenStack
Orchestrating Docker with OpenStack
 
Deploying windows containers with kubernetes
Deploying windows containers with kubernetesDeploying windows containers with kubernetes
Deploying windows containers with kubernetes
 
ABCs of docker
ABCs of dockerABCs of docker
ABCs of docker
 
Dessi docker kubernetes paas cloud
Dessi docker kubernetes paas cloudDessi docker kubernetes paas cloud
Dessi docker kubernetes paas cloud
 

Último

ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...apidays
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 

Último (20)

ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 

Excelian hyperledger walkthrough-feb17

  • 2. Architecture  Fabric has several framework components:  Membership services for security: audit, registration & identity management  Blockchain services: Consensus, Storage & transactions  Chaincode services: Secure container & registry  For the hackathon we will focus on the container and blockchain storage 2 Chaincode REST ENDPOINTS Hyperledger-java API Application code ValidatingPeerNode Dockercontainer RocksDB storage Other Validating PeersREST Consensus Consensus Consensus
  • 3. Prerequisites  Docker (I tested on 1.12.1 on Mac OS X)  Docker Compose (kitematic is also helpful)  Java/Golang environment for chaincode development (I used JDK 8 + Gradle 3.2)  For application development:  Java/Golang environment  Your favourite development language, as long as you have a REST API available  This guide loosely based on: http://hyperledger-fabric.readthedocs.io/en/latest/starter/fabric-starter-kit/ 3
  • 4. The Environment 4 Starter container Member SVCs Peer node Container for the member security services (not strictly required for the hackathon) Runs and builds the Fabric Shim for interaction with Fabric Runs and builds the java chaincode Requires Java + gradle to be installed in the container Deploys the Java chaincode running on peer node into Fabric Used for executing commands against the running chaincode
  • 5. Docker-compose.yml membersrvc: # try 'docker ps' to see the container status after starting this compose container_name: membersrvc image: hyperledger/fabric-membersrvc command: membersrvc environment: - COMPOSE_HTTP_TIMEOUT=120 volumes: - /Users/jbowkett/Documents/Excelian/blockchain/dev-team/git-clone/smart-cheques/starter- kit/docker-containers/mapped-fs-member:/user/docker-containers/mapped-fs-member peer: container_name: peer image: hyperledger/fabric-peer environment: - CORE_PEER_ADDRESSAUTODETECT=true - CORE_VM_ENDPOINT=unix:///var/run/docker.sock - CORE_LOGGING_LEVEL=DEBUG - CORE_PEER_ID=vp0 - CORE_SECURITY_ENABLED=false # - CORE_SECURITY_PRIVACY=false - CORE_PEER_PKI_ECA_PADDR=membersrvc:7054 - CORE_PEER_PKI_TCA_PADDR=membersrvc:7054 - CORE_PEER_PKI_TLSCA_PADDR=membersrvc:7054 - CORE_PEER_VALIDATOR_CONSENSUS_PLUGIN=noops - COMPOSE_HTTP_TIMEOUT=120 # this gives access to the docker host daemon to deploy chain code in network mode volumes: - /var/run/docker.sock:/var/run/docker.sock - /Users/jbowkett/Documents/Excelian/blockchain/dev-team/git-clone/smart-cheques/starter- kit/docker-containers/mapped-fs-peer:/user/docker-containers/mapped-fs-peer 5 # have the peer wait 10 sec for membersrvc to start # the following is to run the peer in Developer mode - also set sample DEPLOY_MODE=dev command: sh -c "sleep 10; peer node start --peer-chaincodedev" #command: sh -c "sleep 10; peer node start" links: - membersrvc ports: - "5005:5005" starter: container_name: starter image: hyperledger/fabric-starter-kit volumes: # tweak this to map a local development directory tree into the container - /Users/jbowkett/Documents/Excelian/blockchain/dev-team/git-clone/smart-cheques/starter- kit/docker-containers/mapped-fs-starter:/user/docker-containers/mapped-fs-starter environment: - MEMBERSRVC_ADDRESS=membersrvc:7054 - PEER_ADDRESS=peer:7051 - KEY_VALUE_STORE=/tmp/hl_sdk_node_key_value_store # set to following to 'dev' if peer running in Developer mode - COMPOSE_HTTP_TIMEOUT=120 - DEPLOY_MODE=dev - CORE_CHAINCODE_ID_NAME=mycc - CORE_PEER_ADDRESS=peer:7051 # the following command will start the chain code when this container starts and ready it for deployment by the app # command: sh -c "sleep 20; /opt/gopath/src/github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02/chai ncode_example02" stdin_open: true tty: true links: - membersrvc - peer
  • 6. Bootstrap the Docker environments  Edit the volumes sections of your docker-compose.yml to map appropriate directories for getting code onto your nodes  Make sure those paths exist on your development (and “production” machine)  Go to the directory the docker-compose.yml is installed: $ docker-compose up -d 6
  • 7. 7
  • 8. Update the peer node to run Java services $ docker exec -it peer /bin/bash peer$ peer node start --peer-chaincodedev peer$ apt-get update && add-apt-repository ppa:webupd8team/java && add- apt-repository ppa:cwchien/gradle && apt-get update && apt-get install oracle-java8-installer peer$ java –fullversion # should be JDK 1.8 peer$ apt-get install gradle peer$ gradle –v # should be 3.2+ 8
  • 9. 9
  • 10. Install the chaincode shim into the gradle repo peer$ cd $GOPATH/src/github.com/hyperledger/fabric/core/chaincode/shim/java peer$ gradle clean build 10
  • 11. The story so far….  We’ve created the 3 Hyperledger docker containers (starter, membersvc and peer) with mounted directories on our development machine  Provisioned the peer node by installing the correct version of Java and Gradle  Built the Hyperledger shim on the peer node and installed it as an available dependency for later Gradle builds on the peer node  Now let’s deploy an example chaincode application…. 11
  • 12. Install your chaincode on the peer node and run the service import org.hyperledger.java.shim.ChaincodeBase; import org.hyperledger.java.shim.ChaincodeStub; public class HelloWorldChaincode extends ChaincodeBase { public HelloWorldChaincode() { } public String run(ChaincodeStub chaincodeStub, String function, String[] args) { return "hello world!"; } public String query(ChaincodeStub chaincodeStub, String function, String[] args) { return "hello world query"; } public String getChaincodeID() { return "HelloWorldChaincode"; } public static void main(String[] args) { new HelloWorldChaincode().start(args); } }12 $ cp <hello world chaincode src> <mapped dir for peer>
  • 13. Start the chaincode  peer$ gradle clean build runHello  $ docker exec -it starter /bin/bash  starter$ peer chaincode deploy -l java -n HelloWorldChaincode -c '{"Args":[]}'  starter$ peer chaincode invoke -l java -n HelloWorldChaincode -c '{"Args":[]}’  starter$ peer chaincode query -l java -n HelloWorldChaincode -c '{"Args":[]}' 13 SUCCESS !!!!
  • 14. A quick recap…. 1. Create the 3 Hyperledger Docker containers (starter, membersvc and peer) with mapped directories to our development machine 2. Provision the peer node by logging into the Docker container and installing the correct version of Java and Gradle 3. Build the Hyperledger shim on the peer node and install it as an available dependency for later Gradle builds on the peer node 4. Create a HelloWorld chaincode on our development machine & copy the code+build script to the peer node using our Docker mapped-directory 5. On the starter node, deploy the chaincode into Fabric, and then use the starter node to query the running chaincode within fabric 14
  • 15. Some APIs and Examples to be aware of  Table creation: final List<TableProto.ColumnDefinition> columnDefs = new ArrayList<>(); columnDefs.add(newBuilder().setName("hash").setKey(true).setType(STRING).build()); columnDefs.add(newBuilder().setName("messages").setKey(false).setType(STRING).build()); final boolean success = chaincodeStub.createTable(TABLE_NAME, columnDefs);  Lookup is based on the key column only  https://github.com/hyperledger/fabric/tree/master/examples/chaincode/java  Examples:  LinkExample – Invoking one chaincode from another  MapExample – Simple map storage  RangeExample – Query storage with range  SimpleExample – Transferring value using Arguments  TableExample – C/R/D Using underlying storage tables 15
  • 16. Useful links  https://docs.docker.com/engine/installation/  https://docs.docker.com/engine/installation/linux/linux-postinstall/  Important on Linux if running Docker on boot  http://hyperledger-fabric.readthedocs.io  http://hyperledger-fabric.readthedocs.io/en/latest/starter/fabric-starter-kit/  https://github.com/jbowkett/zug-hackathon  https://github.com/hyperledger/fabric/tree/master/examples/chaincode/java  https://gradle.org/documentation/ 16