[DevCamp]最終コードコメント
20521 ワード
目次開発者説明 が開発したサーバ、機能説明 ディレクトリ構造 コード説明 開発者の説明名 韓太賢 領域 バックエンド 使用技術 Spring Boot-バックエンド開発はすべてSpring Bootを採用して を行う MySQL- サービスに必要なデータを格納 MongoDB- 充電/支払時にログを残す REDIS-キャッシュとサーバ間のデータ同期のためのサービス WebSocket-ユーザーの移動、入室、退場などの高速リアルタイム通信のための 開発されたサーバのタイプと機能チャージ、支払サーバ(支払) 高カードインタフェースを使用して を充電する.チャージでゲーム機能 を購入
ゲームライブラリ-ロビーサーバ(library) ゲームライブラリをGetheTownを参考にしてコミュニケーションできる空間にして、私が持っているゲーム空間にしたいと思っています. は、ゲームオブジェクトにアクセス、移動、終了、インストールすることができる. は、迅速な応答を必要とするため、純粋なWebスロットを採用しています. RabbitMQを使用してサーバ間でメッセージを伝播し、の迅速な応答に重点を置きます. メンバーシップサーバ(メンバーシップ) 友人関連機能 ユーザープロファイル、ルーム名簿関連機能 ユーザ検索機能 API Gateway Springクラウドゲートウェイを使用して を実施 JWT認証 サービス発見 Spring Cloud Netflix Eurekaを使用して を実装負荷バランスで、複数のエンドポイントを容易に識別できます. ディレクトリ構造 バックエンドリンク 支払サーバー 支払サーバーのエントリ・リンク ThreadLocalを使用してスレッド内のユーザー情報を格納 ThreadLocalを含むクラスUserContext ユーザー情報を含むクラスUserDetail サーバがAccess Tokenを解析してUserContextに格納するFilter 充電実施 充電サービス 充電時に使用する高橋APIのみのサービス 充電ログ チャージログ付きMongoDB Document 支払実施 支払サービス 支払内部で使用される認証のみのクラス 支払時に開発者アカウントロックを設定するレポート 支払ログ 支払ログを含むMongoDB Document ライブラリ-ロビーサーバ ロビーサーバー入口リンク 自分のメッセージの約束 動作 メッセージディレクトリ スロットマネージャ Handlerクラス ビジネスロジック(サービス) ソケット上のメッセージに基づいて詳細な論理を実行するクラス;メッセージキュー内のメッセージ消費クラス トランザクションロジックを処理するクラス 他のサーバにメッセージを送信するクラス メンバーシップサーバ メンバーシップサーバリンク 友達 友達サービス 友達申請 友人の申請-承認/拒否プロセスのため、フレンドリクエスト名義で友人の申請状態を表す. プロファイル関連 プロファイル、アクセスレコードサービス 検索 検索サービス(ユーザー検索) レポート、Queryの検索 API Gateway APIゲートウェイエントリリンク APIゲートウェイはSpring Cloudゲートウェイを採用している. JWT認証クラス JWT検証フィルタ
+---payment # 충전, 결제 서버
| \---src.main.java.com.steam
| \---payment
| +---dto
| | \---kakaopay # 카카오페이 API 호출을 위한 DTO 폴더
| |
| +---entity
| | | Account.java # 개발사의 계좌 Entity
| | | Giftcard.java # 충전에 사용할 상품권 Entity
| | | Library.java # 유저가 소유하고 있는 게임 Entity
| | |
| | +---mongodb # MongoDB를 결제, 충전에 대한 로그를 남기는 용도로 사용
| | \---redis # 충전 과정에서 카카오페이 API를 사용하면서 관련 데이터를 임시 저장용으로 사용
| |
| +---global
| | +---common
| | | Body.java # ResponseEntity의 ResponseBody를 공통적으로 처리하기 위한 객체 (code, message, data)
| | | UserContext.java # Spring Security를 쓰지 않고 ThreadLocal에 유저 데이터(UserDetails)를 저장하기 위한 클래스
| | | UserDetails.java # JWT Payload의 유저 정보를 담을 객체
| | |
| | +---error
| | | ErrorCode.java # 에러 상황에 따른 코드와 메세지를 담은 Enum 객체
| | | CustomExceptionHandler # ErroCode에 따른 에러 처리를 통합적으로 하기 위한 ExceptionHandler
| | |
| | +---filter
| | | JwtFilter.java # UserContext에 JWT를 해석해 담는 과정을 Spring Filter로 구현
| | |
| | \---util
| | Validator.java # 게임 구매 시 결제 관련 검증 로직을 구현한 클래스
| |
| \---service
| ChargeService.java # 충전 서비스
| KakaoPay.java # 충전 서비스에서 사용할 카카오페이 API 서비스
| PurchaseService.java # 결제(게임 구매) 서비스
|
| # 결제 방식
| 1. 사용자가 카카오페이를 이용해 상품권을 결제하여 돈을 충전합니다.
| 2. 충전금을 가지고 게임을 구매합니다.
|
|
+---library # 웹소켓을 이용한 로비 서버, WebSockt + RabbitMQ로 구현
| \---src.main.java.com.steam
| \---library
| | LibraryWebSocketHandler.java # 웹소켓 핸들러, 메세지 해석, 행위별로 서비스 라우팅
| |
| +---dto
| | | MapDto.java # 맵 정보를 담을 DTO
| | | ObjectDto.java # 맵에 설치할 오브젝트(게임)DTO
| | | Room.java # 사용자별 하나의 공간인 Room DTO
| | | UserDto.java # 맵에서 유저 위치 정보를 담고 있는 DTO
| | |
| | \---messages
| | # **RequestMessage : 사용자 행위에 따라 받은 메세지 객체
| | # **UserMessage : 사용자 행위에 따라 동기화를 위해 전파할 메세지 객체
| |
| +---entity
| | RoomCache.java # Room 정보 Redis에 캐싱 (입장 시 빠른 동기화를 위해)
| |
| +---global
| | +---common
| | Behavior.java # 웹 소켓 메세지별 행위 ENUM
| | Direction.java # 이동 행위에 따른 방향 ENUM
| |
| \---service
| PublishService.java # 메세지를 메세지 큐(RabbitMQ)로 발행하는 서비스
| SocketDataService.java # 로직에 따라 Redis, MySQL 트랜잭션을 처리하는 서비스
| SocketService.java # 웹소켓으로 연결된 세션과 데이터를 직접적으로 다루는 비즈니스 로직 서비스 + 메세지 큐의 데이터 소비
+---membership # 친구, 유저 프로필 관련 서버
| \---src.main.java.com.steam
| \---membership
| \---service
| SearchService.java # 검색 서비스 (유저 검색_SQL 쿼리 이용_UserRepository.java)
| FriendService.java # 친구 관련 서비스 (친구 CRUD)
| ProfileService.java # 프로필 관련 서비스 (프로필, 방명록)
|
+---api-gateway # 인가, 라우팅 담당
| \---src.main.java.com.steam
| \---gateway
| | JwtValidator.java # JWT 유효성 검증 로직
| |
| \---filter
| AuthorizationCheckFilter.java # JWT 유효성 검증 필터
|
+---discovery # 서비스 디스커버리 Spring Cloud Netflix Eureka
# 엔드포인트들이 등록하여 엔드포인트를 식별하고, 로드밸런싱 + API Gateway에서 등록된 정보를 통해 라우팅
次のコードを見てくださいReference
この問題について([DevCamp]最終コードコメント), 我々は、より多くの情報をここで見つけました https://velog.io/@fortice/DevCamp-최종-코드-리뷰テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol