[연재] 이더리움 dApp을 개발하기 위한 기초 지식 - 구조 1

이더리움 dApp을 개발하기 위한 기초 지식 - 구조 1


일단 전체 구조를 한번 설명해보자.


개발자들이 가장 쉽게 이해할 수 있는 웹앱과 비교하면 어려운 용어들이 쉽게 와 닿을 것이다.

자 우리가 웹앱을 개발한다면 뭐가 있어야 할까? 물론 서비스를 한다는 가정이다.


위 그림처럼 먼저 웹 서버가 있어야 하고, 둘째로 데이터베이스가 있어야 한다.

웹 서버로는 Apache나 Nginx 등이 있을 것이고, 데이터 베이스로는 MySQL류가 있을 것이다.

마지막으로 브라우저에서 DOM 객체를 핸들링하기 위해 jQuery같은 클라이언트 툴도 필요할 것이다.

dApp도 마찬가지다.

데이터베이스가 있어야 하고, dApp을 서비스할 수 있는 서버가 있어야 한다.

가장 큰 차이점은 Database다.

보통 우리가 웹앱에서는 일반적으로 데이터베이스는 하나일 것이다.


블럭체인 기술은 이런 중앙집중화된 데이터베이스에 반기를 들고 나온 개념이기 때문에 중앙 서버 이런게 없다.

즉 누구라도 해당 블럭체인 네트웍에 참여하고 싶다면 언제라도 블럭체인 데이터베이스를 싱크해주는 로컬 프로그램을 다운 받아 실행하면 데이터를 받을 수 있다.

MySQL 식으로 설명하면 데이터파일을 로컬에 다운 받을 수 있다는 개념이다.
 


자 그러면 이 네트웍에 참가하려면 어떤 프로그램이 있어야 하나?

가장 많이 알려진 프로그램이 프로그램 언어 GO 로 짜여진 Go Ethereum 이란 것이 있고, Rust로 작성한 Parity등이 있다.

Go Ethereum 은 Geth라고 부르는데 실행 프로그램명이 geth이다.


잠시 주제에서 벗어났는데, DB만 있다고 해서 프로그램을 만들 수는 없다.

보통 개발자 용어로 비즈니스 로직이란 것도 있고, 화면 로직이라는 것도 있다.


블럭체인 개발에서 비즈니스로직(?) 이라는 것을 스마트 컨트렉트라고 부르는데 솔리디티라는 언어로 작성한다.

이는 데이터베이스에 PL/SQL로 Stored Procedure를 작성하는 것과 비슷하다.



Stored Procedure 같은 경우는 이름으로 서로 구분하지만, 블럭체인같은 공유/공개 DB에서는 같은 이름이 있을 수 있기 때문에 생성할 때 부여된 주소로 서로 구분한다.나중 프로그램에서 이름으로 생성한 Smart Contract를 불러 오는 것을 볼것이다.


글이 기니 웹 서버 부분은 다음 글에서 다루자.