운영 중에 있었던 일...(terminus를 곁들인)
고객사의 약간의 voc가 있었고 관련 프로젝트를 준비하고 있었기 때문에 내가 해당 프로젝트 운영을 담당하게 되었다.
나름의 인수인계를 받고 운영 업무를 받았다.
(인수인계를 하는 사람도 관련 프로젝트를 인수인계받았는데 인수인계 해준 사람도 또 인수인계를 받았던 총체적 난국인 상황..)
헌데.. 최대한 빨리 쳐내야한다는 요구사항이 있었다.. 단 3일?
프로젝트 분석 및 개발환경 설정
프로젝트는 프로젝트 레퍼지토리와 운영 환경에서 실행중인 컨테이너가 있었다.
약간의 복잡한 아키텍처로 서비스들이 떠있었다.
접속 vpn 아이디를 발급받고 여기저기 인스턴스에 접근할 수 있었다.
개발환경과 운영환경으로 나뉘었고 ssh로 접속해야할 인스턴스들이 많았는데.. 동료가 terminus라는 지리는 앱을 알려줬다.
사실 뭐.. 이걸 쓸 이유가 없었기에 모르는 게 당연?(당연하면 안되나..)했다.
임무가 끝난 후에야 terminus 앱에 감사함을 엄청나게 느꼈다.
terminus는 여러 인스턴스에 접근해서 작업 처리를 해야할때 유용하게 쓰인다.
ip, pw, naming 등 설정해서 저장해두고 편하게 원하는 인스턴스에 접근하고 여러 인스턴스를 들락날락할 수 있다.
요구사항 처리
다시 돌아와서 voc 처리를 위해 서비스를 약간 개선하려니 인스턴스 서버간 통신이 필요했다.
ping test를 해보니 막혀있었다.
서비스 구성환경을 다른 업체 담당자가 맡고 있어 ACL 요청하여 통신 경로를 뚫어주었다.
(ACL https://kidkcoding.tistory.com/22)
최대한 기존 서비스 코드를 수정하지 않고 대응하고자 하는게 최우선의 목표였다.
인수인계 받고 코드를 분석하고 모든 걸 파악하기엔 시간이 너무 짧았다. (문제가 발생해도 고객이 괜찮다고 할 정도였다.)
고객에서 전달한 파일을 업로드해야했다.
350MB로 크다면 크고 작다면 작은 애매한 크기였다.
인스턴스 서버까지 요청이 도달하기 위해 WEB 서버 + 온갖 라우팅 장비들 + WAS 서버 + AI 서버 등 모든 서버, 장비, 서비스를 통과해야했다. nginx의 경우 max body size를 설정하니 통과되었다.
기타 장비들은 따로 패킷 크기에 대해 막고 있지 않았다.
WAS에서도 servlet 크기 설정을 실행할때 config file로 설정하도록 되어있어서 변경해줬다.
문제는 라스트 AI 서버인데.. WAS까지는 그래도 건들 수 있었는데 파이썬 코드로 된 AI 서버가 문제다.
애초에 실행시키기도 어려웠다..GPU가 없어서 local 환경에서 실행할 수 없었다.
그리고 어떻게 실행시켰는지 알 수 없었던 상황! 이 난관을 그래도 조금의 실마리를 찾아가며 풀어갔다.
우선 실행중인 컨테이너가 있는 서버 인스턴스에 접근했다.
docker container로 실행중이였다.
container가 있다면 image도 있을 것이다. image를 확인했다.
어떤 이미지인지 확인했는데 이 이미지를 어떻게 만들었는지 궁금했다.
내가 코드를 수정하고 이미지를 build하고 반영할 수 있는게 제일 베스트였다.
당연하게도? docker history를 통해 dockerfile 속 instruction들을 확인할 수 있었다.
그래서 어떤 dockerfile로 이미지를 build했는지 유추할 수 있었다.
다음으로,, docker hub를 사용할 시간과 환경이 없었기에..(인수인계를 받다보니 따지면 다른 회사 registry를 사용중이다 보니..) docker image를 직접 퍼서 나르는 게 제일 빠르다고 판단했다.
docker save를 통해 이미지를 .tar 파일로 저장할 수 있었다.
그리고 scp 명령어를 통해 쉽게 다른 host로 파일을 옮길 수 있었다.
옮겨온 .tar 이미지를 다시 docker image로 변환하기 위해 docker load 명령어를 사용하여 load하였다.
마지막으로 docker run을 갈겨서 똑같이 실행시켰더니~~ 잘된다! 짝짝
마무리(회고)
짧은 시간이였지만 하나를 해결하면 하나가 막히고 계속 벽이 있었는데 그래도 빠른 시간내에 요구사항을 쳐낸 것에 만족한다.
그리고 만났던 모든 이슈에 대해 복기하며 이 이슈를 만나기 전과 만나고 부셔버린 후의 나를 비교하면 또 한층 성장했다고 느낀다. 경
험을 통해 많이 배우고 싶다.
keyword
docker history, save, load
scp
nginx max_body_size, was servlet multipart maxFileSize
ACL, proxy server
'Cloud Computing > docker' 카테고리의 다른 글
| [Docker] dockerfile - docker build image (에피소드 글) (0) | 2024.04.07 |
|---|