블록체인 기술을 통해 서비스가 주고자 하는 것이 무엇인가?
기존 WEB2 서비스와의 차별점이 무엇인가?
굳이 블록체인 이여야 하는가?
🎯신경을 많이 쓴 부분
기존 Web2 서비스를 설계할 때, 모든 정보를 DB에 저장했었고 어디에 뭘 나눠야 한다는 고민을 해본 적은 없었습니다.
블록체인이라는 분산DB로 넘어오게 되었고, 블록체인이 갖는 특유의 성질로 인해 특히 주의해서 설계해야 함을 인지했습니다.
*CREATE, UPDATE, DELETE 시 Gas Fee 발생
*체인별 TPS 상이(Web2와 비교했을때 처리 속도가 느림)
설계 없이 Web2 하듯이 모든 정보를 다 블록체인에 때려박게 된다면, 음.. 매우 비효율적일 겁니다.
어디까지 블록체인에 그리고 DB에 저장할지에 대한 충분한 논의를 나눴고, 주변에도 자문을 구해보니 아직 dApp에서는 정답이 없고 기획에 맞게 설계하기 나름이라는 생각이 들었습니다.
현업분들에게 물어보니 규모가 있는 설계의 경우 블록체인에 있는 정보를 서버가 가져와서 DB에 저장하고 클라이언트로부터 온 요청을 DB에 있는 정보를 응답해 주지만(매번 동기화),
작은 프로젝트인 해커톤 사이즈의 경우 DB에 블록체인의 모든 정보를 저장한다는게 비용이나 컴퓨터의 성능적으로나 현실적으로 어렵다는 것을 알게 되었습니다.
🎯NICO 프로젝트의 Back-end 설계
기본 개인정보 중 (유저의 balance, 귀속된 뱃지[NFT])에 관한 정보의 호출 같은 경우는 니어프로토콜에서 제공하는 near-api-js 를 이용하기 위해 별도의 node.js 서버를 구축할 예정입니다. (java와 호환되는 api는 현재 없음)
그러면 왜 node.js 서버 하나로 하면 되지 굳이 서버를 두개 두려고 할까요?
바로 저희 서비스에서 구현하려는 나름 복잡한 엔터네이너적인 요소(레벨업, 다양한 퀘스트)를 구현하는 로직을 소화하기 위해서 입니다. node.js보다는 java 프레임워크(Spring Boot)가 복잡한 로직 구현에 더 안정적입니다.
NICO의 Back-end 구조를 정리하자면 이렇습니다.
NICO 프로젝트= 대부분의 비즈니스 로직 처리를 위한 [java server] + 블록체인에 담긴 정보 호출을 위한[node.js server]
java와 호환되는 api를 제공했다면 java server 하나로 구현을 했을텐데 말이죠..
니어 체인이 인기가 많아진다면, 그날엔 web3j 와 같은 api를 제공해주겠죠?
🎯구현해야 할 요소
우선순위 | 요소 |
1순위 | 계정 자유게시판 레벨시스템 |
2순위 | 알림창 |
그러면 구현하러 가볼까요?
'블록체인' 카테고리의 다른 글
[Hackathon] Backend DashBoard is underway👾 (2) | 2023.05.14 |
---|---|
[Hackathon] 삽질 일대기😰 (0) | 2023.05.11 |
[Hackathon] 📚프로젝트 구조화 + 우선순위 설정 (feat. NEAR Protocol) (0) | 2023.05.03 |
왜 성능 좋은 3세대 체인들은 이더리움의 인기를 뛰어넘지 못할까요?🙄🙄 (0) | 2023.05.03 |
[Hackathon] NEAR Protocol(니어 프로토콜)이란? (0) | 2023.05.01 |