[Node.js유지보수] Golang 개발: Metarare: ERC721/1155 기반 NFT 마켓플레이스 구축과 지속적인 유지보수

Metarare: ERC721/1155 기반 NFT 마켓플레이스 구축과 지속적인 유지보수

NFT(Non-Fungible Token) 시장은 디지털 자산의 소유와 거래 방식을 혁신하며 급성장하고 있습니다. Metarare 프로젝트는 이러한 흐름 속에서 이더리움 블록체인 기반의 NFT 마켓플레이스를 구축하여, 사용자들이 ERC721 및 ERC1155 표준을 활용한 디지털 자산을 손쉽게 거래하고 관리할 수 있도록 돕고 있습니다. 이번 블로그에서는 Metarare의 시스템 구축 과정과 지속적인 유지보수에 대해 상세히 살펴보겠습니다.

1. 프로젝트 개요

Metarare는 이더리움 블록체인을 기반으로 하는 NFT 마켓플레이스로, ERC721과 ERC1155 표준을 모두 지원합니다. 이 플랫폼은 경매 기능과 다양한 검색 옵션을 제공하여, 사용자들이 원하는 NFT를 쉽고 빠르게 찾을 수 있도록 설계되었습니다. Metarare는 최신 웹 기술과 블록체인 인프라를 활용하여 2022년 초에 처음으로 구축되었으며, 이후 지속적인 유지보수를 통해 시스템의 안정성과 성능을 개선해 왔습니다.

2. 시스템 구성

Metarare의 시스템은 최신 기술 스택과 안정적인 인프라로 구성되어 있습니다:

  • Frontend: 사용자 인터페이스는 React.js를 기반으로 개발되었습니다. React.js는 사용자 경험을 극대화할 수 있는 SPA(Single Page Application) 구조를 지원하며, Vercel을 통해 CI/CD 파이프라인을 구축하여 신속한 배포와 업데이트를 가능하게 합니다.
  • Backend: 서버 측 로직은 Golang으로 구현되었습니다. Golang은 고성능과 안정성을 제공하며, NFT 거래 및 경매 로직을 효율적으로 처리할 수 있습니다.
  • Database: 데이터베이스는 MySQL을 사용하며, AWS RDS를 통해 안정적인 데이터 저장소를 제공합니다. AWS RDS는 자동 백업과 보안 관리 기능을 제공하여 데이터의 가용성을 높입니다.
  • 블록체인 RPC: 블록체인과의 상호작용은 Infura.io를 통해 이루어지며, 안정적인 이더리움 노드와 API 서비스를 제공받아 개발자가 블록체인 인프라를 직접 관리할 필요가 없습니다.
  • 스토리지: NFT 자산은 AWS S3에 저장되며, 이 안정적인 스토리지 솔루션을 통해 사용자 자산의 보안과 가용성을 보장합니다.
  • CI/CD: 프론트엔드의 형상 관리와 배포는 VercelJenkins를 통해 자동화되었으며, 코드 변경 사항이 즉시 반영될 수 있도록 설정되었습니다.

3. 경매 시스템과 코인 상장

Metarare는 다양한 경매 방식을 지원하여 사용자들이 자신의 요구에 맞는 거래를 할 수 있도록 돕습니다:

  • 일반 경매: 전통적인 경매 방식으로, 사용자들이 입찰을 통해 NFT를 획득할 수 있습니다.
  • 조건 경매: 특정 조건을 만족하는 입찰자만이 경매에 참여할 수 있는 방식입니다.
  • 타임세일: 일정 기간 동안만 거래가 가능한 방식으로, 신속한 거래를 유도합니다.

거래가 완료되면 자동으로 민팅이 이루어지며, 이 과정에서 이더리움 네트워크의 트랜잭션 비용 부담을 최소화하도록 설계되었습니다. 또한, Metarare에서 사용되는 주요 코인은 MTRA 코인으로, CoinMarketCap에서 코인의 마켓캡을 확인할 수 있습니다.

