일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 그래프
- type challenge
- 백준
- ip
- dfs
- socket
- typescript
- 소켓
- HTTP
- 프로그래머스 레벨 2
- 타입 챌린지
- Node.js
- TCP
- 쉬운 문제
- 타입스크립트
- 알고리즘
- javascript
- Nestjs
- 크롤링
- 가천대
- 레벨 1
- 자바스크립트
- BFS
- 수학
- 프로그래머스
- Algorithm
- Crawling
- dp
- HTTP 완벽 가이드
- 문자열
- Today
- Total
kakasoo
백엔드 개발자가 블록체인을 배워야 할까? 본문
시작하기 전에
블록체인을 어떻게 활용할 수 있을까. 최근에 읽고 있는 책에서는 데이터를 저장하고 꺼내는 데 사용하는 도구 5가지를 가르쳐줬다. 이 5가지 도구는 우리가 잘 아는 데이터베이스부터 캐시와 인덱스, 메시지 큐, 배치 시스템 이렇게 5가지다. 나는 이 책에서 말한 것과 같이, 백엔드가 이제는 데이터 도구들을 엮는 역할만 수행할 거라는 점에서 언뜻 동의한다. 서버는 이제 데이터를 꺼내고 저장하는 모든 연산을 외부 도구들에게 맡길 것이고, 데이터의 형태를 변환하는 등의 최소한의 연산을 제외한다면, 이 도구들 간의 커뮤니케이션을 수행하는 데 대부분의 자원을 사용할 것이라는 생각이다. 다만 언뜻이라고 말한 부분은, 내가 좋은 의미로도 나쁜 의미로도 아직 주니어 개발자이기 때문이다. 확신은 할 수 없다. 또 내가 확신한다고 해서 다른 사람들이 믿기에는 신뢰성도 낮다. 다만, 적어도 내 개발자 커리어만 놓고 본다면, 나는 확신할 수 있다. 적어도 틀려도 내 커리어만 망치면 되는 문제라면, 나는 블록체인이 6번째 도구가 되거나, 기존 패러다임과 다른 방향을 제시해줄 거라고 믿어보려고 한다. 나는 오늘부터 블록체인을 공부해볼 생각이다.
블록체인 소개
내가 기존에 알고 있던 블록체인은, 그저 비트코인을 만드는 기술일 뿐이었다. 하지만 이제는 블록체인은, 50% 이상의 노드가 각 정보를 공유해서, 50%를 넘는 노드를 동시에 해킹하지 않는 한 데이터를 유실시키거나 훼손할 수 없도록 하는 장치이자, 이런 영구적인 정보를, 공개된 네트워크에 뿌리는 것으로 이해됐다. 즉, 변경이 불가능하거나, 변경하더라도 그 이력이 모두 남는다는 특성과 더불어 네트워크에 접속한 모두에게 투명하게 공개된다는 점이 블록체인 기술의 핵심이다. 아직 이 기술에 대해서 전혀 모르는 나도, 이 부분만 가지고 블록체인 개발자와 이야기할 수 있을 정도로, 이 핵심이 ( 당연히 핵심이니 그래야겠지만 ) 다른 도구들보다 특히 두드러지는 듯 하다. 지인의 서버는 현재 두 개로 나누어져 있다고 한다. 하나는 node.js고 다른 하나는 GO다. GO가 node.js보다 병렬 처리에서 좀 더 편리하고 리소스를 적게 먹어서성능 상 유리하다. 다만 SDK가 더 잘 완성되어 있는 쪽은 node.js라 ( ethers, web3.js ) 블록체인에 대한 지식이 다소 부족해도 사용할 수 있는 모양이다. 즉 node.js가 코드 작성량 대비 효율이 높다. 다만 어느 쪽 언어가 더 낫다는 것은 아니고, 편리성과 생산성, 그리고 컴퓨팅 파워 등 효율을 모두 고려해서 기능을 분리하는 것 같다.
블록체인의 활용
"얘기는 잘 들었다. 그래서 왜 블록체인을 써야 하는가?" 그래서 지인에게 물어보니, 이렇게 답했다.
"블록체인은 하나의 단일화된 데이터베이스 표준으로 쓰려는 유즈케이스가 많다. 예를 들어, 각 시중 은행들이 공통의 시스템을 만들기로 했다고 가정해보자. 이 시스템을 만들기 위해서는 각자 DB Schema를 다르게 설계해선 안 된다. 전부 동일한 Schema를 설계해야 하고, 어떤 주체든 자유롭게 접근가능하다는 게 보장되어야 한다. 모든 고객의 입출금 내역을 동일한 Schema로 설계하고, 접근 가능하게 만들면 지금 오픈 뱅킹으로 다 뚫는 것 마냥 유틸리티가 굉장히 높아질 것이다. 만약 이게 블록체인 없이 개발된다고 하더라도, 결국은 블록체인과 비슷한 무언가를 만들게 될 것이다. 말했듯이 Schema는 같고, DB에 접근이 서로 가능해야 한다. 여기에 추가로, 데이터들이 공정하게 관리되어야 한다. (ERC 20, ERC 721) 공정하게 관리할 수 밖에 없도록 투명한 것이 바로 스마트 컨트랙트고, 누구든 접근해서 투명하게 확인 가능해야 한다는 부분이 블록체인이라고 이해하면 될 것 같다."
"그러면 스마트 컨트랙트가 공정한 이유는 뭔가?"
"스마트 컨트랙트가 공정한 이유는, 블록체인에 코드가 박히고, 또 변경되지 않을 거라는 걸 보장할 수 있기 때문이다. 따라서 박힌 코드대로만 돌아갈 것이라는 걸 모두가 증명 가능하다. 만약 이게 내 사설 서버와 DB에 구현되어 있는 거라면 다른 회사나 사용자는 우리 회사가 아무리 공정하게 한다고 하더라도 쉽게 믿을 수 없을 것이다."
"신박하다. 나중에는 스마트 컨트랙트 전문 변호사도 생기는 거 아니냐? 이 계약서(contract)가 있다고 하더라도 정말로 공정한지는 봐야 아는 것 아니냐. 우리가 약관을 읽지 않고 쉽게 계약서에 서명하듯이, 계약서가 있다고 하더라도 그걸 일일히 읽기는 쉽지 않은 일 같다."
"(이미) 실제로 일어나고 있는 일이다."
발급 주체
만약 특정 팀이 마구잡이로 발급을 하려고 든다면 어떡하는가, 또는 자신들이 가진 공신력을 팔아먹으려고 들면 어떡하는가. 가령, 질 나쁜 몇몇 부동산업자들이, 자격증을 사다가 걸어놓고 영업하듯이 말이다. 이런 질문을 하니, 이 또한 보완하려는 움직임이 있꼬 이를 Soul Bound NFT 라고 부른다는 대답을 들었다. 즉, 전송 못하는 NFT다.
블록체인의 단점 또는 향후 과제
향후 과제라고 썼지만, 이게 해결될지는 모르겠다. 해결된다면, 그게 도리어 블록체인의 가치를 떨어뜨릴지도 모를 일이다. 이번에는 다른 질문을 던졌다. 블록체인이 개인 정보를 침해할 가능성이 있는지를 물었다. 아니면 블록체인 안에서도 별도의 암호화가 가능한가. 우리가 페이스북을 다른 사람의 행적을 추적하고, 또는 유추하는 데에 쓸 수 있듯이, 블록체인으로 만들어진 것들이 개인을 감시하는 데에도 쓰일 수 있는 것 아닌가. 우리가 과거의 글을 지울 수 없다면, 심각한 피로도를 느낄 것 같다고 말했다.
"요즘 이에 대한 연구가 매우 활발하다. 'zero knowledge proof' 라고 한다."
블록체인이 사회에 본격적으로 들어서면, 사회는 초연결 사회가 될 것이다. 내 동창들을 찾기 위해서 졸업 책자를 뒤져볼 필요가 없을 것이다.우리 일상이, 블록체인화되는 시점에서는, 파편적인 정보만 가지고도 전체를 그려볼 수 있게 될 것 같다.
'프로그래밍 > Backend' 카테고리의 다른 글
Node.js에서 동시성 다루기와 예제 (0) | 2022.08.24 |
---|---|
성능 기술과 백분위 ( percentile ) (0) | 2022.07.02 |
확장성의 의미와 트위터의 사례 (0) | 2022.06.19 |
신뢰성 ( Reliability ) (0) | 2022.06.18 |
장바구니, 구매요청, 구매내역 (0) | 2022.06.18 |