์ํฐํ๋ผ์ด์ฆ๋ฅผ ์ํ ๋ธ๋ก์ฒด์ธ ํ๋ซํผ
์๋ ํ์ธ์, ๋ ์ ์ฌ๋ฌ๋ถ, ์ ์ด๋ฆ์ Nikolai Nefedov์ ๋๋ค. ์ ๋ IBM ๊ธฐ์ ์ ๋ฌธ๊ฐ์ ๋๋ค. ์ด ๊ธฐ์ฌ์์๋ ๋ธ๋ก์ฒด์ธ ํ๋ซํผ์ธ Hyperledger Fabric์ ์๊ฐํ๊ณ ์ ํฉ๋๋ค. ์ด ํ๋ซํผ์ ์ํฐํ๋ผ์ด์ฆ๊ธ ๋น์ฆ๋์ค ์ ํ๋ฆฌ์ผ์ด์ (์ํฐํ๋ผ์ด์ฆ ํด๋์ค)์ ๊ตฌ์ถํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค. ๊ธฐ์ฌ์ ์์ค์ IT ๊ธฐ์ ์ ๋ํ ๊ธฐ๋ณธ ์ง์์ ๊ฐ์ถ ์ค๋น๋์ง ์์ ๋ ์๋ฅผ ์ํ ๊ฒ์ ๋๋ค.
Hyperledger Fabric์ Linux Foundation์ ์ปจ์์์์ธ Hyperledger ์คํ ์์ค ํ๋ก์ ํธ์ ๋ถ๊ธฐ ์ค ํ๋์ธ ์คํ ์์ค ํ๋ก์ ํธ์ ๋๋ค. Hyperledger Fabric์ ์๋ Digital Assets์ IBM์์ ์ถ์ํ์ต๋๋ค. Hyperledger Fabric ํ๋ซํผ์ ์ฃผ์ ๊ธฐ๋ฅ์ ๊ธฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค์ ์ ๋ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ํ๋ซํผ์ ๋น ๋ฅธ ๊ฑฐ๋ ์๋์ ๋ฎ์ ๋น์ฉ, ๋ชจ๋ ์ฐธ๊ฐ์์ ์๋ณ์ ๊ณ ๋ คํ์ฌ ๊ฐ๋ฐ๋์์ต๋๋ค. ์ด๋ฌํ ์ด์ ์ ๊ฑฐ๋ ํ์ธ ์๋น์ค๋ฅผ ๋ถ๋ฆฌํ๊ณ ๋ถ์ฐ ๋ ์ง์คํธ๋ฆฌ์ ์๋ก์ด ๋ธ๋ก์ ํ์ฑํ๊ณ ์ธ์ฆ ๊ธฐ๊ด์ ์ฌ์ฉํ๊ณ ์ฐธ์ฌ์๋ฅผ ์น์ธํจ์ผ๋ก์จ ๋ฌ์ฑ๋ฉ๋๋ค.
๋ด ๊ธฐ์ฌ๋ ๋ํ์ ์ ํํ๋ ํ์๋ค์ ๋ฑ๋กํ๊ธฐ ์ํ ์์คํ ํ๋ก์ ํธ๋ฅผ ์ค๋ช ํ๋ Hyperledger Fabric์ ๋ํ ์ผ๋ จ์ ๊ธฐ์ฌ ์ค ์ผ๋ถ์ ๋๋ค.
Hyperledger Fabric์ ์ผ๋ฐ ์ํคํ ์ฒ
Hyperledger Fabric์ ๋คํธ์ํฌ ๋ ธ๋์ ์ค์น๋ ๋ค์ํ ๊ธฐ๋ฅ ๊ตฌ์ฑ ์์๋ก ๊ตฌ์ฑ๋ ๋ถ์ฐํ ๋ธ๋ก์ฒด์ธ ๋คํธ์ํฌ์ ๋๋ค. Hyperledger Fabric ๊ตฌ์ฑ ์์๋ DockerHub์์ ๋ฌด๋ฃ๋ก ๋ค์ด๋ก๋ํ ์ ์๋ Docker ์ปจํ ์ด๋์ ๋๋ค. Hyperledger Fabric์ Kubernetes ํ๊ฒฝ์์๋ ์คํํ ์ ์์ต๋๋ค.
์ค๋งํธ ๊ณ์ฝ(Hyperledger Fabric ์ปจํ ์คํธ์ ์ฒด์ธ์ฝ๋)์ ์์ฑํ๊ธฐ ์ํด Golang์ ์ฌ์ฉํ์ต๋๋ค(Hyperledger Fabric์ ์ฌ์ฉํ๋ฉด ๋ค๋ฅธ ์ธ์ด๋ฅผ ์ฌ์ฉํ ์ ์์ง๋ง). ๋ง์ถคํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๊ธฐ ์ํด ์ฐ๋ฆฌ์ ๊ฒฝ์ฐ Node.js๋ฅผ ํด๋น Hyperledger Fabric SDK์ ํจ๊ป ์ฌ์ฉํ์ต๋๋ค.
๋ ธ๋๋ ๋น์ฆ๋์ค ๋ก์ง(์ค๋งํธ ๊ณ์ฝ) - ์ฒด์ธ์ฝ๋๋ฅผ ์คํํ๊ณ ๋ถ์ฐ ๋ ์ง์คํธ๋ฆฌ(์์ฅ ๋ฐ์ดํฐ)์ ์ํ๋ฅผ ์ ์ฅํ๋ฉฐ ๊ธฐํ ํ๋ซํผ ์์คํ ์๋น์ค๋ฅผ ์คํํฉ๋๋ค. ๋ ธ๋๋ ๋ ผ๋ฆฌ์ ๋จ์์ผ ๋ฟ์ด๋ฉฐ ๋์ผํ ๋ฌผ๋ฆฌ์ ์๋ฒ์ ์๋ก ๋ค๋ฅธ ๋ ธ๋๊ฐ ์กด์ฌํ ์ ์์ต๋๋ค. ํจ์ฌ ๋ ์ค์ํ ๊ฒ์ ๋ ธ๋๊ฐ ๊ทธ๋ฃนํ๋๋ ๋ฐฉ์(์ ๋ขฐํ ์ ์๋ ๋๋ฉ์ธ)๊ณผ ์ฐ๊ฒฐ๋ ๋ธ๋ก์ฒด์ธ ๋คํธ์ํฌ์ ๊ธฐ๋ฅ์ ๋๋ค.
์ผ๋ฐ์ ์ธ ์ํคํ ์ฒ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ทธ๋ฆผ 1. Hyperledger Fabric์ ์ผ๋ฐ ์ํคํ ์ฒ
์ฌ์ฉ์ ์ ํ๋ฆฌ์ผ์ด์ (Submitting Client)์ ์ฌ์ฉ์๊ฐ ๋ธ๋ก์ฒด์ธ ๋คํธ์ํฌ์์ ์์ ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ค. ์๋ํ๋ ค๋ฉด ์ธ์ฆ์ ๊ฑฐ์ณ ๋คํธ์ํฌ์์ ๋ค์ํ ์ข ๋ฅ์ ์์ ์ ๋ํ ์ ์ ํ ๊ถํ์ด ์์ด์ผ ํฉ๋๋ค.
ํผ์ด(๋ ธ๋)๋ ์ฌ๋ฌ ๊ฐ์ง ์ญํ ์ ํฉ๋๋ค.
- Endorsing Peer๋ ํธ๋์ญ์ ์คํ์ ์๋ฎฌ๋ ์ด์ ํ๋ ๋ ธ๋์ ๋๋ค(์ค๋งํธ ๊ณ์ฝ ์ฝ๋ ์คํ). ์ค๋งํธ ๊ณ์ฝ์ ๊ฒ์ฆํ๊ณ ์คํํ ํ ๋ ธ๋๋ ์คํ ๊ฒฐ๊ณผ๋ฅผ ์๋ช ๊ณผ ํจ๊ป ํด๋ผ์ด์ธํธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐํํฉ๋๋ค.
- Ordering Service๋ ์ฌ๋ฌ ๋ ธ๋์ ๋ถ์ฐ ์๋น์ค๋ก ๋ถ์ฐ ์์ฅ์ ์๋ก์ด ๋ธ๋ก์ ํ์ฑํ๊ณ ํธ๋์ญ์ ์คํ์ ์ํ ์ํ์ค๋ฅผ ์์ฑํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. Ordering Service๋ ๋ ์ง์คํธ๋ฆฌ์ ์ ๋ธ๋ก์ ์ถ๊ฐํ์ง ์์ต๋๋ค(๋ ๋์ ์ฑ๋ฅ์ ์ํด Committing Peers๋ก ์ด๋๋จ).
- ์ปค๋ฏธํ ํผ์ด - ๋ถ์ฐ ๋ ์ง์คํธ๋ฆฌ๋ฅผ ํฌํจํ๊ณ ๋ ์ง์คํธ๋ฆฌ์ ์ ๋ธ๋ก์ ์ถ๊ฐํ๋ ๋ ธ๋(์ฃผ๋ฌธ ์๋น์ค์ ์ํด ํ์ฑ๋จ). ๋ชจ๋ ์ปค๋ฐ ํผ์ด์๋ ๋ถ์ฐ ์์ฅ์ ๋ก์ปฌ ๋ณต์ฌ๋ณธ์ด ํฌํจ๋ฉ๋๋ค. Committing Peer๋ ์ ๋ธ๋ก์ ๋ก์ปฌ์ ์ถ๊ฐํ๊ธฐ ์ ์ ์ ํจ์ฑ์ ์ํด ๋ธ๋ก ๋ด์ ๋ชจ๋ ํธ๋์ญ์ ์ ํ์ธํฉ๋๋ค.
๋ณด์ฆ ์ ์ฑ ์ ๊ฑฐ๋์ ์ ํจ์ฑ์ ํ์ธํ๊ธฐ ์ํ ์ ์ฑ ์ ๋๋ค. ์ด๋ฌํ ์ ์ฑ ์ ํธ๋์ญ์ ์ด ์ ํจํ ๊ฒ์ผ๋ก ์ธ์๋๊ธฐ ์ํด ์ค๋งํธ ๊ณ์ฝ์ ์คํํด์ผ ํ๋ ํ์ ๋ ธ๋ ์งํฉ์ ์ ์ํฉ๋๋ค.
๋ถ์ฐ ๋ ์ง์คํธ๋ฆฌ(Lerger)๋ WorlldState(State DataBase๋ผ๊ณ ๋ ํจ)์ BlockChain์ ๋ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
๋ธ๋ก์ฒด์ธ์ ๋ถ์ฐ ์์ฅ ๊ฐ์ฒด์ ๋ฐ์ํ ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ๊ธฐ๋ก์ ์ ์ฅํ๋ ๋ธ๋ก ์ฒด์ธ์ ๋๋ค.
WorlldState๋ ๋ชจ๋ ๋ถ์ฐ ๋ ์ง์คํธ๋ฆฌ ๊ฐ์ฒด์ ํ์ฌ(๊ทน๋จ) ๊ฐ์ ์ ์ฅํ๋ ๋ถ์ฐ ๋ ์ง์คํธ๋ฆฌ ๊ตฌ์ฑ ์์์ ๋๋ค.
WorldState๋ ๊ธฐ๋ณธ ๋ฒ์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋๋ค. LevelDB ๋๋ ๋ ๋ณต์กํ CouchDB๋ ํค-๊ฐ ์์ ํฌํจํฉ๋๋ค. ์: ์ด๋ฆ - Ivan, ์ฑ - Ivanov, ์์คํ ๋ฑ๋ก ๋ ์ง - 12.12.21/17.12.1961/XNUMX, ๋ ์ง ์ถ์ - XNUMX๋ XNUMX์ XNUMX์ผ ๋ฑ WorldState ๋ฐ ๋ถ์ฐ ์์ฅ์ ์ง์ ๋ ์ฑ๋์ ๋ชจ๋ ๊ตฌ์ฑ์์์ ์ผ๊ด์ฑ์ด ์์ด์ผ ํฉ๋๋ค.
Hyperledger Fabric์ ๋ชจ๋ ์ฐธ๊ฐ์๋ฅผ ์๊ณ ์ธ์ฆํ๋ ๋คํธ์ํฌ์ด๋ฏ๋ก ์ฌ๊ธฐ์๋ ์ ์ฉ ์ธ์ฆ ๊ธฐ๊ด์ธ CA(Certification Authority)๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. CA๋ X.509 ํ์ค ๋ฐ ๊ณต๊ฐ ํค ์ธํ๋ผ(PKI)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋ํฉ๋๋ค.
๋ฉค๋ฒ์ญ ์๋น์ค๋ ๊ฐ์ฒด๊ฐ ํน์ ์กฐ์ง ๋๋ ์ฑ๋์ ์ํ๋์ง ํ์์ด ํ์ธํ๋ ์๋น์ค์ ๋๋ค.
ํธ๋์ญ์
์ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ๋ถ์ฐ ์์ฅ์ ์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋กํ๋ ๊ฒ์
๋๋ค.
์ฑ๋ ๋๋ ์ค๋งํธ ๊ณ์ฝ ์์ฑ์ ์ํ ํธ๋์ญ์
๋ ์์ต๋๋ค. ํธ๋์ญ์
์ ์ฌ์ฉ์ ์ ํ๋ฆฌ์ผ์ด์
์ ์ํด ์์๋๊ณ ๋ถ์ฐ ์์ฅ์ ๋ํ ์ฐ๊ธฐ๋ก ๋๋ฉ๋๋ค.
์ฑ๋(Channel)์ ๋ธ๋ก์ฒด์ธ ๋คํธ์ํฌ์์ ๋ ์ด์์ ์ฐธ๊ฐ์๋ก ๊ตฌ์ฑ๋ ํ์๋ ์๋ธ๋ท์ผ๋ก, ์ ํ์ ์ด์ง๋ง ์๋ ค์ง ์ฐธ๊ฐ์ ๋ฒ์ ๋ด์์ ๊ธฐ๋ฐ ๊ฑฐ๋๋ฅผ ์ํํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. ์ฑ๋์ ์ฐธ๊ฐ์, ๋ถ์ฐ ์์ฅ, ์ค๋งํธ ๊ณ์ฝ, ์ฃผ๋ฌธ ์๋น์ค, WorldState์ ์ํด ๊ฒฐ์ ๋ฉ๋๋ค. ๊ฐ ์ฑ๋ ๊ตฌ์ฑ์์ ์ฑ๋์ ์ก์ธ์คํ ์ ์๋ ๊ถํ์ด ์์ด์ผ ํ๋ฉฐ ๋ค์ํ ์ข ๋ฅ์ ๊ฑฐ๋๋ฅผ ์ํํ ์ ์๋ ๊ถํ์ด ์์ด์ผ ํฉ๋๋ค. ์น์ธ์ ๋ฉค๋ฒ์ญ ์๋น์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ํ๋ฉ๋๋ค.
์ผ๋ฐ์ ์ธ ํธ๋์ญ์ ์คํ ์๋๋ฆฌ์ค
๋ค์์ผ๋ก ์ฐ๋ฆฌ ํ๋ก์ ํธ์ ์๋ฅผ ์ฌ์ฉํ์ฌ ํธ๋์ญ์ ์ ์คํํ๋ ์ผ๋ฐ์ ์ธ ์๋๋ฆฌ์ค์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์ถ์ต๋๋ค.
๋ด๋ถ ํ๋ก์ ํธ์ ์ผํ์ผ๋ก ๋ํ์ ์ ํํ๋ ํ์์ ๋ฑ๋กํ๊ณ ๊ธฐ๋กํ๋๋ก ์ค๊ณ๋ Hyperledger Fabric ๋คํธ์ํฌ๋ฅผ ๋ง๋ค์์ต๋๋ค. ์ฐ๋ฆฌ์ ๋คํธ์ํฌ๋ ๋ํ A์ ๋ํ B๊ฐ ์์ ํ ๋ ์กฐ์ง์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ๊ฐ ์กฐ์ง์๋ ํด๋ผ์ด์ธํธ ์์ฉ ํ๋ก๊ทธ๋จ๊ณผ ์์ฒด Committing ๋ฐ Endorsing Peer๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ๋ํ ์ผ๋ฐ์ ์ธ ์ฃผ๋ฌธ ์๋น์ค, ํ์ ์๋น์ค ๋ฐ ์ธ์ฆ ๊ธฐ๊ด ์๋น์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
1) ๊ฑฐ๋ ๊ฐ์
Hyperledger Fabric SDK๋ฅผ ์ฌ์ฉํ๋ ์ฌ์ฉ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํธ๋์ญ์ ์์ฒญ์ ์์ํ๊ณ ์ค๋งํธ ๊ณ์ฝ์ ํตํด ๋ ธ๋์ ์์ฒญ์ ๋ณด๋ ๋๋ค. ์์ฒญ์ ๋ถ์ฐ ์์ฅ(Ledger)์์ ๋ณ๊ฒฝํ๊ฑฐ๋ ์ฝ์ ์ ์์ต๋๋ค. ๋ํ์ ํ๊ณ ์์คํ ์ ํ ์คํธ ๊ตฌ์ฑ์ ์๋ฅผ ๊ณ ๋ คํ๋ฉด ํด๋ผ์ด์ธํธ ์์ฉ ํ๋ก๊ทธ๋จ์ ํธ์ถ๋ ์ค๋งํธ ๊ณ์ฝ์ ๋ณด์ฆ ์ ์ฑ ์ ํฌํจ๋ ๋ํ A์ B์ ๋ ธ๋์ ํธ๋์ญ์ ์์ฒญ์ ๋ณด๋ ๋๋ค. ๋ ธ๋ A๋ ์ ์ ์์ ๋ฑ๋กํ๋ ๋ํ์ ์์นํ ๋ ธ๋์ด๊ณ , ๋ ธ๋ B๋ ๋ค๋ฅธ ๋ํ์ ์์นํ ๋ ธ๋์ ๋๋ค. ํธ๋์ญ์ ์ด ๋ถ์ฐ ์์ฅ์ ์ ์ฅ๋๊ธฐ ์ํด์๋ ๋น์ฆ๋์ค ๋ก์ง์ ๋ฐ๋ผ ํธ๋์ญ์ ์ ์น์ธํด์ผ ํ๋ ๋ชจ๋ ๋ ธ๋๊ฐ ๋์ผํ ๊ฒฐ๊ณผ๋ก ์ฑ๊ณต์ ์ผ๋ก ์ค๋งํธ ๊ณ์ฝ์ ์คํํด์ผ ํฉ๋๋ค. ๋ ธ๋ A์ ์ฌ์ฉ์ ์ ํ๋ฆฌ์ผ์ด์ ์ Hyperledger Fabric SDK ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ Endorsement ์ ์ฑ (์น์ธ ์ ์ฑ )์ ์์ ํ๊ณ ํธ๋์ญ์ ์์ฒญ์ ๋ณด๋ผ ๋ ธ๋๋ฅผ ์ฐพ์ต๋๋ค. ๋ถ์ฐ ์์ฅ์ ํน์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฑฐ๋ ์ฐ๊ธฐ ์ํด ํน์ ์ค๋งํธ ์ปจํธ๋ํธ(์ฒด์ธ์ฝ๋ ํจ์)๋ฅผ ํธ์ถ(ํธ์ถ)ํ๋ผ๋ ์์ฒญ์ ๋๋ค. ๊ธฐ์ ์ ์ผ๋ก ํด๋ผ์ด์ธํธ SDK๋ ํธ๋์ญ์ ๋งค๊ฐ๋ณ์๊ฐ ์๋ ๊ฐ์ฒด๋ฅผ ์ ๋ฌํ๋ API์ ํด๋น ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ณ ํด๋ผ์ด์ธํธ ์๋ช ์ ์ถ๊ฐํ๊ณ gRPC๋ฅผ ํตํด ํ๋กํ ์ฝ ๋ฒํผ๋ฅผ ํตํด ์ด ๋ฐ์ดํฐ๋ฅผ ์ ์ ํ ๋ ธ๋(๋ณด์ฆ ํผ์ด)๋ก ๋ณด๋ ๋๋ค.
๊ทธ๋ฆผ 2. ํธ๋์ญ์
๊ฐ์
2) ์ค๋งํธ ์ปจํธ๋ํธ ์คํ
ํธ๋์ญ์ ์ํ ์์ฒญ์ ๋ฐ์ ๋ ธ๋(Endorsing Peers)๋ ํด๋ผ์ด์ธํธ ์๋ช ์ ํ์ธํ๊ณ ๋ชจ๋ ๊ฒ์ด ์ ์์ด๋ฉด ์์ฒญ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ค๋งํธ ๊ณ์ฝ ์คํ ์๋ฎฌ๋ ์ด์ ์ ์คํํฉ๋๋ค(์ฒด์ธ์ฝ๋ ๊ธฐ๋ฅ). ์ด ๋ฐ์ดํฐ๋ก. ์ค๋งํธ ๊ณ์ฝ์ ๊ฑฐ๋์ ๋น์ฆ๋์ค ๋ ผ๋ฆฌ, ํน์ ์กฐ๊ฑด ๋ฐ ์ง์นจ ์งํฉ์ ๋๋ค(์ด ๊ฒฝ์ฐ ํ์ ์ํ, ์ ์ ์์ธ์ง, ์ด๋ฏธ ๋ฑ๋ก๋์๋์ง, ๋์ด ํ์ธ ๋ฑ). ์ค๋งํธ ๊ณ์ฝ์ ์คํํ๋ ค๋ฉด WorldState์ ๋ฐ์ดํฐ๋ ํ์ํฉ๋๋ค. Endorsing ํผ์ด์ ๋ํ ์ค๋งํธ ๊ณ์ฝ ์๋ฎฌ๋ ์ด์ ์ ๊ฒฐ๊ณผ๋ก ๋ ๊ฐ์ ๋ฐ์ดํฐ ์ธํธ(์ฝ๊ธฐ ์ธํธ ๋ฐ ์ฐ๊ธฐ ์ธํธ)๋ฅผ ์ป์ต๋๋ค. ์ฝ๊ธฐ ์ธํธ ๋ฐ ์ฐ๊ธฐ ์ธํธ๋ ์๋ ๋ฐ ์ WorldState ๊ฐ์ ๋๋ค. (์ ๊ท - ์ค๋งํธ ๊ณ์ฝ์ ์๋ฎฌ๋ ์ดํธํ์ฌ ์ป์ ์๋ฏธ์์).
๊ทธ๋ฆผ 3. ์ค๋งํธ ์ปจํธ๋ํธ ์คํ
3) ํด๋ผ์ด์ธํธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ดํฐ ๋ฐํ
์ค๋งํธ ๊ณ์ฝ์ ์๋ฎฌ๋ ์ด์ ํ Endorsing Peer๋ ์ด๊ธฐ ๋ฐ์ดํฐ์ ์๋ฎฌ๋ ์ด์ ๊ฒฐ๊ณผ, ์ธ์ฆ์๋ก ์๋ช ๋ RW ์ธํธ๋ฅผ ํด๋ผ์ด์ธํธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐํํฉ๋๋ค. ์ด ๋จ๊ณ์์๋ ๋ถ์ฐ ์์ฅ์ ๋ณ๊ฒฝ ์ฌํญ์ด ์์ต๋๋ค. ํด๋ผ์ด์ธํธ ์์ฉ ํ๋ก๊ทธ๋จ์ Endorsing Peer์ ์๋ช ์ ํ์ธํ๊ณ ์ ์ก๋ ์๋ณธ ํธ๋์ญ์ ๋ฐ์ดํฐ์ ๋ฐํ๋ ๋ฐ์ดํฐ๋ฅผ ๋น๊ตํฉ๋๋ค(์ฆ, ํธ๋์ญ์ ์ด ์๋ฎฌ๋ ์ด์ ๋ ์๋ณธ ๋ฐ์ดํฐ๊ฐ ์์๋์๋์ง ํ์ธ). ํธ๋์ญ์ ์ด ๋ ์ง์คํธ๋ฆฌ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ธฐ ์ํ ๊ฒ์ผ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ทธ์ ๋ฐ๋ผ ํ์ํ ์ฝ๊ธฐ ์ธํธ๋ฅผ ์์ ํ๊ณ ์ด ํธ๋์ญ์ ์ ์ผ๋ฐ์ ์ผ๋ก ๋ถ์ฐ ๋ ์ง์คํธ๋ฆฌ๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋ฉ๋๋ค. ๋ ์ง์คํธ๋ฆฌ์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํด์ผ ํ๋ ํธ๋์ญ์ ์ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ถ๊ฐ๋ก Endorsing ์ ์ฑ ์ด ๊ตฌํ๋์๋์ง ํ์ธํฉ๋๋ค. ํด๋ผ์ด์ธํธ ์ ํ๋ฆฌ์ผ์ด์ ์ด Endorsement Policy ์คํ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ์ง ์์ ์ ์์ง๋ง, ์ด ๊ฒฝ์ฐ Hyperledger Fabric ํ๋ซํผ์ ๋ ์ง์คํธ๋ฆฌ์ ํธ๋์ญ์ ์ ์ถ๊ฐํ๋ ๋จ๊ณ์์ ๋ ธ๋(Comitting Peers)์ ์ ์ฑ ํ์ธ์ ์ ๊ณตํฉ๋๋ค.
๊ทธ๋ฆผ 4. ํด๋ผ์ด์ธํธ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ฐ์ดํฐ ๋ฐํ
4) Ordering Peer์๊ฒ RW ์ธํธ ๋ณด๋ด๊ธฐ
ํด๋ผ์ด์ธํธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ด๋ จ ๋ฐ์ดํฐ์ ํจ๊ป ํธ๋์ญ์ ์ ์ฃผ๋ฌธ ์๋น์ค๋ก ๋ณด๋ ๋๋ค. ์ฌ๊ธฐ์๋ RW ์ธํธ, ๋ณด์ฆ ํผ์ด์ ์๋ช ๋ฐ ์ฑ๋ ID๊ฐ ํฌํจ๋ฉ๋๋ค.
์ฃผ๋ฌธ ์๋น์ค - ์ด๋ฆ์ ๋ฐ๋ผ ์ด ์๋น์ค์ ์ฃผ์ ๊ธฐ๋ฅ์ ๋ค์ด์ค๋ ํธ๋์ญ์ ์ ์ฌ๋ฐ๋ฅธ ์์๋ก ๊ตฌ์ถํ๋ ๊ฒ์ ๋๋ค. ๋ฟ๋ง ์๋๋ผ ๋ถ์ฐ ๋ ์ง์คํธ๋ฆฌ์ ์ ๋ธ๋ก์ ํ์ฑํ๊ณ ์๋ก ์์ฑ๋ ๋ธ๋ก์ ๋ชจ๋ ์ปค๋ฐ ๋ ธ๋๋ก ๋ณด์ฅํ์ฌ ๋ถ์ฐ ๋ ์ง์คํธ๋ฆฌ(์ปค๋ฐ ํผ์ด)๋ฅผ ํฌํจํ๋ ๋ชจ๋ ๋ ธ๋์์ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ๋ณด์ฅํฉ๋๋ค. ๋์์ ์ฃผ๋ฌธ ์๋น์ค ์์ฒด๋ ๋ ์ง์คํธ๋ฆฌ๋ฅผ ๋ณ๊ฒฝํ์ง ์์ต๋๋ค. ์ฃผ๋ฌธ ์๋น์ค๋ ์์คํ ์ ์ค์ํ ๊ตฌ์ฑ ์์์ด๋ฏ๋ก ์ฌ๋ฌ ๋ ธ๋์ ํด๋ฌ์คํฐ์ ๋๋ค. Ordering Service๋ ํธ๋์ญ์ ์ ์ ํจ์ฑ์ ๊ฒ์ฌํ์ง ์๊ณ ๋จ์ํ ํน์ ์ฑ๋ ID๋ก ํธ๋์ญ์ ์ ์๋ฝํ๊ณ ๋ค์ด์ค๋ ํธ๋์ญ์ ์ ํน์ ์์๋ก ์ ๋ ฌํ๊ณ ๋ถ์ฐ ์์ฅ์ ์๋ก์ด ๋ธ๋ก์ ํ์ฑํฉ๋๋ค. ํ๋์ Ordering Service๋ ๋์์ ์ฌ๋ฌ ์ฑ๋์ ์๋น์ค๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค. Ordering Service์๋ ์ฌ๋ฐ๋ฅธ(๋ณ๊ฒฝ๋์ง ์์) ํธ๋์ญ์ ๋๊ธฐ์ด์ ์ ์ง ๊ด๋ฆฌํ๋ Kafka ํด๋ฌ์คํฐ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค(ํฌ์ธํธ 7 ์ฐธ์กฐ).
๊ทธ๋ฆผ 5. Ordering Peer์ RW ์ธํธ ์ ์ก
5) ์์ฑ๋ ๋ธ๋ก์ Committing Peer์๊ฒ ์ ์ก
Ordering Service์์ ํ์ฑ๋ ๋ธ๋ก์ ๋ชจ๋ ๋คํธ์ํฌ ๋ ธ๋์ ๋ธ๋ก๋์บ์คํ ๋ฉ๋๋ค. ์๋ก์ด ๋ธ๋ก์ ๋ฐ์ ๊ฐ ๋ ธ๋๋ Endorsing Policy ์ค์ ์ฌ๋ถ๋ฅผ ํ์ธํ๊ณ ๋ชจ๋ Endorsing Peer๊ฐ ์ค๋งํธ ๊ณ์ฝ ์๋ฎฌ๋ ์ด์ ๊ฒฐ๊ณผ ๋์ผํ ๊ฒฐ๊ณผ(Write Set)๋ฅผ ๋ฐ์๋์ง ํ์ธํ๊ณ ์๋ ๊ฐ์ด ๋ณ๊ฒฝ๋จ(์ฆ, - ์ฝ๊ธฐ ์ธํธ - ํธ๋์ญ์ ์์ ์ดํ ์ค๋งํธ ๊ณ์ฝ์ด WorldState์์ ์ฝ์ ๋ฐ์ดํฐ). ๋ชจ๋ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋๋ฉด ํธ๋์ญ์ ์ด ์ ํจํ ๊ฒ์ผ๋ก ํ์๋๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด ํธ๋์ญ์ ์ด ์ ํจํ์ง ์์ ์ํ๋ฅผ ๋ฐ์ต๋๋ค.
๊ทธ๋ฆผ 6. ์์ฑ๋ ๋ธ๋ก์ Committing Peer์๊ฒ ์ ์ก
6) ๋ ์ง์คํธ๋ฆฌ์ ๋ธ๋ก ์ถ๊ฐ
๊ฐ ๋ ธ๋๋ ๋ถ์ฐ ์์ฅ์ ๋ก์ปฌ ์ฌ๋ณธ์ ํธ๋์ญ์ ์ ์ถ๊ฐํ๊ณ ํธ๋์ญ์ ์ด ์ ํจํ๋ฉด WorldState(ํ์ฌ ์ํ)์ ๊ฐ๊ฐ Write Set์ ์ ์ฉํ๊ณ ํธ๋์ญ์ ์ ์ํฅ์ ๋ฐ์ ๊ฐ์ฒด์ ์๋ก์ด ๊ฐ์ ๊ธฐ๋กํฉ๋๋ค. . ํธ๋์ญ์ ์ด ์ ํจํ์ง ์์ ํ ํฐ์ ๋ฐ์ ๊ฒฝ์ฐ(์: ๋์ผํ ๋ธ๋ก ๋ด์์ ๋์ผํ ๊ฐ์ฒด๋ฅผ ๊ฐ์ง ๋ ๊ฐ์ ํธ๋์ญ์ ์ด ์๋ ๊ฒฝ์ฐ ์๋ ๊ฐ์ด ๋ค๋ฅธ ํธ๋์ญ์ ์ ์ํด ์ด๋ฏธ ๋ณ๊ฒฝ๋์๊ธฐ ๋๋ฌธ์ ํธ๋์ญ์ ์ค ํ๋๋ ์ ํจํ์ง ์์ต๋๋ค. ). ์ด ํธ๋์ญ์ ๋ ์ ํจํ์ง ์์ ๋ง์ปค๋ก ๋ถ์ฐ ์์ฅ์ ์ถ๊ฐ๋์ง๋ง ์ด ํธ๋์ญ์ ์ Write Set์ WorldState์ ํ์ฌ ์ํ์ ์ ์ฉ๋์ง ์์ผ๋ฏ๋ก ํธ๋์ญ์ ์ ์ฐธ์ฌํ๋ ๊ฐ์ฒด๋ฅผ ๋ณ๊ฒฝํ์ง ์์ต๋๋ค. ๊ทธ ํ ํธ๋์ญ์ ์ด ๋ถ์ฐ ์์ฅ์ ์์ํ ์ถ๊ฐ๋์๋ค๋ ์๋ฆผ๊ณผ ํธ๋์ญ์ ์ ์ํ, ์ฆ ์ ํจ ์ฌ๋ถ ...
๊ทธ๋ฆผ 7. ๋ ์ง์คํธ๋ฆฌ์ ๋ธ๋ก ์ถ๊ฐ
์ฃผ๋ฌธ ์๋น์ค
์ฃผ๋ฌธ ์๋น์ค๋ ํด๋น ZooKeeper ๋ ธ๋๊ฐ ์๋ Kafka ํด๋ฌ์คํฐ์ ์ฃผ๋ฌธ ์๋น์ค ํด๋ผ์ด์ธํธ์ Kafka ํด๋ฌ์คํฐ ์ฌ์ด์ ์๋ ์ฃผ๋ฌธ ์๋น์ค ๋ ธ๋(OSN)๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. Kafka ํด๋ฌ์คํฐ๋ ๋ถ์ฐ๋ ๋ด๊ฒฐํจ์ฑ ํ๋ฆ(๋ฉ์์ง) ๊ด๋ฆฌ ํ๋ซํผ์ ๋๋ค. Kafka์ ๊ฐ ์ฑ๋(์ฃผ์ )์ ์ ๋ ์ฝ๋ ์ถ๊ฐ๋ง ์ง์ํ๋ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ ๋ ์ฝ๋ ์ํ์ค์ ๋๋ค(๊ธฐ์กด ๋ ์ฝ๋ ์ญ์ ๋ถ๊ฐ). ํ ํฝ ๊ตฌ์กฐ์ ๊ทธ๋ฆผ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ๋ธ๋ก์ฒด์ธ ํ๋ซํผ์ ๊ตฌ์ถํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๊ฒ์ Kafka์ ์ด ์์ฑ์ ๋๋ค.
kafka.apache.org์์ ๊ฐ์ ธ์ด
- ๊ทธ๋ฆผ 8. ์ฃผ๋ฌธ ์๋น์ค ์ฃผ์ ๊ตฌ์กฐ*
์ ์ฉํ ๋งํฌ
๊ฐ์ฌ์ ๋ง
๊ธฐ์ฌ๋ฅผ ์ค๋นํ๋ ๋ฐ ๋์์ ์ค ๋๋ฃ๋ค์๊ฒ ๊น์ ๊ฐ์ฌ๋ฅผ ํํฉ๋๋ค.
๋์ฝ๋ผ์ด ๋ง๋ฆฌ๋
์ด๊ณ ๋ฅด ์นดํฌํ
๋๋ฏธํธ๋ฆฌ ๊ณ ๋ฅด๋ฐ์ดํ
์๋ ์ฐ๋ ์ ฌ์ดํ
์์นดํ
๋ฆฌ๋ ๊ตฌ์ธ๋ฐ
์ถ์ฒ : habr.com