4. 보안 강화와 ISMS-P 인증

Metarare는 보안성을 최우선으로 하여 시스템을 구축하였으며, ISMS-P(정보보호 및 개인정보보호 관리체계) 인증을 획득하기 위해 외부 컨설팅을 진행했습니다. 컨설팅 결과를 바탕으로 코드 구조와 AWS 인프라를 개선하여, 최고 수준의 보안을 유지할 수 있도록 시스템을 최적화하였습니다.

5. 지속적인 유지보수와 시스템 개선

Metarare는 2022년 초에 웹사이트를 처음 구축한 이후, 지속적으로 시스템을 유지보수하고 개선해 왔습니다. 유지보수 작업은 주로 다음과 같은 방식으로 이루어집니다:

  • Node.js와 Golang을 통한 유지보수: 프론트엔드와 백엔드의 코드는 Node.js와 Golang을 통해 관리됩니다. Node.js는 비동기 이벤트 기반 구조를 활용하여 프론트엔드와 백엔드의 효율적인 통합을 가능하게 하며, Golang은 백엔드 시스템의 성능과 안정성을 지속적으로 유지할 수 있도록 돕습니다.
  • 코드 리팩토링: 정기적인 코드 리팩토링을 통해 시스템 성능을 최적화하고, 새로운 기능 추가와 유지보수를 용이하게 합니다.
  • 버그 수정 및 기능 개선: 사용자 피드백과 내부 테스트를 통해 발견된 버그를 신속히 수정하고, 사용자 경험을 향상시키기 위한 기능 개선을 지속적으로 진행합니다.
  • 보안 업데이트: 새로운 보안 위협에 대응하기 위해 정기적인 보안 업데이트를 실시하며, 시스템의 안전성을 보장합니다.

결론

Metarare는 최신 기술을 활용하여 ERC721/1155 기반의 NFT 마켓플레이스를 성공적으로 구축하고 지속적으로 유지보수해 온 사례입니다. React.js, Golang, AWS 인프라를 결합하여 안정적이고 확장 가능한 시스템을 구축하였으며, 강력한 보안과 사용자 친화적인 기능을 제공하여 사용자가 신뢰할 수 있는 거래 환경을 제공합니다.

앞으로도 Metarare는 NFT 시장의 발전과 함께 성장할 것이며, 지속적인 유지보수와 보안 강화를 통해 사용자에게 최고의 경험을 제공할 것입니다. Metarare의 시스템 구축과 유지보수 과정을 통해 얻은 경험은 향후 블록체인 및 NFT 프로젝트 개발에 귀중한 참고자료가 될 것입니다.

[Node.js 유지보수] 북코아: 국내 최대 중고도서 오픈마켓 Node.js개발/유지보수 이야기

0. 북코아(Bookoa) 소개

북코아(Bookoa)는 한국에서 가장 오래된 중고책 온라인 마켓플레이스 중 하나로, 다양한 중고 도서, 희귀본, 절판 서적, 만화책 등을 제공하는 플랫폼입니다. 2003년에 설립된 북코아는 오랜 역사를 통해 수많은 회원과 방대한 중고서적 컬렉션을 보유하게 되었습니다. 현재 누적 회원 수는 100만 명 이상이며, 중고서적 거래량도 상당히 높습니다.

북코아는 사용자가 직접 판매자와 거래할 수 있는 오픈마켓 형식을 채택하고 있으며, 다양한 카테고리의 도서를 저렴한 가격에 제공하고 있습니다. 사용자는 책의 상태, 가격, 배송비 등을 비교하여 최적의 선택을 할 수 있으며, 결제 및 배송 시스템도 간편하게 구성되어 있습니다. 또한, 판매자에 따라 책의 상태나 가격에 차이가 있을 수 있어, 구매자가 여러 판매자의 옵션을 비교하고 선택할 수 있는 장점이 있습니다.

