Skip to content

MTVS-Nebula/nebula-resource-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Nebula resource

52hertz 메타버스 플랫폼의 리소스를 제어/관리하는 서버입니다
RestAPI 로 Unity Client 와 데이터를 송수신하며 플랫폼 자원의 모든 데이터를 관리합니다

아키텍처

  • AWS 상의 다중 가용영역에 배포되어 있습니다.
  • github hooks / Jenkins를 이용해 개발 서버 CI/CD
  • codeBuilder / codeDeploy를 이용해 배포 서버 CI/CD

구현 목표

서버측 유효성 검사

클라우드 네이티브 배포

  • 오토스케일링과 로드밸런싱 환경에서 설정정보를 통합적으로 관리하기 위해 Configuration Server를 분리
    • spring cloud config client 이용
  • 설정 파일에 대한 변경은 actuator/refresh 를 통해 서버별 갱신
    • spring cloud bus를 통해 갱신 자동화
  • 운영환경과 테스트 환경을 분리해서 배포
    • 운영환경의 경우 main 브랜치를 ubuntu 상에서 가동
    • 개발환경의 경우 dev 브랜치를 ubuntu 상의 docker machine에서 가동

성능 최적화

  • 데이터베이스에서 읽기요청이 많을 것으로 예상됨
    • CQRS 패턴 적용
    • 읽기 전용 데이터베이스를 분리하여 읽기 로직처리만 담당
  • 인덱스와 쿼리 튜닝 활용
  • JPA N+1 쿼리 문제 해결

코딩 컨벤션

지속 고려 사항

  • 중복코드 최소화
  • 성능 개선

CI

Jenkins : PR/Merge 시 테스트 자동화
CodeBuilder(AWS) : Build파일 패키징 시 테스트 자동화

CD

개발 서버
Jenkins : Merge시 도커 이미지를 만들어 배포
보안 상 도커 허브에는 올라가지 않음
Build 성공 시 해당 이미지 파일로 서버 대체 실행
배포 서버
CodeBuilder : github 레파지토리의 파일을 clone 하여 maven 빌드 CodeDeploy : Build에 성공할 경우 오토 스케일링 대상 그룹에서 Blue/Green 무중단 배포

테스트

  • 테스트 자동화 구현
    • github PR시 테스트 자동화
    • 메인에 머지 시 테스트 자동화
    • maven package 시 테스트 자동화
  • 테스트 코드 작성 예정

Database

  • PostgreSQL
    AmazonRDS 이용하여 배포 private Subnet을 이용하여 외부 접속 제한 image

개발환경

  • Java8
  • Spring boot
  • Maven
  • JPA
  • Docker
  • PostgreSQL
  • Jenkins
  • AWS
    • Route53
    • LoadBalancer
    • AutoScaling
    • Code Deploy / Code Builder
    • EC2
    • VPC / Subnet
    • etc ...

About

MTVS nebula 유니티 리소스를 제어하는 서버

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages