오늘 한일
- MySQL에서 발생한 max allowed packet 오류를 해결하였습니다. DB를 조회할 때 수많은 Sub Query, JOIN을 사용해 한 번의 통신으로 해결하려 했던 Query 부분에서 오류가 발생하였습니다. 내부적으로 Sub Query를 8건, JOIN을 4건, GROUP BY를 3건 사용하였고, DB에 부하를 주고 있는 것을 확인하였습니다. 어떤 방식으로 해결해야 할지 알지 못해 SQL 튜닝에 관련된 자료를 찾아보았고, 가장 핵심적인 문장을 발견했습니다. 'DB에서 데이터 가공을 하는 것보다 Server에서 데이터 가공을 하는 것이 현명하다'라는 문장이었습니다. 기존에는 Sequelize의 Raw Query를 통해 통신 횟수를 줄이려고 했었는데, 코드 구성방식을 수정해 최대한 DB에 부하를 주지 않도록 Query를 변경하도록 해야 할 것 같습니다.
- AWS SES가 사용되지 않게 되었습니다. 첫 프로젝트를 기획할 때 React Native를 사용해 Application 형식으로 서비스를 제공하려고 하였고 Application 내부에 존재하는 알람 기능으로 사용자들에게 초대, 대화 내역의 알람을 보내주려 하였습니다. 하지만 Web App으로 전환하면서 알람 기능에 대해 고려하지 않고 단순히 Email에 메일을 보내면 되지 않겠냐는 생각으로 진행하였지만, 팀장 주간 회의에서 나왔던 피드백 중 이메일로 알람을 하게 된다면 사용자들이 인식하기에는 부족하기 때문에 알람 기능을 핸드폰 문자로 하는 게 어떻냐는 질문이 제시되었습니다. 그 순간 프로젝트를 진행하면서 기획에 대해 고려하지 않았던 자신을 후회하면서 이메일을 사용하지 않는 게 맞는 것 같다는 생각과 함께 AWS SES를 배제하고, 핸드폰 인증으로 전환하기로 하였습니다.
- 핸드폰 인증으로 변경하면서 많은 부분이 수정되었습니다. Users 테이블, MySQL PROCEDURE, API Response, Request 등 많은 기능이 얽혀있었고, 변경 작업을 시작하기 전 어떠한 순서대로 수정해야 할지 정리하였습니다.
- 1.Users 테이블, Migration, Models의 데이터를 변경해 DB를 사용할 수 있게 구성
- 2.DB의 Seed Data를 수정해 테스트 데이터의 오류를 수정
- 3.PROCEDURE를 수정해 이메일 인증을 핸드폰 인증으로 수정
- 4.API 문서에서 이메일이 삽입된 모든 기능을 핸드폰으로 수정
- 5.Joi Schema에서 이메일 패턴을 핸드폰 번호 패턴으로 수정
- 6.Express Router의 세부적인 기능을 전부 수정
- MySQL DB의 구조가 변경되었습니다. 대화방에서 확정 기능이 추가되면서 새롭게 생성된 confirm 컬럼과 Users, Auths테이블에서 email을 대신하는 phone 컬럼이 추가되었습니다.
업무 리스트
- max allowsed packet 오류 수정 [12:11]
- 핸드폰 API 문서 수정 및 DB ERD 구성 [14:00]
- 대화방 인원 및 확정 조회 API 구현 [17:23]
- 네이버 클라우드 SENS 프로젝트 생성 [17:32]
- 로그인, 회원탈퇴 email > phone 구조 수정 [21:38]
오늘 배운 것
- MySQL max allowed packet 오류
- Naver Cloud SENS
- Redis Expire
내일 할 것
- 코딩 테스트 연습
- WIL 작성
- 일주일의 재정비
'항해99 > TIL' 카테고리의 다른 글
2021-08-23 항해99 TIL (0) | 2021.08.24 |
---|---|
2021-08-22 항해99 TIL (0) | 2021.08.22 |
2021-08-20 항해99 TIL (0) | 2021.08.21 |
2021-08-19 항해99 TIL (0) | 2021.08.20 |
2021-08-18 항해99 TIL (0) | 2021.08.19 |