이러한 특성 덕분에 북코아는 많은 사람들에게 중고책 구매의 첫 번째 선택지로 자리 잡고 있으며, 빠른 배송과 경쟁력 있는 가격으로 높은 만족도를 얻고 있습니다​

1. Node.js 시스템 구성 개요

북코아의 시스템은 최신 기술을 활용하여 구축된, 확장성과 성능을 최우선으로 고려한 아키텍처입니다. 다음은 북코아 시스템의 주요 구성 요소들입니다:

  • 백엔드 언어: Node.js를 기반으로 한 백엔드는 비동기 이벤트 기반 모델을 활용하여 고성능을 제공합니다. 특히 많은 사용자가 동시에 접속하는 환경에서도 안정적으로 작동하며, I/O 작업을 효율적으로 처리할 수 있습니다. Express.js 프레임워크를 활용하여 RESTful API 설계와 서버 사이드 로직을 구성했습니다. 이러한 설계는 빠른 데이터 처리와 유지보수에 유리한 구조입니다.
  • 프론트엔드 프레임워크: 프론트엔드는 Angular 7을 사용하여 클라이언트 사이드 렌더링을 구현했습니다. Angular는 복잡한 UI를 컴포넌트 기반으로 분리하여 개발하고, 재사용 가능한 모듈화된 코드를 제공하므로 북코아의 사용자 경험을 더욱 풍부하게 만듭니다.
  • 데이터베이스: 북코아는 MongoDB v4.x를 기반으로 한 NoSQL 데이터베이스를 사용합니다. MongoDB의 Replica Set 기능을 통해 고가용성과 데이터 안전성을 보장하며, 트랜잭션을 사용하여 복잡한 데이터 조작을 안정적으로 처리합니다. NoSQL 데이터베이스의 유연성을 활용해 다양한 형태의 데이터를 빠르고 쉽게 저장하고 관리할 수 있습니다.
  • 웹 서버: AWS EC2 인스턴스 위에서 PM2를 사용하여 Node.js 애플리케이션을 관리하고 있습니다. PM2는 프로세스 관리를 자동화하여, 서비스의 안정성을 높이고 장애 상황에서도 신속한 복구를 지원합니다. 또한 서버리스 아키텍처로 AWS CloudFrontS3를 활용해 정적 웹 콘텐츠를 제공하여, 더 빠른 웹페이지 로딩 속도와 낮은 운영 비용을 달성했습니다.
  • 개발 도구 및 협업 툴: 디자인 협업을 위해 Zeplin을 사용하고, 프로젝트 관리 및 이슈 트래킹은 Trello를 통해 이루어졌습니다. 코드 버전 관리는 Git을 사용하여 분산된 환경에서의 협업을 효율적으로 진행했습니다.

2. Node.js 상세 개발 내용

북코아 개발에서는 다양한 기능들이 구현되었으며, 각 기능의 설계와 구성에 있어 신중하게 접근하였습니다.

  • 사용자 관리 시스템: 북코아는 사용자 등록, 로그인, 비밀번호 찾기와 같은 전형적인 사용자 관리 기능을 포함하고 있습니다. **JWT(Json Web Token)**를 사용하여 사용자 인증과 세션 관리를 구현하였으며, 이는 보안성이 높고 확장 가능한 인증 체계를 제공합니다.
  • 전자상거래 기능: 북코아의 핵심 기능 중 하나인 전자상거래 시스템은 상품 검색, 장바구니, 주문 및 결제 등으로 구성됩니다. 특히 결제 시스템은 이니시스를 사용하여 신용카드, 실시간 계좌이체, 무통장 입금 등을 지원하며, 결제 취소 및 환불 기능도 안정적으로 구현되었습니다. 결제 페이지 이탈 여부를 실시간으로 추적하여, 사용자의 결제 실패 시에도 손실을 최소화할 수 있도록 하였습니다.
  • 고성능 및 확장성: 북코아의 서버는 AWS EC2 인스턴스 위에서 구동되며, 기본적으로 t2.micro 인스턴스를 사용하여 초기 개발을 진행했습니다. 추후 트래픽이 증가할 경우 Load Balancer를 통해 요청을 분산 처리하고, 다중 인스턴스로 확장할 수 있도록 설계했습니다. 이를 통해 북코아는 향후 사용자 증가에도 유연하게 대응할 수 있습니다.
  • 세션 관리: 사용자의 세션은 MongoDB에 저장 및 관리되며, 세션 데이터는 분산된 인스턴스에서도 안전하게 관리할 수 있습니다. 또한 세션 만료 및 갱신 정책을 통해 사용자 경험을 개선하였습니다.

