8월 Wanted 프리온보딩 인턴십 지원 후기

wodnr_P·2023년 8월 6일
0

최근 취업 준비로 인해 채용 공고를 보다가 원티드에서 진행하는 8월 BE 프리온보딩 인턴십에 지원하게 되었습니다.

커리큘럼을 살펴보니 자료구조, 알고리즘을 위주로 구성되어 있었습니다.

이번 기회에 혼자 공부하기 부족하다고 생각하는 부분을 확실하게 공부하자는 마음으로 신청하게 되었습니다.

지원 절차는 윈티드 이력서, 사전과제를 제출하는 것이었습니다.

사전과제

사전 과제는 요구 사항에 맞는 API를 작성하는 것이었습니다.JWT 인증 방식의 회원가입과 로그인, 게시판 CRUD와 페이지네이션을 계속 공부하고 있는 Django 스택으로 구현했습니다.

테스트 코드 작성과 Docker-compose 활용, AWS 배포에는 가산점을 부여한다고 하여 경험했던 것을 바탕으로 UnitTest와 Docker-compose를 활용하여 배포했습니다. AWS 배포도 할 수 있었지만, 최근 AWS 프리티어 기간이 종료되어 로컬 배포로 만족했습니다.

평가요소는 코드의 품질, 정상 작동 여부, Git&Github 활용 능력으로 구성되어 있었습니다. 최대한 코드의 중복성을 배제하고, 예외 사항 처리를 중점으로 코드를 작성했으며 요구사항을 정직하게 지키는 것을 목표로 코드를 작성 했습니다.

요구사항에는 로그아웃과 refresh_token을 활용한 로그인 세션 유지는 기재되어 있지 않아서 의아 했지만(?) 정직하게 요구사항을 지키기 위해 따로 구현은 시키지 않은게 조금 걱정되기는 합니다.

또한 git clone으로 프로젝트를 실행 했을 때의 에러 처리까지 Readme.md에 작성하여 정상 작동 여부를 충족 시키기 위해 여러번의 테스트를 거치고 거친 끝에 제출 했습니다!

8/6일까지 제출하면 가산점이 있어서 8월 4일 저녁에야 공고를 보게 되었지만, 이틀이면 충분히 구현하고 테스트까지 마무리 할 수 있다고 생각해서 서둘러 구현했고 이틀 남짓 동안 최대한 꼼꼼히 신경쓰기 위해 노력했습니다.

Docker-compose는 개인 프로젝트로 공부하며 부딪혀본 경험이 있기 때문에 금방 적용할 것이라 예상했지만 예기치 못한 에러 상황들 덕분에 8/6일의 기한을 맞추기 위해 꽤나 마음이 조급했습니다.

그 과정에서 겪었던 문제들을 회고로 남깁니다.


문제사항

1. 모든 로직을 다 구현했다고 생각하여 테스트 코드 작성, Postman을 활용한 통합 테스트까지 작성을 마무리하고 git에 push까지 했었지만..! 게시글 작성자만이 글을 수정, 삭제 할 수 있다는 요구사항을 빠뜨린 것을 발견

  • Authorization header에 있는 access_token을 decode하여 사용자 id를 복호화하고, 게시글 id로 조회한 DB의 사용자 id를 대조하는 조건을 추가하여 빠르게 로직과 테스트 코드를 수정할 수 있었습니다.
  • 요구사항은 항상 꼼꼼히.. 더 꼼꼼히 읽고 확인해야 한다는 것을 몸소 실천 했습니다 ㅎㅎ..

2. docker-compose up -d --build 이후 python manage.py test 실행 오류

  • docker-compose 컨테이너 내부에서 test 코드를 실행시키기 위해 docker-compose exec web python manage.py test 명령어를 실행 했으나, test_DB를 생성할 수 없다는 오류가 발생했고, test_DB는 따로 권한을 추가해주어야 한다는 것을 알게 되었습니다.
  • 처음에는 GRANT CREATE ON test_db.* TO 'db사용자'@'%'; 명령어로 생성 권한만을 부여 했지만 계속되는 권한 오류에 GRANT ALL PRIVILEGES ON test_db.* TO 'db사용자'@'%'; 명령어로 모든 권한을 부여했습니다.
  • 사실 모든 권한을 부여하는 것은 보안상 위험한 선택이지만, 혹시나 모를 예외사항을 고려하여 테스트의 정상 작동을 위해 모든 권한을 부여했습니다.

3. Django settings.py DB HOST 에러(?)

  • docker-compose.yml에 연결되는 Django settings.py의 DB정보 보안을 위해 DB정보만 담고 있는 settings.py 파일을 분리했는데 다음과 같은 오류를 마주했습니다.
django.db.utils.OperationalError: (2002, "Can't connect to MySQL server on 'mysql' (115)")
  • 수많은 구글링 결과 기존 docker-compose의 db container name으로 했던 HOST 값을 'localhost'로 변경하면 django container가 정상 작동 한다는 것을 확인했습니다. 하지만 다음과 같은 에러를 마주했고,
django.db.utils.OperationalError: (2002, "Can't connect to local MySQL server through socket '/run/mysqld/mysqld.sock' (2)")
  • 다시 HOST 값을 docker-compose의 db container name으로 지정했더니 정상 작동을 했습니다..(?)
  • 우연일 수도 있기 때문에 여러 차례 같은 상황을 반복했지만, 여전히 같은 방법으로 정상화 되는 것을 확인했습니다. 다른 근본적인 원인이 있을거 같지만 아직 찾지 못해서.. 혹시나 아시는 분은 댓글로 남겨주시면 감사드립니다. 원인을 꼭 잡아내도록 노력해보겠습니다!

이외에는 크게 어려운 점은 없었지만, 아직 명확히 해결되지 않은 오류 때문에 마음이 편하지는 않았습니다.

이력서는 몇번의 피드백을 마친 끝에 작성해 둔 것이 있어서 크게 어렵지 않게 업로드 할 수 있었습니다!


끝 맺으며

이번 프리온보딩 인턴십을 조금 더 빨리 알고, 준비했으면 더 완벽하게 작성할 수 있지 않았을까 하는 아쉬움이 있지만

짧은 준비 기간에 비해 새롭게 배우게 된 점도 있고, docker-compose에 대해 좀 더 공부해보는 계기가 되어서 지원 자체만으로도 좋은 경험이라고 생각합니다.

그래도 좋은 결과가 있어서 인턴십을 통해 더 바쁘고 알차게 배울 수 있으면 좋겠습니다.

profile
발전하는 꿈나무 개발자 / 취준생

0개의 댓글

관련 채용 정보