Netflixプロジェクト
✨ Introduction
これは2週間のnetflixクローンプロジェクトです.
開発期間:22.03.20~22.04.01
参加者:2台のサーバー/1個のフロントエンド
📚 Architecture
添付するつもりです.
EC 2サービスでサーバを構築し,nginxをノードとする.jsフロントエンドでプロキシサーバとして使用します.
データベースはRDSから分離され、MySQLが使用されています.
EC 2をデータベースから分離する理由
開発中のコンピュータをシャットダウンすると、サーバは自動的にシャットダウンされ、クライアントもAPIを使用できなくなるため、EC 2が使用されます.さらに、データベースをRDSから分離して、複数のサーバを配備するときに1つのデータベースを共有します.
⚙ERD設計
📝 機能リスト
Netflix機能リスト
勘定科目
📝 APIリスト
Spring Rest Docsが反映されます
なぜ、RESTful APIドキュメントツールとしてSwagerとSpring Rest Docsを選択したのですか?
文書はRest DocsSwagerテストに成功した場合にのみ生成されます.APIをテストする画面を提供します.バージョンの変化は柔軟で、正確性が高い.バージョンの変更に応じて書き直す必要があります.適用し難い
📂 Directory Structure
Directory Structure
netflix-server
└─src
├─main
│ ├─java
│ │ └─com
│ │ └─example
│ │ └─demo
│ │ │ DemoApplication.java
│ │ │
│ │ ├─config
│ │ │ │ BaseException.java
│ │ │ │ BaseResponse.java
│ │ │ │ BaseResponseStatus.java
│ │ │ │ Constant.java
│ │ │ │
│ │ │ └─secret
│ │ │ Secret.java
│ │ │
│ │ ├─src
│ │ │ │ WebSecurityConfig.java
│ │ │ │
│ │ │ ├─account
│ │ │ │ │ AccountController.java
│ │ │ │ │ AccountDao.java
│ │ │ │ │ AccountProvider.java
│ │ │ │ │ AccountService.java
│ │ │ │ │
│ │ │ │ └─domain
│ │ │ │ Account.java
│ │ │ │ PatchAccountReq.java
│ │ │ │ PatchPasswordReq.java
│ │ │ │ PostAccountRes.java
│ │ │ │ PostLoginReq.java
│ │ │ │
│ │ │ ├─alarm
│ │ │ │ │ AlarmController.java
│ │ │ │ │ AlarmDao.java
│ │ │ │ │ AlarmProvider.java
│ │ │ │ │ AlarmService.java
│ │ │ │ │
│ │ │ │ └─domain
│ │ │ │ Alarm.java
│ │ │ │ GetAlarmRes.java
│ │ │ │ SetAlarmReq.java
│ │ │ │
│ │ │ ├─assessment
│ │ │ │ │ AssessmentController.java
│ │ │ │ │ AssessmentDao.java
│ │ │ │ │ AssessmentProvider.java
│ │ │ │ │ AssessmentService.java
│ │ │ │ │
│ │ │ │ └─domain
│ │ │ │ Assessment.java
│ │ │ │
│ │ │ ├─bookmark
│ │ │ │ │ BookmarkController.java
│ │ │ │ │ BookmarkDao.java
│ │ │ │ │ BookmarkProvider.java
│ │ │ │ │ BookmarkService.java
│ │ │ │ │
│ │ │ │ └─domain
│ │ │ │ Bookmark.java
│ │ │ │ BookmarkReq.java
│ │ │ │ GetBookmarkRes.java
│ │ │ │ PatchBookmarkReq.java
│ │ │ │
│ │ │ ├─category
│ │ │ │ │ CategoryController.java
│ │ │ │ │ CategoryService.java
│ │ │ │ │
│ │ │ │ └─domain
│ │ │ │ MainCategory.java
│ │ │ │
│ │ │ ├─character
│ │ │ │ │ CharacterDao.java
│ │ │ │ │
│ │ │ │ └─domain
│ │ │ │ Character.java
│ │ │ │
│ │ │ ├─email
│ │ │ │ │ EmailController.java
│ │ │ │ │ EmailService.java
│ │ │ │ │
│ │ │ │ └─domain
│ │ │ │ EmailDto.java
│ │ │ │ EmailNotificationReqDto.java
│ │ │ │ VerificationReqDto.java
│ │ │ │
│ │ │ ├─genre
│ │ │ │ │ GenreController.java
│ │ │ │ │ GenreDao.java
│ │ │ │ │ GenreProvider.java
│ │ │ │ │
│ │ │ │ └─domain
│ │ │ │ Genre.java
│ │ │ │
│ │ │ ├─googleAccount
│ │ │ │ │ ConfigUtils.java
│ │ │ │ │ GoogleAccountController.java
│ │ │ │ │ GoogleAccountDao.java
│ │ │ │ │ GoogleAccountProvider.java
│ │ │ │ │ GoogleAccountService.java
│ │ │ │ │
│ │ │ │ └─domain
│ │ │ │ GoogleAccount.java
│ │ │ │
│ │ │ ├─kakaoAccount
│ │ │ │ │ KakaoAccountController.java
│ │ │ │ │ KakaoAccountDao.java
│ │ │ │ │ KakaoAccountService.java
│ │ │ │ │ KakaoOAuth.java
│ │ │ │ │
│ │ │ │ └─domain
│ │ │ │ KakaoAccount.java
│ │ │ │ PostKakaoAccount.java
│ │ │ │
│ │ │ ├─lineAccount
│ │ │ │ │ LineAccountController.java
│ │ │ │ │ LineAccountDao.java
│ │ │ │ │ LineAccountProvider.java
│ │ │ │ │ LineAccountService.java
│ │ │ │ │
│ │ │ │ └─domain
│ │ │ │ LineAccount.java
│ │ │ │
│ │ │ ├─naverAccount
│ │ │ │ │ NaverAccountController.java
│ │ │ │ │ NaverAccountDao.java
│ │ │ │ │ NaverAccountProvider.java
│ │ │ │ │ NaverAccountService.java
│ │ │ │ │
│ │ │ │ └─domain
│ │ │ │ NaverAccount.java
│ │ │ │
│ │ │ ├─profile
│ │ │ │ │ ProfileController.java
│ │ │ │ │ ProfileDao.java
│ │ │ │ │ ProfileProvider.java
│ │ │ │ │ ProfileService.java
│ │ │ │ │
│ │ │ │ └─domain
│ │ │ │ PatchProfileReq.java
│ │ │ │ PostProfileReq.java
│ │ │ │ PostProfileRes.java
│ │ │ │ Profile.java
│ │ │ │
│ │ │ ├─profilePhoto
│ │ │ │ │ ProfilePhotoController.java
│ │ │ │ │ ProfilePhotoDao.java
│ │ │ │ │ ProfilePhotoProvider.java
│ │ │ │ │ ProfilePhotoService.java
│ │ │ │ │
│ │ │ │ └─domain
│ │ │ │ GetProfilePhotoRes.java
│ │ │ │ PatchProfilePhotoReq.java
│ │ │ │ ProfilePhoto.java
│ │ │ │
│ │ │ ├─search
│ │ │ │ │ SearchDao.java
│ │ │ │ │ SearchProvider.java
│ │ │ │ │ SearchService.java
│ │ │ │ │
│ │ │ │ └─domain
│ │ │ │ Search.java
│ │ │ │
│ │ │ ├─sms
│ │ │ │ │ SmsController.java
│ │ │ │ │
│ │ │ │ └─domain
│ │ │ │ MessagesReqDto.java
│ │ │ │ SendSmsResDto.java
│ │ │ │ SendVerificationNumberResDto.java
│ │ │ │ SmsRequest.java
│ │ │ │ SmsRequestDto.java
│ │ │ │ VerificationReqDto.java
│ │ │ │
│ │ │ ├─test
│ │ │ │ TestController.java
│ │ │ │
│ │ │ ├─video
│ │ │ │ │ VideoController.java
│ │ │ │ │ VideoDao.java
│ │ │ │ │ VideoProvider.java
│ │ │ │ │ VideoService.java
│ │ │ │ │
│ │ │ │ └─domain
│ │ │ │ GetVideoRes.java
│ │ │ │ Video.java
│ │ │ │ VideoContent.java
│ │ │ │ VideoDetail.java
│ │ │ │
│ │ │ └─videoPlay
│ │ │ │ VideoPlayController.java
│ │ │ │ VideoPlayDao.java
│ │ │ │ VideoPlayProvider.java
│ │ │ │ VideoPlayService.java
│ │ │ │
│ │ │ └─domain
│ │ │ VideoPlay.java
│ │ │
│ │ └─utils
│ │ AES128.java
│ │ JwtService.java
│ │ ValidationRegex.java
│ │
│ └─resources
│ application.yml
│ logback-spring.xml
│
└─test
└─java
└─com
└─example
└─demo
DemoApplicationTests.java
.gitignore
build.gradle
gradlew
gradlew.bat
README.md
settings.gradle
📹 Postman Test Video
動画はアップロードされていないので、Googleドライブとして添付します.
🔍 難点
🔍 残念なことに。
💫 未来の発展方向
JdbcTemplate
ORMベースではなくJPA
Reference
この問題について(Netflixプロジェクト), 我々は、より多くの情報をここで見つけました https://velog.io/@yyy96/Netflix-프로젝트テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol