Api를 개발하는 것은 쉬운 일이 아닙니다. 어떤 App도 개발하는데 불편함이 없어야 합니다. 다양한 표준 Api를 제공하면서 의존성도 낮아야합니다. 그리고 잦은 변경은 호환성을 떨어뜨리죠. 따라서 완성도를 높이기 위해 자체 Sample 게임이나 앱을 개발 및 테스트를 완료하고 공개할 계획입니다. https://ghostnetgames.github.io/ 을 통해 개발 문서를 공유하고 있습니다.
정리할 건 많은데 시간이 없어 많이 비어 있습니다. ㅜㅜ
구현요구사항
Master Server는 WPF를 기반으로 Multiple Window 프로그램으로 개발하고 배포할 예정입니다. 흔히 사용하는 Visual Studio이나 Adobe Tool 풍으로 개발하려다보니 조금 복잡하여 공부를 많이 하고 있습니다. 복잡할 수록 설계하는데 시간이 오래걸립니다. 현재 Release 된 앱보다 좀 더 서버 관련 정보를 모니터링 할 수 있는 기능을 제공할 계획입니다.
서버쪽 코드는 분리하기 쉽게 만들었으나 Ui가 시간이 걸릴 것 같네요…
구현요구사항
GhostNet 합의 알고리즘에는 PoW와 같은 증명과정이 존재하지 않습니다. 블록생성에는 보상이 주어지지 않기 때문에 블록 생성을 전담할 인증된 참여자가 필요합니다. 그리고 블록 생성을 담당하기 때문에 고속으로 동작해야합니다. 서버나 네트워크 프로그램에 특화된 Golang
을 기반으로 리눅스 서버 시스템에(물론 플랫폼 Dependency는 유지할 계획) 구축할 계획입니다. Genesis Block에 기본 계정 정보가 있으며 그 계정은 기본 Grand Master 계정으로 활용됩니다. (Adam, Eve, Alice, Bob)
Django를 유지할지 고민입니다. Golang으로 웹서버를 구현할까 고민중입니다. GhostNet 커뮤니티를 담당해줄 사이트이지만 SNS기능이 매우 제한적으로만 구현되어 있어 활용하기 불편합니다. 트위터와 유사한 시스템으로 구현할까 생각중입니다.
구현요구사항
역량 확보 Item
그냥 하면 되는 Item
역량을 확보해야하는 Item이 많으나 재미나 바로 할 수 있는 것은 GhostOpenApi와 Unity 샘플 게임 확보이다. Multiple Window는 확보된 코드를 분석하면된다. 상당히 어렵기 때문에 시간을 투자할 필요가 있다. Golang은 Web Server 개발로 역량을 확보한 후 Conversion을 진행한다.
그리고 Github상의 CI/CD를 경험해보고 내부적으로도 CI/CD를 구축해보자. 일단 Window상에 jenkins 셋업이 쉽지 않다…
GhostNet App은 Xamarin 기반으로 개발되었으나 Core는 분리되어 있다. 위 그림은 GhostNet의 Architecture를 보여준다. Layer 구조를 채택하였으며 철저히 단방향 의존성을 기준으로 구현되었다.
Read More