블록체인 Dapp 개발자 - 서울대학교 디사이퍼(Decipher) 김재윤

in blockchain •  last month 




이전 글에서 언급했듯 Dapp 개발자는 Dapp(Decentralized Application)이라는 이름에서 알 수 있듯이 블록체인 위에서 동작하는 탈중앙화 어플리케이션을 개발하는 사람이다.
어플리케이션이란 데이터를 저장하는 서버가 존재하고, 그 데이터를 모든 유저들에게 공유하여 인터렉션을 할 수 있게 하는 웹 클라이언트까지 포함된 서비스를 의미한다.

블록체인은 데이터를 공유하는 플랫폼이기 때문에 웹서버의 역할을 대체하여 기존의 웹 서비스와 다른 형태로 서비스를 제공할 수 있을 것으로 예상했지만, 현재 블록체인의 성능이 매우 느리기 때문에 어쩔 수 없이 데이터를 캐싱하는 서버를 추가하여 UX(User eXperience)를 개선하는 형태로 탈중앙화 어플리케이션을 개발하고 있다.


스마트 콘트랙트 개발 (Smart Contract)

가장 대중적인 이더리움을 기준으로 설명하면, 스마트 콘트랙트 개발자는 Solidity라고 하는 간단한 언어로 프로그램을 개발하게 된다. 스마트 콘트랙트를 개발할 때는 다음과 같은 블록체인의 특징들을 고려해야 한다.

● 결정적(deterministic)이기 때문에 랜덤을 표현할 수 없다.
● 시간 개념이 명시되어 있지 않고 트랜잭션이 담기는 블록의 번호가 해당 트랜잭션이 실행된 시간이 된다.
● 트랜잭션이 언제 블록에 담길지 예측하기 힘드므로 트랜잭션 실행 후의 동작을 비동기적으로 잘 설계해야 한다.
● 프로그램을 실행하는데 이더리움이 필요하기 때문에 프로그램의 로직을 효율적으로 작성해야 한다.
● 자산을 다루기 때문에 프로그램에 버그가 없도록 각별히 주의를 기울여야 한다.

하지만 프로그램 보안의 경우, 일반적인 프로그래머가 모든 상황을 고려하기 힘드므로 프로그램 분석기의 도움을 빌리거나 보안감사 업체에게 의뢰를 하는 편이 낫다.

ⓒshutterstock


웹 클라이언트 개발

일반 사용자들이 블록체인 노드를 유지하고 직접 트랜잭션을 발생시키는 것은 불가능에 가까우므로 사용자들이 편하게 쓸 수 있는 웹 클라이언트를 개발해야 한다. 웹 클라이언트는 이더리움에 트랜잭션을 발생시켜서 보내기 위한 모듈을 제외하면 일반적인 웹 클라이언트와 거의 같다.

단, 캐시 서버를 두게 되면 트랜잭션을 보내는 곳은 블록체인이고, 결과 데이터를 받는 곳은 캐시 서버가 되어 불일치가 발생하기 때문에 그 부분에 주의를 기울어야 한다. 유저들이 블록체인을 이용할 때 불편함을 느끼지 않도록 쉬운 사용성을 제공하는 것도 클라이언트 개발자의 역할이다.


캐시 서버 개발

블록체인이 원하는 성능을 가지고 있다면 캐시 서버는 필요 없겠지만, 지금 블록체인의 성능은 매우 느리므로 중간에서 성능 차이를 완충해줄 캐시 서버가 필요하다.
캐시 서버는 주로 블록체인 데이터 중에서 원하는 데이터를 관찰하고 있다가 데이터에 변화가 생겼을 때 그 데이터를 복사하여 로컬 데이터베이스에 저장한다. 그리고 클라이언트에서 요청이 오면 데이터베이스에서 해당 데이터를 전송하여 응답해준다. 블록체인의 데이터를 가져온다는 점만 빼면 일반적인 웹 서버와 거의 같다.

웹 클라이언트와 웹 서버 모두 기존에 서버-클라이언트로 구성되는 서비스들과 다를 바가 없지만, 여기에 블록체인과 스마트 콘트랙트가 추가되어서 개발적인 측면에서 보면 훨씬 까다롭다.

ⓒshutterstock


결론

이번 글에서는 Dapp 개발자의 종류와 역할에 대하여 알아보았다. 아직까지는 기술적인 한계 때문에 기존 웹 서비스 개발자들이 하는 일에 블록체인 파트가 추가된 느낌으로 개발이 이루어지고 있지만, 블록체인의 성능 문제가 해결되면 좀 더 간단한 형태로 바뀔 것이라 생각한다.
그리고 만약 개발자 커리어를 블록체인으로 시작하고 싶은 사람이 있다면, 한번쯤은 더 생각해보고 시작하길 바란다. 왜냐하면, 블록체인 Dapp은 개발을 하더라도 아직 쓰는 사람이 매우 적어서 커리어에 적어도 사람들이 모를 가능성이 크기 때문이다.

또한, 기존 서비스 개발과 거의 비슷하기 때문에 개발자들 입장에서는 언제든지 넘어올 수 있어서 당장은 잘하는 사람이 없어 보인다고 해도 다른 개발자들에 비해 비교우위를 점할 가능성이 낮다. 차라리 전통적인 필드에서 커리어를 시작해서 구루(guru)에게 제대로 배우고 성장해서 들어오는 것이 더 나을 수도 있다. 그래서 아직까지는 주니어 개발자들에게 추천할 만한 분야는 아니라고 생각한다.






지금 INBEX를 방문해보세요!

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!