3. Elasticsearch DB 채용 과정

북코아의 전자상거래 시스템은 중고책을 중심으로 운영되며, 그 수가 점점 증가하여 현재는 천만 권이 넘는 책 데이터를 보유하고 있습니다. 이로 인해 책의 단어 검색형태소 분석 성능이 점점 느려지기 시작했습니다. 특히, MongoDB 기반의 텍스트 검색이 매우 느려져 사용자들이 검색 결과를 기다리는 시간이 늘어나면서 서비스에 심각한 영향을 미치기 시작했습니다.

당시 북코아는 이미 라이브 상태였기 때문에, 새로운 기술 도입에는 일정한 위험이 따랐습니다. 그럼에도 불구하고 성능 문제를 해결하지 않으면 서비스 품질이 급격히 저하될 우려가 있어 우리는 긴급히 Elasticsearch DB 도입을 검토하게 되었습니다.

Elasticsearch는 대용량 데이터에서 실시간 검색 및 텍스트 분석에 최적화된 검색 엔진으로, 특히 형태소 분석과 같은 자연어 처리 작업에서 우수한 성능을 발휘합니다. 이를 북코아에 적용하기 위해 다음과 같은 작업을 진행했습니다:

  1. Text_Tokenizer 설치 및 구축: Elasticsearch의 핵심 기능 중 하나인 텍스트 토크나이저를 사용하여 책의 제목, 저자, 내용 등 다양한 텍스트 필드를 빠르고 정확하게 분석할 수 있도록 설계했습니다.
  2. MongoDB와의 연동: 기존에 운영 중이던 MongoDB와의 호환성을 유지하면서 Elasticsearch를 도입해야 했습니다. 이를 위해 1초에 한 번씩 MongoDB의 변경 사항을 증분 검색하여 Elasticsearch에 반영하는 구조를 구축했습니다. 덕분에 MongoDB의 데이터 변경사항이 실시간으로 Elasticsearch에 반영되어, 중단 없는 데이터 동기화가 가능했습니다.
  3. 성능 개선: Elasticsearch 도입 이후, 이전에 수 초에서 수십 초까지 걸리던 검색 시간이 빛과 같은 속도로 개선되었습니다. 사용자들은 이제 입력과 동시에 검색 결과를 받을 수 있었고, 이로 인해 서비스의 사용성이 크게 향상되었습니다.

Elasticsearch 도입은 단순히 성능 향상 이상의 의미가 있었습니다. 북코아가 미래의 더 많은 데이터를 다룰 수 있는 확장성을 확보했으며, 사용자 경험을 중시하는 우리의 철학을 다시 한번 실현할 수 있었습니다.

4. 개발의 뒷이야기

