🖋️ 개요
서버 관리와 스프링 공부를 병행하며 학습한 내용을 실제 서비스로 구현한 프로젝트
📚 주요 내용
- Nginx 로그 열람
- Nginx의
access
및 error
로그를 파일 입출력으로 읽어 필요한 정보를 파싱하여 웹 페이지에 출력하도록 구현.
- sendmail을 사용한 2차 인증 구현
- Spring Security를 활용해 로그인 2차 인증 필터 추가.
Random
클래스를 사용해 6자리 인증 코드를 생성한 후, sendmail을 통해 사용자의 이메일로 인증 코드 전송.
- Nginx 로그 메일 백업
- 로그 백업 버튼을 누르면 관리자의 메일로 현재 로그 파일을 읽어 전송하도록 구현
- 파일 서버 구현
- Java의 파일 입출력을 사용해 간단한 파일 서버(10MB) 구현.
- 익명 메일 전송
- sendmail을 통해 익명성을 보장하는 이메일 전송 구현.
🔍 문제 해결 사례
- 메모리에 저장된 2차 인증 코드로 발생한 문제
- 문제: 초기 인증 코드를 메모리에서 관리하여, 동시 요청이 발생하면 인증 코드가 덮어써지는 문제 발생.
- 해결 방법: 사용자 엔티티에 인증 코드와 유효 기간을 함께 저장하도록 수정.
- 결과: 동시 요청 환경에서도 2차 인증이 안정적으로 작동.
- sendmail 동시성 문제
- 문제: 스크립트 파일을 수정한 후 실행하여 메일을 전송하던 기존의 방식 → 동시 요청 시 파일 수정 순서가 보장되지 않아 전송에 실패하는 경우 발생.
- 해결 방법: 요청 순서를 보장하기 위해 RabbitMQ 도입.
- 결과: 메일 전송 요청 보장.