InterPlanetary File System 소개 자료입니다.
풀 한글로 작성하고 싶었으나
시간관계 상 중반부 이상은 영문 번역을 손을 못댔네요.
(이후 시간이 된다면 수정해보겠습니다.
그림 및 도표의 출처는 모두 링크로 기재되어있습니다.
본자료는 흐름을 이해하는데 사용하시고
원문 링크를 한번씩 더 읽어보시길 추천드립니다.
DevOps, sibling of Agile is born of the need to improve IT service delivery agility to the more stable environment.
DevOps movement emphasizes tearing the boundaries between makers (Development) & caretakers (Operations) of IT services/products.
The document provides an introduction to the InterPlanetary File System (IPFS). Some key points:
- IPFS is a protocol and network for storing and sharing files in a distributed manner, addressing issues with traditional web hosting.
- It uses content addressing to uniquely identify each file, is distributed like BitTorrent, and provides versioning similar to Git.
- Files are stored as objects in a Merkle directed acyclic graph structure, and retrieved via a distributed hash table routing system and block exchange protocol.
- Naming of content is done through a self-certifying naming system where node IDs map to hashes stored in the distributed hash table.
Video and slides synchronized, mp3 and slide download available at URL http://bit.ly/1RJcfss.
Juan Batiz-Benet makes a short intro of IPFS (the InterPlanetary File System), a new hypermedia distribution protocol, addressed by content and identities. He also discusses the IPLD data model and example data structures (unixfs, keychain, post). Filmed at qconsf.com.
Juan Batiz-Benet is an Independent Scientist.
Tupperware: Containerized Deployment at FBDocker, Inc.
Tupperware is Facebook's system for containerized deployment of services at scale. It handles provisioning machines, distributing binaries, monitoring processes, and failover to ensure services run smoothly in production. Engineers focus on application logic rather than deployment details. Tupperware uses Linux containers to isolate over 300,000 processes across 15,000+ services running on thousands of machines. It incorporates features like service discovery, logging, resource limits, and automated rollouts to efficiently manage infrastructure. Lessons learned include releasing often, using canaries for rollouts, and providing sane defaults to reduce user burden.
This document provides an overview of the Apache James email server project. It discusses James' support for common email protocols like SMTP, IMAP, and the newer JMAP standard. It also describes James' architecture, including its use of mailets and processors to customize email processing. The document recommends James for its flexibility, extensibility, and support for observability through structured logs and metrics.
DevOps, sibling of Agile is born of the need to improve IT service delivery agility to the more stable environment.
DevOps movement emphasizes tearing the boundaries between makers (Development) & caretakers (Operations) of IT services/products.
The document provides an introduction to the InterPlanetary File System (IPFS). Some key points:
- IPFS is a protocol and network for storing and sharing files in a distributed manner, addressing issues with traditional web hosting.
- It uses content addressing to uniquely identify each file, is distributed like BitTorrent, and provides versioning similar to Git.
- Files are stored as objects in a Merkle directed acyclic graph structure, and retrieved via a distributed hash table routing system and block exchange protocol.
- Naming of content is done through a self-certifying naming system where node IDs map to hashes stored in the distributed hash table.
Video and slides synchronized, mp3 and slide download available at URL http://bit.ly/1RJcfss.
Juan Batiz-Benet makes a short intro of IPFS (the InterPlanetary File System), a new hypermedia distribution protocol, addressed by content and identities. He also discusses the IPLD data model and example data structures (unixfs, keychain, post). Filmed at qconsf.com.
Juan Batiz-Benet is an Independent Scientist.
Tupperware: Containerized Deployment at FBDocker, Inc.
Tupperware is Facebook's system for containerized deployment of services at scale. It handles provisioning machines, distributing binaries, monitoring processes, and failover to ensure services run smoothly in production. Engineers focus on application logic rather than deployment details. Tupperware uses Linux containers to isolate over 300,000 processes across 15,000+ services running on thousands of machines. It incorporates features like service discovery, logging, resource limits, and automated rollouts to efficiently manage infrastructure. Lessons learned include releasing often, using canaries for rollouts, and providing sane defaults to reduce user burden.
This document provides an overview of the Apache James email server project. It discusses James' support for common email protocols like SMTP, IMAP, and the newer JMAP standard. It also describes James' architecture, including its use of mailets and processors to customize email processing. The document recommends James for its flexibility, extensibility, and support for observability through structured logs and metrics.
1) Kubernetes is an open-source system for managing containerized applications and services across multiple hosts. It was created by Google in 2014 to automate deployment, scaling, and operations of application containers.
2) Kubernetes allows for automatic deployment and scaling of applications. It makes applications portable and lightweight by running them in containers.
3) The document provides an overview of key Kubernetes concepts including pods, replication controllers, and services. Pods are the smallest deployable units that can contain one or more containers which share resources. Replication controllers ensure a specified number of pod replicas are running. Services define a policy to access pods through labels.
The Open vSwitch kernel datapath may have flows offloaded to hardware using the TC Flower classifier and related actions. This is a powerful mechanism to both increase throughput and reduce CPU utilisation. This presentation will give an overview of the evolution of this offload mechanism: features available in OvS v2.8, those targeted at v2.9 and possible future directions.
Cilium - Network security for microservicesThomas Graf
The document discusses how BPF and XDP are revolutionizing network security and performance for microservices. BPF allows profiling, tracing, and running programs at the network driver level. It also enables highly performant networking functions like DDoS mitigation using XDP. Cilium uses BPF to provide layer 3-7 network security for microservices with policies based on endpoints, identities, and HTTP protocols. It integrates with Kubernetes to define network policies and secure microservice communication and APIs using eBPF programs for filtering and proxying.
This document provides an introduction to Docker. It begins by introducing the presenter and agenda. It then explains that containers are not virtual machines and discusses the differences in architecture and benefits. It covers the basic Docker workflow of building, shipping, and running containers. It discusses Docker concepts like images, containers, and registries. It demonstrates basic Docker commands. It shows how to define a Dockerfile and build an image. It discusses data persistence using volumes. It covers using Docker Compose to define and run multi-container applications and Docker Swarm for clustering. It provides recommendations for getting started with Docker at different levels.
Advantages and disadvantages of a monorepoIanDavidson56
A monorepo is a single repository that contains all code for a company, team, or product rather than having separate repositories. Key advantages of a monorepo include consistency across language versions, dependencies, and code style which makes upgrades and refactors easier. However, a monorepo also has disadvantages such as a more complex build process, inability to version internal libraries, and difficulty searching and managing the large codebase. While a monorepo provides benefits like easy code reuse and setup, the tradeoff is less flexibility and potential slowdowns from the large size.
Kubernetes Networking with Cilium - Deep DiveMichal Rostecki
Cilium is open source software for providing and transparently securing network connectivity and load balancing between application workloads such as application containers or processes. Cilium operates at Layer 3/4 to provide traditional networking and security services as well as Layer 7 to protect and secure use of modern application protocols such as HTTP, gRPC and Kafka. The foundation of Cilium is the new Linux kernel technology BPF which supports the dynamic insertion of BPF bytecode into the Linux kernel at various integration points. This presentation reveals the secrets of Kubernetes networking and gives you a deep dive into Cilium and why it is awesome!
Software Defined Datacenter with ProxmoxGLC Networks
Webinar topic: Software Defined Datacenter with Proxmox
Presenter: Achmad Mardiansyah
In this webinar series, We are discussing Software Defined Datacenter with Proxmox
Please share your feedback or webinar ideas here: http://bit.ly/glcfeedback
Check our schedule for future events: https://www.glcnetworks.com/en/schedule/
Follow our social media for updates: Facebook, Instagram, YouTube Channel, and telegram
Recording available on Youtube
https://youtu.be/X9MZDSDdYMI
Platform Engineering for the Modern Oracle WorldSimon Haslam
DevOps has become the de facto approach for custom software delivery. Yet, if automation is claimed to be the answer to all ills, why do many organisations struggle to implement it well? This session reflects on experiences from the last decade or so of provisioning projects, highlighting lessons (and one or two regrets!) and considers how organisations building custom software should focus their Oracle platform engineering efforts to deliver better software to users, faster.
DevOps is a software development method which is all about working together between Developers and IT Professionals. This presentation gives you an introduction to DevOps.
This document discusses monorepos, which are repositories that contain the code for multiple projects. Some benefits of monorepos include simplified dependency management, easier code sharing between projects, and having a single place to manage issues. Potential downsides include that the codebase can appear more intimidating and larger repositories may face performance issues. Several monorepo solutions are mentioned, including Buck, Bazel, Pants, and Lerna, each suited for different languages and project sizes. Lerna terminology and an introductory example are also covered.
***** DevOps Masters Program : https://www.edureka.co/masters-program/devops-engineer-training *****
This DevOps Docker Commands tutorial ( Docker Tutorial Blog Series: https://goo.gl/z93Ed1 ) will introduce you to the most commonly used Docker commands. The Hands-On session is performed on an Ubuntu-64 bit machine in which Docker is installed.
To learn how Docker can be used to integrate multiple DevOps tools, watch the video titled 'DevOps Tools', by clicking this link: https://goo.gl/up9iwd
This document discusses DevSecOps, including what it is, why it is needed, and how to implement it. DevSecOps aims to integrate security into development tools and processes to promote a "secure by default" culture. It is needed because traditional security approaches cannot keep up with the rapid pace of DevOps. Implementing DevSecOps involves automating security checks and tests into the development pipeline and promoting collaboration between development, security, and operations teams. The document provides examples of tools that can be used and case studies of DevSecOps implementations.
DVC - Git-like Data Version Control for Machine Learning projectsFrancesco Casalegno
DVC is an open-source tool for versioning datasets, artifacts, and models in Machine Learning projects.
This extremely powerful tool allows you to leverage an intuitive git-like interface to seamlessly
1. track datasets version updates
2. have reproducible and sharable machine learning pipelines (e.g. model training)
3. compare model performance scores
4. integrate your data and model versioning with git
5. deploy the desired version of your trained models
This document discusses different types of probes in Kubernetes including liveness, readiness, and startup probes. Liveness probes check if a container is running, readiness probes check if a container is ready to receive traffic, and startup probes delay liveness/readiness checks until startup is complete. It provides examples of defining each type of probe using commands, HTTP GET requests, and TCP checks. It also describes configuring probe parameters like initial delays, timeouts, success/failure thresholds.
Présentation du concept DevOps lors du meetup "Integration continue et DevOps" organisé par GDG Antananarivo et Bocasay
(Samedi 19 Janvier 2019, Workshop Idea Center, Antananarivo, Madagasacar)
1) Kubernetes is an open-source system for managing containerized applications and services across multiple hosts. It was created by Google in 2014 to automate deployment, scaling, and operations of application containers.
2) Kubernetes allows for automatic deployment and scaling of applications. It makes applications portable and lightweight by running them in containers.
3) The document provides an overview of key Kubernetes concepts including pods, replication controllers, and services. Pods are the smallest deployable units that can contain one or more containers which share resources. Replication controllers ensure a specified number of pod replicas are running. Services define a policy to access pods through labels.
The Open vSwitch kernel datapath may have flows offloaded to hardware using the TC Flower classifier and related actions. This is a powerful mechanism to both increase throughput and reduce CPU utilisation. This presentation will give an overview of the evolution of this offload mechanism: features available in OvS v2.8, those targeted at v2.9 and possible future directions.
Cilium - Network security for microservicesThomas Graf
The document discusses how BPF and XDP are revolutionizing network security and performance for microservices. BPF allows profiling, tracing, and running programs at the network driver level. It also enables highly performant networking functions like DDoS mitigation using XDP. Cilium uses BPF to provide layer 3-7 network security for microservices with policies based on endpoints, identities, and HTTP protocols. It integrates with Kubernetes to define network policies and secure microservice communication and APIs using eBPF programs for filtering and proxying.
This document provides an introduction to Docker. It begins by introducing the presenter and agenda. It then explains that containers are not virtual machines and discusses the differences in architecture and benefits. It covers the basic Docker workflow of building, shipping, and running containers. It discusses Docker concepts like images, containers, and registries. It demonstrates basic Docker commands. It shows how to define a Dockerfile and build an image. It discusses data persistence using volumes. It covers using Docker Compose to define and run multi-container applications and Docker Swarm for clustering. It provides recommendations for getting started with Docker at different levels.
Advantages and disadvantages of a monorepoIanDavidson56
A monorepo is a single repository that contains all code for a company, team, or product rather than having separate repositories. Key advantages of a monorepo include consistency across language versions, dependencies, and code style which makes upgrades and refactors easier. However, a monorepo also has disadvantages such as a more complex build process, inability to version internal libraries, and difficulty searching and managing the large codebase. While a monorepo provides benefits like easy code reuse and setup, the tradeoff is less flexibility and potential slowdowns from the large size.
Kubernetes Networking with Cilium - Deep DiveMichal Rostecki
Cilium is open source software for providing and transparently securing network connectivity and load balancing between application workloads such as application containers or processes. Cilium operates at Layer 3/4 to provide traditional networking and security services as well as Layer 7 to protect and secure use of modern application protocols such as HTTP, gRPC and Kafka. The foundation of Cilium is the new Linux kernel technology BPF which supports the dynamic insertion of BPF bytecode into the Linux kernel at various integration points. This presentation reveals the secrets of Kubernetes networking and gives you a deep dive into Cilium and why it is awesome!
Software Defined Datacenter with ProxmoxGLC Networks
Webinar topic: Software Defined Datacenter with Proxmox
Presenter: Achmad Mardiansyah
In this webinar series, We are discussing Software Defined Datacenter with Proxmox
Please share your feedback or webinar ideas here: http://bit.ly/glcfeedback
Check our schedule for future events: https://www.glcnetworks.com/en/schedule/
Follow our social media for updates: Facebook, Instagram, YouTube Channel, and telegram
Recording available on Youtube
https://youtu.be/X9MZDSDdYMI
Platform Engineering for the Modern Oracle WorldSimon Haslam
DevOps has become the de facto approach for custom software delivery. Yet, if automation is claimed to be the answer to all ills, why do many organisations struggle to implement it well? This session reflects on experiences from the last decade or so of provisioning projects, highlighting lessons (and one or two regrets!) and considers how organisations building custom software should focus their Oracle platform engineering efforts to deliver better software to users, faster.
DevOps is a software development method which is all about working together between Developers and IT Professionals. This presentation gives you an introduction to DevOps.
This document discusses monorepos, which are repositories that contain the code for multiple projects. Some benefits of monorepos include simplified dependency management, easier code sharing between projects, and having a single place to manage issues. Potential downsides include that the codebase can appear more intimidating and larger repositories may face performance issues. Several monorepo solutions are mentioned, including Buck, Bazel, Pants, and Lerna, each suited for different languages and project sizes. Lerna terminology and an introductory example are also covered.
***** DevOps Masters Program : https://www.edureka.co/masters-program/devops-engineer-training *****
This DevOps Docker Commands tutorial ( Docker Tutorial Blog Series: https://goo.gl/z93Ed1 ) will introduce you to the most commonly used Docker commands. The Hands-On session is performed on an Ubuntu-64 bit machine in which Docker is installed.
To learn how Docker can be used to integrate multiple DevOps tools, watch the video titled 'DevOps Tools', by clicking this link: https://goo.gl/up9iwd
This document discusses DevSecOps, including what it is, why it is needed, and how to implement it. DevSecOps aims to integrate security into development tools and processes to promote a "secure by default" culture. It is needed because traditional security approaches cannot keep up with the rapid pace of DevOps. Implementing DevSecOps involves automating security checks and tests into the development pipeline and promoting collaboration between development, security, and operations teams. The document provides examples of tools that can be used and case studies of DevSecOps implementations.
DVC - Git-like Data Version Control for Machine Learning projectsFrancesco Casalegno
DVC is an open-source tool for versioning datasets, artifacts, and models in Machine Learning projects.
This extremely powerful tool allows you to leverage an intuitive git-like interface to seamlessly
1. track datasets version updates
2. have reproducible and sharable machine learning pipelines (e.g. model training)
3. compare model performance scores
4. integrate your data and model versioning with git
5. deploy the desired version of your trained models
This document discusses different types of probes in Kubernetes including liveness, readiness, and startup probes. Liveness probes check if a container is running, readiness probes check if a container is ready to receive traffic, and startup probes delay liveness/readiness checks until startup is complete. It provides examples of defining each type of probe using commands, HTTP GET requests, and TCP checks. It also describes configuring probe parameters like initial delays, timeouts, success/failure thresholds.
Présentation du concept DevOps lors du meetup "Integration continue et DevOps" organisé par GDG Antananarivo et Bocasay
(Samedi 19 Janvier 2019, Workshop Idea Center, Antananarivo, Madagasacar)
이 키노트에서는 기초적인 리눅스의 사용법에 대해 알려줍니다.
리눅스의 주 사용 용도인 date, cal 부터 git에 USB 디바이스 확인하는 명령어까지 소개합니다.
데비안 리눅스, 우분투 18.04 버전 기준으로 설명되었습니다. 또한 본 내용에서 특정 기업 명이나 특정 상표가 포함되었을 가능성이 있습니다. 하지만 이런 내용에는 고의성이 없음을 밝힙니다.
3. IPFS
• InterPlanetary File System
– IPFS는 분산형 웹입니다. (https://ipfs.io/)
• 웹을 더 빠르고 안전하며 개방성있게 만들어줄 P2P hypermedia 프로토콜입니다.
– IPFS는 P2P 분산 파일 시스템이며, 본 기술을 통해 모든 컴퓨팅 기기들이 동일한 파일 시스템을
가질 수 있도록 연결할 수 있습니다. 어떤 측면에서는 IPFS가 World Wide Web과 비슷하기도
합니다. 하지만 IPFS는 하나의 Git repository 내에 존재하는 객체들을 관리 및 교환하기 위한
단일 BitTorrent Swarm으로 생각해 볼 수 있습니다.
다.(https://en.wikipedia.org/wiki/InterPlanetary_File_System)
– Wiki & git: https://github.com/ipfs/ipfs
– 백서 : IPFS - Content Addressed, Versioned, P2P File System (draft 3)
– 관련 영상 : IPFS: The Distributed, Permanent Web at Stanford
3
8. 네이버에 접속해보자
8
• 질문 2
– 버튼만 눌렀는데 위에 URL은 왜 바뀌지?
– 얘는 뭐가 이렇게 길게 적혀있지?
– 어떻게 웹툰을 띄워주는 거지?
9. 기술적 배경
9
https://ruslanspivak.com/lsbaws-part1/
• World wide Web
– URL
– HTTP
– Client Server model
• 웹 브라우저
• 웹 서버
“어디”로 가서
“무엇”을 찾고
“어떻게“ 하고싶다.
http://comic.naver.com/webtoon/detail.nhn?titleId=20853&no=1135&weekday=tue
“어떻게”
http(80 port)
프로토콜로
요청하는데
“어디”
Comic.naver.com
(“111.111.111.111”)
에 접속할거고
“무엇“
“webtoon/…”에
해당 하는
파일을 찾으면 돼
13. 기술적 배경
13
• 별로일지도..
– 웹 서버가 죽으면?
– 웹 서버로 가는 네트워크가 끊어진다면?
– 웹 서버에 요청하는 client가 너무 많아진다면?
– 웹 서버가 파일을 손실한다면?
– 웹 서버에 요청한 파일의 크기가 항상 매우 크다면?
• 이를 해결할 수 있는 솔루션은
– Petabyte 급의 데이터 셋을 분산시켜 호스팅,
– 조직 간에 대규모 데이터 컴퓨팅 지원,
– 대용량 고화질의 on-demand 혹은 실시간 미디어 스트리밍 지원,
– 대용량의 데이터셋에 대한 versioning과 linking 을 지원,
– 사고로 인한 중요한 파일 손실 문제를 방지
할 수 있어야 한다.
14. Contents
1. IPFS
2. 전통적인 웹 기술
3. 구조 및 특장점
– Architecture Overview
– Naming & Merkle DAG
– Exchange & Routing
– 특장점 정리
4. Application
14
15. IPFS 아키텍처 오버뷰
15
Server PC/cluster
http
Web server
program
Internal
File system
Web
browser
Bitswap or http
Browser
program
IPFS
IPFS
program
Merkle
DAG
IPFS node
client
client
DHT
IPFS
program
Merkle
DAG
IPFS node
DHT
IPFS
program
Merkle
DAG
IPFS node
DHT
IPFS
program
Merkle
DAG
IPFS node
DHT
Location-addressed
“어디”에 가서
“무엇”를 찾아서
보내줘
Content-addressed
“무엇”이 “어디”에
있는지 찾아서
보내줘
16. IPFS 아키텍처 오버뷰
16
• IPFS는 앞서 살펴본 기존의 웹 서비스가 가진 문제를 해결
하기 위한 구조를 갖고있음
– IPFS는 모듈 프로토콜들을 계층화한 구조.
– 각 layer들은 다양한 모듈들을 지원 하며 모듈별로 implementation이
모두 다를 수 있음
– IPFS의 spec은
• 각 layer의 역햘
• 각 layer에서 구현 가능한 implementation
• 각 layer 간에 interface로 나누어 볼 수 있음
• IPFS의 5 layer
– naming - a self-certifying PKI namespace (IPNS)
• “무엇”은 어떻게 정의되는가?
– merkleDAG - data structure format
• “무엇”을 어떻게 저장하는가?
– routing - locating peers and objects
• “무엇”이 “어디”에 있는지 어떻게 아는가?
– exchange - block transport and replication
• “무엇”을 어떻게 교환할 것인가?
– network - establishing connections between peers
• 위의 모든 것들을 위한 모든 연결은 어떻게 수립되는가?
17. IPFS 아키텍처 오버뷰
17
• 들어가기에 앞서
– BitTorrent의 동작과정과 비교
• 그림 출처 및 자세한 구동방식:
https://manhdh.blog.me/220038243469
• IPFS도 이와 유사한 동작 과정을 가짐
naming
exchange
routing
Piece
(= MerkleDAG)
• naming - “무엇”은 어떻게 정의되는가?
• routing - “무엇”이 “어디”에 있는지 어떻게 아는가?
• merkleDAG - “무엇”을 어떻게 저장하는가?
• exchange - “무엇”을 어떻게 교환할 것인가?
• network - 위의 모든 것들을 위한 모든 연결은 어떻게 수립되는가?
Network
- TCP/UDP, …
18. Merkle DAG
18
• IPFS Objects
• Demo
– D1 : https://ipfs.io/ipfs/QmRCJXG7HSmprrYwDrK1GctXHgbV7EYpVcJPQPwevoQuqF)
– D2 : https://youtu.be/pap18o5Ntxw?t=5m26s
• 기타 참고 자료
– https://ipfs.io/ipfs/QmNZiPk974vDsPmQii3YbrMKfi12KTSNM7XMiYyiea4VYZ/example#/ipfs/QmP8WUPq2braGQ8iZjJ6w9di6mzgoTWyRLayrMRjjDoyGr/graph
md/README.md
– https://cnsteem.com/kr/@kblock/8-ipfs-interplanetary-file-system-1-http-web-ipfs-web
demo
├── cat.jpg
└── test
├── bar
├── baz
│ ├── b
│ └── f
└── foo
19. Merkle DAG
19
• IPFS Objects
– IPFS는 기본적으로 IPFS Object를 검색하고 공유하기 위한
P2P 시스템
– IPFS Object 는 두 개의 필드로 이뤄진 자료 구조
• Data—사이즈가 265kB 미만인 unstructured
blob(binary large objects)
• Links—Link structures의 배열. 각 링크들은 다른
IPFS object를 가리킴
– A Link structure는 3개의 필드를 가짐
• Name—링크의 이름
• Hash—링크된 IPFS object 의 해시값
• Size— 링크된 IPFS object를 포함하여 이후 링크된
IPFS object들의 누적 사이즈
– 객체의 ID역할을 하는 hash값은 항상 “Qm”으로 시작
• multihash
– Multihash 결과값의 가장 앞 2byte가 해시 함수와 해시
값의 길이를 명시하고 있는 구조
https://medium.com/@ConsenSys/an-introduction-to-ipfs-9bba4860abd0
20. Merkle DAG
20
• IPFS Objects
Small Files (> 256KB)
• 원본 파일의 내용만을 사용해서 hash 값 생성
• 원본 파일의 이름은 IPFS object에 영향을 주지 않
음
• 원본 데이터는
• binary format으로 data 필드에 저장
• links array 필드는 비어있음
https://medium.com/@ConsenSys/an-introduction-to-ipfs-9bba4860abd0
21. Merkle DAG
21
• IPFS Objects
Large Files (> 256 kB)
• A large file is represented by
• a list of links to file chunks that are < 256 kB, only
minimal Data specifying that this object represents a
large file.
• The links to the file chunks have empty strings as
names.
https://medium.com/@ConsenSys/an-introduction-to-ipfs-9bba4860abd0
22. Merkle DAG
22
• IPFS Objects
Directory
Structures
• The names of the links are the names
of the files and directories.
• automatic deduplication of the file
containing Hello World!n, the data in
this file is only stored in one logical
place in IPFS
• seamlessly follow the directory link names to traverse the file system:
(a) Would first fetch + resolve Qma3qbWDGJc6he3syLUTaRkJD3vAq1k5569tNMbUtjAZjf
(b) Then look into the links of (a), find the hash for my_dir, and resolve it
(c) Then look into the links of (b), find the hash for my_file.txt, and resolve it
https://medium.com/@ConsenSys/an-introduction-to-ipfs-9bba4860abd0
23. Merkle DAG
23
• IPFS Objects
• Git commit Objects
– https://www.git-scm.com/book/en/v2/Git-
Internals-Git-Objects#Commit-Objects
Versioned File Systems on IPFS
https://medium.com/@ConsenSys/an-introduction-to-ipfs-9bba4860abd0
24. Naming
24
• IPFS is mostly concerned with content-addressed data, which by nature is
immutable:
– changing an object would change its hash -- and thus its address, making it
a different object altogether. (Think of it as a copy-on-write filesystem).
• The IPFS naming layer -- or IPNS -- handles the creation of:
– mutable pointers to objects
– human-readable names
25. Routing
25
• Routing
– The IPFS Routing layer serves two important purposes:
• peer routing -- to find other nodes
• content routing -- to find data published to ipfs
– The Routing Sytem is an interface that is satisfied by various kinds of implementations. For
example:
• DHTs: perhaps the most common, DHTs can be used to create a semi-persistent routing record
distributed cache in the network.
• mdns: used to find services advertised locally. mdns (or dnssd) is a local discovery service. We will
be using it.
• snr: supernode routing is a delegated routing system: it delegates to one of a set of supernodes.
This is roughly like federated routing.
• dns: ipfs routing could even happen over dns.
27. Exchange
27
• Exchange
– The IPFS Block Exchange takes care of negotiating bulk data transfers.
– Once nodes know each other -- and are connected -- the exchange protocols govern how
the transfer of content-addressed blocks occurs.
– The Block Exchange is an interface that is satisfied by various kinds of implementations. For
example:
• Bitswap: our main protocol for exchanging data. It is a generalization of BitTorrent to work with
arbitrary (and not known apriori) DAGs.
• HTTP: a simple exchange can be implemented with HTTP clients and servers.
– https://www.netmanias.com/ko/?m=view&id=techdocs&no=10645
• 사이트 가입 후 3, 4번 아티클 참조
28. 특장점 정리
28
• IPFS is a protocol:
– defines a content-addressed file system
– coordinates content delivery
– combines Kademlia + BitTorrent + Git
• IPFS is a filesystem:
– has directories and files
– mountable filesystem (via FUSE)
• IPFS is a web:
– can be used to view documents like the web
– files accessible via HTTP at
https://ipfs.io/<path>
– browsers or extensions can learn to use the
ipfs:// URL or dweb:/ipfs/ URI schemes directly
– hash-addressed content guarantees authenticity
• IPFS is modular:
– connection layer over any network protocol
– routing layer
– uses a routing layer DHT (kademlia/coral)
– uses a path-based naming service
– uses bittorrent-inspired block exchange
• IPFS uses crypto:
– cryptographic-hash content addressing
– block-level deduplication
– file integrity + versioning
– filesystem-level encryption + signing support
• IPFS is p2p:
– worldwide peer-to-peer file transfers
– completely decentralized architecture
– no central point of failure
• IPFS is a cdn:
– add a file to the filesystem locally, and it's now available to
the world
– caching-friendly (content-hash naming)
– bittorrent-based bandwidth distribution
• IPFS has a name service:
– IPNS, an SFS inspired name system
– global namespace based on PKI
– serves to build trust chains
– compatible with other NSes
– can map DNS, .onion, .bit, etc to IPNS
https://github.com/ipfs/ipfs#ipfs-papers
29. Contents
1. IPFS
2. 전통적인 웹 기술
3. 구조 및 특장점
4. Application
– Sharing File & Web
– Infrastructure Of Decentralized App
– Filecoin
– Etc
29
30. Sharing File & Web
• Securely sharing files
– https://medium.com/@mycoralhealth/learn-to-securely-share-files-on-the-blockchain-with-
ipfs-219ee47df54c
30
Simple file Sharing using IPFS Secure file Sharing using IPFS
31. Infrastructure Of Decentralized App
31
https://medium.com/@mycoralhealth/learn-to-securely-share-files-on-the-blockchain-with-ipfs-219ee47df54c
Ethereum DApp
https://www.slideshare.net/BigchainDB/blockchain-beyond-finance-cronos-groep-jan-17-2017
Blockchain Coupled with IPFS
https://medium.com/@ConsenSys/an-introduction-to-ipfs-9bba4860abd0
https://steemit.com/ipfs/@admiboss/simple-decentralized-app-architecture
32. Filecoin
32
• Filecoin: A Decentralized Storage Network
– Filecoin is a decentralized storage network that turns cloud
storage into an algorithmic market
– Filecoin works as an incentive layer on top of IPFS [1],
which can provide storage infrastructure for any data.
– 백서: https://filecoin.io/filecoin.pdf
– 그림 출처 및 참고용 자료: https://coincentral.com/filecoin-
beginners-guide-largest-ever-ico/
33. 기타 application
• Outline the Various Applications of IPFS, with Use Cases and Dependencies
– https://github.com/ipfs/ipfs/issues/230
33