북코아의 개발 과정에서는 여러 도전과 극복의 순간들이 있었습니다. 다음은 그 중 몇 가지 주요 사항입니다:

  • 모바일 최적화: 북코아는 모바일 사용자들을 주요 대상으로 하기 때문에, 모바일 환경에서의 사용자 경험을 최적화하는 데 많은 시간을 투자했습니다. 이를 위해 반응형 디자인을 구현하였으며, 모바일 디바이스에서 간단하고 직관적인 사용자 인터페이스를 제공하기 위해 다양한 테스트를 진행했습니다.
  • 레거시 시스템 통합: 기존의 레거시 시스템에서 새로운 MongoDB 기반 시스템으로 데이터를 마이그레이션하는 작업이 주요 도전 과제 중 하나였습니다. 이 과정에서 데이터 무결성과 일관성을 유지하기 위해 여러 단계의 데이터 검증과 테스트를 거쳤습니다.
  • 협업과 커뮤니케이션: 북코아의 개발은 여러 팀원 간의 긴밀한 협업을 필요로 했습니다. Zeplin을 통해 디자이너와 개발자 간의 원활한 소통을 이루었고, Trello를 통해 프로젝트 관리 및 일정 조율이 효율적으로 이루어졌습니다. 지속적인 피드백과 코드 리뷰를 통해 높은 품질의 결과물을 낼 수 있었습니다.

이와 같은 개발 여정은 최신 웹 기술을 활용하여 사용자의 요구에 맞춘 효율적이고 안정적인 서비스를 구축하는 데 큰 도움이 되었습니다. 북코아는 사용자 중심의 직관적이고 기능적인 플랫폼으로 거듭나고 있으며, 앞으로도 계속해서 발전해 나갈 것입니다.


이 블로그 포스트를 통해 북코아 개발에 대한 깊이 있는 이야기를 공유하고자 하였습니다. 첨단 기술을 활용해 효율적인 아키텍처를 설계하는 과정과, 이를 성공적으로 구현해낸 경험이 많은 분들에게 영감을 주기를 바랍니다.

[Node.JS 유지보수] Vue.js와 React.js 를 이용한 한세 실업 공정관리 시스템 Frontend 개발 완료

[제품 생산 공정 스케줄링 프로젝트]

2020년 3월 Node.JS: Vue.Js Framework 와 React로 개발된 Global 봉제공정 관리
시스템을 개발하여 베트남의 호치민시, 과테말라 산호세시, 인도네시아 우타마 등에 있는 봉제 공장에 활용할 수 있도록 하였습니다.
Backend 단에서 제공된 .Net C# 으로 만들어지 서버 API에 맞추어 기본적으로 이미 자체 개발된 Vue.js 관리자 모드 보일러 플레이트를 사용하였으며 리본메뉴와 좌 우측 메뉴을 동시에 사용할 수 있도록 조정하였습니다. 프론트 페이지는 React.Js 로 개발하였습니다.

시스템 구성 개요
[개요] 전체 서버 구성은 프론트 엔드 서버에서 Vue.Js(Node.js) Framework 을 사용하여 개발되었고 핵심 라이브러리는
핵심 라이브러리는 SyncFusion 이란 막강한 UI 컴포턴트를 사용하여 개발하였습니다.

타이틀 상세 사항
Node.JS Frontend Frameworks: Vue.Js(Node.Js), Backend: C# .Net
DB MS-SQL
Web Server IIS 6.0
Android/iOS 앱 패키징
DB/Code 개발툴 VS Code / SQL Gate
관련 웹사이트 https://www.hansae.com/ko/index.asp
Node.JS: Vue.Js 상세 개발 내용
[제품 생산 공정 스케줄링 프로젝트]
항목 상세 내역
주요기능 1. 다수의 제품 생산 오더를 당당자별 팀별로 분할하여 일정을 만들고
2. 해당 일정에 대하여 Elastic 한 방식으로 Gantt Chart를 만들어
3. 직접 상황을 확인하면서 일정을 조정할 수 있도록 하며
4. 각 오더에 대한 세부 오더들에 대해서 일정을 조정할 수 있도록
5. 사용자 인터페이스를 구성하였습니다.
기능 설계 Backend 단에서 제공된 API에 맞추어 기본적으로 이미 자체 개발된 Vue.js 관리자
모드 보일러 플레이트를 사용하였으며 리본메뉴와 좌 우측 메뉴을 동시에 사용할 수 있도록
조정하였습니다.
구성 설계 2020년 3월 Node.JS: Vue.Js Framework 와 React로 개발된 Global 봉제공정 관리
시스템을 개발하여 베트남의 호치민시, 과테말라 산호세시, 인도네시아 우타마 등에 있는 봉제 공장에
활용할 수 있도록 하였습니다.Backend 단에서 제공된 .Net C# 으로 만들어지 서버 API에 맞추어
기본적으로 이미 자체 개발된 Vue.js 관리자 모드 보일러 플레이트를 사용하였으며 리본메뉴와 좌
우측 메뉴을 동시에 사용할 수 있도록 조정하였습니다.
다보리가 해당 서비스 업체에 제공할 서비스는
항목 상세 내역
On-Premise 서버 상시 최대 가용성 상태를 유지
개발의 뒷이야기
베트남 개발자와 함께 개발하여 베트남 호치민시의 공장에 첫번째 테스트을 할 수 있었습니다. 이후 코로나의 여파로 실제 공정에 설치하는 과정은 지연되긴 하였지만 성공적으로 런칭하여 각 국의 봉재 공장 브랜치에서 사용하고 있습니다.

