👑 MJ Choi (Judy) (Project Manager), SW Park
- DB design and implementation using ERD
- Data management with MySQL WorkBench
- Encrypt user's password using Bcrypt and save it to DB
- Manage user's account information more securely
- Use regular expressions to check quickly if user's password follows password generation rules
- When login is successful, the server uses secret key to generate JWT
- After login, use JWT instead of password for user authentication/authorization (to improve security)
- Top 6 product data are extracted from DB (Sorted in descending order by sales volume)
- Increase code reusability
- To minimize the repeated use of similar SQL queries on the Main and Category pages, duplicate queries are declared with the defaultQuery string only once and then more queries are added.
- Efficient request from FE by using query parameters
- In order to support Page Nation of FE, only 6 data (per page) are extracted from DB and provided to FE.
- It also reduces traffic overload and execution time (prevent delivering too much data at once)
- Provide the details of a particular product
- (BE only) Developed product review API
Authorization and authentication using JWT
- Verify logged-in user's JWT before all APIs are performed.
- Implementing INSERT and UPDATE simultaneously within one API and one query using 'UPSERT'
- Combine 'INNER JOIN' to get all information of the shopping cart with just one JWT (minimize information exposure and enhance security)
Authorization and authentication using JWT
- Verify logged-in user's JWT before all APIs are performed.
- Use 'transaction' to ensure that CRUD of data in DB when it not partially executed or interrupted
- INNER JOIN queries are combined to allow users to view all order lists with only one order information (order ID) (minimize information exposure)
Read more
- Security risk can occur
- 💡 We can use MFA / Refresh token
- Could not share same DB & Could not test our module in the same environment
- 💡 Let's try AWS RDS or S3 next time!
- Can run only one server at the same time
- We had to wait until our supervisor feedbacks to the pull request and merges to the main branch
- There are many sub branches. So when we had some module test, we had to checkout sub branches often
- 💡 Change port number
- 💡 Make test branch & merge all sub branches to the test branch
- I heard that developers don't develop using only MySQL queries...!? 👩💻
- 💡 MyBatis
- A framework to help with DB integration in Java (Spring)
- SQL Mapper framework most commonly used to develop query-based web applications
- We can use MyBatis with MySQL queries (there are many easy methods that MySQL does not have)
- Development with MyBatis is easier than using only MySQL
- 💡 Query Builder
- One of the most powerful function of TypeORM
- It is easier to handle DB and more readable and efficient
- When I tested my code, there were too many bugs
- 💡 In the development stage, test my code using Jest
- My back-end co-worker couldn't easily understand my code (Sometimes... me too 😂)
- 💡 Refactoring!
- ex) Separate code into classes (modular)
- ex) Change the method (API) name to make it more legible.