진행중인 교육에서 두번째 프로젝트로 블록체인 인센티브 기반 커뮤니티를 개발하게 되었다.
예전부터 생각해두었던 반려견·반려묘 성장일기에 NFT와 토큰을 입히는 커뮤니티를 제안하였는데,
간단히 설명하면 사용자가 자신의 반려견·반려묘의 사진과 함께 성장일기를 업로드하면 해당 성장일기를 NFT로 생성하고,
업로드한 성장일기에 좋아요를 받는 수만큼 토큰을 지급해주는 일종의 반려견·반려묘 SNS를 구현해보았다.
Server
└ app.js # App의 시작 지점
└ config # 환경변수 및 설정 파일 관리
└ loaders # module별 시작 프로세스 분할
└ routes # 라우터
└ controller # 컨트롤러
└ models # DB 모델
└ services # 비즈니스 로직 작성
서버는 위와 같이 'Controller-Service-Data Access Layer'로 이어지는 3계층 구조로 설계를 했다.
예전에 JAVA 웹개발하면서 주구장창 하던 MVC 패턴과 유사한 것 같다..!
다른 것보다도 이전에는 app.js에 DB 등 여러 모듈에 대한 기초설정을 다 작성하여 코드보기도 불편하고 지저분했는데
loaders 폴더 하위에 각 module별로 분할해서 작성하니 확실히 보기도 좋고 추후 module을 추가 및 제거하기도 용이한 것 같다.
이번에는 흉내만 내본 수준이라 더 좋은 아키텍처 설계들을 참고하여 공부가 필요할 것 같다.
본인이 제안한 아이디어이기도 하고 완성도 있게 만들어 보려 했는데 아쉬움이 많이 남는다.
그래도 약소한 성과가 있다면 지난번과는 달리 서버 아키텍처를 설계하는데에 좀더 공부해서 나름대로 흉내는 내본 것 같다.
DB도 MYSQL로 해볼까 하다가 NoSQL도 공부할 겸 안해 본 MongoDB를 사용해보았다는 것에 의의를 두어야겠다.
기회가 된다면 해당 아이디어를 완성도 있게 구현해보고 싶다.