2022 Masters Course/Project Course

2022 마스터즈 코스(백엔드) 103일차 회고(2022. 6. 8.) - "익숙치 않은 도커 환경"

ikjo 2022. 6. 8. 19:35

해당 글은 코드스쿼드 2022 마스터즈 코스 "Java 웹 백엔드" 과정을 수강하면서 학습한 내용 등에 대한 회고 글입니다. :)

 

수강 회고

오늘은 담당 리뷰어로부터 리뷰를 받는 날로 이를 위해 풀 리퀘스트(Pull Request)를 하는 날이다. 이제 이번 프로젝트의 풀 리퀘스트도 오늘 것과 함께 이번주 금요일의 것이 마지막 풀 리퀘스트가 되니 이제 슬슬 이번 프로젝트도 마무리가 되어가는 느낌이다. 백엔드에서 해볼 수 있는 것은 나름대로 여러가지 시도해보긴 했지만 처음 시도하는 작업들이 많아서 갈피를 잡기 어려웠던 부분도 있었고 오랜 시간 삽질을 했었던 부분도 많았다. 그래도 그 과정에서 많은 것들을 배우고 익힐 수 있었기에 지난 반찬 주문 서비스 프로젝트에 이어서 유익했었던 프로젝트라고 생각한다.

 

 

학습 회고

이번주부터 작업을 진행하고 있는 JWT를 통한 로그인 및 로그인 검증에 대한 대략적인 흐름도를 구성해보고 이를 나름대로 구현을 마무리했다. 이제 프론트 엔드와 통신하면서 로그인 처리나 로그인 검증 등의 기능이 원활히 돌아가는지 확인하기 위해 AWS에 업데이트된 스프링 부트 웹 앱을 도커 컨테이너로 배포해보았다.

 

그러나 아니나 다를까 깃허브 OAuth 로그인 인증 단계부터 서버에 오류가 발생했다. 😅 문제의 원인은 환경 변수 때문인 것으로 추정된다. 깃허브 OAuth 로그인 인증 작업을 처리하는 과정에서 서버는 '시크릿 키(Secret Key)'라는 값을 사용하는데, 이 값을 탈취당하면 악용될 우려가 있어 코드에 직접적으로 사용하기 보다는 보통 시스템 환경 변수로 설정하곤 한다.

 

이때 로컬(윈도우) 환경에서나 AWS(리눅스) 환경에서는 해당 시크릿 키 값을 특정 방법으로 시스템 환경 변수로 설정을 하면 스프링 부트 웹 앱에서 해당 시스템 환경 변수를 읽어올 수 있게 된다. 지난 반찬 주문 서비스 프로젝트에서도 이와 같은 방식으로 작업을 처리했었다.

 

하지만 문제는 이번 프로젝트에서는 스프링 부트 웹 앱이 AWS(리눅스) 환경에서 직접적으로 돌아가는 게 아니라 컨테이너라는 가상의 환경에서 돌아간다는 점이다. 도커 컨테이너에서 실행되는 스프링 부트 웹 앱 역시 마찬가지로 시크릿 키를 읽기 위해서 시스템 환경 변수를 읽어야 하는데, 도커 컨테이너에서는 로컬(윈도우)나 AWS(리눅스)와 다른 방법으로 시스템 환경 변수를 설정해줘야 하는 것이다.

 

사실 배포를 하기 전에 이 부분에 대해 나름 고민해서 AWS 로컬에 있는 환경변수 파일을 저장하고 있는 디렉토리를 도커 컨테이너의 root 경로로 마운트를 해봤지만 (예상했던대로???) 제대로 읽지 못해서 발생한 오류로 추정된다. 💦

 

 

좋았던 점

  • 이제 어느 정도 이번 팀 프로젝트 미션 과제 요구사항 구현을 마무리 하는 단계에 있는데, 지난 2주 반 동안 정말 많은 것들을 학습할 수 있었던 것 같아 매우 유익했습니다. 👍

 

아쉬웠던 점

  • 요즘 생활 패턴이 뒤바뀌어 저녁 늦게 작업을 하고 낮에 수면을 취하는 등 불규칙한 수면 패턴으로 건강이 안 좋아 지는 느낌이 듭니다. 😂 개발자는 건강 관리에도 유념해야 되는데 뭔가 특정 부분에 꽂히게 되면 해결이 될 때까지 잠을 미루는 습성이 있는데 고쳐야 할 필요성을 느낍니다.

 

이전 보다 개선되었던 점

  • 아직도 많이 부족하지만 그래도 이전 보다는 어떤 오류가 발생했을 때 좀 더 논리적으로 원인 분석을 생각할 수 있게 된 것 같습니다. 🥕