지난 7주간 ( 2022/7/11 ~ 2022/8/26 ), 커먼컴퓨터 회사에서 인턴을 진행하였다.
오늘은 벌써 마지막날.. 할 일이 없어서 간단히 후기를 작성해보고자 한다.
소중대 해커톤 시상식에 참석했었는데, 그 때 해커톤 후원기업인 커먼컴퓨터에서 인턴을 모집한다는 소식을 듣게 되었다.
마침 시간이 빈 2개월 동안 할 일을 찾고 있던 나는.. 커먼컴퓨터에 대해 알아보기 시작한다..
AI, 블록체인 기반의 회사임을 알게 되었다. 사실 지금까지는 정말 문외한인 분야였지만, 내가 해보지 못했던 것들을 도전해보고 싶어 시작하게 되었다.
문의를 드리자 이메일로 과제를 알려주셨다. 다른 절차 없이 일주일 안에 과제만 제출하면 됐었다. 과제는 AI 모델을 활용한 API, Kubernetes, Docker를 활용해 간단한 웹 사이트를 제작하는 것이었다.
널널하게 해서 한 3일 정도 걸린 것 같다. 완전 처음 접해본 것이라 공부하다가 시간이 오래 걸렸는데, 지금 생각해보면 그냥 알려주신 document만 정독해도 충분히 진행할 수 있을 것 같다.
회사를 방문한 첫 날, 노트북을 받고 회사 계정을 만들고, Notion, Slack에 가입한 후 회사 Notion을 정독하였다. 커먼컴퓨터에서 지향하는 방향성에 대해 충분히 이해할 수 있었다.
특히 OKR이라고, 목표를 설정해야 했는데 며칠 뒤 나에게 주어진 업무와 관련해서 OKR을 세웠던게 큰 도움이 되었던 것 같다.
인턴을 종료하기 하루 전, 내가 했던 것들을 발표하는 Final Presso가 있었는데 이 때 제작한 PPT 자료와 함께 내가 진행한 내용을 간단히 적어보고자 한다.
나의 OKR은 크게 2가지였다.
1. 개발 열심히 하기
2. 지금까지 경험해보지 못한 것 시도하기
이 두개를 좀 더 구체적으로 설정하였다.
1. Miner Detector V2 개발하기: 3개의 채굴 프로그램을 block하도록
2. 프로그래밍 공부하기
3. 매일 진행한 것 노션에 기록하기
4. NFT, WEB 3.0 등 잘 몰랐던 부분에 대해 1주일에 1개 post 작성하기
나에게 주어진 업무는, Miner Detector v2 만들기 !
Miner Detector란, GPU를 사용하여 채굴을 진행하는 Miner들을 Detect하고 제거하는 프로그램이다. 커먼컴퓨터에서는 Ainize라는 무료로 GPU를 사용할 수 있는 Workspace를 제공하는데, 이를 악용한 채굴자들이 자꾸 접속하여 이를 막기 위해 시작한 프로젝트이다.
Mining Detector를 업그레이드하기 위해서는 기존에 동작중이던 v1에 대해 알아야 했다
.
.
v1을 이해하기 위해서는 Kubernetes, Docker, Gcloud, Shell Script에 대한 이해가 필요했다
.
.
그래서 정리한게 바로.. Kubernetes가 무엇이냐고 묻는다면, Docker가 무엇이냐고 묻는다면
이다.
v1에 대해 이해하고 나니 GPU 사용량의 누적 데이터를 활용하면 보다 정확하게 miner들을 탐지할 수 있겠다고 생각했다.
왜냐하면 mining 프로그램과 정상적으로 사용되는 프로그램의 GPU 사용량을 그 형태가 너무 달랐기 때문이다. 위 그림의 오른쪽 아래에 있는 그래프를 보면 알 수 있다.
따라서 나는 GPU 사용량의 평균이 95 이상이고 표준편차가 2 이하인 것을 miner라고 판단하기로 했다.
또 추가적으로 확장성과 간편한 유지보수를 위해 JavaScript로 코드를 작성하기로 하였다.
내가 개발한 Mining Detector v2의 전체적인 플로우를 간단히 설명하자면 다음과 같다.
Gcloud에 로그인을 하고, 현재 실행중인 pod들을 모두 불러온다.
-> 각 pod에 들어가서 10초동안 pod의 GPU 사용량을 기록한다.
-> 평균, 표준편차, 최솟값, 최댓값을 계산한 후
-> 평균 > 95 && 표준편차 < 2 라면 Detector라고 판단하고 Slack에 Message를 보내고, 해당 pod을 삭제한다.
-> 삭제 될 경우 Kubernetes가 알아서 pod을 생성하기 때문에 사용자 입장에서는 Restart라고 할 수 있다.
그리고 위의 코드를 docker build하고, Google Cloud Run에 push 하였다. 그리고 API가 호출되면 detect가 실행되도록 하였고, 이 API를 5분마다 호출하도록 Google Cloud Scheduler를 활용하였다.
따라서 이 프로그램은 5분마다 detect를 실행하게 되는 것이다.
프로그램은 계속 실행중이다.
테스트를 위해 두 가지의 mining을 하는 코드를 돌려보았다.
그 결과 두 코드 모두 detect된 것을 볼 수 있다.
위 그림처럼 Slack에 detect된 pod의 정보를 알려준 후 알아서 pod을 restart한다.
나의 다른 OKR이었던 기록 남기기 역시 꾸준히 진행하였다.
개인적으로 OKR을 얼만큼 달성했는지를 평가해보았다.
3개의 miner program을 막고 싶었고, 실제로 2개의 miner program을 실행한 결과 잘 detect 되는 것을 확인했다. 하지만 나머지 1개의 프로그램에 대해서는 코드를 어떻게 실행하는지 몰라서.. 확인할 수 없었다..
그리고 개인적으로 기록하는 것에 대해서도, 거의 목표에 달성하였다. 매일 내 노션에 진행상황을 기록했고, 이를 바탕으로 1주일에 1번 있는 Weekly 모임에서 진행상황을 정리하고 말씀드렸다.
벨로그 같은 경우에는.. 사실 이 POST를 적으면 딱 내가 원했던 개수인 7개를 채우게 된다! 다만 1주일에 1개가 아닌.. 몰아서 7개 ㅎㅎ
개인적으로 좋았던 것과 내가 발전해야 하는 것들도 발표하였다. 이 부분에 대해서는 밑에서 적어보겠다!
학부생 수준에서 경험하기 힘든 Kubernetes와 Docker를 사용해 볼 수 있었다는 것만으로도 감사한 기회였다. 아주아주 큰 그림을 이해한 느낌 ? 이렇게 돌아가는 구나 ~ 정도를 알수 있었다 ㅎㅎ
그리고 JavaScript로 코드를 짜는것이 낯설었는데 내 매니저님이 항상 Code Review를 정성스럽게 해주신 점도 정말 좋고 감사했다. 사실 코드 리뷰를 제대로 받은 게 거의 처음이었는데, 개인적으로 가장 도움을 많이 받은 것 같다. 1주일에 1번씩 담당 매니저님과 1:1을 가졌는데, 덕분에 회사에도 빨리 적응하고, 일을 할 때 방향성도 잘 세울 수 있었다.
특히 2달 전만해도 거의 알지 못했던 NFT, WEB 3.0에 대해 이제 남들에게 조금은 설명할 수 있는 수준이 되어 기쁘다. 단순히 글로 접하는 것이 아닌닌, KBW, CCC 그리고 커먼컴퓨터에서 주관한 Uncommon Gallery와 힉엣눙크를 방문하며 실제로 NFT에 관심을 가지는 사람이 굉장히 많다는 사실과 다양한 의견을 들을 수 있었다.
여기 저기 돌아다니기 좋아하는 나로써는 이렇게 종종 있는 행사가 즐겁고 반가웠다 !
짧은 기간이었지만, 나에겐 모두 새로운 경험들이었다. 멀게만 생각했던 회사 생활이라는 삶을 조금이나마 경험 할 수 있었던 감사한 시간들이었다.
회사가 양재 시민의 숲 근처에 있어서 매일 아침 출근길이 숲길이었다 ! 구름과 맑은 하늘 초록초록을 좋아하는 나에게는 나름의 힐링이었다 ㅎㅎ
퇴근하는 길에 딱 2번 마주친 ! 귀여운 야옹이이다. 가까이 가도 안 도망아고 야옹 야옹 울기만 한다 ㅠㅠ
거의 매일 가는 회사 옆 카페에서 임시보호하고 있는 ? 아주 귀여운 아기고양이와 강아지 2마리가 있었다! 아기고양이는 정말 정말 귀여웠다. 원래 2마리였는데 한마리가 사라지더니 다른 한마리도 사라졌다.. 지금은 강아지들 뿐이다. 아기고양이 한번만 더 만나고 싶다 ㅠㅠ 여기서 만난 이후로 유튜브에서 아기고양이 영상 100개는 본 것 같다 ㅎ
라고 글을 올리고 점심시간에 카페를 갔는데 거짓말안치고 1달 ? 만에 고양이를 봤다 !! 그새 엄청 큰 고양이 ㅠㅠ
위 사진 외 다수..
긴 말하지 않겠다.. 맛있는 걸 많이 먹을 수 있었다.. 잘 먹고 다녀서 너무 행복했다..
학교를 다니면서는 스트레스 받는 일이 굉장히 많았다. 일주일에 4일 이상 밤새고.. 끼니 놓치고 하는 일이 허다했는데 인턴의 삶은 정말 규칙적이고, 스트레스를 받는 일도 거의 없어서 좋았다. 물론 아직 인턴이니까 쉬운 일만 시켜주신 것도 있겠지만, 회사에 정말 좋은 분들이 많았고, 분위기가 자유로워서 편하게 일할 수 있던 것도 사실이다 !
어떻게 마무리를 해야할지 모르겠다 ㅎ 마지막 날인 오늘, "여러모로 배우는 게 많고, 감사했다" 라고 말하는게 제일 잘 표현하는 듯 하다 ! 그동안의 나도 수고 많았다 !
미국 가자 ~~~
음식이 맛있어보여요...