[Node.JS 유지보수] All the Partee – Zoom 기반 글로벌 무료 화상 강의, 소셜 에듀케이션 프로젝트 완료

안녕하세요 ?
2020년 10월 Node.JS 로 개발된 Allthepartee 시스템의 사후 관리 유지 베이스로 계약하여 2개월 만에 성공적인 오픈을 할 수 있었습니다.

시스템 구성 개요
[개요] 전체 서버 구성은 5대로 프론트엔드 서버, 백엔드서버, DB 서버로 구성되어 있습니다.

타이틀 상세 사항
Node.JS Frontend Frameworks: React JS, Backend: Express
DB My-SQL
Web Server NginX
Android/iOS 앱 패키징
DB/Code 개발툴 VS Code / SQL Gate
관련 웹사이트 https://allthepartee.com/
Node.JS 상세 개발 내용
현재 카카오톡 오픈 채팅방에서 운영 중인 서비스를 모바일 앱으로 제작하는 프로젝트입니다.

44개국 유저를 대상으로 한국인들이 참여하는 재능공유 무료 커뮤니티 서비스입니다.
페이스북 스타일의 커뮤니케이션 기능이 필요하며, 교육 진행을 희망하는 유저가
방을 개설했을 때 다른 유저가 참여하고 줌(ZOOM)을 통해 교육을 진행하는 구조입니다.

진행 과정에서 결제, 화상채팅 지원은 필요하지 않으며, 유저 간 중개, 매칭을 지원하는 서비스입니다.

항목 상세 내역
주요기능 – 페이스북 스타일의 커뮤니케이션 기능(게시글, 댓글, 좋아요 등)
– 오픈 채팅방 관리기능(내보내기, 게시글 삭제 정도), 등록된 교육일정표 기능 등
– 안드로이드, IOS 앱 구현 목표
기능 설계 순차적으로 기능 개발, 론칭을 하는 애자일 방식을 지향합니다.
추가적으로 모바일 웹, PC 웹용 1페이지짜리 서비스 소개 페이지 개발이 필요합니다.
구성 설계 웹과 모바일웹을 먼저 개발하고 안드로이드와 iOS 베이스로 앱 페키징을 완료하였습니다.
다보리가 해당 서비스 업체에 제공할 서비스는
항목 상세 내역
AWS EC2 관리 상시 최대 가용성 상태를 유지
개발의 뒷이야기
초기에 타 개발사와 계약해서 작업 진행하던 중 개발 일정과 계속 지연되고 산출물이 지연되는 이유로 인하여 이전 업체와의 계약을 해약하고 본사가 해당 프로젝트를 중도에 인수 인계 받게 되었습니다. 소스코드 인수 과정과 초기 개발과정이 쉽지는 않았지만 잘 마무리하여 성공적으로 론칭 시켰습니다.
문의하기견적의뢰지금 연락 주십시요!