# Case
Imagine that you are joining as a Senior engineer at Zehitomo. Your first mission is to develop a new functionality whose release date is set to 6 months from now.
## Questions
### Question 1 (System Design)
Based on the information below, please describe the system design of the product that you plan to build and release.
Note that you have to build the product form scratch. So you don't need to worry about an existing system. But be aware of the current tech stack.
## Additional information
### Product Requirements
- Administration interface for pro's (eg. flower shop, coiffeur, etc.)
- Create/edit/publish/disable service opening
- Assignes budget for advertisement campaings (=> improving ranking position in service search result page)
- Track requests/revenue and ad campaigns related to service openings
### Tech stack
- Node.js
- Mongo DB
- React
- AWS
# Solution
## System design
企業規模(店舗の数)によってシステムが変わる
まずは1店舗の管理システムから開始
複数ユーザー管理
1. ID、パスワード(Proの数:1000、1 Proに対して約5ユーザまで)
AWS Cognito(セキュリティー、管理しやすさ)
RDS
2. SNSログイン
サービスの登録、編集、削除
Transaction管理が必須:AWS Aurora(1 Proに対して20 service)
Read:
Tables:一覧、詳細、カテゴリー
Write
Update: 240万/年
Delete
検索
SolR, ElasticSearch
検索に必要な情報を一つのドキュメントにまとめ
Document数:2万
In-Memory Update
更新はリアルタイム
Node.js/lambda
1 lambda、複数のendpoint
RDS→Batch→SolR
CloudWatch
Datadog
- Database connection数
- Transaction Read/Write
- RDS Memory
- Lambdaのresponse time
- SolRのresponse time
CodePipelineを使いたいが、実際の使い方を要確認
Github Actions
Zehitomoの既存APIを利用し、サービス内容をpublishする