프로젝트에서 배운 점
로컬환경과 배포환경의 차이에 대한 고찰
문제점
프로젝트 배포 전, 모든 기능이 정상적으로 작동함을 확인했으나 AWS EC2에서 Docker로 빌드한 애플리케이션을 배포했을 때 두 가지 문제점이 발생했습니다.
- 일부 페이지에 접속 시 에러 페이지가 나오며 렌더링되지 않는 현상
- 아두이노 상태를 체크할 수 있는 apk 파일을 다운로드 페이지에서 정상적으로 다운로드할 수 없는 현상
해결과정
로컬 환경에서는 문제가 없었기에 배포 후에도 코드가 동일함에도 불구하고 문제가 발생한 것에 대해 이해하기 어려웠습니다. 강사님의 도움을 받으려 했으나, 즉각적인 해결이 어려워 스스로 문제를 해결하기로 했습니다.
구글링을 통해 개발 환경과 배포 환경의 차이로 인해 발생할 수 있는 오류를 알게 되었습니다. 가장 직관적으로 문제를 파악할 수 있는 방법은 배포된 서버의 로그를 확인하는 것임을 깨달았습니다.
로그 확인 결과:
- 첫 번째 문제는 템플릿 경로 문제로 판명
- 두 번째 문제는 파일 업로드 경로 문제로 판명
세부 문제 분석:
- 문제되는 페이지의 컨트롤러를 확인해보니, 리다이렉트는 정상이나 포워드로 페이지를 반환하는 메서드에서 “/member/login”과 같이 앞에 루트 경로가 지정된 페이지에서 문제가 발생함을 확인
- 서버 배포 시 static 경로가 개발 환경과 다를 수 있다는 사실을 확인하고 다운로드 파일 경로를 재설정해야 함을 인지
해결법 및 배운점
해결방법
- 포워드로 페이지 요청을 보내는 모든 메서드에서 경로 지정 시, 가장 앞의 /를 제거하여 템플릿 경로 문제를 해결
- DockerFile에서 static 폴더를 copy하는 명령어를 추가하고, 다운로드 경로를 해당 경로로 변경하여 파일 다운로드 경로 문제를 해결
배운점
- 환경 차이의 중요성: 로컬 환경과 배포 환경의 차이가 문제를 발생시킬 수 있음을 깨달았습니다. 개발 환경에서는 정상 작동하는 코드가 배포 환경에서는 오류를 일으킬 수 있음을 항상 염두에 두어야 합니다.
- 로그의 중요성: 배포된 애플리케이션에서 문제가 발생할 경우, 서버 로그를 확인하는 것이 문제를 가장 빨리 파악하고 해결할 수 있는 방법임을 배웠습니다.
- 경로 설정의 중요성: 경로 설정이 잘못되면 예상치 못한 문제가 발생할 수 있음을 인식하고, 특히 포워딩 시 경로 지정에 주의해야 함을 배웠습니다.
- 파일 경로 관리: Docker와 같은 컨테이너 환경에서는 static 파일 경로를 명확히 설정하고 관리하는 것이 중요함을 배웠습니다.
- 문제 해결 능력: 문제가 발생했을 때 혼자서도 해결할 수 있는 능력을 기르는 것이 중요하며, 이를 위해 끊임없이 학습하고, 구글링을 통한 정보 탐색 능력을 기르는 것이 중요함을 느꼈습니다.
'IT' 카테고리의 다른 글
Spring 웹 애플리케이션 마이그레이션: 파일 권한 문제 해결기 (0) | 2024.12.06 |
---|---|
팀 프로젝트 회고 [Pet Hub] (0) | 2024.06.26 |
MVC 패턴의 낯선 세계 (0) | 2024.04.10 |
객체지향의 5가지 원칙, SOLID에 대한 이해 (0) | 2024.04.02 |
CORS 에러에 대해 알아보자 (0) | 2024.04.01 |