설렘 프로젝트에서 회원가입 시 인증번호를 통한 이메일 인증을 하는 기능을 구현하였다.
redis를 처음 적용해보았다.
이를 위해 redis 에 대한 일반적인 내용을 설명하는 유튜브 영상도 보고, Spring Data Redis 공식문서를 보며 예제를 통해 구현에 도움을 가지기도 했다.
해당 기능은 다른 분들도 많이 구현했던 기능이어서 참고할만한 자료들도 많았다.
Google SMTP, Spring의 JavaMailSender, Redis 등 많은 것을 알아보고 사용해보았다.
문제점들도 당연히 있었는데, 먼저 사용 시나리오가 조금 부적절했다.
현재 상태로는 인증번호 검증이 회원가입 요청과 함께 동시에 이뤄진다.
다른 서비스들의 일반적인 모습은 인증번호 확인이 먼저 이뤄진 후 다음 단계로 회원가입이 이뤄진다.
처음부터 설계가 잘못된 것이었다.
다음으로 Redis는 인메모리 기반으로 필연적으로 메모리를 점유하게 된다.
설렘 서비스의 배포 환경 AWS ec2는 메모리 부족으로 OOM 이 발생한 적이 있어 Swap Memory 를 설정해두었을 만큼 메모리가 넉넉하지 않다.
그 이유 중 하나로 서버의 DB를 ec2 상에서 mysql 을 사용하는 것도 영향을 미쳤을 것이다.
ec2 cli 에서 top 명령어로 메모리 상태를 확인하고 CloudWatch Agent 를 설치하는 등 메모리 상태를 점검하기도 했다.
그 결과 ec2에서 mysql 을 사용하는 것 대신, AWS RDS 를 사용하기로 결정하고 사용하려고 했다.
여기서 서버 어플리케이션과 RDS 가 연결되지 않는 문제가 발생했다.
RDS 인스턴스의 보안 그룹 설정, 파라미터 그룹 설정, mysql 내부의 원격접속 허용 설정 등 대부분의 조치를 취했지만 결국 연결이 되지 않는 상태여서 재작업이 필요하다.
구현 과정
https://my-little-seollem.notion.site/9ec084b072544a998a28170977aa1824
이외에도 알고리즘 학습, 운동 등을 하며 시간을 보냈다.
좋은 개발자가 되기 위해서는 많은 것이 필요한 것 같다.
'취준일기' 카테고리의 다른 글
| 6 (0) | 2023.02.17 |
|---|---|
| 5 (0) | 2023.02.03 |
| 4-알고리즘, 스프링 시큐리티 학습, 프로젝트 (0) | 2023.01.27 |
| 2-프로젝트 사용자 인증 (0) | 2023.01.18 |
| 1-학습 (0) | 2023.01.17 |